137 SUBROUTINE ctzrqf( M, N, A, LDA, TAU, INFO )
144 INTEGER info, lda, m, n
147 COMPLEX a( lda, * ), tau( * )
154 parameter( cone = ( 1.0e+0, 0.0e+0 ),
155 $ czero = ( 0.0e+0, 0.0e+0 ) )
162 INTRINSIC conjg, max, min
175 ELSE IF( n.LT.m )
THEN 177 ELSE IF( lda.LT.max( 1, m ) )
THEN 181 CALL xerbla(
'CTZRQF', -info )
200 a( k, k ) = conjg( a( k, k ) )
201 CALL clacgv( n-m, a( k, m1 ), lda )
203 CALL clarfg( n-m+1, alpha, a( k, m1 ), lda, tau( k ) )
205 tau( k ) = conjg( tau( k ) )
207 IF( tau( k ).NE.czero .AND. k.GT.1 )
THEN 216 CALL ccopy( k-1, a( 1, k ), 1, tau, 1 )
220 CALL cgemv(
'No transpose', k-1, n-m, cone, a( 1, m1 ),
221 $ lda, a( k, m1 ), lda, cone, tau, 1 )
226 CALL caxpy( k-1, -conjg( tau( k ) ), tau, 1, a( 1, k ),
228 CALL cgerc( k-1, n-m, -conjg( tau( k ) ), tau, 1,
229 $ 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 xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine cgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERC
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY