164 SUBROUTINE zlatsqr( M, N, MB, NB, A, LDA, T, LDT, WORK,
173 INTEGER INFO, LDA, M, N, MB, NB, LDT, LWORK
176 COMPLEX*16 A( LDA, * ), WORK( * ), T(LDT, *)
184 INTEGER I, II, KK, CTR
192 INTRINSIC max, min, mod
200 lquery = ( lwork.EQ.-1 )
204 ELSE IF( n.LT.0 .OR. m.LT.n )
THEN
206 ELSE IF( mb.LE.n )
THEN
208 ELSE IF( nb.LT.1 .OR. ( nb.GT.n .AND. n.GT.0 ))
THEN
210 ELSE IF( lda.LT.max( 1, m ) )
THEN
212 ELSE IF( ldt.LT.nb )
THEN
214 ELSE IF( lwork.LT.(n*nb) .AND. (.NOT.lquery) )
THEN
221 CALL xerbla(
'ZLATSQR', -info )
223 ELSE IF (lquery)
THEN
229 IF( min(m,n).EQ.0 )
THEN
235 IF ((mb.LE.n).OR.(mb.GE.m))
THEN
236 CALL zgeqrt( m, n, nb, a, lda, t, ldt, work, info)
239 kk = mod((m-n),(mb-n))
244 CALL zgeqrt( mb, n, nb, a(1,1), lda, t, ldt, work, info )
247 DO i = mb+1, ii-mb+n , (mb-n)
251 CALL ztpqrt( mb-n, n, 0, nb, a(1,1), lda, a( i, 1 ), lda,
260 CALL ztpqrt( kk, n, 0, nb, a(1,1), lda, a( ii, 1 ), lda,
261 $ t(1,ctr * n + 1), ldt,