2329
|
1 SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK ) |
|
2 * |
3333
|
3 * -- LAPACK auxiliary routine (version 3.0) -- |
2329
|
4 * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., |
|
5 * Courant Institute, Argonne National Lab, and Rice University |
|
6 * February 29, 1992 |
|
7 * |
|
8 * .. Scalar Arguments .. |
|
9 CHARACTER SIDE |
|
10 INTEGER LDC, M, N |
|
11 DOUBLE PRECISION TAU |
|
12 * .. |
|
13 * .. Array Arguments .. |
|
14 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * ) |
|
15 * .. |
|
16 * |
|
17 * Purpose |
|
18 * ======= |
|
19 * |
|
20 * DLARFX applies a real elementary reflector H to a real m by n |
|
21 * matrix C, from either the left or the right. H is represented in the |
|
22 * form |
|
23 * |
|
24 * H = I - tau * v * v' |
|
25 * |
|
26 * where tau is a real scalar and v is a real vector. |
|
27 * |
|
28 * If tau = 0, then H is taken to be the unit matrix |
|
29 * |
|
30 * This version uses inline code if H has order < 11. |
|
31 * |
|
32 * Arguments |
|
33 * ========= |
|
34 * |
|
35 * SIDE (input) CHARACTER*1 |
|
36 * = 'L': form H * C |
|
37 * = 'R': form C * H |
|
38 * |
|
39 * M (input) INTEGER |
|
40 * The number of rows of the matrix C. |
|
41 * |
|
42 * N (input) INTEGER |
|
43 * The number of columns of the matrix C. |
|
44 * |
|
45 * V (input) DOUBLE PRECISION array, dimension (M) if SIDE = 'L' |
|
46 * or (N) if SIDE = 'R' |
|
47 * The vector v in the representation of H. |
|
48 * |
|
49 * TAU (input) DOUBLE PRECISION |
|
50 * The value tau in the representation of H. |
|
51 * |
|
52 * C (input/output) DOUBLE PRECISION array, dimension (LDC,N) |
|
53 * On entry, the m by n matrix C. |
|
54 * On exit, C is overwritten by the matrix H * C if SIDE = 'L', |
|
55 * or C * H if SIDE = 'R'. |
|
56 * |
|
57 * LDC (input) INTEGER |
|
58 * The leading dimension of the array C. LDA >= (1,M). |
|
59 * |
|
60 * WORK (workspace) DOUBLE PRECISION array, dimension |
|
61 * (N) if SIDE = 'L' |
|
62 * or (M) if SIDE = 'R' |
|
63 * WORK is not referenced if H has order < 11. |
|
64 * |
|
65 * ===================================================================== |
|
66 * |
|
67 * .. Parameters .. |
|
68 DOUBLE PRECISION ZERO, ONE |
|
69 PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) |
|
70 * .. |
|
71 * .. Local Scalars .. |
|
72 INTEGER J |
|
73 DOUBLE PRECISION SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9, |
|
74 $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9 |
|
75 * .. |
|
76 * .. External Functions .. |
|
77 LOGICAL LSAME |
|
78 EXTERNAL LSAME |
|
79 * .. |
|
80 * .. External Subroutines .. |
|
81 EXTERNAL DGEMV, DGER |
|
82 * .. |
|
83 * .. Executable Statements .. |
|
84 * |
|
85 IF( TAU.EQ.ZERO ) |
|
86 $ RETURN |
|
87 IF( LSAME( SIDE, 'L' ) ) THEN |
|
88 * |
|
89 * Form H * C, where H has order m. |
|
90 * |
|
91 GO TO ( 10, 30, 50, 70, 90, 110, 130, 150, |
|
92 $ 170, 190 )M |
|
93 * |
|
94 * Code for general M |
|
95 * |
|
96 * w := C'*v |
|
97 * |
|
98 CALL DGEMV( 'Transpose', M, N, ONE, C, LDC, V, 1, ZERO, WORK, |
|
99 $ 1 ) |
|
100 * |
|
101 * C := C - tau * v * w' |
|
102 * |
|
103 CALL DGER( M, N, -TAU, V, 1, WORK, 1, C, LDC ) |
|
104 GO TO 410 |
|
105 10 CONTINUE |
|
106 * |
|
107 * Special code for 1 x 1 Householder |
|
108 * |
|
109 T1 = ONE - TAU*V( 1 )*V( 1 ) |
|
110 DO 20 J = 1, N |
|
111 C( 1, J ) = T1*C( 1, J ) |
|
112 20 CONTINUE |
|
113 GO TO 410 |
|
114 30 CONTINUE |
|
115 * |
|
116 * Special code for 2 x 2 Householder |
|
117 * |
|
118 V1 = V( 1 ) |
|
119 T1 = TAU*V1 |
|
120 V2 = V( 2 ) |
|
121 T2 = TAU*V2 |
|
122 DO 40 J = 1, N |
|
123 SUM = V1*C( 1, J ) + V2*C( 2, J ) |
|
124 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
125 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
126 40 CONTINUE |
|
127 GO TO 410 |
|
128 50 CONTINUE |
|
129 * |
|
130 * Special code for 3 x 3 Householder |
|
131 * |
|
132 V1 = V( 1 ) |
|
133 T1 = TAU*V1 |
|
134 V2 = V( 2 ) |
|
135 T2 = TAU*V2 |
|
136 V3 = V( 3 ) |
|
137 T3 = TAU*V3 |
|
138 DO 60 J = 1, N |
|
139 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) |
|
140 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
141 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
142 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
143 60 CONTINUE |
|
144 GO TO 410 |
|
145 70 CONTINUE |
|
146 * |
|
147 * Special code for 4 x 4 Householder |
|
148 * |
|
149 V1 = V( 1 ) |
|
150 T1 = TAU*V1 |
|
151 V2 = V( 2 ) |
|
152 T2 = TAU*V2 |
|
153 V3 = V( 3 ) |
|
154 T3 = TAU*V3 |
|
155 V4 = V( 4 ) |
|
156 T4 = TAU*V4 |
|
157 DO 80 J = 1, N |
|
158 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
159 $ V4*C( 4, J ) |
|
160 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
161 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
162 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
163 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
164 80 CONTINUE |
|
165 GO TO 410 |
|
166 90 CONTINUE |
|
167 * |
|
168 * Special code for 5 x 5 Householder |
|
169 * |
|
170 V1 = V( 1 ) |
|
171 T1 = TAU*V1 |
|
172 V2 = V( 2 ) |
|
173 T2 = TAU*V2 |
|
174 V3 = V( 3 ) |
|
175 T3 = TAU*V3 |
|
176 V4 = V( 4 ) |
|
177 T4 = TAU*V4 |
|
178 V5 = V( 5 ) |
|
179 T5 = TAU*V5 |
|
180 DO 100 J = 1, N |
|
181 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
182 $ V4*C( 4, J ) + V5*C( 5, J ) |
|
183 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
184 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
185 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
186 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
187 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
188 100 CONTINUE |
|
189 GO TO 410 |
|
190 110 CONTINUE |
|
191 * |
|
192 * Special code for 6 x 6 Householder |
|
193 * |
|
194 V1 = V( 1 ) |
|
195 T1 = TAU*V1 |
|
196 V2 = V( 2 ) |
|
197 T2 = TAU*V2 |
|
198 V3 = V( 3 ) |
|
199 T3 = TAU*V3 |
|
200 V4 = V( 4 ) |
|
201 T4 = TAU*V4 |
|
202 V5 = V( 5 ) |
|
203 T5 = TAU*V5 |
|
204 V6 = V( 6 ) |
|
205 T6 = TAU*V6 |
|
206 DO 120 J = 1, N |
|
207 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
208 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) |
|
209 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
210 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
211 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
212 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
213 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
214 C( 6, J ) = C( 6, J ) - SUM*T6 |
|
215 120 CONTINUE |
|
216 GO TO 410 |
|
217 130 CONTINUE |
|
218 * |
|
219 * Special code for 7 x 7 Householder |
|
220 * |
|
221 V1 = V( 1 ) |
|
222 T1 = TAU*V1 |
|
223 V2 = V( 2 ) |
|
224 T2 = TAU*V2 |
|
225 V3 = V( 3 ) |
|
226 T3 = TAU*V3 |
|
227 V4 = V( 4 ) |
|
228 T4 = TAU*V4 |
|
229 V5 = V( 5 ) |
|
230 T5 = TAU*V5 |
|
231 V6 = V( 6 ) |
|
232 T6 = TAU*V6 |
|
233 V7 = V( 7 ) |
|
234 T7 = TAU*V7 |
|
235 DO 140 J = 1, N |
|
236 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
237 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + |
|
238 $ V7*C( 7, J ) |
|
239 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
240 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
241 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
242 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
243 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
244 C( 6, J ) = C( 6, J ) - SUM*T6 |
|
245 C( 7, J ) = C( 7, J ) - SUM*T7 |
|
246 140 CONTINUE |
|
247 GO TO 410 |
|
248 150 CONTINUE |
|
249 * |
|
250 * Special code for 8 x 8 Householder |
|
251 * |
|
252 V1 = V( 1 ) |
|
253 T1 = TAU*V1 |
|
254 V2 = V( 2 ) |
|
255 T2 = TAU*V2 |
|
256 V3 = V( 3 ) |
|
257 T3 = TAU*V3 |
|
258 V4 = V( 4 ) |
|
259 T4 = TAU*V4 |
|
260 V5 = V( 5 ) |
|
261 T5 = TAU*V5 |
|
262 V6 = V( 6 ) |
|
263 T6 = TAU*V6 |
|
264 V7 = V( 7 ) |
|
265 T7 = TAU*V7 |
|
266 V8 = V( 8 ) |
|
267 T8 = TAU*V8 |
|
268 DO 160 J = 1, N |
|
269 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
270 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + |
|
271 $ V7*C( 7, J ) + V8*C( 8, J ) |
|
272 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
273 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
274 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
275 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
276 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
277 C( 6, J ) = C( 6, J ) - SUM*T6 |
|
278 C( 7, J ) = C( 7, J ) - SUM*T7 |
|
279 C( 8, J ) = C( 8, J ) - SUM*T8 |
|
280 160 CONTINUE |
|
281 GO TO 410 |
|
282 170 CONTINUE |
|
283 * |
|
284 * Special code for 9 x 9 Householder |
|
285 * |
|
286 V1 = V( 1 ) |
|
287 T1 = TAU*V1 |
|
288 V2 = V( 2 ) |
|
289 T2 = TAU*V2 |
|
290 V3 = V( 3 ) |
|
291 T3 = TAU*V3 |
|
292 V4 = V( 4 ) |
|
293 T4 = TAU*V4 |
|
294 V5 = V( 5 ) |
|
295 T5 = TAU*V5 |
|
296 V6 = V( 6 ) |
|
297 T6 = TAU*V6 |
|
298 V7 = V( 7 ) |
|
299 T7 = TAU*V7 |
|
300 V8 = V( 8 ) |
|
301 T8 = TAU*V8 |
|
302 V9 = V( 9 ) |
|
303 T9 = TAU*V9 |
|
304 DO 180 J = 1, N |
|
305 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
306 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + |
|
307 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) |
|
308 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
309 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
310 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
311 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
312 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
313 C( 6, J ) = C( 6, J ) - SUM*T6 |
|
314 C( 7, J ) = C( 7, J ) - SUM*T7 |
|
315 C( 8, J ) = C( 8, J ) - SUM*T8 |
|
316 C( 9, J ) = C( 9, J ) - SUM*T9 |
|
317 180 CONTINUE |
|
318 GO TO 410 |
|
319 190 CONTINUE |
|
320 * |
|
321 * Special code for 10 x 10 Householder |
|
322 * |
|
323 V1 = V( 1 ) |
|
324 T1 = TAU*V1 |
|
325 V2 = V( 2 ) |
|
326 T2 = TAU*V2 |
|
327 V3 = V( 3 ) |
|
328 T3 = TAU*V3 |
|
329 V4 = V( 4 ) |
|
330 T4 = TAU*V4 |
|
331 V5 = V( 5 ) |
|
332 T5 = TAU*V5 |
|
333 V6 = V( 6 ) |
|
334 T6 = TAU*V6 |
|
335 V7 = V( 7 ) |
|
336 T7 = TAU*V7 |
|
337 V8 = V( 8 ) |
|
338 T8 = TAU*V8 |
|
339 V9 = V( 9 ) |
|
340 T9 = TAU*V9 |
|
341 V10 = V( 10 ) |
|
342 T10 = TAU*V10 |
|
343 DO 200 J = 1, N |
|
344 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + |
|
345 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + |
|
346 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) + |
|
347 $ V10*C( 10, J ) |
|
348 C( 1, J ) = C( 1, J ) - SUM*T1 |
|
349 C( 2, J ) = C( 2, J ) - SUM*T2 |
|
350 C( 3, J ) = C( 3, J ) - SUM*T3 |
|
351 C( 4, J ) = C( 4, J ) - SUM*T4 |
|
352 C( 5, J ) = C( 5, J ) - SUM*T5 |
|
353 C( 6, J ) = C( 6, J ) - SUM*T6 |
|
354 C( 7, J ) = C( 7, J ) - SUM*T7 |
|
355 C( 8, J ) = C( 8, J ) - SUM*T8 |
|
356 C( 9, J ) = C( 9, J ) - SUM*T9 |
|
357 C( 10, J ) = C( 10, J ) - SUM*T10 |
|
358 200 CONTINUE |
|
359 GO TO 410 |
|
360 ELSE |
|
361 * |
|
362 * Form C * H, where H has order n. |
|
363 * |
|
364 GO TO ( 210, 230, 250, 270, 290, 310, 330, 350, |
|
365 $ 370, 390 )N |
|
366 * |
|
367 * Code for general N |
|
368 * |
|
369 * w := C * v |
|
370 * |
|
371 CALL DGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO, |
|
372 $ WORK, 1 ) |
|
373 * |
|
374 * C := C - tau * w * v' |
|
375 * |
|
376 CALL DGER( M, N, -TAU, WORK, 1, V, 1, C, LDC ) |
|
377 GO TO 410 |
|
378 210 CONTINUE |
|
379 * |
|
380 * Special code for 1 x 1 Householder |
|
381 * |
|
382 T1 = ONE - TAU*V( 1 )*V( 1 ) |
|
383 DO 220 J = 1, M |
|
384 C( J, 1 ) = T1*C( J, 1 ) |
|
385 220 CONTINUE |
|
386 GO TO 410 |
|
387 230 CONTINUE |
|
388 * |
|
389 * Special code for 2 x 2 Householder |
|
390 * |
|
391 V1 = V( 1 ) |
|
392 T1 = TAU*V1 |
|
393 V2 = V( 2 ) |
|
394 T2 = TAU*V2 |
|
395 DO 240 J = 1, M |
|
396 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) |
|
397 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
398 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
399 240 CONTINUE |
|
400 GO TO 410 |
|
401 250 CONTINUE |
|
402 * |
|
403 * Special code for 3 x 3 Householder |
|
404 * |
|
405 V1 = V( 1 ) |
|
406 T1 = TAU*V1 |
|
407 V2 = V( 2 ) |
|
408 T2 = TAU*V2 |
|
409 V3 = V( 3 ) |
|
410 T3 = TAU*V3 |
|
411 DO 260 J = 1, M |
|
412 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) |
|
413 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
414 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
415 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
416 260 CONTINUE |
|
417 GO TO 410 |
|
418 270 CONTINUE |
|
419 * |
|
420 * Special code for 4 x 4 Householder |
|
421 * |
|
422 V1 = V( 1 ) |
|
423 T1 = TAU*V1 |
|
424 V2 = V( 2 ) |
|
425 T2 = TAU*V2 |
|
426 V3 = V( 3 ) |
|
427 T3 = TAU*V3 |
|
428 V4 = V( 4 ) |
|
429 T4 = TAU*V4 |
|
430 DO 280 J = 1, M |
|
431 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
432 $ V4*C( J, 4 ) |
|
433 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
434 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
435 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
436 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
437 280 CONTINUE |
|
438 GO TO 410 |
|
439 290 CONTINUE |
|
440 * |
|
441 * Special code for 5 x 5 Householder |
|
442 * |
|
443 V1 = V( 1 ) |
|
444 T1 = TAU*V1 |
|
445 V2 = V( 2 ) |
|
446 T2 = TAU*V2 |
|
447 V3 = V( 3 ) |
|
448 T3 = TAU*V3 |
|
449 V4 = V( 4 ) |
|
450 T4 = TAU*V4 |
|
451 V5 = V( 5 ) |
|
452 T5 = TAU*V5 |
|
453 DO 300 J = 1, M |
|
454 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
455 $ V4*C( J, 4 ) + V5*C( J, 5 ) |
|
456 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
457 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
458 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
459 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
460 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
461 300 CONTINUE |
|
462 GO TO 410 |
|
463 310 CONTINUE |
|
464 * |
|
465 * Special code for 6 x 6 Householder |
|
466 * |
|
467 V1 = V( 1 ) |
|
468 T1 = TAU*V1 |
|
469 V2 = V( 2 ) |
|
470 T2 = TAU*V2 |
|
471 V3 = V( 3 ) |
|
472 T3 = TAU*V3 |
|
473 V4 = V( 4 ) |
|
474 T4 = TAU*V4 |
|
475 V5 = V( 5 ) |
|
476 T5 = TAU*V5 |
|
477 V6 = V( 6 ) |
|
478 T6 = TAU*V6 |
|
479 DO 320 J = 1, M |
|
480 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
481 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) |
|
482 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
483 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
484 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
485 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
486 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
487 C( J, 6 ) = C( J, 6 ) - SUM*T6 |
|
488 320 CONTINUE |
|
489 GO TO 410 |
|
490 330 CONTINUE |
|
491 * |
|
492 * Special code for 7 x 7 Householder |
|
493 * |
|
494 V1 = V( 1 ) |
|
495 T1 = TAU*V1 |
|
496 V2 = V( 2 ) |
|
497 T2 = TAU*V2 |
|
498 V3 = V( 3 ) |
|
499 T3 = TAU*V3 |
|
500 V4 = V( 4 ) |
|
501 T4 = TAU*V4 |
|
502 V5 = V( 5 ) |
|
503 T5 = TAU*V5 |
|
504 V6 = V( 6 ) |
|
505 T6 = TAU*V6 |
|
506 V7 = V( 7 ) |
|
507 T7 = TAU*V7 |
|
508 DO 340 J = 1, M |
|
509 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
510 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + |
|
511 $ V7*C( J, 7 ) |
|
512 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
513 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
514 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
515 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
516 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
517 C( J, 6 ) = C( J, 6 ) - SUM*T6 |
|
518 C( J, 7 ) = C( J, 7 ) - SUM*T7 |
|
519 340 CONTINUE |
|
520 GO TO 410 |
|
521 350 CONTINUE |
|
522 * |
|
523 * Special code for 8 x 8 Householder |
|
524 * |
|
525 V1 = V( 1 ) |
|
526 T1 = TAU*V1 |
|
527 V2 = V( 2 ) |
|
528 T2 = TAU*V2 |
|
529 V3 = V( 3 ) |
|
530 T3 = TAU*V3 |
|
531 V4 = V( 4 ) |
|
532 T4 = TAU*V4 |
|
533 V5 = V( 5 ) |
|
534 T5 = TAU*V5 |
|
535 V6 = V( 6 ) |
|
536 T6 = TAU*V6 |
|
537 V7 = V( 7 ) |
|
538 T7 = TAU*V7 |
|
539 V8 = V( 8 ) |
|
540 T8 = TAU*V8 |
|
541 DO 360 J = 1, M |
|
542 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
543 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + |
|
544 $ V7*C( J, 7 ) + V8*C( J, 8 ) |
|
545 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
546 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
547 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
548 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
549 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
550 C( J, 6 ) = C( J, 6 ) - SUM*T6 |
|
551 C( J, 7 ) = C( J, 7 ) - SUM*T7 |
|
552 C( J, 8 ) = C( J, 8 ) - SUM*T8 |
|
553 360 CONTINUE |
|
554 GO TO 410 |
|
555 370 CONTINUE |
|
556 * |
|
557 * Special code for 9 x 9 Householder |
|
558 * |
|
559 V1 = V( 1 ) |
|
560 T1 = TAU*V1 |
|
561 V2 = V( 2 ) |
|
562 T2 = TAU*V2 |
|
563 V3 = V( 3 ) |
|
564 T3 = TAU*V3 |
|
565 V4 = V( 4 ) |
|
566 T4 = TAU*V4 |
|
567 V5 = V( 5 ) |
|
568 T5 = TAU*V5 |
|
569 V6 = V( 6 ) |
|
570 T6 = TAU*V6 |
|
571 V7 = V( 7 ) |
|
572 T7 = TAU*V7 |
|
573 V8 = V( 8 ) |
|
574 T8 = TAU*V8 |
|
575 V9 = V( 9 ) |
|
576 T9 = TAU*V9 |
|
577 DO 380 J = 1, M |
|
578 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
579 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + |
|
580 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) |
|
581 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
582 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
583 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
584 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
585 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
586 C( J, 6 ) = C( J, 6 ) - SUM*T6 |
|
587 C( J, 7 ) = C( J, 7 ) - SUM*T7 |
|
588 C( J, 8 ) = C( J, 8 ) - SUM*T8 |
|
589 C( J, 9 ) = C( J, 9 ) - SUM*T9 |
|
590 380 CONTINUE |
|
591 GO TO 410 |
|
592 390 CONTINUE |
|
593 * |
|
594 * Special code for 10 x 10 Householder |
|
595 * |
|
596 V1 = V( 1 ) |
|
597 T1 = TAU*V1 |
|
598 V2 = V( 2 ) |
|
599 T2 = TAU*V2 |
|
600 V3 = V( 3 ) |
|
601 T3 = TAU*V3 |
|
602 V4 = V( 4 ) |
|
603 T4 = TAU*V4 |
|
604 V5 = V( 5 ) |
|
605 T5 = TAU*V5 |
|
606 V6 = V( 6 ) |
|
607 T6 = TAU*V6 |
|
608 V7 = V( 7 ) |
|
609 T7 = TAU*V7 |
|
610 V8 = V( 8 ) |
|
611 T8 = TAU*V8 |
|
612 V9 = V( 9 ) |
|
613 T9 = TAU*V9 |
|
614 V10 = V( 10 ) |
|
615 T10 = TAU*V10 |
|
616 DO 400 J = 1, M |
|
617 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + |
|
618 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + |
|
619 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) + |
|
620 $ V10*C( J, 10 ) |
|
621 C( J, 1 ) = C( J, 1 ) - SUM*T1 |
|
622 C( J, 2 ) = C( J, 2 ) - SUM*T2 |
|
623 C( J, 3 ) = C( J, 3 ) - SUM*T3 |
|
624 C( J, 4 ) = C( J, 4 ) - SUM*T4 |
|
625 C( J, 5 ) = C( J, 5 ) - SUM*T5 |
|
626 C( J, 6 ) = C( J, 6 ) - SUM*T6 |
|
627 C( J, 7 ) = C( J, 7 ) - SUM*T7 |
|
628 C( J, 8 ) = C( J, 8 ) - SUM*T8 |
|
629 C( J, 9 ) = C( J, 9 ) - SUM*T9 |
|
630 C( J, 10 ) = C( J, 10 ) - SUM*T10 |
|
631 400 CONTINUE |
|
632 GO TO 410 |
|
633 END IF |
|
634 410 CONTINUE |
|
635 RETURN |
|
636 * |
|
637 * End of DLARFX |
|
638 * |
|
639 END |