~ubuntu-branches/ubuntu/lucid/igraph/lucid

« back to all changes in this revision

Viewing changes to src/lapack/dlarfx.c

  • Committer: Bazaar Package Importer
  • Author(s): Mathieu Malaterre
  • Date: 2009-11-16 18:12:42 UTC
  • Revision ID: james.westby@ubuntu.com-20091116181242-mzv9p5fz9uj57xd1
Tags: upstream-0.5.3
ImportĀ upstreamĀ versionĀ 0.5.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  -- translated by f2c (version 20050501).
 
2
   You must link the resulting object file with libf2c:
 
3
        on Microsoft Windows system, link with libf2c.lib;
 
4
        on Linux or Unix systems, link with .../path/to/libf2c.a -lm
 
5
        or, if you install libf2c.a in a standard place, with -lf2c -lm
 
6
        -- in that order, at the end of the command line, as in
 
7
                cc *.o -lf2c -lm
 
8
        Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
 
9
 
 
10
                http://www.netlib.org/f2c/libf2c.zip
 
11
*/
 
12
 
 
13
#include "config.h"
 
14
#include "arpack_internal.h"
 
15
#include "f2c.h"
 
16
 
 
17
/* Table of constant values */
 
18
 
 
19
static doublereal c_b14 = 1.;
 
20
static integer c__1 = 1;
 
21
static doublereal c_b16 = 0.;
 
22
 
 
23
/* Subroutine */ int igraphdlarfx_(char *side, integer *m, integer *n, doublereal *
 
24
        v, doublereal *tau, doublereal *c__, integer *ldc, doublereal *work)
 
