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