def f(x):
    return (3*x-2)*(x*x+1)

def df(x):
    return 9*x*x-4*x+3

def main():
    n = 0
    nmax = 50
    tol = 1.0e-12
    
    x = float(input("Enter initial guess x: "))
    fx = f(x)
    dfx = df(x)
    
    if abs(dfx) < tol:
        print("Bad initial guess, |dfx| < %.4e" % tol)
        return
    
    while n <= nmax and abs(fx) > tol:
        x = x - fx / dfx
        fx = f(x)
        dfx = df(x)
        n += 1
    
    print("%5d %.16e %.4e" % (n, x, fx))

if __name__ == "__main__":
    main()
