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