121 SUBROUTINE dgelqs( 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( * ),
140 DOUBLE PRECISION zero, one
141 parameter( zero = 0.0d+0, one = 1.0d+0 )
156 ELSE IF( n.LT.0 .OR. m.GT.n )
THEN
158 ELSE IF( nrhs.LT.0 )
THEN
160 ELSE IF( lda.LT.max( 1, m ) )
THEN
162 ELSE IF( ldb.LT.max( 1, n ) )
THEN
164 ELSE IF( lwork.LT.1 .OR. lwork.LT.nrhs .AND. m.GT.0 .AND. n.GT.0 )
169 CALL
xerbla(
'DGELQS', -info )
175 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
180 CALL
dtrsm(
'Left',
'Lower',
'No transpose',
'Non-unit', m, nrhs,
181 $ one, a, lda,
b, ldb )
186 $ CALL
dlaset(
'Full', n-m, nrhs, zero, zero,
b( m+1, 1 ), ldb )
190 CALL
dormlq(
'Left',
'Transpose', n, nrhs, m, a, lda, tau,
b, ldb,
191 $ work, lwork, info )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dormlq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMLQ
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dgelqs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
DGELQS
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...