142 SUBROUTINE dgeqrt( M, N, NB, A, LDA, T, LDT, WORK, INFO )
150 INTEGER info, lda, ldt, m, n, nb
153 DOUBLE PRECISION a( lda, * ), t( ldt, * ), work( * )
160 INTEGER i, ib, iinfo, k
161 LOGICAL use_recursive_qr
162 parameter( use_recursive_qr=.true. )
174 ELSE IF( n.LT.0 )
THEN
176 ELSE IF( nb.LT.1 .OR. nb.GT.min(m,n) )
THEN
178 ELSE IF( lda.LT.max( 1, m ) )
THEN
180 ELSE IF( ldt.LT.nb )
THEN
184 CALL
xerbla(
'DGEQRT', -info )
196 ib = min( k-i+1, nb )
200 IF( use_recursive_qr )
THEN
201 CALL
dgeqrt3( m-i+1, ib, a(i,i), lda, t(1,i), ldt, iinfo )
203 CALL
dgeqrt2( m-i+1, ib, a(i,i), lda, t(1,i), ldt, iinfo )
209 CALL
dlarfb(
'L',
'T',
'F',
'C', m-i+1, n-i-ib+1, ib,
210 $ a( i, i ), lda, t( 1, i ), ldt,
211 $ a( i, i+ib ), lda, work , n-i-ib+1 )