25
{
 
26
    /* System generated locals */
 
27
    integer c_dim1, c_offset, i__1;
 
28
    doublereal d__1;
 
29
 
 
30
    /* Local variables */
 
31
    static integer j;
 
32
    static doublereal t1, t2, t3, t4, t5, t6, t7, t8, t9, v1, v2, v3, v4, v5, 
 
33
            v6, v7, v8, v9, t10, v10, sum;
 
34
    extern /* Subroutine */ int igraphdger_(integer *, integer *, doublereal *, 
 
35
            doublereal *, integer *, doublereal *, integer *, doublereal *, 
 
36
            integer *);
 
37
    extern logical igraphlsame_(char *, char *);
 
38
    extern /* Subroutine */ int igraphdgemv_(char *, integer *, integer *, 
 
39
            doublereal *, doublereal *, integer *, doublereal *, integer *, 
 
40
            doublereal *, doublereal *, integer *);
 
41
 
 
42
 
 
43
/*  -- LAPACK auxiliary routine (version 3.0) -- */
 
44
/*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
 
45
/*     Courant Institute, Argonne National Lab, and Rice University */
 
46
/*     February 29, 1992 */
 
47
 
 
48
/*     .. Scalar Arguments .. */
 
49
/*     .. */
 
50
/*     .. Array Arguments .. */
 
51
/*     .. */
 
52
 
 
53
/*  Purpose */
 
54
/*  ======= */
 
55
 
 
56
/*  DLARFX applies a real elementary reflector H to a real m by n */
 
57
/*  matrix C, from either the left or the right. H is represented in the */
 
58
/*  form */
 
59
 
 
60
/*        H = I - tau * v * v' */
 
61
 
 
62
/*  where tau is a real scalar and v is a real vector. */
 
63
 
 
64
/*  If tau = 0, then H is taken to be the unit matrix */
 
65
 
 
66
/*  This version uses inline code if H has order < 11. */
 
67
 
 
68
/*  Arguments */
 
69
/*  ========= */
 
70
 
 
71
/*  SIDE    (input) CHARACTER*1 */
 
72
/*          = 'L': form  H * C */
 
73
/*          = 'R': form  C * H */
 
74
 
 
75
/*  M       (input) INTEGER */
 
76
/*          The number of rows of the matrix C. */
 
77
 
 
78
/*  N       (input) INTEGER */
 
79
/*          The number of columns of the matrix C. */
 
80
 
 
81
/*  V       (input) DOUBLE PRECISION array, dimension (M) if SIDE = 'L' */
 
82
/*                                     or (N) if SIDE = 'R' */
 
83
/*          The vector v in the representation of H. */
 
84
 
 
85
/*  TAU     (input) DOUBLE PRECISION */
 
86
/*          The value tau in the representation of H. */
 
87
 
 
88
/*  C       (input/output) 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
 
 
93
/*  LDC     (input) INTEGER */
 
94
/*          The leading dimension of the array C. LDA >= (1,M). */
 
95
 
 
96
/*  WORK    (workspace) DOUBLE PRECISION array, dimension */
 
97
/*                      (N) if SIDE = 'L' */
 
98
/*                      or (M) if SIDE = 'R' */
 
99
/*          WORK is not referenced if H has order < 11. */
 
100
 
 
101
/*  ===================================================================== */
 
102
 
 
103
/*     .. Parameters .. */
 
104
/*     .. */
 
105
/*     .. Local Scalars .. */
 
106
/*     .. */
 
107
/*     .. External Functions .. */
 
108
/*     .. */
 
109
/*     .. External Subroutines .. */
 
110
/*     .. */
 
111
/*     .. Executable Statements .. */
 
112
 
 
113
    /* Parameter adjustments */
 
114
    --v;
 
115
    c_dim1 = *ldc;
 
116
    c_offset = 1 + c_dim1;
 
117
    c__ -= c_offset;
 
118
    --work;
 
119
 
 
120
    /* Function Body */
 
121
    if (*tau == 0.) {
 
122
        return 0;
 
123
    }
 
124
    if (igraphlsame_(side, "L")) {
 
125
 
 
126
/*        Form  H * C, where H has order m. */
 
127
 
 
128
        switch (*m) {
 
129
            case 1:  goto L10;
 
130
            case 2:  goto L30;
 
131
            case 3:  goto L50;
 
132
            case 4:  goto L70;
 
133
            case 5:  goto L90;
 
134
            case 6:  goto L110;
 
135
            case 7:  goto L130;
 
136
            case 8:  goto L150;
 
137
            case 9:  goto L170;
 
138
            case 10:  goto L190;
 
139
        }
 
140
 
 
141
/*        Code for general M */
 
142
 
 
143
/*        w := C'*v */
 
144
 
 
145
        igraphdgemv_("Transpose", m, n, &c_b14, &c__[c_offset], ldc, &v[1], &c__1, &
 
146
                c_b16, &work[1], &c__1);
 
147
 
 
148
/*        C := C - tau * v * w' */
 
149
 
 
150
        d__1 = -(*tau);
 
151
        igraphdger_(m, n, &d__1, &v[1], &c__1, &work[1], &c__1, &c__[c_offset], ldc)
 
152
                ;
 
153
        goto L410;
 
154
L10:
 
155
 
 
156
/*        Special code for 1 x 1 Householder */
 
157
 
 
158
        t1 = 1. - *tau * v[1] * v[1];
 
159
        i__1 = *n;
 
160
        for (j = 1; j <= i__1; ++j) {
 
161
            c__[j * c_dim1 + 1] = t1 * c__[j * c_dim1 + 1];
 
162
/* L20: */
 
163
        }
 
164
        goto L410;
 
165
L30:
 
166
 
 
167
/*        Special code for 2 x 2 Householder */
 
168
 
 
169
        v1 = v[1];
 
170
        t1 = *tau * v1;
 
171
        v2 = v[2];
 
172
        t2 = *tau * v2;
 
173
        i__1 = *n;
 
174
        for (j = 1; j <= i__1; ++j) {
 
175
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2];
 
176
            c__[j * c_dim1 + 1] -= sum * t1;
 
177
            c__[j * c_dim1 + 2] -= sum * t2;
 
178
/* L40: */
 
179
        }
 
180
        goto L410;
 
181
L50:
 
182
 
 
183
/*        Special code for 3 x 3 Householder */
 
184
 
 
185
        v1 = v[1];
 
186
        t1 = *tau * v1;
 
187
        v2 = v[2];
 
188
        t2 = *tau * v2;
 
189
        v3 = v[3];
 
190
        t3 = *tau * v3;
 
191
        i__1 = *n;
 
192
        for (j = 1; j <= i__1; ++j) {
 
193
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
194
                    c__[j * c_dim1 + 3];
 
195
            c__[j * c_dim1 + 1] -= sum * t1;
 
196
            c__[j * c_dim1 + 2] -= sum * t2;
 
197
            c__[j * c_dim1 + 3] -= sum * t3;
 
198
/* L60: */
 
199
        }
 
200
        goto L410;
 
201
L70:
 
202
 
 
203
/*        Special code for 4 x 4 Householder */
 
204
 
 
205
        v1 = v[1];
 
206
        t1 = *tau * v1;
 
207
        v2 = v[2];
 
208
        t2 = *tau * v2;
 
209
        v3 = v[3];
 
210
        t3 = *tau * v3;
 
211
        v4 = v[4];
 
212
        t4 = *tau * v4;
 
213
        i__1 = *n;
 
214
        for (j = 1; j <= i__1; ++j) {
 
215
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
216
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4];
 
217
            c__[j * c_dim1 + 1] -= sum * t1;
 
218
            c__[j * c_dim1 + 2] -= sum * t2;
 
219
            c__[j * c_dim1 + 3] -= sum * t3;
 
220
            c__[j * c_dim1 + 4] -= sum * t4;
 
221
/* L80: */
 
222
        }
 
223
        goto L410;
 
224
L90:
 
225
 
 
226
/*        Special code for 5 x 5 Householder */
 
227
 
 
228
        v1 = v[1];
 
229
        t1 = *tau * v1;
 
230
        v2 = v[2];
 
231
        t2 = *tau * v2;
 
232
        v3 = v[3];
 
233
        t3 = *tau * v3;
 
234
        v4 = v[4];
 
235
        t4 = *tau * v4;
 
236
        v5 = v[5];
 
237
        t5 = *tau * v5;
 
238
        i__1 = *n;
 
239
        for (j = 1; j <= i__1; ++j) {
 
240
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
241
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
242
                    j * c_dim1 + 5];
 
243
            c__[j * c_dim1 + 1] -= sum * t1;
 
244
            c__[j * c_dim1 + 2] -= sum * t2;
 
245
            c__[j * c_dim1 + 3] -= sum * t3;
 
246
            c__[j * c_dim1 + 4] -= sum * t4;
 
247
            c__[j * c_dim1 + 5] -= sum * t5;
 
248
/* L100: */
 
249
        }
 
250
        goto L410;
 
251
L110:
 
252
 
 
253
/*        Special code for 6 x 6 Householder */
 
254
 
 
255
        v1 = v[1];
 
256
        t1 = *tau * v1;
 
257
        v2 = v[2];
 
258
        t2 = *tau * v2;
 
259
        v3 = v[3];
 
260
        t3 = *tau * v3;
 
261
        v4 = v[4];
 
262
        t4 = *tau * v4;
 
263
        v5 = v[5];
 
264
        t5 = *tau * v5;
 
265
        v6 = v[6];
 
266
        t6 = *tau * v6;
 
267
        i__1 = *n;
 
268
        for (j = 1; j <= i__1; ++j) {
 
269
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
270
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
271
                    j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6];
 
272
            c__[j * c_dim1 + 1] -= sum * t1;
 
273
            c__[j * c_dim1 + 2] -= sum * t2;
 
