123 SUBROUTINE dlarf1l( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
131 INTEGER INCV, LDC, M, N
135 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
141 DOUBLE PRECISION ONE, ZERO
142 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 INTEGER I, FIRSTV, LASTV, LASTC
153 INTEGER ILADLR, ILADLC
154 EXTERNAL lsame, iladlr, iladlc
158 applyleft = lsame( side,
'L' )
161 IF( tau.NE.zero )
THEN
171 DO WHILE( lastv.GT.firstv .AND. v( i ).EQ.zero )
177 lastc = iladlc(lastv, n, c, ldc)
180 lastc = iladlr(m, lastv, c, ldc)
183 IF( lastc.EQ.0 )
THEN
190 IF( lastv.GT.0 )
THEN
193 IF( lastv.EQ.firstv )
THEN
194 CALL dscal(lastc, one - tau, c( firstv, 1), ldc)
200 CALL dgemv(
'Transpose', lastv-firstv, lastc, one,
201 $ c(firstv,1), ldc, v(i), incv, zero,
204 CALL daxpy(lastc, one, c(lastv,1), ldc, work, 1)
210 CALL daxpy(lastc, -tau, work, 1, c(lastv,1), ldc)
212 CALL dger(lastv-firstv, lastc, -tau, v(i), incv,
213 $ work, 1, c(firstv,1), ldc)
220 IF( lastv.GT.0 )
THEN
223 IF( lastv.EQ.firstv )
THEN
224 CALL dscal(lastc, one - tau, c, 1)
230 CALL dgemv(
'No transpose', lastc, lastv-firstv,
231 $ one, c(1,firstv), ldc, v(i), incv, zero, work, 1 )
233 CALL daxpy(lastc, one, c(1,lastv), 1, work, 1)
239 CALL daxpy(lastc, -tau, work, 1, c(1,lastv), 1)
241 CALL dger( lastc, lastv-firstv, -tau, work, 1, v(i),
242 $ incv, c(1,firstv), ldc )
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dlarf1l(side, m, n, v, incv, tau, c, ldc, work)
DLARF1L applies an elementary reflector to a general rectangular