165 SUBROUTINE slaswlq( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
173 INTEGER INFO, LDA, M, N, MB, NB, LWORK, LDT
176 REAL A( LDA, * ), WORK( * ), T( LDT, *)
184 INTEGER I, II, KK, CTR
189 EXTERNAL lsame, sroundup_lwork
193 INTRINSIC max, min, mod
201 lquery = ( lwork.EQ.-1 )
205 ELSE IF( n.LT.0 .OR. n.LT.m )
THEN
207 ELSE IF( mb.LT.1 .OR. ( mb.GT.m .AND. m.GT.0 ))
THEN
209 ELSE IF( nb.LE.0 )
THEN
211 ELSE IF( lda.LT.max( 1, m ) )
THEN
213 ELSE IF( ldt.LT.mb )
THEN
215 ELSE IF( ( lwork.LT.m*mb) .AND. (.NOT.lquery) )
THEN
223 CALL xerbla(
'SLASWLQ', -info )
225 ELSE IF (lquery)
THEN
231 IF( min(m,n).EQ.0 )
THEN
237 IF((m.GE.n).OR.(nb.LE.m).OR.(nb.GE.n))
THEN
238 CALL sgelqt( m, n, mb, a, lda, t, ldt, work, info)
242 kk = mod((n-m),(nb-m))
247 CALL sgelqt( m, nb, mb, a(1,1), lda, t, ldt, work, info)
250 DO i = nb+1, ii-nb+m , (nb-m)
254 CALL stplqt( m, nb-m, 0, mb, a(1,1), lda, a( 1, i ),
255 $ lda, t(1, ctr * m + 1),
263 CALL stplqt( m, kk, 0, mb, a(1,1), lda, a( 1, ii ),
264 $ lda, t(1, ctr * m + 1), ldt,
268 work( 1 ) = sroundup_lwork(m * mb)
subroutine xerbla(srname, info)
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