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 clarfg(N, ALPHA, X, INCX, TAU)
CLARFG generates an elementary reflector (Householder matrix).
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 xerbla(SRNAME, INFO)
XERBLA
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine ctzrqf(M, N, A, LDA, TAU, INFO)
CTZRQF
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY