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