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,
logical function lsame(CA, CB)
LSAME
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtplqt(M, N, L, MB, A, LDA, B, LDB, T, LDT, WORK, INFO)
DTPLQT
subroutine dgelqt(M, N, MB, A, LDA, T, LDT, WORK, INFO)
DGELQT