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 xerbla(srname, info)
subroutine ctzrqf(m, n, a, lda, tau, info)
CTZRQF
subroutine caxpy(n, ca, cx, incx, cy, incy)
CAXPY
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
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 clacgv(n, x, incx)
CLACGV conjugates a complex vector.
subroutine clarfg(n, alpha, x, incx, tau)
CLARFG generates an elementary reflector (Householder matrix).