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