139 SUBROUTINE ctzrqf( M, N, A, LDA, TAU, INFO )
147 INTEGER INFO, LDA, M, N
150 COMPLEX A( lda, * ), TAU( * )
157 parameter ( cone = ( 1.0e+0, 0.0e+0 ),
158 $ czero = ( 0.0e+0, 0.0e+0 ) )
165 INTRINSIC conjg, max, min
178 ELSE IF( n.LT.m )
THEN
180 ELSE IF( lda.LT.max( 1, m ) )
THEN
184 CALL xerbla(
'CTZRQF', -info )
203 a( k, k ) = conjg( a( k, k ) )
204 CALL clacgv( n-m, a( k, m1 ), lda )
206 CALL clarfg( n-m+1, alpha, a( k, m1 ), lda, tau( k ) )
208 tau( k ) = conjg( tau( k ) )
210 IF( tau( k ).NE.czero .AND. k.GT.1 )
THEN
219 CALL ccopy( k-1, a( 1, k ), 1, tau, 1 )
223 CALL cgemv(
'No transpose', k-1, n-m, cone, a( 1, m1 ),
224 $ lda, a( k, m1 ), lda, cone, tau, 1 )
229 CALL caxpy( k-1, -conjg( tau( k ) ), tau, 1, a( 1, k ),
231 CALL cgerc( k-1, n-m, -conjg( tau( k ) ), tau, 1,
232 $ a( k, m1 ), lda, a( 1, m1 ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine cgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERC
subroutine ctzrqf(M, N, A, LDA, TAU, INFO)
CTZRQF
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
subroutine clarfg(N, ALPHA, X, INCX, TAU)
CLARFG generates an elementary reflector (Householder matrix).