274
            c__[j * c_dim1 + 3] -= sum * t3;
 
275
            c__[j * c_dim1 + 4] -= sum * t4;
 
276
            c__[j * c_dim1 + 5] -= sum * t5;
 
277
            c__[j * c_dim1 + 6] -= sum * t6;
 
278
/* L120: */
 
279
        }
 
280
        goto L410;
 
281
L130:
 
282
 
 
283
/*        Special code for 7 x 7 Householder */
 
284
 
 
285
        v1 = v[1];
 
286
        t1 = *tau * v1;
 
287
        v2 = v[2];
 
288
        t2 = *tau * v2;
 
289
        v3 = v[3];
 
290
        t3 = *tau * v3;
 
291
        v4 = v[4];
 
292
        t4 = *tau * v4;
 
293
        v5 = v[5];
 
294
        t5 = *tau * v5;
 
295
        v6 = v[6];
 
296
        t6 = *tau * v6;
 
297
        v7 = v[7];
 
298
        t7 = *tau * v7;
 
299
        i__1 = *n;
 
300
        for (j = 1; j <= i__1; ++j) {
 
301
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
302
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
303
                    j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j * 
 
304
                    c_dim1 + 7];
 
305
            c__[j * c_dim1 + 1] -= sum * t1;
 
306
            c__[j * c_dim1 + 2] -= sum * t2;
 
307
            c__[j * c_dim1 + 3] -= sum * t3;
 
308
            c__[j * c_dim1 + 4] -= sum * t4;
 
309
            c__[j * c_dim1 + 5] -= sum * t5;
 
310
            c__[j * c_dim1 + 6] -= sum * t6;
 
311
            c__[j * c_dim1 + 7] -= sum * t7;
 
312
/* L140: */
 
313
        }
 
314
        goto L410;
 
315
L150:
 
316
 
 
317
/*        Special code for 8 x 8 Householder */
 
318
 
 
319
        v1 = v[1];
 
320
        t1 = *tau * v1;
 
321
        v2 = v[2];
 
322
        t2 = *tau * v2;
 
323
        v3 = v[3];
 
324
        t3 = *tau * v3;
 
325
        v4 = v[4];
 
326
        t4 = *tau * v4;
 
327
        v5 = v[5];
 
328
        t5 = *tau * v5;
 
329
        v6 = v[6];
 
330
        t6 = *tau * v6;
 
331
        v7 = v[7];
 
332
        t7 = *tau * v7;
 
333
        v8 = v[8];
 
334
        t8 = *tau * v8;
 
335
        i__1 = *n;
 
336
        for (j = 1; j <= i__1; ++j) {
 
337
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
338
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
339
                    j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j * 
 
340
                    c_dim1 + 7] + v8 * c__[j * c_dim1 + 8];
 
341
            c__[j * c_dim1 + 1] -= sum * t1;
 
342
            c__[j * c_dim1 + 2] -= sum * t2;
 
343
            c__[j * c_dim1 + 3] -= sum * t3;
 
344
            c__[j * c_dim1 + 4] -= sum * t4;
 
345
            c__[j * c_dim1 + 5] -= sum * t5;
 
346
            c__[j * c_dim1 + 6] -= sum * t6;
 
347
            c__[j * c_dim1 + 7] -= sum * t7;
 
348
            c__[j * c_dim1 + 8] -= sum * t8;
 
349
/* L160: */
 
350
        }
 
351
        goto L410;
 
352
L170:
 
353
 
 
354
/*        Special code for 9 x 9 Householder */
 
355
 
 
356
        v1 = v[1];
 
357
        t1 = *tau * v1;
 
358
        v2 = v[2];
 
359
        t2 = *tau * v2;
 
360
        v3 = v[3];
 
361
        t3 = *tau * v3;
 
362
        v4 = v[4];
 
363
        t4 = *tau * v4;
 
364
        v5 = v[5];
 
