156 SUBROUTINE dlarf1f( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
164 INTEGER INCV, LDC, M, N
168 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
174 DOUBLE PRECISION ONE, ZERO
175 parameter( one = 1.0d+0, zero = 0.0d+0 )
179 INTEGER I, LASTV, LASTC
186 INTEGER ILADLR, ILADLC
187 EXTERNAL lsame, iladlr, iladlc
191 applyleft = lsame( side,
'L' )
194 IF( tau.NE.zero )
THEN
203 i = 1 + (lastv-1) * incv
210 DO WHILE( lastv.GT.1 .AND. v( i ).EQ.zero )
216 lastc = iladlc(lastv, n, c, ldc)
219 lastc = iladlr(m, lastv, c, ldc)
222 IF( lastc.EQ.0 )
THEN
231 IF( lastv.EQ.1 )
THEN
235 CALL dscal(lastc, one - tau, c, ldc)
241 CALL dgemv(
'Transpose', lastv-1, lastc, one, c(1+1,1),
242 $ ldc, v(1+incv), incv, zero, work, 1)
244 CALL daxpy(lastc, one, c, ldc, work, 1)
250 CALL daxpy(lastc, -tau, work, 1, c, ldc)
252 CALL dger(lastv-1, lastc, -tau, v(1+incv), incv, work, 1,
261 IF( lastv.EQ.1 )
THEN
265 CALL dscal(lastc, one - tau, c, 1)
271 CALL dgemv(
'No transpose', lastc, lastv-1, one,
272 $ c(1,1+1), ldc, v(1+incv), incv, zero, work, 1 )
274 CALL daxpy(lastc, one, c, 1, work, 1)
280 CALL daxpy(lastc, -tau, work, 1, c, 1)
282 CALL dger( lastc, lastv-1, -tau, work, 1, v(1+incv),
283 $ incv, c(1,1+1), ldc )
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER
subroutine dlarf1f(side, m, n, v, incv, tau, c, ldc, work)
DLARF1F applies an elementary reflector to a general rectangular