156 SUBROUTINE zlarf1f( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
164 INTEGER INCV, LDC, M, N
168 COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
175 parameter( one = ( 1.0d+0, 0.0d+0 ),
176 $ zero = ( 0.0d+0, 0.0d+0 ) )
180 INTEGER I, LASTV, LASTC, J
189 INTEGER ILAZLR, ILAZLC
190 EXTERNAL lsame, ilazlr, ilazlc
194 applyleft = lsame( side,
'L' )
197 IF( tau.NE.zero )
THEN
206 i = 1 + (lastv-1) * incv
213 DO WHILE( lastv.GT.1 .AND. v( i ).EQ.zero )
219 lastc = ilazlc(lastv, n, c, ldc)
222 lastc = ilazlr(m, lastv, c, ldc)
225 IF( lastc.EQ.0 )
THEN
234 IF( lastv.EQ.1 )
THEN
235 CALL zscal(lastc, one - tau, c, ldc)
245 CALL zgemv(
'Conjugate transpose', lastv - 1,
246 $ lastc, one, c( 1+1, 1 ), ldc, v( 1 + incv ),
247 $ incv, zero, work, 1 )
252 work( i ) = work( i ) + dconjg( c( 1, i ) )
261 c( 1, i ) = c( 1, i ) - tau * dconjg( work( i ) )
266 CALL zgerc( lastv - 1, lastc, -tau, v( 1 + incv ),
267 $ incv, work, 1, c( 1+1, 1 ), ldc )
275 IF( lastv.EQ.1 )
THEN
276 CALL zscal(lastc, one - tau, c, 1)
282 CALL zgemv(
'No transpose', lastc, lastv-1, one,
283 $ c(1,1+1), ldc, v(1+incv), incv, zero, work, 1 )
285 CALL zaxpy(lastc, one, c, 1, work, 1)
291 CALL zaxpy(lastc, -tau, work, 1, c, 1)
293 CALL zgerc( lastc, lastv-1, -tau, work, 1, v(1+incv),
294 $ incv, c(1,1+1), 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 zlarf1f(side, m, n, v, incv, tau, c, ldc, work)
ZLARF1F applies an elementary reflector to a general rectangular