120      SUBROUTINE dgerqs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
 
  128      INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS
 
  131      DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), TAU( * ),
 
  138      DOUBLE PRECISION   ZERO, ONE
 
  139      parameter( zero = 0.0d+0, one = 1.0d+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( 
'DGERQS', -info )
 
  173      IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
 
  178      CALL dtrsm( 
'Left', 
'Upper', 
'No transpose', 
'Non-unit', m, nrhs,
 
  179     $            one, a( 1, n-m+1 ), lda, b( n-m+1, 1 ), ldb )
 
  183      CALL dlaset( 
'Full', n-m, nrhs, zero, zero, b, ldb )
 
  187      CALL dormrq( 
'Left', 
'Transpose', n, nrhs, m, a, lda, tau, b, ldb,
 
  188     $             work, lwork, info )
 
 
subroutine dgerqs(m, n, nrhs, a, lda, tau, b, ldb, work, lwork, info)
DGERQS
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.
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM
subroutine dormrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
DORMRQ