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
695