Annotation of rpl/lapack/lapack/zlarfx.f, revision 1.20
1.12 bertrand 1: *> \brief \b ZLARFX applies an elementary reflector to a general rectangular matrix, with loop unrolling when the reflector has order ≤ 10.
1.9 bertrand 2: *
3: * =========== DOCUMENTATION ===========
4: *
1.16 bertrand 5: * Online html documentation available at
6: * http://www.netlib.org/lapack/explore-html/
1.9 bertrand 7: *
8: *> \htmlonly
1.16 bertrand 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">
1.9 bertrand 15: *> [TXT]</a>
1.16 bertrand 16: *> \endhtmlonly
1.9 bertrand 17: *
18: * Definition:
19: * ===========
20: *
21: * SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
1.16 bertrand 22: *
1.9 bertrand 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: * ..
1.16 bertrand 31: *
1.9 bertrand 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
1.19 bertrand 97: *> The leading dimension of the array C. LDC >= max(1,M).
1.9 bertrand 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: *
1.16 bertrand 110: *> \author Univ. of Tennessee
111: *> \author Univ. of California Berkeley
112: *> \author Univ. of Colorado Denver
113: *> \author NAG Ltd.
1.9 bertrand 114: *
115: *> \ingroup complex16OTHERauxiliary
116: *
117: * =====================================================================
1.1 bertrand 118: SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
119: *
1.20 ! bertrand 120: * -- LAPACK auxiliary routine --
1.1 bertrand 121: * -- LAPACK is a software package provided by Univ. of Tennessee, --
122: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
123: *
124: * .. Scalar Arguments ..
125: CHARACTER SIDE
126: INTEGER LDC, M, N
127: COMPLEX*16 TAU
128: * ..
129: * .. Array Arguments ..
130: COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
131: * ..
132: *
133: * =====================================================================
134: *
135: * .. Parameters ..
136: COMPLEX*16 ZERO, ONE
137: PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ),
138: $ ONE = ( 1.0D+0, 0.0D+0 ) )
139: * ..
140: * .. Local Scalars ..
141: INTEGER J
142: COMPLEX*16 SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
143: $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
144: * ..
145: * .. External Functions ..
146: LOGICAL LSAME
147: EXTERNAL LSAME
148: * ..
149: * .. External Subroutines ..
150: EXTERNAL ZLARF
151: * ..
152: * .. Intrinsic Functions ..
153: INTRINSIC DCONJG
154: * ..
155: * .. Executable Statements ..
156: *
157: IF( TAU.EQ.ZERO )
158: $ RETURN
159: IF( LSAME( SIDE, 'L' ) ) THEN
160: *
161: * Form H * C, where H has order m.
162: *
163: GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
164: $ 170, 190 )M
165: *
166: * Code for general M
167: *
168: CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
169: GO TO 410
170: 10 CONTINUE
171: *
172: * Special code for 1 x 1 Householder
173: *
174: T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
175: DO 20 J = 1, N
176: C( 1, J ) = T1*C( 1, J )
177: 20 CONTINUE
178: GO TO 410
179: 30 CONTINUE
180: *
181: * Special code for 2 x 2 Householder
182: *
183: V1 = DCONJG( V( 1 ) )
184: T1 = TAU*DCONJG( V1 )
185: V2 = DCONJG( V( 2 ) )
186: T2 = TAU*DCONJG( V2 )
187: DO 40 J = 1, N
188: SUM = V1*C( 1, J ) + V2*C( 2, J )
189: C( 1, J ) = C( 1, J ) - SUM*T1
190: C( 2, J ) = C( 2, J ) - SUM*T2
191: 40 CONTINUE
192: GO TO 410
193: 50 CONTINUE
194: *
195: * Special code for 3 x 3 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: DO 60 J = 1, N
204: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
205: C( 1, J ) = C( 1, J ) - SUM*T1
206: C( 2, J ) = C( 2, J ) - SUM*T2
207: C( 3, J ) = C( 3, J ) - SUM*T3
208: 60 CONTINUE
209: GO TO 410
210: 70 CONTINUE
211: *
212: * Special code for 4 x 4 Householder
213: *
214: V1 = DCONJG( V( 1 ) )
215: T1 = TAU*DCONJG( V1 )
216: V2 = DCONJG( V( 2 ) )
217: T2 = TAU*DCONJG( V2 )
218: V3 = DCONJG( V( 3 ) )
219: T3 = TAU*DCONJG( V3 )
220: V4 = DCONJG( V( 4 ) )
221: T4 = TAU*DCONJG( V4 )
222: DO 80 J = 1, N
223: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
224: $ V4*C( 4, J )
225: C( 1, J ) = C( 1, J ) - SUM*T1
226: C( 2, J ) = C( 2, J ) - SUM*T2
227: C( 3, J ) = C( 3, J ) - SUM*T3
228: C( 4, J ) = C( 4, J ) - SUM*T4
229: 80 CONTINUE
230: GO TO 410
231: 90 CONTINUE
232: *
233: * Special code for 5 x 5 Householder
234: *
235: V1 = DCONJG( V( 1 ) )
236: T1 = TAU*DCONJG( V1 )
237: V2 = DCONJG( V( 2 ) )
238: T2 = TAU*DCONJG( V2 )
239: V3 = DCONJG( V( 3 ) )
240: T3 = TAU*DCONJG( V3 )
241: V4 = DCONJG( V( 4 ) )
242: T4 = TAU*DCONJG( V4 )
243: V5 = DCONJG( V( 5 ) )
244: T5 = TAU*DCONJG( V5 )
245: DO 100 J = 1, N
246: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
247: $ V4*C( 4, J ) + V5*C( 5, J )
248: C( 1, J ) = C( 1, J ) - SUM*T1
249: C( 2, J ) = C( 2, J ) - SUM*T2
250: C( 3, J ) = C( 3, J ) - SUM*T3
251: C( 4, J ) = C( 4, J ) - SUM*T4
252: C( 5, J ) = C( 5, J ) - SUM*T5
253: 100 CONTINUE
254: GO TO 410
255: 110 CONTINUE
256: *
257: * Special code for 6 x 6 Householder
258: *
259: V1 = DCONJG( V( 1 ) )
260: T1 = TAU*DCONJG( V1 )
261: V2 = DCONJG( V( 2 ) )
262: T2 = TAU*DCONJG( V2 )
263: V3 = DCONJG( V( 3 ) )
264: T3 = TAU*DCONJG( V3 )
265: V4 = DCONJG( V( 4 ) )
266: T4 = TAU*DCONJG( V4 )
267: V5 = DCONJG( V( 5 ) )
268: T5 = TAU*DCONJG( V5 )
269: V6 = DCONJG( V( 6 ) )
270: T6 = TAU*DCONJG( V6 )
271: DO 120 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: C( 1, J ) = C( 1, J ) - SUM*T1
275: C( 2, J ) = C( 2, J ) - SUM*T2
276: C( 3, J ) = C( 3, J ) - SUM*T3
277: C( 4, J ) = C( 4, J ) - SUM*T4
278: C( 5, J ) = C( 5, J ) - SUM*T5
279: C( 6, J ) = C( 6, J ) - SUM*T6
280: 120 CONTINUE
281: GO TO 410
282: 130 CONTINUE
283: *
284: * Special code for 7 x 7 Householder
285: *
286: V1 = DCONJG( V( 1 ) )
287: T1 = TAU*DCONJG( V1 )
288: V2 = DCONJG( V( 2 ) )
289: T2 = TAU*DCONJG( V2 )
290: V3 = DCONJG( V( 3 ) )
291: T3 = TAU*DCONJG( V3 )
292: V4 = DCONJG( V( 4 ) )
293: T4 = TAU*DCONJG( V4 )
294: V5 = DCONJG( V( 5 ) )
295: T5 = TAU*DCONJG( V5 )
296: V6 = DCONJG( V( 6 ) )
297: T6 = TAU*DCONJG( V6 )
298: V7 = DCONJG( V( 7 ) )
299: T7 = TAU*DCONJG( V7 )
300: DO 140 J = 1, N
301: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
302: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
303: $ V7*C( 7, J )
304: C( 1, J ) = C( 1, J ) - SUM*T1
305: C( 2, J ) = C( 2, J ) - SUM*T2
306: C( 3, J ) = C( 3, J ) - SUM*T3
307: C( 4, J ) = C( 4, J ) - SUM*T4
308: C( 5, J ) = C( 5, J ) - SUM*T5
309: C( 6, J ) = C( 6, J ) - SUM*T6
310: C( 7, J ) = C( 7, J ) - SUM*T7
311: 140 CONTINUE
312: GO TO 410
313: 150 CONTINUE
314: *
315: * Special code for 8 x 8 Householder
316: *
317: V1 = DCONJG( V( 1 ) )
318: T1 = TAU*DCONJG( V1 )
319: V2 = DCONJG( V( 2 ) )
320: T2 = TAU*DCONJG( V2 )
321: V3 = DCONJG( V( 3 ) )
322: T3 = TAU*DCONJG( V3 )
323: V4 = DCONJG( V( 4 ) )
324: T4 = TAU*DCONJG( V4 )
325: V5 = DCONJG( V( 5 ) )
326: T5 = TAU*DCONJG( V5 )
327: V6 = DCONJG( V( 6 ) )
328: T6 = TAU*DCONJG( V6 )
329: V7 = DCONJG( V( 7 ) )
330: T7 = TAU*DCONJG( V7 )
331: V8 = DCONJG( V( 8 ) )
332: T8 = TAU*DCONJG( V8 )
333: DO 160 J = 1, N
334: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
335: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
336: $ V7*C( 7, J ) + V8*C( 8, J )
337: C( 1, J ) = C( 1, J ) - SUM*T1
338: C( 2, J ) = C( 2, J ) - SUM*T2
339: C( 3, J ) = C( 3, J ) - SUM*T3
340: C( 4, J ) = C( 4, J ) - SUM*T4
341: C( 5, J ) = C( 5, J ) - SUM*T5
342: C( 6, J ) = C( 6, J ) - SUM*T6
343: C( 7, J ) = C( 7, J ) - SUM*T7
344: C( 8, J ) = C( 8, J ) - SUM*T8
345: 160 CONTINUE
346: GO TO 410
347: 170 CONTINUE
348: *
349: * Special code for 9 x 9 Householder
350: *
351: V1 = DCONJG( V( 1 ) )
352: T1 = TAU*DCONJG( V1 )
353: V2 = DCONJG( V( 2 ) )
354: T2 = TAU*DCONJG( V2 )
355: V3 = DCONJG( V( 3 ) )
356: T3 = TAU*DCONJG( V3 )
357: V4 = DCONJG( V( 4 ) )
358: T4 = TAU*DCONJG( V4 )
359: V5 = DCONJG( V( 5 ) )
360: T5 = TAU*DCONJG( V5 )
361: V6 = DCONJG( V( 6 ) )
362: T6 = TAU*DCONJG( V6 )
363: V7 = DCONJG( V( 7 ) )
364: T7 = TAU*DCONJG( V7 )
365: V8 = DCONJG( V( 8 ) )
366: T8 = TAU*DCONJG( V8 )
367: V9 = DCONJG( V( 9 ) )
368: T9 = TAU*DCONJG( V9 )
369: DO 180 J = 1, N
370: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
371: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
372: $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
373: C( 1, J ) = C( 1, J ) - SUM*T1
374: C( 2, J ) = C( 2, J ) - SUM*T2
375: C( 3, J ) = C( 3, J ) - SUM*T3
376: C( 4, J ) = C( 4, J ) - SUM*T4
377: C( 5, J ) = C( 5, J ) - SUM*T5
378: C( 6, J ) = C( 6, J ) - SUM*T6
379: C( 7, J ) = C( 7, J ) - SUM*T7
380: C( 8, J ) = C( 8, J ) - SUM*T8
381: C( 9, J ) = C( 9, J ) - SUM*T9
382: 180 CONTINUE
383: GO TO 410
384: 190 CONTINUE
385: *
386: * Special code for 10 x 10 Householder
387: *
388: V1 = DCONJG( V( 1 ) )
389: T1 = TAU*DCONJG( V1 )
390: V2 = DCONJG( V( 2 ) )
391: T2 = TAU*DCONJG( V2 )
392: V3 = DCONJG( V( 3 ) )
393: T3 = TAU*DCONJG( V3 )
394: V4 = DCONJG( V( 4 ) )
395: T4 = TAU*DCONJG( V4 )
396: V5 = DCONJG( V( 5 ) )
397: T5 = TAU*DCONJG( V5 )
398: V6 = DCONJG( V( 6 ) )
399: T6 = TAU*DCONJG( V6 )
400: V7 = DCONJG( V( 7 ) )
401: T7 = TAU*DCONJG( V7 )
402: V8 = DCONJG( V( 8 ) )
403: T8 = TAU*DCONJG( V8 )
404: V9 = DCONJG( V( 9 ) )
405: T9 = TAU*DCONJG( V9 )
406: V10 = DCONJG( V( 10 ) )
407: T10 = TAU*DCONJG( V10 )
408: DO 200 J = 1, N
409: SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
410: $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
411: $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
412: $ V10*C( 10, J )
413: C( 1, J ) = C( 1, J ) - SUM*T1
414: C( 2, J ) = C( 2, J ) - SUM*T2
415: C( 3, J ) = C( 3, J ) - SUM*T3
416: C( 4, J ) = C( 4, J ) - SUM*T4
417: C( 5, J ) = C( 5, J ) - SUM*T5
418: C( 6, J ) = C( 6, J ) - SUM*T6
419: C( 7, J ) = C( 7, J ) - SUM*T7
420: C( 8, J ) = C( 8, J ) - SUM*T8
421: C( 9, J ) = C( 9, J ) - SUM*T9
422: C( 10, J ) = C( 10, J ) - SUM*T10
423: 200 CONTINUE
424: GO TO 410
425: ELSE
426: *
427: * Form C * H, where H has order n.
428: *
429: GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
430: $ 370, 390 )N
431: *
432: * Code for general N
433: *
434: CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
435: GO TO 410
436: 210 CONTINUE
437: *
438: * Special code for 1 x 1 Householder
439: *
440: T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
441: DO 220 J = 1, M
442: C( J, 1 ) = T1*C( J, 1 )
443: 220 CONTINUE
444: GO TO 410
445: 230 CONTINUE
446: *
447: * Special code for 2 x 2 Householder
448: *
449: V1 = V( 1 )
450: T1 = TAU*DCONJG( V1 )
451: V2 = V( 2 )
452: T2 = TAU*DCONJG( V2 )
453: DO 240 J = 1, M
454: SUM = V1*C( J, 1 ) + V2*C( J, 2 )
455: C( J, 1 ) = C( J, 1 ) - SUM*T1
456: C( J, 2 ) = C( J, 2 ) - SUM*T2
457: 240 CONTINUE
458: GO TO 410
459: 250 CONTINUE
460: *
461: * Special code for 3 x 3 Householder
462: *
463: V1 = V( 1 )
464: T1 = TAU*DCONJG( V1 )
465: V2 = V( 2 )
466: T2 = TAU*DCONJG( V2 )
467: V3 = V( 3 )
468: T3 = TAU*DCONJG( V3 )
469: DO 260 J = 1, M
470: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
471: C( J, 1 ) = C( J, 1 ) - SUM*T1
472: C( J, 2 ) = C( J, 2 ) - SUM*T2
473: C( J, 3 ) = C( J, 3 ) - SUM*T3
474: 260 CONTINUE
475: GO TO 410
476: 270 CONTINUE
477: *
478: * Special code for 4 x 4 Householder
479: *
480: V1 = V( 1 )
481: T1 = TAU*DCONJG( V1 )
482: V2 = V( 2 )
483: T2 = TAU*DCONJG( V2 )
484: V3 = V( 3 )
485: T3 = TAU*DCONJG( V3 )
486: V4 = V( 4 )
487: T4 = TAU*DCONJG( V4 )
488: DO 280 J = 1, M
489: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
490: $ V4*C( J, 4 )
491: C( J, 1 ) = C( J, 1 ) - SUM*T1
492: C( J, 2 ) = C( J, 2 ) - SUM*T2
493: C( J, 3 ) = C( J, 3 ) - SUM*T3
494: C( J, 4 ) = C( J, 4 ) - SUM*T4
495: 280 CONTINUE
496: GO TO 410
497: 290 CONTINUE
498: *
499: * Special code for 5 x 5 Householder
500: *
501: V1 = V( 1 )
502: T1 = TAU*DCONJG( V1 )
503: V2 = V( 2 )
504: T2 = TAU*DCONJG( V2 )
505: V3 = V( 3 )
506: T3 = TAU*DCONJG( V3 )
507: V4 = V( 4 )
508: T4 = TAU*DCONJG( V4 )
509: V5 = V( 5 )
510: T5 = TAU*DCONJG( V5 )
511: DO 300 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 )
514: C( J, 1 ) = C( J, 1 ) - SUM*T1
515: C( J, 2 ) = C( J, 2 ) - SUM*T2
516: C( J, 3 ) = C( J, 3 ) - SUM*T3
517: C( J, 4 ) = C( J, 4 ) - SUM*T4
518: C( J, 5 ) = C( J, 5 ) - SUM*T5
519: 300 CONTINUE
520: GO TO 410
521: 310 CONTINUE
522: *
523: * Special code for 6 x 6 Householder
524: *
525: V1 = V( 1 )
526: T1 = TAU*DCONJG( V1 )
527: V2 = V( 2 )
528: T2 = TAU*DCONJG( V2 )
529: V3 = V( 3 )
530: T3 = TAU*DCONJG( V3 )
531: V4 = V( 4 )
532: T4 = TAU*DCONJG( V4 )
533: V5 = V( 5 )
534: T5 = TAU*DCONJG( V5 )
535: V6 = V( 6 )
536: T6 = TAU*DCONJG( V6 )
537: DO 320 J = 1, M
538: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
539: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
540: C( J, 1 ) = C( J, 1 ) - SUM*T1
541: C( J, 2 ) = C( J, 2 ) - SUM*T2
542: C( J, 3 ) = C( J, 3 ) - SUM*T3
543: C( J, 4 ) = C( J, 4 ) - SUM*T4
544: C( J, 5 ) = C( J, 5 ) - SUM*T5
545: C( J, 6 ) = C( J, 6 ) - SUM*T6
546: 320 CONTINUE
547: GO TO 410
548: 330 CONTINUE
549: *
550: * Special code for 7 x 7 Householder
551: *
552: V1 = V( 1 )
553: T1 = TAU*DCONJG( V1 )
554: V2 = V( 2 )
555: T2 = TAU*DCONJG( V2 )
556: V3 = V( 3 )
557: T3 = TAU*DCONJG( V3 )
558: V4 = V( 4 )
559: T4 = TAU*DCONJG( V4 )
560: V5 = V( 5 )
561: T5 = TAU*DCONJG( V5 )
562: V6 = V( 6 )
563: T6 = TAU*DCONJG( V6 )
564: V7 = V( 7 )
565: T7 = TAU*DCONJG( V7 )
566: DO 340 J = 1, M
567: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
568: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
569: $ V7*C( J, 7 )
570: C( J, 1 ) = C( J, 1 ) - SUM*T1
571: C( J, 2 ) = C( J, 2 ) - SUM*T2
572: C( J, 3 ) = C( J, 3 ) - SUM*T3
573: C( J, 4 ) = C( J, 4 ) - SUM*T4
574: C( J, 5 ) = C( J, 5 ) - SUM*T5
575: C( J, 6 ) = C( J, 6 ) - SUM*T6
576: C( J, 7 ) = C( J, 7 ) - SUM*T7
577: 340 CONTINUE
578: GO TO 410
579: 350 CONTINUE
580: *
581: * Special code for 8 x 8 Householder
582: *
583: V1 = V( 1 )
584: T1 = TAU*DCONJG( V1 )
585: V2 = V( 2 )
586: T2 = TAU*DCONJG( V2 )
587: V3 = V( 3 )
588: T3 = TAU*DCONJG( V3 )
589: V4 = V( 4 )
590: T4 = TAU*DCONJG( V4 )
591: V5 = V( 5 )
592: T5 = TAU*DCONJG( V5 )
593: V6 = V( 6 )
594: T6 = TAU*DCONJG( V6 )
595: V7 = V( 7 )
596: T7 = TAU*DCONJG( V7 )
597: V8 = V( 8 )
598: T8 = TAU*DCONJG( V8 )
599: DO 360 J = 1, M
600: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
601: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
602: $ V7*C( J, 7 ) + V8*C( J, 8 )
603: C( J, 1 ) = C( J, 1 ) - SUM*T1
604: C( J, 2 ) = C( J, 2 ) - SUM*T2
605: C( J, 3 ) = C( J, 3 ) - SUM*T3
606: C( J, 4 ) = C( J, 4 ) - SUM*T4
607: C( J, 5 ) = C( J, 5 ) - SUM*T5
608: C( J, 6 ) = C( J, 6 ) - SUM*T6
609: C( J, 7 ) = C( J, 7 ) - SUM*T7
610: C( J, 8 ) = C( J, 8 ) - SUM*T8
611: 360 CONTINUE
612: GO TO 410
613: 370 CONTINUE
614: *
615: * Special code for 9 x 9 Householder
616: *
617: V1 = V( 1 )
618: T1 = TAU*DCONJG( V1 )
619: V2 = V( 2 )
620: T2 = TAU*DCONJG( V2 )
621: V3 = V( 3 )
622: T3 = TAU*DCONJG( V3 )
623: V4 = V( 4 )
624: T4 = TAU*DCONJG( V4 )
625: V5 = V( 5 )
626: T5 = TAU*DCONJG( V5 )
627: V6 = V( 6 )
628: T6 = TAU*DCONJG( V6 )
629: V7 = V( 7 )
630: T7 = TAU*DCONJG( V7 )
631: V8 = V( 8 )
632: T8 = TAU*DCONJG( V8 )
633: V9 = V( 9 )
634: T9 = TAU*DCONJG( V9 )
635: DO 380 J = 1, M
636: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
637: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
638: $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
639: C( J, 1 ) = C( J, 1 ) - SUM*T1
640: C( J, 2 ) = C( J, 2 ) - SUM*T2
641: C( J, 3 ) = C( J, 3 ) - SUM*T3
642: C( J, 4 ) = C( J, 4 ) - SUM*T4
643: C( J, 5 ) = C( J, 5 ) - SUM*T5
644: C( J, 6 ) = C( J, 6 ) - SUM*T6
645: C( J, 7 ) = C( J, 7 ) - SUM*T7
646: C( J, 8 ) = C( J, 8 ) - SUM*T8
647: C( J, 9 ) = C( J, 9 ) - SUM*T9
648: 380 CONTINUE
649: GO TO 410
650: 390 CONTINUE
651: *
652: * Special code for 10 x 10 Householder
653: *
654: V1 = V( 1 )
655: T1 = TAU*DCONJG( V1 )
656: V2 = V( 2 )
657: T2 = TAU*DCONJG( V2 )
658: V3 = V( 3 )
659: T3 = TAU*DCONJG( V3 )
660: V4 = V( 4 )
661: T4 = TAU*DCONJG( V4 )
662: V5 = V( 5 )
663: T5 = TAU*DCONJG( V5 )
664: V6 = V( 6 )
665: T6 = TAU*DCONJG( V6 )
666: V7 = V( 7 )
667: T7 = TAU*DCONJG( V7 )
668: V8 = V( 8 )
669: T8 = TAU*DCONJG( V8 )
670: V9 = V( 9 )
671: T9 = TAU*DCONJG( V9 )
672: V10 = V( 10 )
673: T10 = TAU*DCONJG( V10 )
674: DO 400 J = 1, M
675: SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
676: $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
677: $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
678: $ V10*C( J, 10 )
679: C( J, 1 ) = C( J, 1 ) - SUM*T1
680: C( J, 2 ) = C( J, 2 ) - SUM*T2
681: C( J, 3 ) = C( J, 3 ) - SUM*T3
682: C( J, 4 ) = C( J, 4 ) - SUM*T4
683: C( J, 5 ) = C( J, 5 ) - SUM*T5
684: C( J, 6 ) = C( J, 6 ) - SUM*T6
685: C( J, 7 ) = C( J, 7 ) - SUM*T7
686: C( J, 8 ) = C( J, 8 ) - SUM*T8
687: C( J, 9 ) = C( J, 9 ) - SUM*T9
688: C( J, 10 ) = C( J, 10 ) - SUM*T10
689: 400 CONTINUE
690: GO TO 410
691: END IF
692: 410 CONTINUE
693: RETURN
694: *
695: * End of ZLARFX
696: *
697: END
CVSweb interface <joel.bertrand@systella.fr>