00001 SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
00002 IMPLICIT NONE
00003
00004
00005
00006
00007
00008
00009
00010 CHARACTER SIDE
00011 INTEGER LDC, M, N
00012 DOUBLE PRECISION TAU
00013
00014
00015 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 DOUBLE PRECISION ZERO, ONE
00070 PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
00071
00072
00073 INTEGER J
00074 DOUBLE PRECISION SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
00075 $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
00076
00077
00078 LOGICAL LSAME
00079 EXTERNAL LSAME
00080
00081
00082 EXTERNAL DLARF
00083
00084
00085
00086 IF( TAU.EQ.ZERO )
00087 $ RETURN
00088 IF( LSAME( SIDE, 'L' ) ) THEN
00089
00090
00091
00092 GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
00093 $ 170, 190 )M
00094
00095
00096
00097 CALL DLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
00098 GO TO 410
00099 10 CONTINUE
00100
00101
00102
00103 T1 = ONE - TAU*V( 1 )*V( 1 )
00104 DO 20 J = 1, N
00105 C( 1, J ) = T1*C( 1, J )
00106 20 CONTINUE
00107 GO TO 410
00108 30 CONTINUE
00109
00110
00111
00112 V1 = V( 1 )
00113 T1 = TAU*V1
00114 V2 = V( 2 )
00115 T2 = TAU*V2
00116 DO 40 J = 1, N
00117 SUM = V1*C( 1, J ) + V2*C( 2, J )
00118 C( 1, J ) = C( 1, J ) - SUM*T1
00119 C( 2, J ) = C( 2, J ) - SUM*T2
00120 40 CONTINUE
00121 GO TO 410
00122 50 CONTINUE
00123
00124
00125
00126 V1 = V( 1 )
00127 T1 = TAU*V1
00128 V2 = V( 2 )
00129 T2 = TAU*V2
00130 V3 = V( 3 )
00131 T3 = TAU*V3
00132 DO 60 J = 1, N
00133 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
00134 C( 1, J ) = C( 1, J ) - SUM*T1
00135 C( 2, J ) = C( 2, J ) - SUM*T2
00136 C( 3, J ) = C( 3, J ) - SUM*T3
00137 60 CONTINUE
00138 GO TO 410
00139 70 CONTINUE
00140
00141
00142
00143 V1 = V( 1 )
00144 T1 = TAU*V1
00145 V2 = V( 2 )
00146 T2 = TAU*V2
00147 V3 = V( 3 )
00148 T3 = TAU*V3
00149 V4 = V( 4 )
00150 T4 = TAU*V4
00151 DO 80 J = 1, N
00152 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00153 $ V4*C( 4, J )
00154 C( 1, J ) = C( 1, J ) - SUM*T1
00155 C( 2, J ) = C( 2, J ) - SUM*T2
00156 C( 3, J ) = C( 3, J ) - SUM*T3
00157 C( 4, J ) = C( 4, J ) - SUM*T4
00158 80 CONTINUE
00159 GO TO 410
00160 90 CONTINUE
00161
00162
00163
00164 V1 = V( 1 )
00165 T1 = TAU*V1
00166 V2 = V( 2 )
00167 T2 = TAU*V2
00168 V3 = V( 3 )
00169 T3 = TAU*V3
00170 V4 = V( 4 )
00171 T4 = TAU*V4
00172 V5 = V( 5 )
00173 T5 = TAU*V5
00174 DO 100 J = 1, N
00175 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00176 $ V4*C( 4, J ) + V5*C( 5, J )
00177 C( 1, J ) = C( 1, J ) - SUM*T1
00178 C( 2, J ) = C( 2, J ) - SUM*T2
00179 C( 3, J ) = C( 3, J ) - SUM*T3
00180 C( 4, J ) = C( 4, J ) - SUM*T4
00181 C( 5, J ) = C( 5, J ) - SUM*T5
00182 100 CONTINUE
00183 GO TO 410
00184 110 CONTINUE
00185
00186
00187
00188 V1 = V( 1 )
00189 T1 = TAU*V1
00190 V2 = V( 2 )
00191 T2 = TAU*V2
00192 V3 = V( 3 )
00193 T3 = TAU*V3
00194 V4 = V( 4 )
00195 T4 = TAU*V4
00196 V5 = V( 5 )
00197 T5 = TAU*V5
00198 V6 = V( 6 )
00199 T6 = TAU*V6
00200 DO 120 J = 1, N
00201 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00202 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
00203 C( 1, J ) = C( 1, J ) - SUM*T1
00204 C( 2, J ) = C( 2, J ) - SUM*T2
00205 C( 3, J ) = C( 3, J ) - SUM*T3
00206 C( 4, J ) = C( 4, J ) - SUM*T4
00207 C( 5, J ) = C( 5, J ) - SUM*T5
00208 C( 6, J ) = C( 6, J ) - SUM*T6
00209 120 CONTINUE
00210 GO TO 410
00211 130 CONTINUE
00212
00213
00214
00215 V1 = V( 1 )
00216 T1 = TAU*V1
00217 V2 = V( 2 )
00218 T2 = TAU*V2
00219 V3 = V( 3 )
00220 T3 = TAU*V3
00221 V4 = V( 4 )
00222 T4 = TAU*V4
00223 V5 = V( 5 )
00224 T5 = TAU*V5
00225 V6 = V( 6 )
00226 T6 = TAU*V6
00227 V7 = V( 7 )
00228 T7 = TAU*V7
00229 DO 140 J = 1, N
00230 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00231 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
00232 $ V7*C( 7, J )
00233 C( 1, J ) = C( 1, J ) - SUM*T1
00234 C( 2, J ) = C( 2, J ) - SUM*T2
00235 C( 3, J ) = C( 3, J ) - SUM*T3
00236 C( 4, J ) = C( 4, J ) - SUM*T4
00237 C( 5, J ) = C( 5, J ) - SUM*T5
00238 C( 6, J ) = C( 6, J ) - SUM*T6
00239 C( 7, J ) = C( 7, J ) - SUM*T7
00240 140 CONTINUE
00241 GO TO 410
00242 150 CONTINUE
00243
00244
00245
00246 V1 = V( 1 )
00247 T1 = TAU*V1
00248 V2 = V( 2 )
00249 T2 = TAU*V2
00250 V3 = V( 3 )
00251 T3 = TAU*V3
00252 V4 = V( 4 )
00253 T4 = TAU*V4
00254 V5 = V( 5 )
00255 T5 = TAU*V5
00256 V6 = V( 6 )
00257 T6 = TAU*V6
00258 V7 = V( 7 )
00259 T7 = TAU*V7
00260 V8 = V( 8 )
00261 T8 = TAU*V8
00262 DO 160 J = 1, N
00263 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00264 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
00265 $ V7*C( 7, J ) + V8*C( 8, J )
00266 C( 1, J ) = C( 1, J ) - SUM*T1
00267 C( 2, J ) = C( 2, J ) - SUM*T2
00268 C( 3, J ) = C( 3, J ) - SUM*T3
00269 C( 4, J ) = C( 4, J ) - SUM*T4
00270 C( 5, J ) = C( 5, J ) - SUM*T5
00271 C( 6, J ) = C( 6, J ) - SUM*T6
00272 C( 7, J ) = C( 7, J ) - SUM*T7
00273 C( 8, J ) = C( 8, J ) - SUM*T8
00274 160 CONTINUE
00275 GO TO 410
00276 170 CONTINUE
00277
00278
00279
00280 V1 = V( 1 )
00281 T1 = TAU*V1
00282 V2 = V( 2 )
00283 T2 = TAU*V2
00284 V3 = V( 3 )
00285 T3 = TAU*V3
00286 V4 = V( 4 )
00287 T4 = TAU*V4
00288 V5 = V( 5 )
00289 T5 = TAU*V5
00290 V6 = V( 6 )
00291 T6 = TAU*V6
00292 V7 = V( 7 )
00293 T7 = TAU*V7
00294 V8 = V( 8 )
00295 T8 = TAU*V8
00296 V9 = V( 9 )
00297 T9 = TAU*V9
00298 DO 180 J = 1, N
00299 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00300 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
00301 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
00302 C( 1, J ) = C( 1, J ) - SUM*T1
00303 C( 2, J ) = C( 2, J ) - SUM*T2
00304 C( 3, J ) = C( 3, J ) - SUM*T3
00305 C( 4, J ) = C( 4, J ) - SUM*T4
00306 C( 5, J ) = C( 5, J ) - SUM*T5
00307 C( 6, J ) = C( 6, J ) - SUM*T6
00308 C( 7, J ) = C( 7, J ) - SUM*T7
00309 C( 8, J ) = C( 8, J ) - SUM*T8
00310 C( 9, J ) = C( 9, J ) - SUM*T9
00311 180 CONTINUE
00312 GO TO 410
00313 190 CONTINUE
00314
00315
00316
00317 V1 = V( 1 )
00318 T1 = TAU*V1
00319 V2 = V( 2 )
00320 T2 = TAU*V2
00321 V3 = V( 3 )
00322 T3 = TAU*V3
00323 V4 = V( 4 )
00324 T4 = TAU*V4
00325 V5 = V( 5 )
00326 T5 = TAU*V5
00327 V6 = V( 6 )
00328 T6 = TAU*V6
00329 V7 = V( 7 )
00330 T7 = TAU*V7
00331 V8 = V( 8 )
00332 T8 = TAU*V8
00333 V9 = V( 9 )
00334 T9 = TAU*V9
00335 V10 = V( 10 )
00336 T10 = TAU*V10
00337 DO 200 J = 1, N
00338 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
00339 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
00340 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
00341 $ V10*C( 10, J )
00342 C( 1, J ) = C( 1, J ) - SUM*T1
00343 C( 2, J ) = C( 2, J ) - SUM*T2
00344 C( 3, J ) = C( 3, J ) - SUM*T3
00345 C( 4, J ) = C( 4, J ) - SUM*T4
00346 C( 5, J ) = C( 5, J ) - SUM*T5
00347 C( 6, J ) = C( 6, J ) - SUM*T6
00348 C( 7, J ) = C( 7, J ) - SUM*T7
00349 C( 8, J ) = C( 8, J ) - SUM*T8
00350 C( 9, J ) = C( 9, J ) - SUM*T9
00351 C( 10, J ) = C( 10, J ) - SUM*T10
00352 200 CONTINUE
00353 GO TO 410
00354 ELSE
00355
00356
00357
00358 GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
00359 $ 370, 390 )N
00360
00361
00362
00363 CALL DLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
00364 GO TO 410
00365 210 CONTINUE
00366
00367
00368
00369 T1 = ONE - TAU*V( 1 )*V( 1 )
00370 DO 220 J = 1, M
00371 C( J, 1 ) = T1*C( J, 1 )
00372 220 CONTINUE
00373 GO TO 410
00374 230 CONTINUE
00375
00376
00377
00378 V1 = V( 1 )
00379 T1 = TAU*V1
00380 V2 = V( 2 )
00381 T2 = TAU*V2
00382 DO 240 J = 1, M
00383 SUM = V1*C( J, 1 ) + V2*C( J, 2 )
00384 C( J, 1 ) = C( J, 1 ) - SUM*T1
00385 C( J, 2 ) = C( J, 2 ) - SUM*T2
00386 240 CONTINUE
00387 GO TO 410
00388 250 CONTINUE
00389
00390
00391
00392 V1 = V( 1 )
00393 T1 = TAU*V1
00394 V2 = V( 2 )
00395 T2 = TAU*V2
00396 V3 = V( 3 )
00397 T3 = TAU*V3
00398 DO 260 J = 1, M
00399 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
00400 C( J, 1 ) = C( J, 1 ) - SUM*T1
00401 C( J, 2 ) = C( J, 2 ) - SUM*T2
00402 C( J, 3 ) = C( J, 3 ) - SUM*T3
00403 260 CONTINUE
00404 GO TO 410
00405 270 CONTINUE
00406
00407
00408
00409 V1 = V( 1 )
00410 T1 = TAU*V1
00411 V2 = V( 2 )
00412 T2 = TAU*V2
00413 V3 = V( 3 )
00414 T3 = TAU*V3
00415 V4 = V( 4 )
00416 T4 = TAU*V4
00417 DO 280 J = 1, M
00418 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00419 $ V4*C( J, 4 )
00420 C( J, 1 ) = C( J, 1 ) - SUM*T1
00421 C( J, 2 ) = C( J, 2 ) - SUM*T2
00422 C( J, 3 ) = C( J, 3 ) - SUM*T3
00423 C( J, 4 ) = C( J, 4 ) - SUM*T4
00424 280 CONTINUE
00425 GO TO 410
00426 290 CONTINUE
00427
00428
00429
00430 V1 = V( 1 )
00431 T1 = TAU*V1
00432 V2 = V( 2 )
00433 T2 = TAU*V2
00434 V3 = V( 3 )
00435 T3 = TAU*V3
00436 V4 = V( 4 )
00437 T4 = TAU*V4
00438 V5 = V( 5 )
00439 T5 = TAU*V5
00440 DO 300 J = 1, M
00441 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00442 $ V4*C( J, 4 ) + V5*C( J, 5 )
00443 C( J, 1 ) = C( J, 1 ) - SUM*T1
00444 C( J, 2 ) = C( J, 2 ) - SUM*T2
00445 C( J, 3 ) = C( J, 3 ) - SUM*T3
00446 C( J, 4 ) = C( J, 4 ) - SUM*T4
00447 C( J, 5 ) = C( J, 5 ) - SUM*T5
00448 300 CONTINUE
00449 GO TO 410
00450 310 CONTINUE
00451
00452
00453
00454 V1 = V( 1 )
00455 T1 = TAU*V1
00456 V2 = V( 2 )
00457 T2 = TAU*V2
00458 V3 = V( 3 )
00459 T3 = TAU*V3
00460 V4 = V( 4 )
00461 T4 = TAU*V4
00462 V5 = V( 5 )
00463 T5 = TAU*V5
00464 V6 = V( 6 )
00465 T6 = TAU*V6
00466 DO 320 J = 1, M
00467 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00468 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
00469 C( J, 1 ) = C( J, 1 ) - SUM*T1
00470 C( J, 2 ) = C( J, 2 ) - SUM*T2
00471 C( J, 3 ) = C( J, 3 ) - SUM*T3
00472 C( J, 4 ) = C( J, 4 ) - SUM*T4
00473 C( J, 5 ) = C( J, 5 ) - SUM*T5
00474 C( J, 6 ) = C( J, 6 ) - SUM*T6
00475 320 CONTINUE
00476 GO TO 410
00477 330 CONTINUE
00478
00479
00480
00481 V1 = V( 1 )
00482 T1 = TAU*V1
00483 V2 = V( 2 )
00484 T2 = TAU*V2
00485 V3 = V( 3 )
00486 T3 = TAU*V3
00487 V4 = V( 4 )
00488 T4 = TAU*V4
00489 V5 = V( 5 )
00490 T5 = TAU*V5
00491 V6 = V( 6 )
00492 T6 = TAU*V6
00493 V7 = V( 7 )
00494 T7 = TAU*V7
00495 DO 340 J = 1, M
00496 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00497 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
00498 $ V7*C( J, 7 )
00499 C( J, 1 ) = C( J, 1 ) - SUM*T1
00500 C( J, 2 ) = C( J, 2 ) - SUM*T2
00501 C( J, 3 ) = C( J, 3 ) - SUM*T3
00502 C( J, 4 ) = C( J, 4 ) - SUM*T4
00503 C( J, 5 ) = C( J, 5 ) - SUM*T5
00504 C( J, 6 ) = C( J, 6 ) - SUM*T6
00505 C( J, 7 ) = C( J, 7 ) - SUM*T7
00506 340 CONTINUE
00507 GO TO 410
00508 350 CONTINUE
00509
00510
00511
00512 V1 = V( 1 )
00513 T1 = TAU*V1
00514 V2 = V( 2 )
00515 T2 = TAU*V2
00516 V3 = V( 3 )
00517 T3 = TAU*V3
00518 V4 = V( 4 )
00519 T4 = TAU*V4
00520 V5 = V( 5 )
00521 T5 = TAU*V5
00522 V6 = V( 6 )
00523 T6 = TAU*V6
00524 V7 = V( 7 )
00525 T7 = TAU*V7
00526 V8 = V( 8 )
00527 T8 = TAU*V8
00528 DO 360 J = 1, M
00529 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00530 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
00531 $ V7*C( J, 7 ) + V8*C( J, 8 )
00532 C( J, 1 ) = C( J, 1 ) - SUM*T1
00533 C( J, 2 ) = C( J, 2 ) - SUM*T2
00534 C( J, 3 ) = C( J, 3 ) - SUM*T3
00535 C( J, 4 ) = C( J, 4 ) - SUM*T4
00536 C( J, 5 ) = C( J, 5 ) - SUM*T5
00537 C( J, 6 ) = C( J, 6 ) - SUM*T6
00538 C( J, 7 ) = C( J, 7 ) - SUM*T7
00539 C( J, 8 ) = C( J, 8 ) - SUM*T8
00540 360 CONTINUE
00541 GO TO 410
00542 370 CONTINUE
00543
00544
00545
00546 V1 = V( 1 )
00547 T1 = TAU*V1
00548 V2 = V( 2 )
00549 T2 = TAU*V2
00550 V3 = V( 3 )
00551 T3 = TAU*V3
00552 V4 = V( 4 )
00553 T4 = TAU*V4
00554 V5 = V( 5 )
00555 T5 = TAU*V5
00556 V6 = V( 6 )
00557 T6 = TAU*V6
00558 V7 = V( 7 )
00559 T7 = TAU*V7
00560 V8 = V( 8 )
00561 T8 = TAU*V8
00562 V9 = V( 9 )
00563 T9 = TAU*V9
00564 DO 380 J = 1, M
00565 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00566 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
00567 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
00568 C( J, 1 ) = C( J, 1 ) - SUM*T1
00569 C( J, 2 ) = C( J, 2 ) - SUM*T2
00570 C( J, 3 ) = C( J, 3 ) - SUM*T3
00571 C( J, 4 ) = C( J, 4 ) - SUM*T4
00572 C( J, 5 ) = C( J, 5 ) - SUM*T5
00573 C( J, 6 ) = C( J, 6 ) - SUM*T6
00574 C( J, 7 ) = C( J, 7 ) - SUM*T7
00575 C( J, 8 ) = C( J, 8 ) - SUM*T8
00576 C( J, 9 ) = C( J, 9 ) - SUM*T9
00577 380 CONTINUE
00578 GO TO 410
00579 390 CONTINUE
00580
00581
00582
00583 V1 = V( 1 )
00584 T1 = TAU*V1
00585 V2 = V( 2 )
00586 T2 = TAU*V2
00587 V3 = V( 3 )
00588 T3 = TAU*V3
00589 V4 = V( 4 )
00590 T4 = TAU*V4
00591 V5 = V( 5 )
00592 T5 = TAU*V5
00593 V6 = V( 6 )
00594 T6 = TAU*V6
00595 V7 = V( 7 )
00596 T7 = TAU*V7
00597 V8 = V( 8 )
00598 T8 = TAU*V8
00599 V9 = V( 9 )
00600 T9 = TAU*V9
00601 V10 = V( 10 )
00602 T10 = TAU*V10
00603 DO 400 J = 1, M
00604 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
00605 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
00606 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
00607 $ V10*C( J, 10 )
00608 C( J, 1 ) = C( J, 1 ) - SUM*T1
00609 C( J, 2 ) = C( J, 2 ) - SUM*T2
00610 C( J, 3 ) = C( J, 3 ) - SUM*T3
00611 C( J, 4 ) = C( J, 4 ) - SUM*T4
00612 C( J, 5 ) = C( J, 5 ) - SUM*T5
00613 C( J, 6 ) = C( J, 6 ) - SUM*T6
00614 C( J, 7 ) = C( J, 7 ) - SUM*T7
00615 C( J, 8 ) = C( J, 8 ) - SUM*T8
00616 C( J, 9 ) = C( J, 9 ) - SUM*T9
00617 C( J, 10 ) = C( J, 10 ) - SUM*T10
00618 400 CONTINUE
00619 GO TO 410
00620 END IF
00621 410 CONTINUE
00622 RETURN
00623
00624
00625
00626 END