125 SUBROUTINE zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
133 INTEGER INCV, LDC, M, N
137 COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
144 parameter( one = ( 1.0d+0, 0.0d+0 ),
145 $ zero = ( 0.0d+0, 0.0d+0 ) )
149 INTEGER I, LASTV, LASTC
156 INTEGER ILAZLR, ILAZLC
157 EXTERNAL lsame, ilazlr, ilazlc
161 applyleft = lsame( side,
'L' )
164 IF( tau.NE.zero )
THEN
173 i = 1 + (lastv-1) * incv
178 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
184 lastc = ilazlc(lastv, n, c, ldc)
187 lastc = ilazlr(m, lastv, c, ldc)
196 IF( lastv.GT.0 )
THEN
200 CALL zgemv(
'Conjugate transpose', lastv, lastc, one,
201 $ c, ldc, v, incv, zero, work, 1 )
205 CALL zgerc( lastv, lastc, -tau, v, incv, work, 1, c,
212 IF( lastv.GT.0 )
THEN
216 CALL zgemv(
'No transpose', lastc, lastv, one, c, ldc,
217 $ v, incv, zero, work, 1 )
221 CALL zgerc( lastc, lastv, -tau, work, 1, v, incv, c,
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV
subroutine zgerc(m, n, alpha, x, incx, y, incy, a, lda)
ZGERC
subroutine zlarf(side, m, n, v, incv, tau, c, ldc, work)
ZLARF applies an elementary reflector to a general rectangular matrix.