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

cx2fixed:=proc(x:vector,cx2)
    local fvect, F2, niter, err, eps, i, j;
    fvect:=vector(2): F2:=matrix(2,2): niter:=0:
    #
    err:=1: niter:=0: eps:=10^(-Digits+20):
    #
    while err > eps and niter <= 40 do
        niter:=niter+1:
        for i from 1 to 2 do
            fvect[i]:=subs(cx[1]=x[1],cx[2]=cx2,cy[1]=x[2],f[i]):
        od: 
	F2[1,1]:=subs(cx[1]=x[1],cx[2]=cx2,cy[1]=x[2],gx[1][1]):
	F2[1,2]:=subs(cx[1]=x[1],cx[2]=cx2,cy[1]=x[2],gy[1][1]):
	F2[2,1]:=subs(cx[1]=x[1],cx[2]=cx2,cy[1]=x[2],gx[2][1]):
	F2[2,2]:=subs(cx[1]=x[1],cx[2]=cx2,cy[1]=x[2],gy[2][1]):
        #
        err:=norm(fvect): 
        # x:= evalm(x-inverse(F2) &* fvect):
        x:= evalm(x-linsolve(F2,fvect)):
    od:
    #print(err);
    if niter>40 then
       print(`In cx2fixed: Over 40 iterations`):
    fi:
end:
