164 SUBROUTINE dlatsqr( M, N, MB, NB, A, LDA, T, LDT, WORK,
172 INTEGER info, lda, m, n, mb, nb, ldt, lwork
175 DOUBLE PRECISION a( lda, * ), work( * ), t(ldt, *)
183 INTEGER i, ii, kk, ctr
191 INTRINSIC max, min, mod
199 lquery = ( lwork.EQ.-1 )
203 ELSE IF( n.LT.0 .OR. m.LT.n )
THEN 205 ELSE IF( mb.LT.1 )
THEN 207 ELSE IF( nb.LT.1 .OR. ( nb.GT.n .AND. n.GT.0 ))
THEN 209 ELSE IF( lda.LT.max( 1, m ) )
THEN 211 ELSE IF( ldt.LT.nb )
THEN 213 ELSE IF( lwork.LT.(n*nb) .AND. (.NOT.lquery) )
THEN 220 CALL xerbla(
'DLATSQR', -info )
222 ELSE IF (lquery)
THEN 228 IF( min(m,n).EQ.0 )
THEN 234 IF ((mb.LE.n).OR.(mb.GE.m))
THEN 235 CALL dgeqrt( m, n, nb, a, lda, t, ldt, work, info)
239 kk = mod((m-n),(mb-n))
244 CALL dgeqrt( mb, n, nb, a(1,1), lda, t, ldt, work, info )
247 DO i = mb+1, ii-mb+n , (mb-n)
251 CALL dtpqrt( mb-n, n, 0, nb, a(1,1), lda, a( i, 1 ), lda,
260 CALL dtpqrt( kk, n, 0, nb, a(1,1), lda, a( ii, 1 ), lda,
261 $ t(1, ctr * n + 1), ldt,
logical function lsame(CA, CB)
LSAME
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgeqrt(M, N, NB, A, LDA, T, LDT, WORK, INFO)
DGEQRT
subroutine dtpqrt(M, N, L, NB, A, LDA, B, LDB, T, LDT, WORK, INFO)
DTPQRT