121 SUBROUTINE dgeqrs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
130 INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
133 DOUBLE PRECISION A( lda, * ), B( ldb, * ), TAU( * ),
141 parameter ( one = 1.0d+0 )
156 ELSE IF( n.LT.0 .OR. n.GT.m )
THEN
158 ELSE IF( nrhs.LT.0 )
THEN
160 ELSE IF( lda.LT.max( 1, m ) )
THEN
162 ELSE IF( ldb.LT.max( 1, m ) )
THEN
164 ELSE IF( lwork.LT.1 .OR. lwork.LT.nrhs .AND. m.GT.0 .AND. n.GT.0 )
169 CALL xerbla(
'DGEQRS', -info )
175 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
180 CALL dormqr(
'Left',
'Transpose', m, nrhs, n, a, lda, tau, b, ldb,
181 $ work, lwork, info )
185 CALL dtrsm(
'Left',
'Upper',
'No transpose',
'Non-unit', n, nrhs,
186 $ one, a, lda, b, ldb )
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMQR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgeqrs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
DGEQRS