148 SUBROUTINE cgeqrfp( M, N, A, LDA, TAU, WORK, LWORK, INFO )
155 INTEGER INFO, LDA, LWORK, M, N
158 COMPLEX A( LDA, * ), TAU( * ), WORK( * )
165 INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
183 nb = ilaenv( 1,
'CGEQRF',
' ', m, n, -1, -1 )
186 lquery = ( lwork.EQ.-1 )
189 ELSE IF( n.LT.0 )
THEN
191 ELSE IF( lda.LT.max( 1, m ) )
THEN
193 ELSE IF( lwork.LT.max( 1, n ) .AND. .NOT.lquery )
THEN
197 CALL xerbla(
'CGEQRFP', -info )
199 ELSE IF( lquery )
THEN
214 IF( nb.GT.1 .AND. nb.LT.k )
THEN
218 nx = max( 0, ilaenv( 3,
'CGEQRF',
' ', m, n, -1, -1 ) )
225 IF( lwork.LT.iws )
THEN
231 nbmin = max( 2, ilaenv( 2,
'CGEQRF',
' ', m, n, -1,
237 IF( nb.GE.nbmin .AND. nb.LT.k .AND. nx.LT.k )
THEN
241 DO 10 i = 1, k - nx, nb
242 ib = min( k-i+1, nb )
247 CALL cgeqr2p( m-i+1, ib, a( i, i ), lda, tau( i ), work,
254 CALL clarft(
'Forward',
'Columnwise', m-i+1, ib,
255 $ a( i, i ), lda, tau( i ), work, ldwork )
259 CALL clarfb(
'Left',
'Conjugate transpose',
'Forward',
260 $
'Columnwise', m-i+1, n-i-ib+1, ib,
261 $ a( i, i ), lda, work, ldwork, a( i, i+ib ),
262 $ lda, work( ib+1 ), ldwork )
272 $
CALL cgeqr2p( m-i+1, n-i+1, a( i, i ), lda, tau( i ), work,
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgeqr2p(M, N, A, LDA, TAU, WORK, INFO)
CGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elem...
subroutine cgeqrfp(M, N, A, LDA, TAU, WORK, LWORK, INFO)
CGEQRFP
subroutine clarfb(SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK)
CLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix.
subroutine clarft(DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT)
CLARFT forms the triangular factor T of a block reflector H = I - vtvH