167 SUBROUTINE claswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
175 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
178 COMPLEX A( LDA, * ), WORK( * ), T( LDT, * )
186 INTEGER I, II, KK, CTR, MINMN, LWMIN
192 EXTERNAL lsame, ilaenv, sroundup_lwork
198 INTRINSIC max, min, mod
206 lquery = ( lwork.EQ.-1 )
209 IF( minmn.EQ.0 )
THEN
217 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
219 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ) )
THEN
221 ELSE IF( nb.LE.0 )
THEN
223 ELSE IF( lda.LT.max( 1, m ) )
THEN
225 ELSE IF( ldt.LT.mb )
THEN
227 ELSE IF( lwork.LT.lwmin .AND. (.NOT.lquery) )
THEN
232 work( 1 ) = sroundup_lwork( lwmin )
236 CALL xerbla(
'CLASWLQ', -info )
238 ELSE IF( lquery )
THEN
244 IF( minmn.EQ.0 )
THEN
250 IF( (m.GE.n) .OR. (nb.LE.m) .OR. (nb.GE.n) )
THEN
251 CALL cgelqt( m, n, mb, a, lda, t, ldt, work, info)
255 kk = mod((n-m),(nb-m))
260 CALL cgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
263 DO i = nb+1, ii-nb+m , (nb-m)
267 CALL ctplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
276 CALL ctplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
277 $ lda, t(1,ctr*m+1), ldt,
281 work( 1 ) = sroundup_lwork( lwmin )
subroutine cgelqt(m, n, mb, a, lda, t, ldt, work, info)
CGELQT
subroutine claswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
CLASWLQ
subroutine ctplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
CTPLQT