365
        t5 = *tau * v5;
 
366
        v6 = v[6];
 
367
        t6 = *tau * v6;
 
368
        v7 = v[7];
 
369
        t7 = *tau * v7;
 
370
        v8 = v[8];
 
371
        t8 = *tau * v8;
 
372
        v9 = v[9];
 
373
        t9 = *tau * v9;
 
374
        i__1 = *n;
 
375
        for (j = 1; j <= i__1; ++j) {
 
376
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
377
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
378
                    j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j * 
 
379
                    c_dim1 + 7] + v8 * c__[j * c_dim1 + 8] + v9 * c__[j * 
 
380
                    c_dim1 + 9];
 
381
            c__[j * c_dim1 + 1] -= sum * t1;
 
382
            c__[j * c_dim1 + 2] -= sum * t2;
 
383
            c__[j * c_dim1 + 3] -= sum * t3;
 
384
            c__[j * c_dim1 + 4] -= sum * t4;
 
385
            c__[j * c_dim1 + 5] -= sum * t5;
 
386
            c__[j * c_dim1 + 6] -= sum * t6;
 
387
            c__[j * c_dim1 + 7] -= sum * t7;
 
388
            c__[j * c_dim1 + 8] -= sum * t8;
 
389
            c__[j * c_dim1 + 9] -= sum * t9;
 
390
/* L180: */
 
391
        }
 
392
        goto L410;
 
393
L190:
 
394
 
 
395
/*        Special code for 10 x 10 Householder */
 
396
 
 
397
        v1 = v[1];
 
398
        t1 = *tau * v1;
 
399
        v2 = v[2];
 
400
        t2 = *tau * v2;
 
401
        v3 = v[3];
 
402
        t3 = *tau * v3;
 
403
        v4 = v[4];
 
404
        t4 = *tau * v4;
 
405
        v5 = v[5];
 
406
        t5 = *tau * v5;
 
407
        v6 = v[6];
 
408
        t6 = *tau * v6;
 
409
        v7 = v[7];
 
410
        t7 = *tau * v7;
 
411
        v8 = v[8];
 
412
        t8 = *tau * v8;
 
413
        v9 = v[9];
 
414
        t9 = *tau * v9;
 
415
        v10 = v[10];
 
416
        t10 = *tau * v10;
 
417
        i__1 = *n;
 
418
        for (j = 1; j <= i__1; ++j) {
 
419
            sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 * 
 
420
                    c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
 
421
                    j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j * 
 
422
                    c_dim1 + 7] + v8 * c__[j * c_dim1 + 8] + v9 * c__[j * 
 
423
                    c_dim1 + 9] + v10 * c__[j * c_dim1 + 10];
 
424
            c__[j * c_dim1 + 1] -= sum * t1;
 
425
            c__[j * c_dim1 + 2] -= sum * t2;
 
426
            c__[j * c_dim1 + 3] -= sum * t3;
 
427
            c__[j * c_dim1 + 4] -= sum * t4;
 
428
            c__[j * c_dim1 + 5] -= sum * t5;
 
429
            c__[j * c_dim1 + 6] -= sum * t6;
 
430
            c__[j * c_dim1 + 7] -= sum * t7;
 
431
            c__[j * c_dim1 + 8] -= sum * t8;
 
432
            c__[j * c_dim1 + 9] -= sum * t9;
 
433
            c__[j * c_dim1 + 10] -= sum * t10;
 
434
/* L200: */
 
435
        }
 
436
        goto L410;
 
