167 SUBROUTINE zlatsqr( M, N, MB, NB, A, LDA, T, LDT, WORK,
175 INTEGER INFO, LDA, M, N, MB, NB, LDT, LWORK
178 COMPLEX*16 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(
'ZLATSQR', -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 zgeqrt( m, n, nb, a, lda, t, ldt, work, info)
241 kk = mod((m-n),(mb-n))
246 CALL zgeqrt( mb, n, nb, a(1,1), lda, t, ldt, work, info )
249 DO i = mb+1, ii-mb+n , (mb-n)
253 CALL ztpqrt( mb-n, n, 0, nb, a(1,1), lda, a( i, 1 ), lda,
262 CALL ztpqrt( kk, n, 0, nb, a(1,1), lda, a( ii, 1 ), lda,
263 $ t(1,ctr * n + 1), ldt,
subroutine xerbla(srname, info)
subroutine zgeqrt(m, n, nb, a, lda, t, ldt, work, info)
ZGEQRT
subroutine zlatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
ZLATSQR
subroutine ztpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
ZTPQRT