165 SUBROUTINE dlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
173 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
176 DOUBLE PRECISION 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.LT.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(
'DLASWLQ', -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 dgelqt( m, n, mb, a, lda, t, ldt, work, info)
241 kk = mod((n-m),(nb-m))
246 CALL dgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
249 DO i = nb+1, ii-nb+m , (nb-m)
253 CALL dtplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
254 $ lda, t(1, ctr * m + 1),
262 CALL dtplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
263 $ lda, t(1, ctr * m + 1), ldt,
subroutine xerbla(srname, info)
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