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