121 SUBROUTINE dlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
129 INTEGER INCV, LDC, M, N
133 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
139 DOUBLE PRECISION ONE, ZERO
140 parameter( one = 1.0d+0, zero = 0.0d+0 )
144 INTEGER I, LASTV, LASTC
151 INTEGER ILADLR, ILADLC
152 EXTERNAL lsame, iladlr, iladlc
156 applyleft = lsame( side,
'L' )
159 IF( tau.NE.zero )
THEN
168 i = 1 + (lastv-1) * incv
173 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
179 lastc = iladlc(lastv, n, c, ldc)
182 lastc = iladlr(m, lastv, c, ldc)
191 IF( lastv.GT.0 )
THEN
195 CALL dgemv(
'Transpose', lastv, lastc, one, c, ldc, v,
201 CALL dger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
207 IF( lastv.GT.0 )
THEN
211 CALL dgemv(
'No transpose', lastc, lastv, one, c, ldc,
212 $ v, incv, zero, work, 1 )
216 CALL dger( lastc, lastv, -tau, work, 1, v, incv, c, 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 dlarf(side, m, n, v, incv, tau, c, ldc, work)
DLARF applies an elementary reflector to a general rectangular matrix.