129 SUBROUTINE zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
138 INTEGER INCV, LDC, M, N
142 COMPLEX*16 C( ldc, * ), V( * ), WORK( * )
149 parameter ( one = ( 1.0d+0, 0.0d+0 ),
150 $ zero = ( 0.0d+0, 0.0d+0 ) )
154 INTEGER I, LASTV, LASTC
161 INTEGER ILAZLR, ILAZLC
162 EXTERNAL lsame, ilazlr, ilazlc
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 = ilazlc(lastv, n, c, ldc)
192 lastc = ilazlr(m, lastv, c, ldc)
201 IF( lastv.GT.0 )
THEN
205 CALL zgemv(
'Conjugate transpose', lastv, lastc, one,
206 $ c, ldc, v, incv, zero, work, 1 )
210 CALL zgerc( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
216 IF( lastv.GT.0 )
THEN
220 CALL zgemv(
'No transpose', lastc, lastv, one, c, ldc,
221 $ v, incv, zero, work, 1 )
225 CALL zgerc( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
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.