437
    } else {
 
438
 
 
439
/*        Form  C * H, where H has order n. */
 
440
 
 
441
        switch (*n) {
 
442
            case 1:  goto L210;
 
443
            case 2:  goto L230;
 
444
            case 3:  goto L250;
 
445
            case 4:  goto L270;
 
446
            case 5:  goto L290;
 
447
            case 6:  goto L310;
 
448
            case 7:  goto L330;
 
449
            case 8:  goto L350;
 
450
            case 9:  goto L370;
 
451
            case 10:  goto L390;
 
452
        }
 
453
 
 
454
/*        Code for general N */
 
455
 
 
456
/*        w := C * v */
 
457
 
 
458
        igraphdgemv_("No transpose", m, n, &c_b14, &c__[c_offset], ldc, &v[1], &
 
459
                c__1, &c_b16, &work[1], &c__1);
 
460
 
 
461
/*        C := C - tau * w * v' */
 
462
 
 
463
        d__1 = -(*tau);
 
464
        igraphdger_(m, n, &d__1, &work[1], &c__1, &v[1], &c__1, &c__[c_offset], ldc)
 
465
                ;
 
466
        goto L410;
 
467
L210:
 
468
 
 
469
/*        Special code for 1 x 1 Householder */
 
470
 
 
471
        t1 = 1. - *tau * v[1] * v[1];
 
472
        i__1 = *m;
 
473
        for (j = 1; j <= i__1; ++j) {
 
474
            c__[j + c_dim1] = t1 * c__[j + c_dim1];
 
475
/* L220: */
 
476
        }
 
477
        goto L410;
 
478
L230:
 
479
 
 
480
/*        Special code for 2 x 2 Householder */
 
481
 
 
482
        v1 = v[1];
 
483
        t1 = *tau * v1;
 
484
        v2 = v[2];
 
485
        t2 = *tau * v2;
 
486
        i__1 = *m;
 
487
        for (j = 1; j <= i__1; ++j) {
 
488
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)];
 
489
            c__[j + c_dim1] -= sum * t1;
 
490
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
491
/* L240: */
 
492
        }
 
493
        goto L410;
 
494
L250:
 
495
 
 
496
/*        Special code for 3 x 3 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
        i__1 = *m;
 
505
        for (j = 1; j <= i__1; ++j) {
 
506
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
507
                    c__[j + c_dim1 * 3];
 
508
            c__[j + c_dim1] -= sum * t1;
 
509
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
510
            c__[j + c_dim1 * 3] -= sum * t3;
 
511
/* L260: */
 
512
        }
 
513
        goto L410;
 
514
L270:
 
515
 
 
516
/*        Special code for 4 x 4 Householder */
 
517
 
 
518
        v1 = v[1];
 
519
        t1 = *tau * v1;
 
520
        v2 = v[2];
 
521
        t2 = *tau * v2;
 
522
        v3 = v[3];
 
523
        t3 = *tau * v3;
 
524
        v4 = v[4];
 
525
        t4 = *tau * v4;
 
526
        i__1 = *m;
 
527
        for (j = 1; j <= i__1; ++j) {
 
528
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
529
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)];
 
530
            c__[j + c_dim1] -= sum * t1;
 
531
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
532
            c__[j + c_dim1 * 3] -= sum * t3;
 
533
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
534
/* L280: */
 
535
        }
 
536
        goto L410;
 
537
L290:
 
538
 
 
539
/*        Special code for 5 x 5 Householder */
 
540
 
 
541
        v1 = v[1];
 
542
        t1 = *tau * v1;
 
543
        v2 = v[2];
 
544
        t2 = *tau * v2;
 
545
        v3 = v[3];
 
546
        t3 = *tau * v3;
 
547
        v4 = v[4];
 
548
        t4 = *tau * v4;
 
549
        v5 = v[5];
 
550
        t5 = *tau * v5;
 
551
        i__1 = *m;
 
552
        for (j = 1; j <= i__1; ++j) {
 
553
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
554
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
555
                    c__[j + c_dim1 * 5];
 
556
            c__[j + c_dim1] -= sum * t1;
 
557
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
558
            c__[j + c_dim1 * 3] -= sum * t3;
 
559
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
560
            c__[j + c_dim1 * 5] -= sum * t5;
 
561
/* L300: */
 
562
        }
 
