125 SUBROUTINE clarf1f( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
133 INTEGER INCV, LDC, M, N
137 COMPLEX C( LDC, * ), V( * ), WORK( * )
144 parameter( one = ( 1.0e+0, 0.0e+0 ),
145 $ zero = ( 0.0e+0, 0.0e+0 ) )
149 INTEGER I, LASTV, LASTC
159 INTEGER ILACLR, ILACLC
160 EXTERNAL lsame, ilaclr, ilaclc
164 applyleft = lsame( side,
'L' )
167 IF( tau.NE.zero )
THEN
176 i = 1 + (lastv-1) * incv
181 DO WHILE( lastv.GT.1 .AND. v( i ).EQ.zero )
187 lastc = ilaclc(lastv, n, c, ldc)
190 lastc = ilaclr(m, lastv, c, ldc)
193 IF( lastc.EQ.0 )
THEN
200 IF( lastv.EQ.1 )
THEN
204 CALL cscal( lastc, one - tau, c, ldc )
209 CALL cgemv(
'Conjugate transpose', lastv - 1, lastc, one,
210 $ c( 2, 1 ), ldc, v( 1 + incv ), incv, zero,
216 work( i ) = work( i ) + conjg( c( 1, i ) )
222 c( 1, i ) = c( 1, i ) - tau * conjg( work( i ) )
227 CALL cgerc( lastv - 1, lastc, -tau, v( 1 + incv ), incv,
228 $ work, 1, c( 2, 1 ), ldc )
234 IF( lastv.EQ.1 )
THEN
238 CALL cscal( lastc, one - tau, c, 1 )
243 CALL cgemv(
'No transpose', lastc, lastv - 1, one,
244 $ c( 1, 2 ), ldc, v( 1 + incv ), incv, zero,
249 CALL caxpy( lastc, one, c, 1, work, 1 )
253 CALL caxpy( lastc, -tau, work, 1, c, 1 )
257 CALL cgerc( lastc, lastv - 1, -tau, work, 1,
258 $ v( 1 + incv ), incv, c( 1, 2 ), ldc )
subroutine clarf1f(side, m, n, v, incv, tau, c, ldc, work)
CLARF1F applies an elementary reflector to a general rectangular
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