43 subroutine sscale( data,spct,wspct,ldspct,work,nsite,npt,ctol,
44 # noneg,iscal,sfac,resid )
50 integer ldspct,noneg,npt,nsite
52 double precision data(npt),work(npt),spct(ldspct,nsite),
53 # wspct(ldspct,nsite),resid(npt),sfac(nsite),ctol
59 integer i,info,j,jtmp,k,m,mneg,nscl
60 double precision smin,sumc2,sumdc,tmp
78 if (iscal(i).ne.0)
then
82 wspct(j,nscl)=spct(j,i)
86 resid(j)=resid(j)-sfac(i)*spct(j,i)
102 sumdc=sumdc+resid(i)*wspct(i,1)
103 sumc2=sumc2+wspct(i,1)*wspct(i,1)
106 if (sumc2.ne.zero)
then
107 tmpfac(1)=sumdc/sumc2
121 call qrfac(npt,nscl,wspct,ldspct,.true.,jpvt,nscl,rdiag,
135 if (dabs(rdiag(i)) .le. ctol*dabs(rdiag(1)) )
goto 14
139 14
call qtbvec(npt,k,wspct,ldspct,qraux,
data,work)
146 15
call rsolve( npt,k,wspct,ldspct,qraux,work,tmpfac,
155 if (noneg.ne.0.and.k.gt.1)
then
159 if (tmpfac(i).lt.smin)
then
167 call dchex( wspct,ldspct,nscl,mneg,k,
168 # work,ldspct,1,wa1,wa2,2 )
187 if (i.gt.k) tmpfac(i)=zero
194 if (jpvt(i).le.0)
then
198 50
if (k.eq.i)
goto 70
221 resid(j)=resid(j)-sfac(k)*spct(j,k)
subroutine qrfac(m, n, a, lda, pivot, ipvt, lipvt, rdiag, acnorm, wa)
subroutine dchex(r, ldr, p, k, l, z, ldz, nz, c, s, job)
integer, parameter mxsite
subroutine qtbvec(m, n, q, ldq, qraux, b, qtb)
subroutine rsolve(m, n, q, ldq, qraux, qtb, x, rcalc, rsd)
subroutine sscale(data, spct, wspct, ldspct, work, nsite, npt, ctol, noneg, iscal, sfac, resid)