STYLE: Remove trailing whitespace in Fortran files
[platform/upstream/lapack.git] / SRC / clarfx.f
1 *> \brief \b CLARFX 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 CLARFX + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/clarfx.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/clarfx.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/clarfx.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 *  Definition:
19 *  ===========
20 *
21 *       SUBROUTINE CLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
22 *
23 *       .. Scalar Arguments ..
24 *       CHARACTER          SIDE
25 *       INTEGER            LDC, M, N
26 *       COMPLEX            TAU
27 *       ..
28 *       .. Array Arguments ..
29 *       COMPLEX            C( LDC, * ), V( * ), WORK( * )
30 *       ..
31 *
32 *
33 *> \par Purpose:
34 *  =============
35 *>
36 *> \verbatim
37 *>
38 *> CLARFX 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 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
83 *>          The value tau in the representation of H.
84 *> \endverbatim
85 *>
86 *> \param[in,out] C
87 *> \verbatim
88 *>          C is COMPLEX 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 >= max(1,M).
98 *> \endverbatim
99 *>
100 *> \param[out] WORK
101 *> \verbatim
102 *>          WORK is COMPLEX 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 September 2012
116 *
117 *> \ingroup complexOTHERauxiliary
118 *
119 *  =====================================================================
120       SUBROUTINE CLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
121 *
122 *  -- LAPACK auxiliary routine (version 3.4.2) --
123 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
124 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
125 *     September 2012
126 *
127 *     .. Scalar Arguments ..
128       CHARACTER          SIDE
129       INTEGER            LDC, M, N
130       COMPLEX            TAU
131 *     ..
132 *     .. Array Arguments ..
133       COMPLEX            C( LDC, * ), V( * ), WORK( * )
134 *     ..
135 *
136 *  =====================================================================
137 *
138 *     .. Parameters ..
139       COMPLEX            ZERO, ONE
140       PARAMETER          ( ZERO = ( 0.0E+0, 0.0E+0 ),
141      $                   ONE = ( 1.0E+0, 0.0E+0 ) )
142 *     ..
143 *     .. Local Scalars ..
144       INTEGER            J
145       COMPLEX            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           CLARF
154 *     ..
155 *     .. Intrinsic Functions ..
156       INTRINSIC          CONJG
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 CLARF( 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 )*CONJG( 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 = CONJG( V( 1 ) )
187          T1 = TAU*CONJG( V1 )
188          V2 = CONJG( V( 2 ) )
189          T2 = TAU*CONJG( 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 = CONJG( V( 1 ) )
201          T1 = TAU*CONJG( V1 )
202          V2 = CONJG( V( 2 ) )
203          T2 = TAU*CONJG( V2 )
204          V3 = CONJG( V( 3 ) )
205          T3 = TAU*CONJG( 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 = CONJG( V( 1 ) )
218          T1 = TAU*CONJG( V1 )
219          V2 = CONJG( V( 2 ) )
220          T2 = TAU*CONJG( V2 )
221          V3 = CONJG( V( 3 ) )
222          T3 = TAU*CONJG( V3 )
223          V4 = CONJG( V( 4 ) )
224          T4 = TAU*CONJG( 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 = CONJG( V( 1 ) )
239          T1 = TAU*CONJG( V1 )
240          V2 = CONJG( V( 2 ) )
241          T2 = TAU*CONJG( V2 )
242          V3 = CONJG( V( 3 ) )
243          T3 = TAU*CONJG( V3 )
244          V4 = CONJG( V( 4 ) )
245          T4 = TAU*CONJG( V4 )
246          V5 = CONJG( V( 5 ) )
247          T5 = TAU*CONJG( 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 = CONJG( V( 1 ) )
263          T1 = TAU*CONJG( V1 )
264          V2 = CONJG( V( 2 ) )
265          T2 = TAU*CONJG( V2 )
266          V3 = CONJG( V( 3 ) )
267          T3 = TAU*CONJG( V3 )
268          V4 = CONJG( V( 4 ) )
269          T4 = TAU*CONJG( V4 )
270          V5 = CONJG( V( 5 ) )
271          T5 = TAU*CONJG( V5 )
272          V6 = CONJG( V( 6 ) )
273          T6 = TAU*CONJG( 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 = CONJG( V( 1 ) )
290          T1 = TAU*CONJG( V1 )
291          V2 = CONJG( V( 2 ) )
292          T2 = TAU*CONJG( V2 )
293          V3 = CONJG( V( 3 ) )
294          T3 = TAU*CONJG( V3 )
295          V4 = CONJG( V( 4 ) )
296          T4 = TAU*CONJG( V4 )
297          V5 = CONJG( V( 5 ) )
298          T5 = TAU*CONJG( V5 )
299          V6 = CONJG( V( 6 ) )
300          T6 = TAU*CONJG( V6 )
301          V7 = CONJG( V( 7 ) )
302          T7 = TAU*CONJG( 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 = CONJG( V( 1 ) )
321          T1 = TAU*CONJG( V1 )
322          V2 = CONJG( V( 2 ) )
323          T2 = TAU*CONJG( V2 )
324          V3 = CONJG( V( 3 ) )
325          T3 = TAU*CONJG( V3 )
326          V4 = CONJG( V( 4 ) )
327          T4 = TAU*CONJG( V4 )
328          V5 = CONJG( V( 5 ) )
329          T5 = TAU*CONJG( V5 )
330          V6 = CONJG( V( 6 ) )
331          T6 = TAU*CONJG( V6 )
332          V7 = CONJG( V( 7 ) )
333          T7 = TAU*CONJG( V7 )
334          V8 = CONJG( V( 8 ) )
335          T8 = TAU*CONJG( 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 = CONJG( V( 1 ) )
355          T1 = TAU*CONJG( V1 )
356          V2 = CONJG( V( 2 ) )
357          T2 = TAU*CONJG( V2 )
358          V3 = CONJG( V( 3 ) )
359          T3 = TAU*CONJG( V3 )
360          V4 = CONJG( V( 4 ) )
361          T4 = TAU*CONJG( V4 )
362          V5 = CONJG( V( 5 ) )
363          T5 = TAU*CONJG( V5 )
364          V6 = CONJG( V( 6 ) )
365          T6 = TAU*CONJG( V6 )
366          V7 = CONJG( V( 7 ) )
367          T7 = TAU*CONJG( V7 )
368          V8 = CONJG( V( 8 ) )
369          T8 = TAU*CONJG( V8 )
370          V9 = CONJG( V( 9 ) )
371          T9 = TAU*CONJG( 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 = CONJG( V( 1 ) )
392          T1 = TAU*CONJG( V1 )
393          V2 = CONJG( V( 2 ) )
394          T2 = TAU*CONJG( V2 )
395          V3 = CONJG( V( 3 ) )
396          T3 = TAU*CONJG( V3 )
397          V4 = CONJG( V( 4 ) )
398          T4 = TAU*CONJG( V4 )
399          V5 = CONJG( V( 5 ) )
400          T5 = TAU*CONJG( V5 )
401          V6 = CONJG( V( 6 ) )
402          T6 = TAU*CONJG( V6 )
403          V7 = CONJG( V( 7 ) )
404          T7 = TAU*CONJG( V7 )
405          V8 = CONJG( V( 8 ) )
406          T8 = TAU*CONJG( V8 )
407          V9 = CONJG( V( 9 ) )
408          T9 = TAU*CONJG( V9 )
409          V10 = CONJG( V( 10 ) )
410          T10 = TAU*CONJG( 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 CLARF( 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 )*CONJG( 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*CONJG( V1 )
454          V2 = V( 2 )
455          T2 = TAU*CONJG( 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*CONJG( V1 )
468          V2 = V( 2 )
469          T2 = TAU*CONJG( V2 )
470          V3 = V( 3 )
471          T3 = TAU*CONJG( 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*CONJG( V1 )
485          V2 = V( 2 )
486          T2 = TAU*CONJG( V2 )
487          V3 = V( 3 )
488          T3 = TAU*CONJG( V3 )
489          V4 = V( 4 )
490          T4 = TAU*CONJG( 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*CONJG( V1 )
506          V2 = V( 2 )
507          T2 = TAU*CONJG( V2 )
508          V3 = V( 3 )
509          T3 = TAU*CONJG( V3 )
510          V4 = V( 4 )
511          T4 = TAU*CONJG( V4 )
512          V5 = V( 5 )
513          T5 = TAU*CONJG( 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*CONJG( V1 )
530          V2 = V( 2 )
531          T2 = TAU*CONJG( V2 )
532          V3 = V( 3 )
533          T3 = TAU*CONJG( V3 )
534          V4 = V( 4 )
535          T4 = TAU*CONJG( V4 )
536          V5 = V( 5 )
537          T5 = TAU*CONJG( V5 )
538          V6 = V( 6 )
539          T6 = TAU*CONJG( 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*CONJG( V1 )
557          V2 = V( 2 )
558          T2 = TAU*CONJG( V2 )
559          V3 = V( 3 )
560          T3 = TAU*CONJG( V3 )
561          V4 = V( 4 )
562          T4 = TAU*CONJG( V4 )
563          V5 = V( 5 )
564          T5 = TAU*CONJG( V5 )
565          V6 = V( 6 )
566          T6 = TAU*CONJG( V6 )
567          V7 = V( 7 )
568          T7 = TAU*CONJG( 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*CONJG( V1 )
588          V2 = V( 2 )
589          T2 = TAU*CONJG( V2 )
590          V3 = V( 3 )
591          T3 = TAU*CONJG( V3 )
592          V4 = V( 4 )
593          T4 = TAU*CONJG( V4 )
594          V5 = V( 5 )
595          T5 = TAU*CONJG( V5 )
596          V6 = V( 6 )
597          T6 = TAU*CONJG( V6 )
598          V7 = V( 7 )
599          T7 = TAU*CONJG( V7 )
600          V8 = V( 8 )
601          T8 = TAU*CONJG( 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*CONJG( V1 )
622          V2 = V( 2 )
623          T2 = TAU*CONJG( V2 )
624          V3 = V( 3 )
625          T3 = TAU*CONJG( V3 )
626          V4 = V( 4 )
627          T4 = TAU*CONJG( V4 )
628          V5 = V( 5 )
629          T5 = TAU*CONJG( V5 )
630          V6 = V( 6 )
631          T6 = TAU*CONJG( V6 )
632          V7 = V( 7 )
633          T7 = TAU*CONJG( V7 )
634          V8 = V( 8 )
635          T8 = TAU*CONJG( V8 )
636          V9 = V( 9 )
637          T9 = TAU*CONJG( 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*CONJG( V1 )
659          V2 = V( 2 )
660          T2 = TAU*CONJG( V2 )
661          V3 = V( 3 )
662          T3 = TAU*CONJG( V3 )
663          V4 = V( 4 )
664          T4 = TAU*CONJG( V4 )
665          V5 = V( 5 )
666          T5 = TAU*CONJG( V5 )
667          V6 = V( 6 )
668          T6 = TAU*CONJG( V6 )
669          V7 = V( 7 )
670          T7 = TAU*CONJG( V7 )
671          V8 = V( 8 )
672          T8 = TAU*CONJG( V8 )
673          V9 = V( 9 )
674          T9 = TAU*CONJG( V9 )
675          V10 = V( 10 )
676          T10 = TAU*CONJG( 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 RETURN
696 *
697 *     End of CLARFX
698 *
699       END