167 SUBROUTINE dlatsqr( M, N, MB, NB, A, LDA, T, LDT, WORK,
175 INTEGER INFO, LDA, M, N, MB, NB, LDT, LWORK
178 DOUBLE PRECISION A( LDA, * ), WORK( * ), T(LDT, *)
186 INTEGER I, II, KK, CTR
194 INTRINSIC max, min, mod
202 lquery = ( lwork.EQ.-1 )
206 ELSE IF( n.LT.0 .OR. m.LT.n )
THEN
208 ELSE IF( mb.LT.1 )
THEN
210 ELSE IF( nb.LT.1 .OR. ( nb.GT.n .AND. n.GT.0 ))
THEN
212 ELSE IF( lda.LT.max( 1, m ) )
THEN
214 ELSE IF( ldt.LT.nb )
THEN
216 ELSE IF( lwork.LT.(n*nb) .AND. (.NOT.lquery) )
THEN
223 CALL xerbla(
'DLATSQR', -info )
225 ELSE IF (lquery)
THEN
231 IF( min(m,n).EQ.0 )
THEN
237 IF ((mb.LE.n).OR.(mb.GE.m))
THEN
238 CALL dgeqrt( m, n, nb, a, lda, t, ldt, work, info)
242 kk = mod((m-n),(mb-n))
247 CALL dgeqrt( mb, n, nb, a(1,1), lda, t, ldt, work, info )
250 DO i = mb+1, ii-mb+n , (mb-n)
254 CALL dtpqrt( mb-n, n, 0, nb, a(1,1), lda, a( i, 1 ), lda,
263 CALL dtpqrt( kk, n, 0, nb, a(1,1), lda, a( ii, 1 ), lda,
264 $ t(1, ctr * n + 1), ldt,
subroutine xerbla(srname, info)
subroutine dgeqrt(m, n, nb, a, lda, t, ldt, work, info)
DGEQRT
subroutine dlatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
DLATSQR
subroutine dtpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
DTPQRT