150 SUBROUTINE claswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
159 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
162 COMPLEX A( lda, * ), WORK( * ), T( ldt, *)
170 INTEGER I, II, KK, CTR
178 INTRINSIC max, min, mod
190 lquery = ( lwork.EQ.-1 )
194 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
196 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
198 ELSE IF( nb.LE.m )
THEN
200 ELSE IF( lda.LT.max( 1, m ) )
THEN
202 ELSE IF( ldt.LT.mb )
THEN
204 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
212 CALL xerbla(
'CLASWLQ', -info )
214 ELSE IF (lquery)
THEN
220 IF( min(m,n).EQ.0 )
THEN
226 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
227 CALL cgelqt( m, n, mb, a, lda, t, ldt, work, info)
231 kk = mod((n-m),(nb-m))
236 CALL cgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
239 DO i = nb+1, ii-nb+m , (nb-m)
243 CALL ctplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
252 CALL ctplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
253 $ lda, t(1,ctr*m+1), ldt,
subroutine ctplqt(M, N, L, MB, A, LDA, B, LDB, T, LDT, WORK, INFO)
subroutine cgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine claswlq(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)