563
        goto L410;
 
564
L310:
 
565
 
 
566
/*        Special code for 6 x 6 Householder */
 
567
 
 
568
        v1 = v[1];
 
569
        t1 = *tau * v1;
 
570
        v2 = v[2];
 
571
        t2 = *tau * v2;
 
572
        v3 = v[3];
 
573
        t3 = *tau * v3;
 
574
        v4 = v[4];
 
575
        t4 = *tau * v4;
 
576
        v5 = v[5];
 
577
        t5 = *tau * v5;
 
578
        v6 = v[6];
 
579
        t6 = *tau * v6;
 
580
        i__1 = *m;
 
581
        for (j = 1; j <= i__1; ++j) {
 
582
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
583
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
584
                    c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6];
 
585
            c__[j + c_dim1] -= sum * t1;
 
586
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
587
            c__[j + c_dim1 * 3] -= sum * t3;
 
588
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
589
            c__[j + c_dim1 * 5] -= sum * t5;
 
590
            c__[j + c_dim1 * 6] -= sum * t6;
 
591
/* L320: */
 
592
        }
 
593
        goto L410;
 
594
L330:
 
595
 
 
596
/*        Special code for 7 x 7 Householder */
 
597
 
 
598
        v1 = v[1];
 
599
        t1 = *tau * v1;
 
600
        v2 = v[2];
 
601
        t2 = *tau * v2;
 
602
        v3 = v[3];
 
603
        t3 = *tau * v3;
 
604
        v4 = v[4];
 
605
        t4 = *tau * v4;
 
606
        v5 = v[5];
 
607
        t5 = *tau * v5;
 
608
        v6 = v[6];
 
609
        t6 = *tau * v6;
 
610
        v7 = v[7];
 
611
        t7 = *tau * v7;
 
612
        i__1 = *m;
 
613
        for (j = 1; j <= i__1; ++j) {
 
614
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
615
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
616
                    c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
 
617
                    j + c_dim1 * 7];
 
618
            c__[j + c_dim1] -= sum * t1;
 
619
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
620
            c__[j + c_dim1 * 3] -= sum * t3;
 
621
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
622
            c__[j + c_dim1 * 5] -= sum * t5;
 
623
            c__[j + c_dim1 * 6] -= sum * t6;
 
624
            c__[j + c_dim1 * 7] -= sum * t7;
 
625
/* L340: */
 
626
        }
 
627
        goto L410;
 
628
L350:
 
629
 
 
630
/*        Special code for 8 x 8 Householder */
 
631
 
 
632
        v1 = v[1];
 
633
        t1 = *tau * v1;
 
634
        v2 = v[2];
 
635
        t2 = *tau * v2;
 
636
        v3 = v[3];
 
637
        t3 = *tau * v3;
 
638
        v4 = v[4];
 
639
        t4 = *tau * v4;
 
640
        v5 = v[5];
 
641
        t5 = *tau * v5;
 
642
        v6 = v[6];
 
643
        t6 = *tau * v6;
 
644
        v7 = v[7];
 
645
        t7 = *tau * v7;
 
646
        v8 = v[8];
 
647
        t8 = *tau * v8;
 
648
        i__1 = *m;
 
649
        for (j = 1; j <= i__1; ++j) {
 
650
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
651
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
652
                    c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
 
653
                    j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)];
 
654
            c__[j + c_dim1] -= sum * t1;
 
655
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
656
            c__[j + c_dim1 * 3] -= sum * t3;
 
657
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
658
            c__[j + c_dim1 * 5] -= sum * t5;
 
659
            c__[j + c_dim1 * 6] -= sum * t6;
 
660
            c__[j + c_dim1 * 7] -= sum * t7;
 
661
            c__[j + (c_dim1 << 3)] -= sum * t8;
 
662
/* L360: */
 
663
        }
 
