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