125 SUBROUTINE dlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
134 INTEGER incv, ldc, m, n
138 DOUBLE PRECISION c( ldc, * ), v( * ), work( * )
144 DOUBLE PRECISION one, zero
145 parameter( one = 1.0d+0, zero = 0.0d+0 )
149 INTEGER i, lastv, lastc
161 applyleft =
lsame( side,
'L' )
164 IF( tau.NE.zero )
THEN
173 i = 1 + (lastv-1) * incv
178 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
184 lastc =
iladlc(lastv, n, c, ldc)
187 lastc =
iladlr(m, lastv, c, ldc)
196 IF( lastv.GT.0 )
THEN
200 CALL
dgemv(
'Transpose', lastv, lastc, one, c, ldc, v, incv,
205 CALL
dger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
211 IF( lastv.GT.0 )
THEN
215 CALL
dgemv(
'No transpose', lastc, lastv, one, c, ldc,
216 $ v, incv, zero, work, 1 )
220 CALL
dger( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
subroutine dger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DGER
LOGICAL function lsame(CA, CB)
LSAME
INTEGER function iladlr(M, N, A, LDA)
ILADLR scans a matrix for its last non-zero row.
subroutine dlarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
DLARF applies an elementary reflector to a general rectangular matrix.
INTEGER function iladlc(M, N, A, LDA)
ILADLC scans a matrix for its last non-zero column.
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV