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

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