1 subroutine qrfac(m,n,a,lda,pivot,ipvt,lipvt,rdiag,acnorm,wa)
6 double precision a(lda,n),rdiag(n),acnorm(n),wa(n)
83 integer i,j,jp1,k,kmax,minmn
84 double precision ajnorm,epsmch,one,p05,sum,temp,zero
86 double precision enorm
87 data one,p05,zero /1.0d0,5.0d-2,0.0d0/
91 if (lipvt .gt. n) lipvt = n
97 acnorm(j) = enorm(m,a(1,j))
100 if (pivot) ipvt(j) = j
115 if (rdiag(k) .gt. rdiag(kmax)) kmax = k
125 rdiag(kmax) = rdiag(j)
137 ajnorm = enorm(m-j+1,a(j,j))
139 if (ajnorm .ne. zero)
then
140 if (a(j,j) .lt. zero) ajnorm = -ajnorm
142 a(i,j) = a(i,j)/ajnorm
145 a(j,j) = a(j,j) + one
156 sum = sum + a(i,j)*a(i,k)
161 a(i,k) = a(i,k) - temp*a(i,j)
164 if (pivot .and. rdiag(k) .ne. zero)
then
165 temp = a(j,k)/rdiag(k)
166 rdiag(k) = rdiag(k)*dsqrt(dmax1(zero,one-temp**2))
167 if (p05*(rdiag(k)/wa(k))**2 .le. epsmch)
then
168 rdiag(k) = enorm(m-j,a(jp1,k))
subroutine qrfac(m, n, a, lda, pivot, ipvt, lipvt, rdiag, acnorm, wa)
double precision, parameter rndoff