123 SUBROUTINE dlarf( 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, LASTV, LASTC
153 INTEGER ILADLR, ILADLC
154 EXTERNAL lsame, iladlr, iladlc
158 applyleft = lsame( side,
'L' )
161 IF( tau.NE.zero )
THEN
170 i = 1 + (lastv-1) * incv
175 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
181 lastc = iladlc(lastv, n, c, ldc)
184 lastc = iladlr(m, lastv, c, ldc)
193 IF( lastv.GT.0 )
THEN
197 CALL dgemv(
'Transpose', lastv, lastc, one, c, ldc, v, incv,
202 CALL dger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
208 IF( lastv.GT.0 )
THEN
212 CALL dgemv(
'No transpose', lastc, lastv, one, c, ldc,
213 $ v, incv, zero, work, 1 )
217 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.