164 SUBROUTINE zlatsqr( M, N, MB, NB, A, LDA, T, LDT, WORK,
172 INTEGER INFO, LDA, M, N, MB, NB, LDT, LWORK
175 COMPLEX*16 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(
'ZLATSQR', -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 zgeqrt( m, n, nb, a, lda, t, ldt, work, info)
238 kk = mod((m-n),(mb-n))
243 CALL zgeqrt( mb, n, nb, a(1,1), lda, t, ldt, work, info )
246 DO i = mb+1, ii-mb+n , (mb-n)
250 CALL ztpqrt( mb-n, n, 0, nb, a(1,1), lda, a( i, 1 ), lda,
259 CALL ztpqrt( kk, n, 0, nb, a(1,1), lda, a( ii, 1 ), lda,
260 $ t(1,ctr * n + 1), ldt,
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zgeqrt(M, N, NB, A, LDA, T, LDT, WORK, INFO)
ZGEQRT
subroutine ztpqrt(M, N, L, NB, A, LDA, B, LDB, T, LDT, WORK, INFO)
ZTPQRT
subroutine zlatsqr(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)
ZLATSQR