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
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 )
LOGICAL function lsame(CA, CB)
LSAME
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
INTEGER function ilaclr(M, N, A, LDA)
ILACLR scans a matrix for its last non-zero row.
subroutine cgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERC
INTEGER function ilaclc(M, N, A, LDA)
ILACLC scans a matrix for its last non-zero column.
subroutine clarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
CLARF applies an elementary reflector to a general rectangular matrix.