162 SUBROUTINE claswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
170 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
173 COMPLEX A( LDA, * ), WORK( * ), T( LDT, *)
181 INTEGER I, II, KK, CTR
189 INTRINSIC max, min, mod
201 lquery = ( lwork.EQ.-1 )
205 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
207 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
209 ELSE IF( nb.LE.0 )
THEN
211 ELSE IF( lda.LT.max( 1, m ) )
THEN
213 ELSE IF( ldt.LT.mb )
THEN
215 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
223 CALL xerbla(
'CLASWLQ', -info )
225 ELSE IF (lquery)
THEN
231 IF( min(m,n).EQ.0 )
THEN
237 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
238 CALL cgelqt( m, n, mb, a, lda, t, ldt, work, info)
242 kk = mod((n-m),(nb-m))
247 CALL cgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
250 DO i = nb+1, ii-nb+m , (nb-m)
254 CALL ctplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
263 CALL ctplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
264 $ lda, t(1,ctr*m+1), ldt,
subroutine claswlq(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)
CLASWLQ
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
CGELQT
subroutine ctplqt(M, N, L, MB, A, LDA, B, LDB, T, LDT, WORK, INFO)
CTPLQT