|
36 | 36 | *> |
37 | 37 | *> \verbatim |
38 | 38 | *> |
39 | | -*> DLARF applies a real elementary reflector H to a real m by n matrix |
| 39 | +*> DLARF1F applies a real elementary reflector H to a real m by n matrix |
40 | 40 | *> C, from either the left or the right. H is represented in the form |
41 | 41 | *> |
42 | 42 | *> H = I - tau * v * v**T |
@@ -193,7 +193,7 @@ SUBROUTINE DLARF1F( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) |
193 | 193 | * .. Executable Statements .. |
194 | 194 | * |
195 | 195 | APPLYLEFT = LSAME( SIDE, 'L' ) |
196 | | - LASTV = 0 |
| 196 | + LASTV = 1 |
197 | 197 | LASTC = 0 |
198 | 198 | IF( TAU.NE.ZERO ) THEN |
199 | 199 | ! Set up variables for scanning V. LASTV begins pointing to the end |
@@ -222,17 +222,17 @@ SUBROUTINE DLARF1F( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) |
222 | 222 | ! Scan for the last non-zero row in C(:,1:lastv). |
223 | 223 | LASTC = ILADLR(M, LASTV, C, LDC) |
224 | 224 | END IF |
225 | | - ELSE |
226 | | -! TAU is 0, so H = I. Meaning HC = C = CH. |
227 | | - RETURN |
228 | 225 | END IF |
229 | 226 | IF( APPLYLEFT ) THEN |
230 | 227 | * |
231 | 228 | * Form H * C |
232 | 229 | * |
233 | 230 | ! Check if lastv = 1. This means v = 1, So we just need to compute |
234 | 231 | ! C := HC = (1-\tau)C. |
235 | | - IF( LASTV.LE.1 ) THEN |
| 232 | + IF( LASTV.EQ.1 ) THEN |
| 233 | +* |
| 234 | +* C(1,1:lastc) := ( 1 - tau ) * C(1,1:lastc) |
| 235 | +* |
236 | 236 | CALL DSCAL(LASTC, ONE - TAU, C, LDC) |
237 | 237 | ELSE |
238 | 238 | * |
@@ -260,6 +260,9 @@ SUBROUTINE DLARF1F( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) |
260 | 260 | ! Check if n = 1. This means v = 1, so we just need to compute |
261 | 261 | ! C := CH = C(1-\tau). |
262 | 262 | IF( LASTV.EQ.1 ) THEN |
| 263 | +* |
| 264 | +* C(1:lastc,1) := ( 1 - tau ) * C(1:lastc,1) |
| 265 | +* |
263 | 266 | CALL DSCAL(LASTC, ONE - TAU, C, 1) |
264 | 267 | ELSE |
265 | 268 | * |
|
0 commit comments