122 SUBROUTINE sgerqs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
131 INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
134 REAL A( lda, * ), B( ldb, * ), TAU( * ),
142 parameter( zero = 0.0e+0, one = 1.0e+0 )
157 ELSE IF( n.LT.0 .OR. m.GT.n )
THEN
159 ELSE IF( nrhs.LT.0 )
THEN
161 ELSE IF( lda.LT.max( 1, m ) )
THEN
163 ELSE IF( ldb.LT.max( 1, n ) )
THEN
165 ELSE IF( lwork.LT.1 .OR. lwork.LT.nrhs .AND. m.GT.0 .AND. n.GT.0 )
170 CALL
xerbla(
'SGERQS', -info )
176 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
181 CALL
strsm(
'Left',
'Upper',
'No transpose',
'Non-unit', m, nrhs,
182 $ one, a( 1, n-m+1 ), lda, b( n-m+1, 1 ), ldb )
186 CALL
slaset(
'Full', n-m, nrhs, zero, zero, b, ldb )
190 CALL
sormrq(
'Left',
'Transpose', n, nrhs, m, a, lda, tau, b, ldb,
191 $ work, lwork, info )
subroutine slaset(UPLO, M, N, ALPHA, BETA, A, LDA)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine sgerqs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
SGERQS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sormrq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMRQ
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM