145 SUBROUTINE zgeqrf( M, N, A, LDA, TAU, WORK, LWORK, INFO )
152 INTEGER INFO, LDA, LWORK, M, N
155 COMPLEX*16 A( LDA, * ), TAU( * ), WORK( * )
162 INTEGER I, IB, IINFO, IWS, , LDWORK, LWKOPT, NB,
181 nb = ilaenv( 1, '
zgeqrf', ' ', M, N, -1, -1 )
182.EQ.
LQUERY = ( LWORK-1 )
185.LT.
ELSE IF( N0 ) THEN
187.LT.
ELSE IF( LDAMAX( 1, M ) ) THEN
189.NOT.
ELSE IF( LQUERY ) THEN
190.LE..OR..GT..AND..LT.
IF( LWORK0 ( M0 LWORKMAX( 1, N ) ) )
194 CALL XERBLA( 'zgeqrf', -INFO )
196 ELSE IF( LQUERY ) THEN
216.GT..AND..LT.
IF( NB1 NBK ) THEN
220 NX = MAX( 0, ILAENV( 3, 'zgeqrf', ' ', M, N, -1, -1 ) )
227.LT.
IF( LWORKIWS ) THEN
233 NBMIN = MAX( 2, ILAENV( 2, 'zgeqrf', ' ', M, N, -1,
239.GE..AND..LT..AND..LT.
IF( NBNBMIN NBK NXK ) THEN
243 DO 10 I = 1, K - NX, NB
244 IB = MIN( K-I+1, NB )
249 CALL ZGEQR2( M-I+1, IB, A( I, I ), LDA, TAU( I ), WORK,
256 CALL ZLARFT( 'forward
', 'columnwise
', M-I+1, IB,
257 $ A( I, I ), LDA, TAU( I ), WORK, LDWORK )
261 CALL ZLARFB( 'left
', 'conjugate transpose
', 'forward
',
262 $ 'columnwise
', M-I+1, N-I-IB+1, IB,
263 $ A( I, I ), LDA, WORK, LDWORK, A( I, I+IB ),
264 $ LDA, WORK( IB+1 ), LDWORK )
274 $ CALL ZGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
subroutine xerbla(srname, info)
XERBLA
subroutine zgeqr2(m, n, a, lda, tau, work, info)
ZGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
subroutine zgeqrf(m, n, a, lda, tau, work, lwork, info)
ZGEQRF
subroutine zlarfb(side, trans, direct, storev, m, n, k, v, ldv, t, ldt, c, ldc, work, ldwork)
ZLARFB applies a block reflector or its conjugate-transpose to a general rectangular matrix.
subroutine zlarft(direct, storev, n, k, v, ldv, tau, t, ldt)
ZLARFT forms the triangular factor T of a block reflector H = I - vtvH