127 SUBROUTINE zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
135 INTEGER INCV, LDC, M, N
139 COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
146 parameter( one = ( 1.0d+0, 0.0d+0 ),
147 $ zero = ( 0.0d+0, 0.0d+0 ) )
151 INTEGER I, LASTV, LASTC
158 INTEGER ILAZLR, ILAZLC
159 EXTERNAL lsame, ilazlr, ilazlc
163 applyleft = lsame( side,
'L' )
166 IF( tau.NE.zero )
THEN
175 i = 1 + (lastv-1) * incv
180 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
186 lastc = ilazlc(lastv, n, c, ldc)
189 lastc = ilazlr(m, lastv, c, ldc)
198 IF( lastv.GT.0 )
THEN
202 CALL zgemv(
'Conjugate transpose', lastv, lastc, one,
203 $ c, ldc, v, incv, zero, work, 1 )
207 CALL zgerc( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
213 IF( lastv.GT.0 )
THEN
217 CALL zgemv(
'No transpose', lastc, lastv, one, c, ldc,
218 $ v, incv, zero, work, 1 )
222 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.