#                                        Ren-Cang Li, June 1, 1996
#                                        na.rcli@na-net.ornl.gov

NewtonItern:=proc(x:vector)
    local fvect, DF, niter, err, eps, i, j;
    fvect:=vector(15): DF:=matrix(15,15): niter:=0:
    #
    err:=1: niter:=0: eps:=10^(-Digits+30):
    #
    while err > eps and niter <= 25 do
        niter:=niter+1:
        for i from 1 to 15 do
            fvect[i]:=subs(c[1]=x[1],   c[2]=x[2],   c[3]=x[3],   c[4]=x[4],
                           c[5]=x[5],   c[6]=x[6],   c[7]=x[7],   c[8]=x[8],
			   c[9]=x[9],   c[10]=x[10], c[11]=x[11], c[12]=x[12],
			   c[13]=x[13], c[14]=x[14], c[15]=x[15], f[i]):
            for j from 1 to 15 do
                DF[i,j]:=subs(c[1]=x[1],   c[2]=x[2],   c[3]=x[3],   
			      c[4]=x[4],   c[5]=x[5],   c[6]=x[6],   
			      c[7]=x[7],   c[8]=x[8],   c[9]=x[9],   
			      c[10]=x[10], c[11]=x[11], c[12]=x[12],
			      c[13]=x[13], c[14]=x[14], c[15]=x[15], g[i][j]):
            od:
        od: 
        err:=norm(fvect): 
	# print(err):  
        x:= evalm(x-linsolve(DF, fvect)):
    od:
    # print(err);
    if niter>25 then
       print(`In NewtonItern: Over 25 iterations`):
    fi:
    err;
end:
