66 subroutine cscg(b,ndim,mxcgs,cgtol,shift,
67 # x,al,bl,ndone,error)
74 integer ndim,mxcgs,ndone
75 double precision cgtol,error
81 complex*16 rho1,rho2,CZERO
82 parameter(czero=(0.0d0,0.0d0))
84 complex*16 p,r,w,z,alpha,beta
166 error=sqrt(abs(rho1))
168 if (error.lt.cgtol)
go to 200
174 if (nstep.ne.1)
call zaypx(r,p,beta,ndim)
187 call zaxpy(p,w,shift,ndim)
193 alpha=rho1/zdotu(p,w,ndim)
195 al(nstep)=1.0d0/alpha
201 call zaxpy(p,x,alpha,ndim)
207 call zaxpy(w,r,-alpha,ndim)
213 if (nstep.lt.mxcgs)
go to 100
221 call cgltri(nstep,al,bl,dreal(shift),dimag(shift))
227 if (error.le.cgtol)
then
subroutine cgltri(ndone, a, b, shiftr, shifti)
integer, parameter mxstep
subroutine cscg(b, ndim, mxcgs, cgtol, shift, x, al, bl, ndone, error)
subroutine zaxpy(x, y, scale, ndim)
subroutine zaypx(x, y, scale, ndim)
subroutine scmvm(x, y, ndim)