119 SUBROUTINE zgelqs( M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK,
127 INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
130 COMPLEX*16 A( LDA, * ), B( LDB, * ), TAU( * ),
137 COMPLEX*16 CZERO, CONE
138 parameter( czero = ( 0.0d+0, 0.0d+0 ),
139 $ cone = ( 1.0d+0, 0.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(
'ZGELQS', -info )
173 IF( n.EQ.0 .OR. nrhs.EQ.0 .OR. m.EQ.0 )
178 CALL ztrsm(
'Left',
'Lower',
'No transpose',
'Non-unit', m, nrhs,
179 $ cone, a, lda, b, ldb )
184 $
CALL zlaset(
'Full', n-m, nrhs, czero, czero, b( m+1, 1 ),
189 CALL zunmlq(
'Left',
'Conjugate transpose', n, nrhs, m, a, lda,
190 $ tau, b, ldb, work, lwork, info )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zgelqs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
ZGELQS
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 zunmlq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMLQ