comparison libcruft/lapack/slarfx.f @ 7789:82be108cc558

First attempt at single precision tyeps * * * corrections to qrupdate single precision routines * * * prefer demotion to single over promotion to double * * * Add single precision support to log2 function * * * Trivial PROJECT file update * * * Cache optimized hermitian/transpose methods * * * Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author David Bateman <dbateman@free.fr>
date Sun, 27 Apr 2008 22:34:17 +0200
parents
children
comparison
equal deleted inserted replaced
7788:45f5faba05a2 7789:82be108cc558
1 SUBROUTINE SLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
2 *
3 * -- LAPACK auxiliary routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER SIDE
9 INTEGER LDC, M, N
10 REAL TAU
11 * ..
12 * .. Array Arguments ..
13 REAL C( LDC, * ), V( * ), WORK( * )
14 * ..
15 *
16 * Purpose
17 * =======
18 *
19 * SLARFX applies a real elementary reflector H to a real m by n
20 * matrix C, from either the left or the right. H is represented in the
21 * form
22 *
23 * H = I - tau * v * v'
24 *
25 * where tau is a real scalar and v is a real vector.
26 *
27 * If tau = 0, then H is taken to be the unit matrix
28 *
29 * This version uses inline code if H has order < 11.
30 *
31 * Arguments
32 * =========
33 *
34 * SIDE (input) CHARACTER*1
35 * = 'L': form H * C
36 * = 'R': form C * H
37 *
38 * M (input) INTEGER
39 * The number of rows of the matrix C.
40 *
41 * N (input) INTEGER
42 * The number of columns of the matrix C.
43 *
44 * V (input) REAL array, dimension (M) if SIDE = 'L'
45 * or (N) if SIDE = 'R'
46 * The vector v in the representation of H.
47 *
48 * TAU (input) REAL
49 * The value tau in the representation of H.
50 *
51 * C (input/output) REAL array, dimension (LDC,N)
52 * On entry, the m by n matrix C.
53 * On exit, C is overwritten by the matrix H * C if SIDE = 'L',
54 * or C * H if SIDE = 'R'.
55 *
56 * LDC (input) INTEGER
57 * The leading dimension of the array C. LDA >= (1,M).
58 *
59 * WORK (workspace) REAL array, dimension
60 * (N) if SIDE = 'L'
61 * or (M) if SIDE = 'R'
62 * WORK is not referenced if H has order < 11.
63 *
64 * =====================================================================
65 *
66 * .. Parameters ..
67 REAL ZERO, ONE
68 PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
69 * ..
70 * .. Local Scalars ..
71 INTEGER J
72 REAL SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
73 $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
74 * ..
75 * .. External Functions ..
76 LOGICAL LSAME
77 EXTERNAL LSAME
78 * ..
79 * .. External Subroutines ..
80 EXTERNAL SGEMV, SGER
81 * ..
82 * .. Executable Statements ..
83 *
84 IF( TAU.EQ.ZERO )
85 $ RETURN
86 IF( LSAME( SIDE, 'L' ) ) THEN
87 *
88 * Form H * C, where H has order m.
89 *
90 GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
91 $ 170, 190 )M
92 *
93 * Code for general M
94 *
95 * w := C'*v
96 *
97 CALL SGEMV( 'Transpose', M, N, ONE, C, LDC, V, 1, ZERO, WORK,
98 $ 1 )
99 *
100 * C := C - tau * v * w'
101 *
102 CALL SGER( M, N, -TAU, V, 1, WORK, 1, C, LDC )
103 GO TO 410
104 10 CONTINUE
105 *
106 * Special code for 1 x 1 Householder
107 *
108 T1 = ONE - TAU*V( 1 )*V( 1 )
109 DO 20 J = 1, N
110 C( 1, J ) = T1*C( 1, J )
111 20 CONTINUE
112 GO TO 410
113 30 CONTINUE
114 *
115 * Special code for 2 x 2 Householder
116 *
117 V1 = V( 1 )
118 T1 = TAU*V1
119 V2 = V( 2 )
120 T2 = TAU*V2
121 DO 40 J = 1, N
122 SUM = V1*C( 1, J ) + V2*C( 2, J )
123 C( 1, J ) = C( 1, J ) - SUM*T1
124 C( 2, J ) = C( 2, J ) - SUM*T2
125 40 CONTINUE
126 GO TO 410
127 50 CONTINUE
128 *
129 * Special code for 3 x 3 Householder
130 *
131 V1 = V( 1 )
132 T1 = TAU*V1
133 V2 = V( 2 )
134 T2 = TAU*V2
135 V3 = V( 3 )
136 T3 = TAU*V3
137 DO 60 J = 1, N
138 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
139 C( 1, J ) = C( 1, J ) - SUM*T1
140 C( 2, J ) = C( 2, J ) - SUM*T2
141 C( 3, J ) = C( 3, J ) - SUM*T3
142 60 CONTINUE
143 GO TO 410
144 70 CONTINUE
145 *
146 * Special code for 4 x 4 Householder
147 *
148 V1 = V( 1 )
149 T1 = TAU*V1
150 V2 = V( 2 )
151 T2 = TAU*V2
152 V3 = V( 3 )
153 T3 = TAU*V3
154 V4 = V( 4 )
155 T4 = TAU*V4
156 DO 80 J = 1, N
157 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
158 $ V4*C( 4, J )
159 C( 1, J ) = C( 1, J ) - SUM*T1
160 C( 2, J ) = C( 2, J ) - SUM*T2
161 C( 3, J ) = C( 3, J ) - SUM*T3
162 C( 4, J ) = C( 4, J ) - SUM*T4
163 80 CONTINUE
164 GO TO 410
165 90 CONTINUE
166 *
167 * Special code for 5 x 5 Householder
168 *
169 V1 = V( 1 )
170 T1 = TAU*V1
171 V2 = V( 2 )
172 T2 = TAU*V2
173 V3 = V( 3 )
174 T3 = TAU*V3
175 V4 = V( 4 )
176 T4 = TAU*V4
177 V5 = V( 5 )
178 T5 = TAU*V5
179 DO 100 J = 1, N
180 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
181 $ V4*C( 4, J ) + V5*C( 5, J )
182 C( 1, J ) = C( 1, J ) - SUM*T1
183 C( 2, J ) = C( 2, J ) - SUM*T2
184 C( 3, J ) = C( 3, J ) - SUM*T3
185 C( 4, J ) = C( 4, J ) - SUM*T4
186 C( 5, J ) = C( 5, J ) - SUM*T5
187 100 CONTINUE
188 GO TO 410
189 110 CONTINUE
190 *
191 * Special code for 6 x 6 Householder
192 *
193 V1 = V( 1 )
194 T1 = TAU*V1
195 V2 = V( 2 )
196 T2 = TAU*V2
197 V3 = V( 3 )
198 T3 = TAU*V3
199 V4 = V( 4 )
200 T4 = TAU*V4
201 V5 = V( 5 )
202 T5 = TAU*V5
203 V6 = V( 6 )
204 T6 = TAU*V6
205 DO 120 J = 1, N
206 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
207 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, 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 C( 4, J ) = C( 4, J ) - SUM*T4
212 C( 5, J ) = C( 5, J ) - SUM*T5
213 C( 6, J ) = C( 6, J ) - SUM*T6
214 120 CONTINUE
215 GO TO 410
216 130 CONTINUE
217 *
218 * Special code for 7 x 7 Householder
219 *
220 V1 = V( 1 )
221 T1 = TAU*V1
222 V2 = V( 2 )
223 T2 = TAU*V2
224 V3 = V( 3 )
225 T3 = TAU*V3
226 V4 = V( 4 )
227 T4 = TAU*V4
228 V5 = V( 5 )
229 T5 = TAU*V5
230 V6 = V( 6 )
231 T6 = TAU*V6
232 V7 = V( 7 )
233 T7 = TAU*V7
234 DO 140 J = 1, N
235 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
236 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
237 $ V7*C( 7, J )
238 C( 1, J ) = C( 1, J ) - SUM*T1
239 C( 2, J ) = C( 2, J ) - SUM*T2
240 C( 3, J ) = C( 3, J ) - SUM*T3
241 C( 4, J ) = C( 4, J ) - SUM*T4
242 C( 5, J ) = C( 5, J ) - SUM*T5
243 C( 6, J ) = C( 6, J ) - SUM*T6
244 C( 7, J ) = C( 7, J ) - SUM*T7
245 140 CONTINUE
246 GO TO 410
247 150 CONTINUE
248 *
249 * Special code for 8 x 8 Householder
250 *
251 V1 = V( 1 )
252 T1 = TAU*V1
253 V2 = V( 2 )
254 T2 = TAU*V2
255 V3 = V( 3 )
256 T3 = TAU*V3
257 V4 = V( 4 )
258 T4 = TAU*V4
259 V5 = V( 5 )
260 T5 = TAU*V5
261 V6 = V( 6 )
262 T6 = TAU*V6
263 V7 = V( 7 )
264 T7 = TAU*V7
265 V8 = V( 8 )
266 T8 = TAU*V8
267 DO 160 J = 1, N
268 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
269 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
270 $ V7*C( 7, J ) + V8*C( 8, 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 C( 7, J ) = C( 7, J ) - SUM*T7
278 C( 8, J ) = C( 8, J ) - SUM*T8
279 160 CONTINUE
280 GO TO 410
281 170 CONTINUE
282 *
283 * Special code for 9 x 9 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 V8 = V( 8 )
300 T8 = TAU*V8
301 V9 = V( 9 )
302 T9 = TAU*V9
303 DO 180 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 ) + V8*C( 8, J ) + V9*C( 9, 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 C( 8, J ) = C( 8, J ) - SUM*T8
315 C( 9, J ) = C( 9, J ) - SUM*T9
316 180 CONTINUE
317 GO TO 410
318 190 CONTINUE
319 *
320 * Special code for 10 x 10 Householder
321 *
322 V1 = V( 1 )
323 T1 = TAU*V1
324 V2 = V( 2 )
325 T2 = TAU*V2
326 V3 = V( 3 )
327 T3 = TAU*V3
328 V4 = V( 4 )
329 T4 = TAU*V4
330 V5 = V( 5 )
331 T5 = TAU*V5
332 V6 = V( 6 )
333 T6 = TAU*V6
334 V7 = V( 7 )
335 T7 = TAU*V7
336 V8 = V( 8 )
337 T8 = TAU*V8
338 V9 = V( 9 )
339 T9 = TAU*V9
340 V10 = V( 10 )
341 T10 = TAU*V10
342 DO 200 J = 1, N
343 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
344 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
345 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
346 $ V10*C( 10, J )
347 C( 1, J ) = C( 1, J ) - SUM*T1
348 C( 2, J ) = C( 2, J ) - SUM*T2
349 C( 3, J ) = C( 3, J ) - SUM*T3
350 C( 4, J ) = C( 4, J ) - SUM*T4
351 C( 5, J ) = C( 5, J ) - SUM*T5
352 C( 6, J ) = C( 6, J ) - SUM*T6
353 C( 7, J ) = C( 7, J ) - SUM*T7
354 C( 8, J ) = C( 8, J ) - SUM*T8
355 C( 9, J ) = C( 9, J ) - SUM*T9
356 C( 10, J ) = C( 10, J ) - SUM*T10
357 200 CONTINUE
358 GO TO 410
359 ELSE
360 *
361 * Form C * H, where H has order n.
362 *
363 GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
364 $ 370, 390 )N
365 *
366 * Code for general N
367 *
368 * w := C * v
369 *
370 CALL SGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO,
371 $ WORK, 1 )
372 *
373 * C := C - tau * w * v'
374 *
375 CALL SGER( M, N, -TAU, WORK, 1, V, 1, C, LDC )
376 GO TO 410
377 210 CONTINUE
378 *
379 * Special code for 1 x 1 Householder
380 *
381 T1 = ONE - TAU*V( 1 )*V( 1 )
382 DO 220 J = 1, M
383 C( J, 1 ) = T1*C( J, 1 )
384 220 CONTINUE
385 GO TO 410
386 230 CONTINUE
387 *
388 * Special code for 2 x 2 Householder
389 *
390 V1 = V( 1 )
391 T1 = TAU*V1
392 V2 = V( 2 )
393 T2 = TAU*V2
394 DO 240 J = 1, M
395 SUM = V1*C( J, 1 ) + V2*C( J, 2 )
396 C( J, 1 ) = C( J, 1 ) - SUM*T1
397 C( J, 2 ) = C( J, 2 ) - SUM*T2
398 240 CONTINUE
399 GO TO 410
400 250 CONTINUE
401 *
402 * Special code for 3 x 3 Householder
403 *
404 V1 = V( 1 )
405 T1 = TAU*V1
406 V2 = V( 2 )
407 T2 = TAU*V2
408 V3 = V( 3 )
409 T3 = TAU*V3
410 DO 260 J = 1, M
411 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
412 C( J, 1 ) = C( J, 1 ) - SUM*T1
413 C( J, 2 ) = C( J, 2 ) - SUM*T2
414 C( J, 3 ) = C( J, 3 ) - SUM*T3
415 260 CONTINUE
416 GO TO 410
417 270 CONTINUE
418 *
419 * Special code for 4 x 4 Householder
420 *
421 V1 = V( 1 )
422 T1 = TAU*V1
423 V2 = V( 2 )
424 T2 = TAU*V2
425 V3 = V( 3 )
426 T3 = TAU*V3
427 V4 = V( 4 )
428 T4 = TAU*V4
429 DO 280 J = 1, M
430 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
431 $ V4*C( J, 4 )
432 C( J, 1 ) = C( J, 1 ) - SUM*T1
433 C( J, 2 ) = C( J, 2 ) - SUM*T2
434 C( J, 3 ) = C( J, 3 ) - SUM*T3
435 C( J, 4 ) = C( J, 4 ) - SUM*T4
436 280 CONTINUE
437 GO TO 410
438 290 CONTINUE
439 *
440 * Special code for 5 x 5 Householder
441 *
442 V1 = V( 1 )
443 T1 = TAU*V1
444 V2 = V( 2 )
445 T2 = TAU*V2
446 V3 = V( 3 )
447 T3 = TAU*V3
448 V4 = V( 4 )
449 T4 = TAU*V4
450 V5 = V( 5 )
451 T5 = TAU*V5
452 DO 300 J = 1, M
453 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
454 $ V4*C( J, 4 ) + V5*C( J, 5 )
455 C( J, 1 ) = C( J, 1 ) - SUM*T1
456 C( J, 2 ) = C( J, 2 ) - SUM*T2
457 C( J, 3 ) = C( J, 3 ) - SUM*T3
458 C( J, 4 ) = C( J, 4 ) - SUM*T4
459 C( J, 5 ) = C( J, 5 ) - SUM*T5
460 300 CONTINUE
461 GO TO 410
462 310 CONTINUE
463 *
464 * Special code for 6 x 6 Householder
465 *
466 V1 = V( 1 )
467 T1 = TAU*V1
468 V2 = V( 2 )
469 T2 = TAU*V2
470 V3 = V( 3 )
471 T3 = TAU*V3
472 V4 = V( 4 )
473 T4 = TAU*V4
474 V5 = V( 5 )
475 T5 = TAU*V5
476 V6 = V( 6 )
477 T6 = TAU*V6
478 DO 320 J = 1, M
479 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
480 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
481 C( J, 1 ) = C( J, 1 ) - SUM*T1
482 C( J, 2 ) = C( J, 2 ) - SUM*T2
483 C( J, 3 ) = C( J, 3 ) - SUM*T3
484 C( J, 4 ) = C( J, 4 ) - SUM*T4
485 C( J, 5 ) = C( J, 5 ) - SUM*T5
486 C( J, 6 ) = C( J, 6 ) - SUM*T6
487 320 CONTINUE
488 GO TO 410
489 330 CONTINUE
490 *
491 * Special code for 7 x 7 Householder
492 *
493 V1 = V( 1 )
494 T1 = TAU*V1
495 V2 = V( 2 )
496 T2 = TAU*V2
497 V3 = V( 3 )
498 T3 = TAU*V3
499 V4 = V( 4 )
500 T4 = TAU*V4
501 V5 = V( 5 )
502 T5 = TAU*V5
503 V6 = V( 6 )
504 T6 = TAU*V6
505 V7 = V( 7 )
506 T7 = TAU*V7
507 DO 340 J = 1, M
508 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
509 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
510 $ V7*C( J, 7 )
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 C( J, 6 ) = C( J, 6 ) - SUM*T6
517 C( J, 7 ) = C( J, 7 ) - SUM*T7
518 340 CONTINUE
519 GO TO 410
520 350 CONTINUE
521 *
522 * Special code for 8 x 8 Householder
523 *
524 V1 = V( 1 )
525 T1 = TAU*V1
526 V2 = V( 2 )
527 T2 = TAU*V2
528 V3 = V( 3 )
529 T3 = TAU*V3
530 V4 = V( 4 )
531 T4 = TAU*V4
532 V5 = V( 5 )
533 T5 = TAU*V5
534 V6 = V( 6 )
535 T6 = TAU*V6
536 V7 = V( 7 )
537 T7 = TAU*V7
538 V8 = V( 8 )
539 T8 = TAU*V8
540 DO 360 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 $ V7*C( J, 7 ) + V8*C( J, 8 )
544 C( J, 1 ) = C( J, 1 ) - SUM*T1
545 C( J, 2 ) = C( J, 2 ) - SUM*T2
546 C( J, 3 ) = C( J, 3 ) - SUM*T3
547 C( J, 4 ) = C( J, 4 ) - SUM*T4
548 C( J, 5 ) = C( J, 5 ) - SUM*T5
549 C( J, 6 ) = C( J, 6 ) - SUM*T6
550 C( J, 7 ) = C( J, 7 ) - SUM*T7
551 C( J, 8 ) = C( J, 8 ) - SUM*T8
552 360 CONTINUE
553 GO TO 410
554 370 CONTINUE
555 *
556 * Special code for 9 x 9 Householder
557 *
558 V1 = V( 1 )
559 T1 = TAU*V1
560 V2 = V( 2 )
561 T2 = TAU*V2
562 V3 = V( 3 )
563 T3 = TAU*V3
564 V4 = V( 4 )
565 T4 = TAU*V4
566 V5 = V( 5 )
567 T5 = TAU*V5
568 V6 = V( 6 )
569 T6 = TAU*V6
570 V7 = V( 7 )
571 T7 = TAU*V7
572 V8 = V( 8 )
573 T8 = TAU*V8
574 V9 = V( 9 )
575 T9 = TAU*V9
576 DO 380 J = 1, M
577 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
578 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
579 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
580 C( J, 1 ) = C( J, 1 ) - SUM*T1
581 C( J, 2 ) = C( J, 2 ) - SUM*T2
582 C( J, 3 ) = C( J, 3 ) - SUM*T3
583 C( J, 4 ) = C( J, 4 ) - SUM*T4
584 C( J, 5 ) = C( J, 5 ) - SUM*T5
585 C( J, 6 ) = C( J, 6 ) - SUM*T6
586 C( J, 7 ) = C( J, 7 ) - SUM*T7
587 C( J, 8 ) = C( J, 8 ) - SUM*T8
588 C( J, 9 ) = C( J, 9 ) - SUM*T9
589 380 CONTINUE
590 GO TO 410
591 390 CONTINUE
592 *
593 * Special code for 10 x 10 Householder
594 *
595 V1 = V( 1 )
596 T1 = TAU*V1
597 V2 = V( 2 )
598 T2 = TAU*V2
599 V3 = V( 3 )
600 T3 = TAU*V3
601 V4 = V( 4 )
602 T4 = TAU*V4
603 V5 = V( 5 )
604 T5 = TAU*V5
605 V6 = V( 6 )
606 T6 = TAU*V6
607 V7 = V( 7 )
608 T7 = TAU*V7
609 V8 = V( 8 )
610 T8 = TAU*V8
611 V9 = V( 9 )
612 T9 = TAU*V9
613 V10 = V( 10 )
614 T10 = TAU*V10
615 DO 400 J = 1, M
616 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
617 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
618 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
619 $ V10*C( J, 10 )
620 C( J, 1 ) = C( J, 1 ) - SUM*T1
621 C( J, 2 ) = C( J, 2 ) - SUM*T2
622 C( J, 3 ) = C( J, 3 ) - SUM*T3
623 C( J, 4 ) = C( J, 4 ) - SUM*T4
624 C( J, 5 ) = C( J, 5 ) - SUM*T5
625 C( J, 6 ) = C( J, 6 ) - SUM*T6
626 C( J, 7 ) = C( J, 7 ) - SUM*T7
627 C( J, 8 ) = C( J, 8 ) - SUM*T8
628 C( J, 9 ) = C( J, 9 ) - SUM*T9
629 C( J, 10 ) = C( J, 10 ) - SUM*T10
630 400 CONTINUE
631 GO TO 410
632 END IF
633 410 RETURN
634 *
635 * End of SLARFX
636 *
637 END