167 SUBROUTINE slaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
175 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
178 REAL A( LDA, * ), WORK( * ), T( LDT, * )
186 INTEGER I, II, KK, CTR, MINMN, LWMIN
192 EXTERNAL 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
231 work( 1 ) = sroundup_lwork( lwmin )
235 CALL xerbla(
'SLASWLQ', -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 sgelqt( m, n, mb, a, lda, t, ldt, work, info )
254 kk = mod((n-m),(nb-m))
259 CALL sgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info )
262 DO i = nb+1, ii-nb+m, (nb-m)
266 CALL stplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
267 $ lda, t(1, ctr * m + 1),
275 CALL stplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
276 $ lda, t(1, ctr * m + 1), ldt,
280 work( 1 ) = sroundup_lwork( lwmin )
subroutine sgelqt(m, n, mb, a, lda, t, ldt, work, info)
SGELQT
subroutine sgeqrt(m, n, nb, a, lda, t, ldt, work, info)
SGEQRT
subroutine slaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
SLASWLQ
subroutine stplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
STPLQT
subroutine stpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
STPQRT