166 SUBROUTINE zlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
174 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
177 COMPLEX*16 A( LDA, * ), WORK( * ), T( LDT, * )
185 INTEGER I, II, KK, CTR, MINMN, LWMIN
195 INTRINSIC max, min, mod
203 lquery = ( lwork.EQ.-1 )
206 IF( minmn.EQ.0 )
THEN
214 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
216 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ) )
THEN
218 ELSE IF( nb.LE.0 )
THEN
220 ELSE IF( lda.LT.max( 1, m ) )
THEN
222 ELSE IF( ldt.LT.mb )
THEN
224 ELSE IF( lwork.LT.lwmin .AND. (.NOT.lquery) )
THEN
233 CALL xerbla(
'ZLASWLQ', -info )
235 ELSE IF( lquery )
THEN
241 IF( minmn.EQ.0 )
THEN
247 IF( (m.GE.n) .OR. (nb.LE.m) .OR. (nb.GE.n) )
THEN
248 CALL zgelqt( m, n, mb, a, lda, t, ldt, work, info )
252 kk = mod((n-m),(nb-m))
257 CALL zgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info )
260 DO i = nb+1, ii-nb+m, (nb-m)
264 CALL ztplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
265 $ lda, t(1, ctr * m + 1),
273 CALL ztplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
274 $ lda, t(1, ctr * m + 1), ldt,
subroutine zgelqt(m, n, mb, a, lda, t, ldt, work, info)
ZGELQT
subroutine zlaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
ZLASWLQ
subroutine ztplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
ZTPLQT