165 SUBROUTINE zlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
173 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
176 COMPLEX*16 A( LDA, * ), WORK( * ), T( LDT, *)
184 INTEGER I, II, KK, CTR
192 INTRINSIC max, min, mod
200 lquery = ( lwork.EQ.-1 )
204 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
206 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
208 ELSE IF( nb.LE.0 )
THEN
210 ELSE IF( lda.LT.max( 1, m ) )
THEN
212 ELSE IF( ldt.LT.mb )
THEN
214 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
222 CALL xerbla(
'ZLASWLQ', -info )
224 ELSE IF (lquery)
THEN
230 IF( min(m,n).EQ.0 )
THEN
236 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
237 CALL zgelqt( m, n, mb, a, lda, t, ldt, work, info)
241 kk = mod((n-m),(nb-m))
246 CALL zgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
249 DO i = nb+1, ii-nb+m , (nb-m)
253 CALL ztplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
254 $ lda, t(1, ctr * m + 1),
262 CALL ztplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
263 $ lda, t(1, ctr * m + 1), ldt,
subroutine xerbla(srname, info)
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