Lots of trailing whitespaces in the files of Syd. Cleaning this. No big deal.
[platform/upstream/lapack.git] / SRC / dlarfx.f
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. LDA >= (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 *> \date September 2012
117 *
118 *> \ingroup doubleOTHERauxiliary
119 *
120 *  =====================================================================
121       SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
122 *
123 *  -- LAPACK auxiliary routine (version 3.4.2) --
124 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
125 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
126 *     September 2012
127 *
128 *     .. Scalar Arguments ..
129       CHARACTER          SIDE
130       INTEGER            LDC, M, N
131       DOUBLE PRECISION   TAU
132 *     ..
133 *     .. Array Arguments ..
134       DOUBLE PRECISION   C( LDC, * ), V( * ), WORK( * )
135 *     ..
136 *
137 *  =====================================================================
138 *
139 *     .. Parameters ..
140       DOUBLE PRECISION   ZERO, ONE
141       PARAMETER          ( ZERO = 0.0D+0, ONE = 1.0D+0 )
142 *     ..
143 *     .. Local Scalars ..
144       INTEGER            J
145       DOUBLE PRECISION   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           DLARF
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 DLARF( 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 )*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 = V( 1 )
184          T1 = TAU*V1
185          V2 = V( 2 )
186          T2 = TAU*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 = V( 1 )
198          T1 = TAU*V1
199          V2 = V( 2 )
200          T2 = TAU*V2
201          V3 = V( 3 )
202          T3 = TAU*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 = V( 1 )
215          T1 = TAU*V1
216          V2 = V( 2 )
217          T2 = TAU*V2
218          V3 = V( 3 )
219          T3 = TAU*V3
220          V4 = V( 4 )
221          T4 = TAU*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 = V( 1 )
236          T1 = TAU*V1
237          V2 = V( 2 )
238          T2 = TAU*V2
239          V3 = V( 3 )
240          T3 = TAU*V3
241          V4 = V( 4 )
242          T4 = TAU*V4
243          V5 = V( 5 )
244          T5 = TAU*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 = V( 1 )
260          T1 = TAU*V1
261          V2 = V( 2 )
262          T2 = TAU*V2
263          V3 = V( 3 )
264          T3 = TAU*V3
265          V4 = V( 4 )
266          T4 = TAU*V4
267          V5 = V( 5 )
268          T5 = TAU*V5
269          V6 = V( 6 )
270          T6 = TAU*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 = V( 1 )
287          T1 = TAU*V1
288          V2 = V( 2 )
289          T2 = TAU*V2
290          V3 = V( 3 )
291          T3 = TAU*V3
292          V4 = V( 4 )
293          T4 = TAU*V4
294          V5 = V( 5 )
295          T5 = TAU*V5
296          V6 = V( 6 )
297          T6 = TAU*V6
298          V7 = V( 7 )
299          T7 = TAU*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 = V( 1 )
318          T1 = TAU*V1
319          V2 = V( 2 )
320          T2 = TAU*V2
321          V3 = V( 3 )
322          T3 = TAU*V3
323          V4 = V( 4 )
324          T4 = TAU*V4
325          V5 = V( 5 )
326          T5 = TAU*V5
327          V6 = V( 6 )
328          T6 = TAU*V6
329          V7 = V( 7 )
330          T7 = TAU*V7
331          V8 = V( 8 )
332          T8 = TAU*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 = V( 1 )
352          T1 = TAU*V1
353          V2 = V( 2 )
354          T2 = TAU*V2
355          V3 = V( 3 )
356          T3 = TAU*V3
357          V4 = V( 4 )
358          T4 = TAU*V4
359          V5 = V( 5 )
360          T5 = TAU*V5
361          V6 = V( 6 )
362          T6 = TAU*V6
363          V7 = V( 7 )
364          T7 = TAU*V7
365          V8 = V( 8 )
366          T8 = TAU*V8
367          V9 = V( 9 )
368          T9 = TAU*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 = V( 1 )
389          T1 = TAU*V1
390          V2 = V( 2 )
391          T2 = TAU*V2
392          V3 = V( 3 )
393          T3 = TAU*V3
394          V4 = V( 4 )
395          T4 = TAU*V4
396          V5 = V( 5 )
397          T5 = TAU*V5
398          V6 = V( 6 )
399          T6 = TAU*V6
400          V7 = V( 7 )
401          T7 = TAU*V7
402          V8 = V( 8 )
403          T8 = TAU*V8
404          V9 = V( 9 )
405          T9 = TAU*V9
406          V10 = V( 10 )
407          T10 = TAU*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 DLARF( 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 )*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*V1
451          V2 = V( 2 )
452          T2 = TAU*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*V1
465          V2 = V( 2 )
466          T2 = TAU*V2
467          V3 = V( 3 )
468          T3 = TAU*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*V1
482          V2 = V( 2 )
483          T2 = TAU*V2
484          V3 = V( 3 )
485          T3 = TAU*V3
486          V4 = V( 4 )
487          T4 = TAU*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*V1
503          V2 = V( 2 )
504          T2 = TAU*V2
505          V3 = V( 3 )
506          T3 = TAU*V3
507          V4 = V( 4 )
508          T4 = TAU*V4
509          V5 = V( 5 )
510          T5 = TAU*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*V1
527          V2 = V( 2 )
528          T2 = TAU*V2
529          V3 = V( 3 )
530          T3 = TAU*V3
531          V4 = V( 4 )
532          T4 = TAU*V4
533          V5 = V( 5 )
534          T5 = TAU*V5
535          V6 = V( 6 )
536          T6 = TAU*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*V1
554          V2 = V( 2 )
555          T2 = TAU*V2
556          V3 = V( 3 )
557          T3 = TAU*V3
558          V4 = V( 4 )
559          T4 = TAU*V4
560          V5 = V( 5 )
561          T5 = TAU*V5
562          V6 = V( 6 )
563          T6 = TAU*V6
564          V7 = V( 7 )
565          T7 = TAU*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*V1
585          V2 = V( 2 )
586          T2 = TAU*V2
587          V3 = V( 3 )
588          T3 = TAU*V3
589          V4 = V( 4 )
590          T4 = TAU*V4
591          V5 = V( 5 )
592          T5 = TAU*V5
593          V6 = V( 6 )
594          T6 = TAU*V6
595          V7 = V( 7 )
596          T7 = TAU*V7
597          V8 = V( 8 )
598          T8 = TAU*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*V1
619          V2 = V( 2 )
620          T2 = TAU*V2
621          V3 = V( 3 )
622          T3 = TAU*V3
623          V4 = V( 4 )
624          T4 = TAU*V4
625          V5 = V( 5 )
626          T5 = TAU*V5
627          V6 = V( 6 )
628          T6 = TAU*V6
629          V7 = V( 7 )
630          T7 = TAU*V7
631          V8 = V( 8 )
632          T8 = TAU*V8
633          V9 = V( 9 )
634          T9 = TAU*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*V1
656          V2 = V( 2 )
657          T2 = TAU*V2
658          V3 = V( 3 )
659          T3 = TAU*V3
660          V4 = V( 4 )
661          T4 = TAU*V4
662          V5 = V( 5 )
663          T5 = TAU*V5
664          V6 = V( 6 )
665          T6 = TAU*V6
666          V7 = V( 7 )
667          T7 = TAU*V7
668          V8 = V( 8 )
669          T8 = TAU*V8
670          V9 = V( 9 )
671          T9 = TAU*V9
672          V10 = V( 10 )
673          T10 = TAU*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 DLARFX
696 *
697       END