118
119
120
121
122
123
124 CHARACTER SIDE
125 INTEGER LDC, M, N
126 DOUBLE PRECISION TAU
127
128
129 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
130
131
132
133
134
135 DOUBLE PRECISION ZERO, ONE
136 parameter( zero = 0.0d+0, one = 1.0d+0 )
137
138
139 INTEGER J
140 DOUBLE PRECISION SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
141 $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
142
143
144 LOGICAL LSAME
146
147
149
150
151
152 IF( tau.EQ.zero )
153 $ RETURN
154 IF(
lsame( side,
'L' ) )
THEN
155
156
157
158 GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
159 $ 170, 190 )m
160
161
162
163 CALL dlarf( side, m, n, v, 1, tau, c, ldc, work )
164 GO TO 410
165 10 CONTINUE
166
167
168
169 t1 = one - tau*v( 1 )*v( 1 )
170 DO 20 j = 1, n
171 c( 1, j ) = t1*c( 1, j )
172 20 CONTINUE
173 GO TO 410
174 30 CONTINUE
175
176
177
178 v1 = v( 1 )
179 t1 = tau*v1
180 v2 = v( 2 )
181 t2 = tau*v2
182 DO 40 j = 1, n
183 sum = v1*c( 1, j ) + v2*c( 2, j )
184 c( 1, j ) = c( 1, j ) - sum*t1
185 c( 2, j ) = c( 2, j ) - sum*t2
186 40 CONTINUE
187 GO TO 410
188 50 CONTINUE
189
190
191
192 v1 = v( 1 )
193 t1 = tau*v1
194 v2 = v( 2 )
195 t2 = tau*v2
196 v3 = v( 3 )
197 t3 = tau*v3
198 DO 60 j = 1, n
199 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j )
200 c( 1, j ) = c( 1, j ) - sum*t1
201 c( 2, j ) = c( 2, j ) - sum*t2
202 c( 3, j ) = c( 3, j ) - sum*t3
203 60 CONTINUE
204 GO TO 410
205 70 CONTINUE
206
207
208
209 v1 = v( 1 )
210 t1 = tau*v1
211 v2 = v( 2 )
212 t2 = tau*v2
213 v3 = v( 3 )
214 t3 = tau*v3
215 v4 = v( 4 )
216 t4 = tau*v4
217 DO 80 j = 1, n
218 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
219 $ v4*c( 4, j )
220 c( 1, j ) = c( 1, j ) - sum*t1
221 c( 2, j ) = c( 2, j ) - sum*t2
222 c( 3, j ) = c( 3, j ) - sum*t3
223 c( 4, j ) = c( 4, j ) - sum*t4
224 80 CONTINUE
225 GO TO 410
226 90 CONTINUE
227
228
229
230 v1 = v( 1 )
231 t1 = tau*v1
232 v2 = v( 2 )
233 t2 = tau*v2
234 v3 = v( 3 )
235 t3 = tau*v3
236 v4 = v( 4 )
237 t4 = tau*v4
238 v5 = v( 5 )
239 t5 = tau*v5
240 DO 100 j = 1, n
241 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
242 $ v4*c( 4, j ) + v5*c( 5, j )
243 c( 1, j ) = c( 1, j ) - sum*t1
244 c( 2, j ) = c( 2, j ) - sum*t2
245 c( 3, j ) = c( 3, j ) - sum*t3
246 c( 4, j ) = c( 4, j ) - sum*t4
247 c( 5, j ) = c( 5, j ) - sum*t5
248 100 CONTINUE
249 GO TO 410
250 110 CONTINUE
251
252
253
254 v1 = v( 1 )
255 t1 = tau*v1
256 v2 = v( 2 )
257 t2 = tau*v2
258 v3 = v( 3 )
259 t3 = tau*v3
260 v4 = v( 4 )
261 t4 = tau*v4
262 v5 = v( 5 )
263 t5 = tau*v5
264 v6 = v( 6 )
265 t6 = tau*v6
266 DO 120 j = 1, n
267 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
268 $ v4*c( 4, j ) + v5*c( 5, j ) + v6*c( 6, j )
269 c( 1, j ) = c( 1, j ) - sum*t1
270 c( 2, j ) = c( 2, j ) - sum*t2
271 c( 3, j ) = c( 3, j ) - sum*t3
272 c( 4, j ) = c( 4, j ) - sum*t4
273 c( 5, j ) = c( 5, j ) - sum*t5
274 c( 6, j ) = c( 6, j ) - sum*t6
275 120 CONTINUE
276 GO TO 410
277 130 CONTINUE
278
279
280
281 v1 = v( 1 )
282 t1 = tau*v1
283 v2 = v( 2 )
284 t2 = tau*v2
285 v3 = v( 3 )
286 t3 = tau*v3
287 v4 = v( 4 )
288 t4 = tau*v4
289 v5 = v( 5 )
290 t5 = tau*v5
291 v6 = v( 6 )
292 t6 = tau*v6
293 v7 = v( 7 )
294 t7 = tau*v7
295 DO 140 j = 1, n
296 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
297 $ v4*c( 4, j ) + v5*c( 5, j ) + v6*c( 6, j ) +
298 $ v7*c( 7, j )
299 c( 1, j ) = c( 1, j ) - sum*t1
300 c( 2, j ) = c( 2, j ) - sum*t2
301 c( 3, j ) = c( 3, j ) - sum*t3
302 c( 4, j ) = c( 4, j ) - sum*t4
303 c( 5, j ) = c( 5, j ) - sum*t5
304 c( 6, j ) = c( 6, j ) - sum*t6
305 c( 7, j ) = c( 7, j ) - sum*t7
306 140 CONTINUE
307 GO TO 410
308 150 CONTINUE
309
310
311
312 v1 = v( 1 )
313 t1 = tau*v1
314 v2 = v( 2 )
315 t2 = tau*v2
316 v3 = v( 3 )
317 t3 = tau*v3
318 v4 = v( 4 )
319 t4 = tau*v4
320 v5 = v( 5 )
321 t5 = tau*v5
322 v6 = v( 6 )
323 t6 = tau*v6
324 v7 = v( 7 )
325 t7 = tau*v7
326 v8 = v( 8 )
327 t8 = tau*v8
328 DO 160 j = 1, n
329 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
330 $ v4*c( 4, j ) + v5*c( 5, j ) + v6*c( 6, j ) +
331 $ v7*c( 7, j ) + v8*c( 8, j )
332 c( 1, j ) = c( 1, j ) - sum*t1
333 c( 2, j ) = c( 2, j ) - sum*t2
334 c( 3, j ) = c( 3, j ) - sum*t3
335 c( 4, j ) = c( 4, j ) - sum*t4
336 c( 5, j ) = c( 5, j ) - sum*t5
337 c( 6, j ) = c( 6, j ) - sum*t6
338 c( 7, j ) = c( 7, j ) - sum*t7
339 c( 8, j ) = c( 8, j ) - sum*t8
340 160 CONTINUE
341 GO TO 410
342 170 CONTINUE
343
344
345
346 v1 = v( 1 )
347 t1 = tau*v1
348 v2 = v( 2 )
349 t2 = tau*v2
350 v3 = v( 3 )
351 t3 = tau*v3
352 v4 = v( 4 )
353 t4 = tau*v4
354 v5 = v( 5 )
355 t5 = tau*v5
356 v6 = v( 6 )
357 t6 = tau*v6
358 v7 = v( 7 )
359 t7 = tau*v7
360 v8 = v( 8 )
361 t8 = tau*v8
362 v9 = v( 9 )
363 t9 = tau*v9
364 DO 180 j = 1, n
365 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
366 $ v4*c( 4, j ) + v5*c( 5, j ) + v6*c( 6, j ) +
367 $ v7*c( 7, j ) + v8*c( 8, j ) + v9*c( 9, j )
368 c( 1, j ) = c( 1, j ) - sum*t1
369 c( 2, j ) = c( 2, j ) - sum*t2
370 c( 3, j ) = c( 3, j ) - sum*t3
371 c( 4, j ) = c( 4, j ) - sum*t4
372 c( 5, j ) = c( 5, j ) - sum*t5
373 c( 6, j ) = c( 6, j ) - sum*t6
374 c( 7, j ) = c( 7, j ) - sum*t7
375 c( 8, j ) = c( 8, j ) - sum*t8
376 c( 9, j ) = c( 9, j ) - sum*t9
377 180 CONTINUE
378 GO TO 410
379 190 CONTINUE
380
381
382
383 v1 = v( 1 )
384 t1 = tau*v1
385 v2 = v( 2 )
386 t2 = tau*v2
387 v3 = v( 3 )
388 t3 = tau*v3
389 v4 = v( 4 )
390 t4 = tau*v4
391 v5 = v( 5 )
392 t5 = tau*v5
393 v6 = v( 6 )
394 t6 = tau*v6
395 v7 = v( 7 )
396 t7 = tau*v7
397 v8 = v( 8 )
398 t8 = tau*v8
399 v9 = v( 9 )
400 t9 = tau*v9
401 v10 = v( 10 )
402 t10 = tau*v10
403 DO 200 j = 1, n
404 sum = v1*c( 1, j ) + v2*c( 2, j ) + v3*c( 3, j ) +
405 $ v4*c( 4, j ) + v5*c( 5, j ) + v6*c( 6, j ) +
406 $ v7*c( 7, j ) + v8*c( 8, j ) + v9*c( 9, j ) +
407 $ v10*c( 10, j )
408 c( 1, j ) = c( 1, j ) - sum*t1
409 c( 2, j ) = c( 2, j ) - sum*t2
410 c( 3, j ) = c( 3, j ) - sum*t3
411 c( 4, j ) = c( 4, j ) - sum*t4
412 c( 5, j ) = c( 5, j ) - sum*t5
413 c( 6, j ) = c( 6, j ) - sum*t6
414 c( 7, j ) = c( 7, j ) - sum*t7
415 c( 8, j ) = c( 8, j ) - sum*t8
416 c( 9, j ) = c( 9, j ) - sum*t9
417 c( 10, j ) = c( 10, j ) - sum*t10
418 200 CONTINUE
419 GO TO 410
420 ELSE
421
422
423
424 GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
425 $ 370, 390 )n
426
427
428
429 CALL dlarf( side, m, n, v, 1, tau, c, ldc, work )
430 GO TO 410
431 210 CONTINUE
432
433
434
435 t1 = one - tau*v( 1 )*v( 1 )
436 DO 220 j = 1, m
437 c( j, 1 ) = t1*c( j, 1 )
438 220 CONTINUE
439 GO TO 410
440 230 CONTINUE
441
442
443
444 v1 = v( 1 )
445 t1 = tau*v1
446 v2 = v( 2 )
447 t2 = tau*v2
448 DO 240 j = 1, m
449 sum = v1*c( j, 1 ) + v2*c( j, 2 )
450 c( j, 1 ) = c( j, 1 ) - sum*t1
451 c( j, 2 ) = c( j, 2 ) - sum*t2
452 240 CONTINUE
453 GO TO 410
454 250 CONTINUE
455
456
457
458 v1 = v( 1 )
459 t1 = tau*v1
460 v2 = v( 2 )
461 t2 = tau*v2
462 v3 = v( 3 )
463 t3 = tau*v3
464 DO 260 j = 1, m
465 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 )
466 c( j, 1 ) = c( j, 1 ) - sum*t1
467 c( j, 2 ) = c( j, 2 ) - sum*t2
468 c( j, 3 ) = c( j, 3 ) - sum*t3
469 260 CONTINUE
470 GO TO 410
471 270 CONTINUE
472
473
474
475 v1 = v( 1 )
476 t1 = tau*v1
477 v2 = v( 2 )
478 t2 = tau*v2
479 v3 = v( 3 )
480 t3 = tau*v3
481 v4 = v( 4 )
482 t4 = tau*v4
483 DO 280 j = 1, m
484 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
485 $ v4*c( j, 4 )
486 c( j, 1 ) = c( j, 1 ) - sum*t1
487 c( j, 2 ) = c( j, 2 ) - sum*t2
488 c( j, 3 ) = c( j, 3 ) - sum*t3
489 c( j, 4 ) = c( j, 4 ) - sum*t4
490 280 CONTINUE
491 GO TO 410
492 290 CONTINUE
493
494
495
496 v1 = v( 1 )
497 t1 = tau*v1
498 v2 = v( 2 )
499 t2 = tau*v2
500 v3 = v( 3 )
501 t3 = tau*v3
502 v4 = v( 4 )
503 t4 = tau*v4
504 v5 = v( 5 )
505 t5 = tau*v5
506 DO 300 j = 1, m
507 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
508 $ v4*c( j, 4 ) + v5*c( j, 5 )
509 c( j, 1 ) = c( j, 1 ) - sum*t1
510 c( j, 2 ) = c( j, 2 ) - sum*t2
511 c( j, 3 ) = c( j, 3 ) - sum*t3
512 c( j, 4 ) = c( j, 4 ) - sum*t4
513 c( j, 5 ) = c( j, 5 ) - sum*t5
514 300 CONTINUE
515 GO TO 410
516 310 CONTINUE
517
518
519
520 v1 = v( 1 )
521 t1 = tau*v1
522 v2 = v( 2 )
523 t2 = tau*v2
524 v3 = v( 3 )
525 t3 = tau*v3
526 v4 = v( 4 )
527 t4 = tau*v4
528 v5 = v( 5 )
529 t5 = tau*v5
530 v6 = v( 6 )
531 t6 = tau*v6
532 DO 320 j = 1, m
533 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
534 $ v4*c( j, 4 ) + v5*c( j, 5 ) + v6*c( j, 6 )
535 c( j, 1 ) = c( j, 1 ) - sum*t1
536 c( j, 2 ) = c( j, 2 ) - sum*t2
537 c( j, 3 ) = c( j, 3 ) - sum*t3
538 c( j, 4 ) = c( j, 4 ) - sum*t4
539 c( j, 5 ) = c( j, 5 ) - sum*t5
540 c( j, 6 ) = c( j, 6 ) - sum*t6
541 320 CONTINUE
542 GO TO 410
543 330 CONTINUE
544
545
546
547 v1 = v( 1 )
548 t1 = tau*v1
549 v2 = v( 2 )
550 t2 = tau*v2
551 v3 = v( 3 )
552 t3 = tau*v3
553 v4 = v( 4 )
554 t4 = tau*v4
555 v5 = v( 5 )
556 t5 = tau*v5
557 v6 = v( 6 )
558 t6 = tau*v6
559 v7 = v( 7 )
560 t7 = tau*v7
561 DO 340 j = 1, m
562 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
563 $ v4*c( j, 4 ) + v5*c( j, 5 ) + v6*c( j, 6 ) +
564 $ v7*c( j, 7 )
565 c( j, 1 ) = c( j, 1 ) - sum*t1
566 c( j, 2 ) = c( j, 2 ) - sum*t2
567 c( j, 3 ) = c( j, 3 ) - sum*t3
568 c( j, 4 ) = c( j, 4 ) - sum*t4
569 c( j, 5 ) = c( j, 5 ) - sum*t5
570 c( j, 6 ) = c( j, 6 ) - sum*t6
571 c( j, 7 ) = c( j, 7 ) - sum*t7
572 340 CONTINUE
573 GO TO 410
574 350 CONTINUE
575
576
577
578 v1 = v( 1 )
579 t1 = tau*v1
580 v2 = v( 2 )
581 t2 = tau*v2
582 v3 = v( 3 )
583 t3 = tau*v3
584 v4 = v( 4 )
585 t4 = tau*v4
586 v5 = v( 5 )
587 t5 = tau*v5
588 v6 = v( 6 )
589 t6 = tau*v6
590 v7 = v( 7 )
591 t7 = tau*v7
592 v8 = v( 8 )
593 t8 = tau*v8
594 DO 360 j = 1, m
595 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
596 $ v4*c( j, 4 ) + v5*c( j, 5 ) + v6*c( j, 6 ) +
597 $ v7*c( j, 7 ) + v8*c( j, 8 )
598 c( j, 1 ) = c( j, 1 ) - sum*t1
599 c( j, 2 ) = c( j, 2 ) - sum*t2
600 c( j, 3 ) = c( j, 3 ) - sum*t3
601 c( j, 4 ) = c( j, 4 ) - sum*t4
602 c( j, 5 ) = c( j, 5 ) - sum*t5
603 c( j, 6 ) = c( j, 6 ) - sum*t6
604 c( j, 7 ) = c( j, 7 ) - sum*t7
605 c( j, 8 ) = c( j, 8 ) - sum*t8
606 360 CONTINUE
607 GO TO 410
608 370 CONTINUE
609
610
611
612 v1 = v( 1 )
613 t1 = tau*v1
614 v2 = v( 2 )
615 t2 = tau*v2
616 v3 = v( 3 )
617 t3 = tau*v3
618 v4 = v( 4 )
619 t4 = tau*v4
620 v5 = v( 5 )
621 t5 = tau*v5
622 v6 = v( 6 )
623 t6 = tau*v6
624 v7 = v( 7 )
625 t7 = tau*v7
626 v8 = v( 8 )
627 t8 = tau*v8
628 v9 = v( 9 )
629 t9 = tau*v9
630 DO 380 j = 1, m
631 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
632 $ v4*c( j, 4 ) + v5*c( j, 5 ) + v6*c( j, 6 ) +
633 $ v7*c( j, 7 ) + v8*c( j, 8 ) + v9*c( j, 9 )
634 c( j, 1 ) = c( j, 1 ) - sum*t1
635 c( j, 2 ) = c( j, 2 ) - sum*t2
636 c( j, 3 ) = c( j, 3 ) - sum*t3
637 c( j, 4 ) = c( j, 4 ) - sum*t4
638 c( j, 5 ) = c( j, 5 ) - sum*t5
639 c( j, 6 ) = c( j, 6 ) - sum*t6
640 c( j, 7 ) = c( j, 7 ) - sum*t7
641 c( j, 8 ) = c( j, 8 ) - sum*t8
642 c( j, 9 ) = c( j, 9 ) - sum*t9
643 380 CONTINUE
644 GO TO 410
645 390 CONTINUE
646
647
648
649 v1 = v( 1 )
650 t1 = tau*v1
651 v2 = v( 2 )
652 t2 = tau*v2
653 v3 = v( 3 )
654 t3 = tau*v3
655 v4 = v( 4 )
656 t4 = tau*v4
657 v5 = v( 5 )
658 t5 = tau*v5
659 v6 = v( 6 )
660 t6 = tau*v6
661 v7 = v( 7 )
662 t7 = tau*v7
663 v8 = v( 8 )
664 t8 = tau*v8
665 v9 = v( 9 )
666 t9 = tau*v9
667 v10 = v( 10 )
668 t10 = tau*v10
669 DO 400 j = 1, m
670 sum = v1*c( j, 1 ) + v2*c( j, 2 ) + v3*c( j, 3 ) +
671 $ v4*c( j, 4 ) + v5*c( j, 5 ) + v6*c( j, 6 ) +
672 $ v7*c( j, 7 ) + v8*c( j, 8 ) + v9*c( j, 9 ) +
673 $ v10*c( j, 10 )
674 c( j, 1 ) = c( j, 1 ) - sum*t1
675 c( j, 2 ) = c( j, 2 ) - sum*t2
676 c( j, 3 ) = c( j, 3 ) - sum*t3
677 c( j, 4 ) = c( j, 4 ) - sum*t4
678 c( j, 5 ) = c( j, 5 ) - sum*t5
679 c( j, 6 ) = c( j, 6 ) - sum*t6
680 c( j, 7 ) = c( j, 7 ) - sum*t7
681 c( j, 8 ) = c( j, 8 ) - sum*t8
682 c( j, 9 ) = c( j, 9 ) - sum*t9
683 c( j, 10 ) = c( j, 10 ) - sum*t10
684 400 CONTINUE
685 GO TO 410
686 END IF
687 410 CONTINUE
688 RETURN
689
690
691
subroutine dlarf(side, m, n, v, incv, tau, c, ldc, work)
DLARF applies an elementary reflector to a general rectangular matrix.
logical function lsame(ca, cb)
LSAME