129 SUBROUTINE clarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
138 INTEGER INCV, LDC, M, N
142 COMPLEX C( ldc, * ), V( * ), WORK( * )
149 parameter ( one = ( 1.0e+0, 0.0e+0 ),
150 $ zero = ( 0.0e+0, 0.0e+0 ) )
154 INTEGER I, LASTV, LASTC
161 INTEGER ILACLR, ILACLC
162 EXTERNAL lsame, ilaclr, ilaclc
166 applyleft = lsame( side,
'L' )
169 IF( tau.NE.zero )
THEN
178 i = 1 + (lastv-1) * incv
183 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
189 lastc = ilaclc(lastv, n, c, ldc)
192 lastc = ilaclr(m, lastv, c, ldc)
201 IF( lastv.GT.0 )
THEN
205 CALL cgemv(
'Conjugate transpose', lastv, lastc, one,
206 $ c, ldc, v, incv, zero, work, 1 )
210 CALL cgerc( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
216 IF( lastv.GT.0 )
THEN
220 CALL cgemv(
'No transpose', lastc, lastv, one, c, ldc,
221 $ v, incv, zero, work, 1 )
225 CALL cgerc( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
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 clarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
CLARF applies an elementary reflector to a general rectangular matrix.