1: SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
2: IMPLICIT NONE
3: *
4: * -- LAPACK auxiliary routine (version 3.2) --
5: * -- LAPACK is a software package provided by Univ. of Tennessee, --
6: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
7: * November 2006
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'
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
CVSweb interface <joel.bertrand@systella.fr>