122 SUBROUTINE zgerqs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
131 INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
134 COMPLEX*16 A( lda, * ), B( ldb, * ), TAU( * ),
141 COMPLEX*16 CZERO, CONE
142 parameter ( czero = ( 0.0d+0, 0.0d+0 ),
143 $ cone = ( 1.0d+0, 0.0d+0 ) )
158 ELSE IF( n.LT.0 .OR. m.GT.n )
THEN
160 ELSE IF( nrhs.LT.0 )
THEN
162 ELSE IF( lda.LT.max( 1, m ) )
THEN
164 ELSE IF( ldb.LT.max( 1, n ) )
THEN
166 ELSE IF( lwork.LT.1 .OR. lwork.LT.nrhs .AND. m.GT.0 .AND. n.GT.0 )
171 CALL xerbla(
'ZGERQS', -info )
177 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
182 CALL ztrsm(
'Left',
'Upper',
'No transpose',
'Non-unit', m, nrhs,
183 $ cone, a( 1, n-m+1 ), lda, b( n-m+1, 1 ), ldb )
187 CALL zlaset(
'Full', n-m, nrhs, czero, czero, b, ldb )
191 CALL zunmrq(
'Left',
'Conjugate transpose', n, nrhs, m, a, lda,
192 $ tau, b, ldb, work, lwork, info )
subroutine zlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zunmrq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMRQ
subroutine zgerqs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
ZGERQS
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM