168 SUBROUTINE dlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
176 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
179 DOUBLE PRECISION A( LDA, * ), WORK( * ), T( LDT, * )
187 INTEGER I, II, KK, CTR, MINMN, LWMIN
197 INTRINSIC max, min, mod
205 lquery = ( lwork.EQ.-1 )
208 IF( minmn.EQ.0 )
THEN
216 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
218 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ) )
THEN
220 ELSE IF( nb.LT.0 )
THEN
222 ELSE IF( lda.LT.max( 1, m ) )
THEN
224 ELSE IF( ldt.LT.mb )
THEN
226 ELSE IF( lwork.LT.lwmin .AND. (.NOT.lquery) )
THEN
235 CALL xerbla(
'DLASWLQ', -info )
237 ELSE IF( lquery )
THEN
243 IF( minmn.EQ.0 )
THEN
249 IF( (m.GE.n) .OR. (nb.LE.m) .OR. (nb.GE.n) )
THEN
250 CALL dgelqt( m, n, mb, a, lda, t, ldt, work, info )
254 kk = mod((n-m),(nb-m))
259 CALL dgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info )
262 DO i = nb+1, ii-nb+m, (nb-m)
266 CALL dtplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
267 $ lda, t(1, ctr * m + 1),
275 CALL dtplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
276 $ lda, t(1, ctr * m + 1), ldt,
subroutine dgelqt(m, n, mb, a, lda, t, ldt, work, info)
DGELQT
subroutine dlaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
DLASWLQ
subroutine dtplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
DTPLQT