150 SUBROUTINE zlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
159 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
162 COMPLEX*16 A( lda, * ), WORK( * ), T( ldt, *)
170 INTEGER I, II, KK, CTR
178 INTRINSIC max, min, mod
186 lquery = ( lwork.EQ.-1 )
190 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN 192 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN 194 ELSE IF( nb.LE.m )
THEN 196 ELSE IF( lda.LT.max( 1, m ) )
THEN 198 ELSE IF( ldt.LT.mb )
THEN 200 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN 208 CALL xerbla(
'ZLASWLQ', -info )
210 ELSE IF (lquery)
THEN 216 IF( min(m,n).EQ.0 )
THEN 222 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN 223 CALL zgelqt( m, n, mb, a, lda, t, ldt, work, info)
227 kk = mod((n-m),(nb-m))
232 CALL zgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
235 DO i = nb+1, ii-nb+m , (nb-m)
239 CALL ztplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
240 $ lda, t(1, ctr * m + 1),
248 CALL ztplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
249 $ lda, t(1, ctr * m + 1), ldt,
subroutine zgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
ZGELQT
subroutine ztplqt(M, N, L, MB, A, LDA, B, LDB, T, LDT, WORK, INFO)
ZTPLQT
subroutine zlaswlq(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)
subroutine xerbla(SRNAME, INFO)
XERBLA