162 SUBROUTINE dlaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
170 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
173 DOUBLE PRECISION A( LDA, * ), WORK( * ), T( LDT, *)
181 INTEGER I, II, KK, CTR
189 INTRINSIC max, min, mod
197 lquery = ( lwork.EQ.-1 )
201 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
203 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
205 ELSE IF( nb.LT.0 )
THEN
207 ELSE IF( lda.LT.max( 1, m ) )
THEN
209 ELSE IF( ldt.LT.mb )
THEN
211 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
219 CALL xerbla(
'DLASWLQ', -info )
221 ELSE IF (lquery)
THEN
227 IF( min(m,n).EQ.0 )
THEN
233 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
234 CALL dgelqt( m, n, mb, a, lda, t, ldt, work, info)
238 kk = mod((n-m),(nb-m))
243 CALL dgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
246 DO i = nb+1, ii-nb+m , (nb-m)
250 CALL dtplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
251 $ lda, t(1, ctr * m + 1),
259 CALL dtplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
260 $ lda, t(1, ctr * m + 1), ldt,
subroutine dlaswlq(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)
DLASWLQ
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
DGELQT
subroutine dtplqt(M, N, L, MB, A, LDA, B, LDB, T, LDT, WORK, INFO)
DTPLQT