162 SUBROUTINE zlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
171 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
174 COMPLEX*16 A( LDA, * ), WORK( * ), T( LDT, *)
182 INTEGER I, II, KK, CTR
190 INTRINSIC max, min, mod
198 lquery = ( lwork.EQ.-1 )
202 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
204 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
206 ELSE IF( nb.LE.m )
THEN
208 ELSE IF( lda.LT.max( 1, m ) )
THEN
210 ELSE IF( ldt.LT.mb )
THEN
212 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
220 CALL xerbla(
'ZLASWLQ', -info )
222 ELSE IF (lquery)
THEN
228 IF( min(m,n).EQ.0 )
THEN
234 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
235 CALL zgelqt( m, n, mb, a, lda, t, ldt, work, info)
239 kk = mod((n-m),(nb-m))
244 CALL zgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
247 DO i = nb+1, ii-nb+m , (nb-m)
251 CALL ztplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
252 $ lda, t(1, ctr * m + 1),
260 CALL ztplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
261 $ lda, t(1, ctr * m + 1), ldt,