664
        goto L410;
 
665
L370:
 
666
 
 
667
/*        Special code for 9 x 9 Householder */
 
668
 
 
669
        v1 = v[1];
 
670
        t1 = *tau * v1;
 
671
        v2 = v[2];
 
672
        t2 = *tau * v2;
 
673
        v3 = v[3];
 
674
        t3 = *tau * v3;
 
675
        v4 = v[4];
 
676
        t4 = *tau * v4;
 
677
        v5 = v[5];
 
678
        t5 = *tau * v5;
 
679
        v6 = v[6];
 
680
        t6 = *tau * v6;
 
681
        v7 = v[7];
 
682
        t7 = *tau * v7;
 
683
        v8 = v[8];
 
684
        t8 = *tau * v8;
 
685
        v9 = v[9];
 
686
        t9 = *tau * v9;
 
687
        i__1 = *m;
 
688
        for (j = 1; j <= i__1; ++j) {
 
689
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
690
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
691
                    c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
 
692
                    j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)] + v9 * c__[
 
693
                    j + c_dim1 * 9];
 
694
            c__[j + c_dim1] -= sum * t1;
 
695
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
696
            c__[j + c_dim1 * 3] -= sum * t3;
 
697
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
698
            c__[j + c_dim1 * 5] -= sum * t5;
 
699
            c__[j + c_dim1 * 6] -= sum * t6;
 
700
            c__[j + c_dim1 * 7] -= sum * t7;
 
701
            c__[j + (c_dim1 << 3)] -= sum * t8;
 
702
            c__[j + c_dim1 * 9] -= sum * t9;
 
703
/* L380: */
 
704
        }
 
705
        goto L410;
 
706
L390:
 
707
 
 
708
/*        Special code for 10 x 10 Householder */
 
709
 
 
710
        v1 = v[1];
 
711
        t1 = *tau * v1;
 
712
        v2 = v[2];
 
713
        t2 = *tau * v2;
 
714
        v3 = v[3];
 
715
        t3 = *tau * v3;
 
716
        v4 = v[4];
 
717
        t4 = *tau * v4;
 
718
        v5 = v[5];
 
719
        t5 = *tau * v5;
 
720
        v6 = v[6];
 
721
        t6 = *tau * v6;
 
722
        v7 = v[7];
 
723
        t7 = *tau * v7;
 
724
        v8 = v[8];
 
725
        t8 = *tau * v8;
 
726
        v9 = v[9];
 
727
        t9 = *tau * v9;
 
728
        v10 = v[10];
 
729
        t10 = *tau * v10;
 
730
        i__1 = *m;
 
731
        for (j = 1; j <= i__1; ++j) {
 
732
            sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 * 
 
733
                    c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 * 
 
734
                    c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
 
735
                    j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)] + v9 * c__[
 
736
                    j + c_dim1 * 9] + v10 * c__[j + c_dim1 * 10];
 
737
            c__[j + c_dim1] -= sum * t1;
 
738
            c__[j + (c_dim1 << 1)] -= sum * t2;
 
739
            c__[j + c_dim1 * 3] -= sum * t3;
 
740
            c__[j + (c_dim1 << 2)] -= sum * t4;
 
741
            c__[j + c_dim1 * 5] -= sum * t5;
 
742
            c__[j + c_dim1 * 6] -= sum * t6;
 
743
            c__[j + c_dim1 * 7] -= sum * t7;
 
744
            c__[j + (c_dim1 << 3)] -= sum * t8;
 
745
            c__[j + c_dim1 * 9] -= sum * t9;
 
746
            c__[j + c_dim1 * 10] -= sum * t10;
 
747
/* L400: */
 
748
        }
 
749
        goto L410;
 
750
    }
 
751
L410:
 
752
    return 0;
 
753
 
 
754
/*     End of DLARFX */
 
755
 
 
756
} /* igraphdlarfx_ */
 
757