1: *> \brief \b ZLARFX applies an elementary reflector to a general rectangular matrix, with loop unrolling when the reflector has order ≤ 10.
2: *
3: * =========== DOCUMENTATION ===========
4: *
5: * Online html documentation available at
6: * http://www.netlib.org/lapack/explore-html/
7: *
8: *> \htmlonly
9: *> Download ZLARFX + dependencies
10: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlarfx.f">
11: *> [TGZ]</a>
12: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlarfx.f">
13: *> [ZIP]</a>
14: *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlarfx.f">
15: *> [TXT]</a>
16: *> \endhtmlonly
17: *
18: * Definition:
19: * ===========
20: *
21: * SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
22: *
23: * .. Scalar Arguments ..
24: * CHARACTER SIDE
25: * INTEGER LDC, M, N
26: * COMPLEX*16 TAU
27: * ..
28: * .. Array Arguments ..
29: * COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
30: * ..
31: *
32: *
33: *> \par Purpose:
34: * =============
35: *>
36: *> \verbatim
37: *>
38: *> ZLARFX applies a complex elementary reflector H to a complex m by n
39: *> matrix C, from either the left or the right. H is represented in the
40: *> form
41: *>
42: *> H = I - tau * v * v**H
43: *>
44: *> where tau is a complex scalar and v is a complex vector.
45: *>
46: *> If tau = 0, then H is taken to be the unit matrix
47: *>
48: *> This version uses inline code if H has order < 11.
49: *> \endverbatim
50: *
51: * Arguments:
52: * ==========
53: *
54: *> \param[in] SIDE
55: *> \verbatim
56: *> SIDE is CHARACTER*1
57: *> = 'L': form H * C
58: *> = 'R': form C * H
59: *> \endverbatim
60: *>
61: *> \param[in] M
62: *> \verbatim
63: *> M is INTEGER
64: *> The number of rows of the matrix C.
65: *> \endverbatim
66: *>
67: *> \param[in] N
68: *> \verbatim
69: *> N is INTEGER
70: *> The number of columns of the matrix C.
71: *> \endverbatim
72: *>
73: *> \param[in] V
74: *> \verbatim
75: *> V is COMPLEX*16 array, dimension (M) if SIDE = 'L'
76: *> or (N) if SIDE = 'R'
77: *> The vector v in the representation of H.
78: *> \endverbatim
79: *>
80: *> \param[in] TAU
81: *> \verbatim
82: *> TAU is COMPLEX*16
83: *> The value tau in the representation of H.
84: *> \endverbatim
85: *>
86: *> \param[in,out] C
87: *> \verbatim
88: *> C is COMPLEX*16 array, dimension (LDC,N)
89: *> On entry, the m by n matrix C.
90: *> On exit, C is overwritten by the matrix H * C if SIDE = 'L',
91: *> or C * H if SIDE = 'R'.
92: *> \endverbatim
93: *>
94: *> \param[in] LDC
95: *> \verbatim
96: *> LDC is INTEGER
97: *> The leading dimension of the array C. LDC >= max(1,M).
98: *> \endverbatim
99: *>
100: *> \param[out] WORK
101: *> \verbatim
102: *> WORK is COMPLEX*16 array, dimension (N) if SIDE = 'L'
103: *> or (M) if SIDE = 'R'
104: *> WORK is not referenced if H has order < 11.
105: *> \endverbatim
106: *
107: * Authors:
108: * ========
109: *
110: *> \author Univ. of Tennessee
111: *> \author Univ. of California Berkeley
112: *> \author Univ. of Colorado Denver
113: *> \author NAG Ltd.
114: *
115: *> \date December 2016
116: *
117: *> \ingroup complex16OTHERauxiliary
118: *
119: * =====================================================================
120: SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
121: *
122: * -- LAPACK auxiliary routine (version 3.7.0) --
123: * -- LAPACK is a software package provided by Univ. of Tennessee, --
124: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
125: * December 2016
126: *
127: * .. Scalar Arguments ..
128: CHARACTER SIDE
129: INTEGER LDC, M, N
130: COMPLEX*16 TAU
131: * ..
132: * .. Array Arguments ..
133: COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
134: * ..
135: *
136: * =====================================================================
137: *
138: * .. Parameters ..
139: COMPLEX*16 ZERO, ONE
140: PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
141: $ ONE = ( 1.0D+0, 0.0D+0 ) )
142: * ..
143: * .. Local Scalars ..
144: INTEGER J
145: COMPLEX*16 SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
146: $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
147: * ..
148: * .. External Functions ..
149: LOGICAL LSAME
150: EXTERNAL LSAME
151: * ..
152: * .. External Subroutines ..
153: EXTERNAL ZLARF
154: * ..
155: * .. Intrinsic Functions ..
156: INTRINSIC DCONJG
157: * ..
158: * .. Executable Statements ..
159: *
160: IF( TAU.EQ.ZERO )
161: $ RETURN
162: IF( LSAME( SIDE, 'L' ) ) THEN
163: *
164: * Form H * C, where H has order m.
165: *
166: GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
167: $ 170, 190 )M
168: *
169: * Code for general M
170: *
171: CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
172: GO TO 410
173: 10 CONTINUE
174: *
175: * Special code for 1 x 1 Householder
176: *
177: T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
178: DO 20 J = 1, N
179: C( 1, J ) = T1*C( 1, J )
180: 20 CONTINUE
181: GO TO 410
182: 30 CONTINUE
183: *
184: * Special code for 2 x 2 Householder
185: *
186: V1 = DCONJG( V( 1 ) )
187: T1 = TAU*DCONJG( V1 )
188: V2 = DCONJG( V( 2 ) )
189: T2 = TAU*DCONJG( V2 )
190: DO 40 J = 1, N
191: SUM = V1*C( 1, J ) + V2*C( 2, J )
192: C( 1, J ) = C( 1, J ) - SUM*T1
193: C( 2, J ) = C( 2, J ) - SUM*T2
194: 40 CONTINUE
195: GO TO 410
196: 50 CONTINUE
197: *
198: * Special code for 3 x 3 Householder
199: *
200: V1 = DCONJG( V( 1 ) )
201: T1 = TAU*DCONJG( V1 )
202: V2 = DCONJG( V( 2 ) )
203: T2 = TAU*DCONJG( V2 )
204: V3 = DCONJG( V( 3 ) )
205: T3 = TAU*DCONJG( V3 )
206: DO 60 J = 1, N
207: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, 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: 60 CONTINUE
212: GO TO 410
213: 70 CONTINUE
214: *
215: * Special code for 4 x 4 Householder
216: *
217: V1 = DCONJG( V( 1 ) )
218: T1 = TAU*DCONJG( V1 )
219: V2 = DCONJG( V( 2 ) )
220: T2 = TAU*DCONJG( V2 )
221: V3 = DCONJG( V( 3 ) )
222: T3 = TAU*DCONJG( V3 )
223: V4 = DCONJG( V( 4 ) )
224: T4 = TAU*DCONJG( V4 )
225: DO 80 J = 1, N
226: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
227: $ V4*C( 4, J )
228: C( 1, J ) = C( 1, J ) - SUM*T1
229: C( 2, J ) = C( 2, J ) - SUM*T2
230: C( 3, J ) = C( 3, J ) - SUM*T3
231: C( 4, J ) = C( 4, J ) - SUM*T4
232: 80 CONTINUE
233: GO TO 410
234: 90 CONTINUE
235: *
236: * Special code for 5 x 5 Householder
237: *
238: V1 = DCONJG( V( 1 ) )
239: T1 = TAU*DCONJG( V1 )
240: V2 = DCONJG( V( 2 ) )
241: T2 = TAU*DCONJG( V2 )
242: V3 = DCONJG( V( 3 ) )
243: T3 = TAU*DCONJG( V3 )
244: V4 = DCONJG( V( 4 ) )
245: T4 = TAU*DCONJG( V4 )
246: V5 = DCONJG( V( 5 ) )
247: T5 = TAU*DCONJG( V5 )
248: DO 100 J = 1, N
249: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
250: $ V4*C( 4, J ) + V5*C( 5, J )
251: C( 1, J ) = C( 1, J ) - SUM*T1
252: C( 2, J ) = C( 2, J ) - SUM*T2
253: C( 3, J ) = C( 3, J ) - SUM*T3
254: C( 4, J ) = C( 4, J ) - SUM*T4
255: C( 5, J ) = C( 5, J ) - SUM*T5
256: 100 CONTINUE
257: GO TO 410
258: 110 CONTINUE
259: *
260: * Special code for 6 x 6 Householder
261: *
262: V1 = DCONJG( V( 1 ) )
263: T1 = TAU*DCONJG( V1 )
264: V2 = DCONJG( V( 2 ) )
265: T2 = TAU*DCONJG( V2 )
266: V3 = DCONJG( V( 3 ) )
267: T3 = TAU*DCONJG( V3 )
268: V4 = DCONJG( V( 4 ) )
269: T4 = TAU*DCONJG( V4 )
270: V5 = DCONJG( V( 5 ) )
271: T5 = TAU*DCONJG( V5 )
272: V6 = DCONJG( V( 6 ) )
273: T6 = TAU*DCONJG( V6 )
274: DO 120 J = 1, N
275: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
276: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
277: C( 1, J ) = C( 1, J ) - SUM*T1
278: C( 2, J ) = C( 2, J ) - SUM*T2
279: C( 3, J ) = C( 3, J ) - SUM*T3
280: C( 4, J ) = C( 4, J ) - SUM*T4
281: C( 5, J ) = C( 5, J ) - SUM*T5
282: C( 6, J ) = C( 6, J ) - SUM*T6
283: 120 CONTINUE
284: GO TO 410
285: 130 CONTINUE
286: *
287: * Special code for 7 x 7 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: DO 140 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 )
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: 140 CONTINUE
315: GO TO 410
316: 150 CONTINUE
317: *
318: * Special code for 8 x 8 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: DO 160 J = 1, N
337: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
338: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
339: $ V7*C( 7, J ) + V8*C( 8, J )
340: C( 1, J ) = C( 1, J ) - SUM*T1
341: C( 2, J ) = C( 2, J ) - SUM*T2
342: C( 3, J ) = C( 3, J ) - SUM*T3
343: C( 4, J ) = C( 4, J ) - SUM*T4
344: C( 5, J ) = C( 5, J ) - SUM*T5
345: C( 6, J ) = C( 6, J ) - SUM*T6
346: C( 7, J ) = C( 7, J ) - SUM*T7
347: C( 8, J ) = C( 8, J ) - SUM*T8
348: 160 CONTINUE
349: GO TO 410
350: 170 CONTINUE
351: *
352: * Special code for 9 x 9 Householder
353: *
354: V1 = DCONJG( V( 1 ) )
355: T1 = TAU*DCONJG( V1 )
356: V2 = DCONJG( V( 2 ) )
357: T2 = TAU*DCONJG( V2 )
358: V3 = DCONJG( V( 3 ) )
359: T3 = TAU*DCONJG( V3 )
360: V4 = DCONJG( V( 4 ) )
361: T4 = TAU*DCONJG( V4 )
362: V5 = DCONJG( V( 5 ) )
363: T5 = TAU*DCONJG( V5 )
364: V6 = DCONJG( V( 6 ) )
365: T6 = TAU*DCONJG( V6 )
366: V7 = DCONJG( V( 7 ) )
367: T7 = TAU*DCONJG( V7 )
368: V8 = DCONJG( V( 8 ) )
369: T8 = TAU*DCONJG( V8 )
370: V9 = DCONJG( V( 9 ) )
371: T9 = TAU*DCONJG( V9 )
372: DO 180 J = 1, N
373: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
374: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
375: $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
376: C( 1, J ) = C( 1, J ) - SUM*T1
377: C( 2, J ) = C( 2, J ) - SUM*T2
378: C( 3, J ) = C( 3, J ) - SUM*T3
379: C( 4, J ) = C( 4, J ) - SUM*T4
380: C( 5, J ) = C( 5, J ) - SUM*T5
381: C( 6, J ) = C( 6, J ) - SUM*T6
382: C( 7, J ) = C( 7, J ) - SUM*T7
383: C( 8, J ) = C( 8, J ) - SUM*T8
384: C( 9, J ) = C( 9, J ) - SUM*T9
385: 180 CONTINUE
386: GO TO 410
387: 190 CONTINUE
388: *
389: * Special code for 10 x 10 Householder
390: *
391: V1 = DCONJG( V( 1 ) )
392: T1 = TAU*DCONJG( V1 )
393: V2 = DCONJG( V( 2 ) )
394: T2 = TAU*DCONJG( V2 )
395: V3 = DCONJG( V( 3 ) )
396: T3 = TAU*DCONJG( V3 )
397: V4 = DCONJG( V( 4 ) )
398: T4 = TAU*DCONJG( V4 )
399: V5 = DCONJG( V( 5 ) )
400: T5 = TAU*DCONJG( V5 )
401: V6 = DCONJG( V( 6 ) )
402: T6 = TAU*DCONJG( V6 )
403: V7 = DCONJG( V( 7 ) )
404: T7 = TAU*DCONJG( V7 )
405: V8 = DCONJG( V( 8 ) )
406: T8 = TAU*DCONJG( V8 )
407: V9 = DCONJG( V( 9 ) )
408: T9 = TAU*DCONJG( V9 )
409: V10 = DCONJG( V( 10 ) )
410: T10 = TAU*DCONJG( V10 )
411: DO 200 J = 1, N
412: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
413: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
414: $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
415: $ V10*C( 10, J )
416: C( 1, J ) = C( 1, J ) - SUM*T1
417: C( 2, J ) = C( 2, J ) - SUM*T2
418: C( 3, J ) = C( 3, J ) - SUM*T3
419: C( 4, J ) = C( 4, J ) - SUM*T4
420: C( 5, J ) = C( 5, J ) - SUM*T5
421: C( 6, J ) = C( 6, J ) - SUM*T6
422: C( 7, J ) = C( 7, J ) - SUM*T7
423: C( 8, J ) = C( 8, J ) - SUM*T8
424: C( 9, J ) = C( 9, J ) - SUM*T9
425: C( 10, J ) = C( 10, J ) - SUM*T10
426: 200 CONTINUE
427: GO TO 410
428: ELSE
429: *
430: * Form C * H, where H has order n.
431: *
432: GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
433: $ 370, 390 )N
434: *
435: * Code for general N
436: *
437: CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
438: GO TO 410
439: 210 CONTINUE
440: *
441: * Special code for 1 x 1 Householder
442: *
443: T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
444: DO 220 J = 1, M
445: C( J, 1 ) = T1*C( J, 1 )
446: 220 CONTINUE
447: GO TO 410
448: 230 CONTINUE
449: *
450: * Special code for 2 x 2 Householder
451: *
452: V1 = V( 1 )
453: T1 = TAU*DCONJG( V1 )
454: V2 = V( 2 )
455: T2 = TAU*DCONJG( V2 )
456: DO 240 J = 1, M
457: SUM = V1*C( J, 1 ) + V2*C( J, 2 )
458: C( J, 1 ) = C( J, 1 ) - SUM*T1
459: C( J, 2 ) = C( J, 2 ) - SUM*T2
460: 240 CONTINUE
461: GO TO 410
462: 250 CONTINUE
463: *
464: * Special code for 3 x 3 Householder
465: *
466: V1 = V( 1 )
467: T1 = TAU*DCONJG( V1 )
468: V2 = V( 2 )
469: T2 = TAU*DCONJG( V2 )
470: V3 = V( 3 )
471: T3 = TAU*DCONJG( V3 )
472: DO 260 J = 1, M
473: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
474: C( J, 1 ) = C( J, 1 ) - SUM*T1
475: C( J, 2 ) = C( J, 2 ) - SUM*T2
476: C( J, 3 ) = C( J, 3 ) - SUM*T3
477: 260 CONTINUE
478: GO TO 410
479: 270 CONTINUE
480: *
481: * Special code for 4 x 4 Householder
482: *
483: V1 = V( 1 )
484: T1 = TAU*DCONJG( V1 )
485: V2 = V( 2 )
486: T2 = TAU*DCONJG( V2 )
487: V3 = V( 3 )
488: T3 = TAU*DCONJG( V3 )
489: V4 = V( 4 )
490: T4 = TAU*DCONJG( V4 )
491: DO 280 J = 1, M
492: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
493: $ V4*C( J, 4 )
494: C( J, 1 ) = C( J, 1 ) - SUM*T1
495: C( J, 2 ) = C( J, 2 ) - SUM*T2
496: C( J, 3 ) = C( J, 3 ) - SUM*T3
497: C( J, 4 ) = C( J, 4 ) - SUM*T4
498: 280 CONTINUE
499: GO TO 410
500: 290 CONTINUE
501: *
502: * Special code for 5 x 5 Householder
503: *
504: V1 = V( 1 )
505: T1 = TAU*DCONJG( V1 )
506: V2 = V( 2 )
507: T2 = TAU*DCONJG( V2 )
508: V3 = V( 3 )
509: T3 = TAU*DCONJG( V3 )
510: V4 = V( 4 )
511: T4 = TAU*DCONJG( V4 )
512: V5 = V( 5 )
513: T5 = TAU*DCONJG( V5 )
514: DO 300 J = 1, M
515: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
516: $ V4*C( J, 4 ) + V5*C( J, 5 )
517: C( J, 1 ) = C( J, 1 ) - SUM*T1
518: C( J, 2 ) = C( J, 2 ) - SUM*T2
519: C( J, 3 ) = C( J, 3 ) - SUM*T3
520: C( J, 4 ) = C( J, 4 ) - SUM*T4
521: C( J, 5 ) = C( J, 5 ) - SUM*T5
522: 300 CONTINUE
523: GO TO 410
524: 310 CONTINUE
525: *
526: * Special code for 6 x 6 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: DO 320 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: C( J, 1 ) = C( J, 1 ) - SUM*T1
544: C( J, 2 ) = C( J, 2 ) - SUM*T2
545: C( J, 3 ) = C( J, 3 ) - SUM*T3
546: C( J, 4 ) = C( J, 4 ) - SUM*T4
547: C( J, 5 ) = C( J, 5 ) - SUM*T5
548: C( J, 6 ) = C( J, 6 ) - SUM*T6
549: 320 CONTINUE
550: GO TO 410
551: 330 CONTINUE
552: *
553: * Special code for 7 x 7 Householder
554: *
555: V1 = V( 1 )
556: T1 = TAU*DCONJG( V1 )
557: V2 = V( 2 )
558: T2 = TAU*DCONJG( V2 )
559: V3 = V( 3 )
560: T3 = TAU*DCONJG( V3 )
561: V4 = V( 4 )
562: T4 = TAU*DCONJG( V4 )
563: V5 = V( 5 )
564: T5 = TAU*DCONJG( V5 )
565: V6 = V( 6 )
566: T6 = TAU*DCONJG( V6 )
567: V7 = V( 7 )
568: T7 = TAU*DCONJG( V7 )
569: DO 340 J = 1, M
570: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
571: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
572: $ V7*C( J, 7 )
573: C( J, 1 ) = C( J, 1 ) - SUM*T1
574: C( J, 2 ) = C( J, 2 ) - SUM*T2
575: C( J, 3 ) = C( J, 3 ) - SUM*T3
576: C( J, 4 ) = C( J, 4 ) - SUM*T4
577: C( J, 5 ) = C( J, 5 ) - SUM*T5
578: C( J, 6 ) = C( J, 6 ) - SUM*T6
579: C( J, 7 ) = C( J, 7 ) - SUM*T7
580: 340 CONTINUE
581: GO TO 410
582: 350 CONTINUE
583: *
584: * Special code for 8 x 8 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: DO 360 J = 1, M
603: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
604: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
605: $ V7*C( J, 7 ) + V8*C( J, 8 )
606: C( J, 1 ) = C( J, 1 ) - SUM*T1
607: C( J, 2 ) = C( J, 2 ) - SUM*T2
608: C( J, 3 ) = C( J, 3 ) - SUM*T3
609: C( J, 4 ) = C( J, 4 ) - SUM*T4
610: C( J, 5 ) = C( J, 5 ) - SUM*T5
611: C( J, 6 ) = C( J, 6 ) - SUM*T6
612: C( J, 7 ) = C( J, 7 ) - SUM*T7
613: C( J, 8 ) = C( J, 8 ) - SUM*T8
614: 360 CONTINUE
615: GO TO 410
616: 370 CONTINUE
617: *
618: * Special code for 9 x 9 Householder
619: *
620: V1 = V( 1 )
621: T1 = TAU*DCONJG( V1 )
622: V2 = V( 2 )
623: T2 = TAU*DCONJG( V2 )
624: V3 = V( 3 )
625: T3 = TAU*DCONJG( V3 )
626: V4 = V( 4 )
627: T4 = TAU*DCONJG( V4 )
628: V5 = V( 5 )
629: T5 = TAU*DCONJG( V5 )
630: V6 = V( 6 )
631: T6 = TAU*DCONJG( V6 )
632: V7 = V( 7 )
633: T7 = TAU*DCONJG( V7 )
634: V8 = V( 8 )
635: T8 = TAU*DCONJG( V8 )
636: V9 = V( 9 )
637: T9 = TAU*DCONJG( V9 )
638: DO 380 J = 1, M
639: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
640: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
641: $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
642: C( J, 1 ) = C( J, 1 ) - SUM*T1
643: C( J, 2 ) = C( J, 2 ) - SUM*T2
644: C( J, 3 ) = C( J, 3 ) - SUM*T3
645: C( J, 4 ) = C( J, 4 ) - SUM*T4
646: C( J, 5 ) = C( J, 5 ) - SUM*T5
647: C( J, 6 ) = C( J, 6 ) - SUM*T6
648: C( J, 7 ) = C( J, 7 ) - SUM*T7
649: C( J, 8 ) = C( J, 8 ) - SUM*T8
650: C( J, 9 ) = C( J, 9 ) - SUM*T9
651: 380 CONTINUE
652: GO TO 410
653: 390 CONTINUE
654: *
655: * Special code for 10 x 10 Householder
656: *
657: V1 = V( 1 )
658: T1 = TAU*DCONJG( V1 )
659: V2 = V( 2 )
660: T2 = TAU*DCONJG( V2 )
661: V3 = V( 3 )
662: T3 = TAU*DCONJG( V3 )
663: V4 = V( 4 )
664: T4 = TAU*DCONJG( V4 )
665: V5 = V( 5 )
666: T5 = TAU*DCONJG( V5 )
667: V6 = V( 6 )
668: T6 = TAU*DCONJG( V6 )
669: V7 = V( 7 )
670: T7 = TAU*DCONJG( V7 )
671: V8 = V( 8 )
672: T8 = TAU*DCONJG( V8 )
673: V9 = V( 9 )
674: T9 = TAU*DCONJG( V9 )
675: V10 = V( 10 )
676: T10 = TAU*DCONJG( V10 )
677: DO 400 J = 1, M
678: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
679: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
680: $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
681: $ V10*C( J, 10 )
682: C( J, 1 ) = C( J, 1 ) - SUM*T1
683: C( J, 2 ) = C( J, 2 ) - SUM*T2
684: C( J, 3 ) = C( J, 3 ) - SUM*T3
685: C( J, 4 ) = C( J, 4 ) - SUM*T4
686: C( J, 5 ) = C( J, 5 ) - SUM*T5
687: C( J, 6 ) = C( J, 6 ) - SUM*T6
688: C( J, 7 ) = C( J, 7 ) - SUM*T7
689: C( J, 8 ) = C( J, 8 ) - SUM*T8
690: C( J, 9 ) = C( J, 9 ) - SUM*T9
691: C( J, 10 ) = C( J, 10 ) - SUM*T10
692: 400 CONTINUE
693: GO TO 410
694: END IF
695: 410 CONTINUE
696: RETURN
697: *
698: * End of ZLARFX
699: *
700: END
CVSweb interface <joel.bertrand@systella.fr>