120 SUBROUTINE sgerqs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
128 INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
131 REAL A( LDA, * ), B( LDB, * ), TAU( * ),
139 parameter( zero = 0.0e+0, one = 1.0e+0 )
154 ELSE IF( n.LT.0 .OR. m.GT.n )
THEN
156 ELSE IF( nrhs.LT.0 )
THEN
158 ELSE IF( lda.LT.max( 1, m ) )
THEN
160 ELSE IF( ldb.LT.max( 1, n ) )
THEN
162 ELSE IF( lwork.LT.1 .OR. lwork.LT.nrhs .AND. m.GT.0 .AND. n.GT.0 )
167 CALL xerbla(
'SGERQS', -info )
173 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
178 CALL strsm(
'Left',
'Upper',
'No transpose',
'Non-unit', m, nrhs,
179 $ one, a( 1, n-m+1 ), lda, b( n-m+1, 1 ), ldb )
183 CALL slaset(
'Full', n-m, nrhs, zero, zero, b, ldb )
187 CALL sormrq(
'Left',
'Transpose', n, nrhs, m, a, lda, tau, b, ldb,
188 $ work, lwork, info )
subroutine xerbla(srname, 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 strsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRSM
subroutine sormrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
SORMRQ
subroutine sgerqs(m, n, nrhs, a, lda, tau, b, ldb, work, lwork, info)
SGERQS