Mercurial > octave-nkf
comparison libcruft/lapack/slarfx.f @ 7789:82be108cc558
First attempt at single precision tyeps
* * *
corrections to qrupdate single precision routines
* * *
prefer demotion to single over promotion to double
* * *
Add single precision support to log2 function
* * *
Trivial PROJECT file update
* * *
Cache optimized hermitian/transpose methods
* * *
Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author | David Bateman <dbateman@free.fr> |
---|---|
date | Sun, 27 Apr 2008 22:34:17 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
7788:45f5faba05a2 | 7789:82be108cc558 |
---|---|
1 SUBROUTINE SLARFX( SIDE, M, N, V, TAU, C, LDC, WORK ) | |
2 * | |
3 * -- LAPACK auxiliary routine (version 3.1) -- | |
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. | |
5 * November 2006 | |
6 * | |
7 * .. Scalar Arguments .. | |
8 CHARACTER SIDE | |
9 INTEGER LDC, M, N | |
10 REAL TAU | |
11 * .. | |
12 * .. Array Arguments .. | |
13 REAL C( LDC, * ), V( * ), WORK( * ) | |
14 * .. | |
15 * | |
16 * Purpose | |
17 * ======= | |
18 * | |
19 * SLARFX 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) REAL 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) REAL | |
49 * The value tau in the representation of H. | |
50 * | |
51 * C (input/output) REAL 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) REAL 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 REAL ZERO, ONE | |
68 PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) | |
69 * .. | |
70 * .. Local Scalars .. | |
71 INTEGER J | |
72 REAL 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 SGEMV, SGER | |
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 SGEMV( 'Transpose', M, N, ONE, C, LDC, V, 1, ZERO, WORK, | |
98 $ 1 ) | |
99 * | |
100 * C := C - tau * v * w' | |
101 * | |
102 CALL SGER( 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 SGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO, | |
371 $ WORK, 1 ) | |
372 * | |
373 * C := C - tau * w * v' | |
374 * | |
375 CALL SGER( 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 RETURN | |
634 * | |
635 * End of SLARFX | |
636 * | |
637 END |