![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b SLARFX 00002 * 00003 * =========== DOCUMENTATION =========== 00004 * 00005 * Online html documentation available at 00006 * http://www.netlib.org/lapack/explore-html/ 00007 * 00008 *> \htmlonly 00009 *> Download SLARFX + dependencies 00010 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/slarfx.f"> 00011 *> [TGZ]</a> 00012 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/slarfx.f"> 00013 *> [ZIP]</a> 00014 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/slarfx.f"> 00015 *> [TXT]</a> 00016 *> \endhtmlonly 00017 * 00018 * Definition: 00019 * =========== 00020 * 00021 * SUBROUTINE SLARFX( SIDE, M, N, V, TAU, C, LDC, WORK ) 00022 * 00023 * .. Scalar Arguments .. 00024 * CHARACTER SIDE 00025 * INTEGER LDC, M, N 00026 * REAL TAU 00027 * .. 00028 * .. Array Arguments .. 00029 * REAL C( LDC, * ), V( * ), WORK( * ) 00030 * .. 00031 * 00032 * 00033 *> \par Purpose: 00034 * ============= 00035 *> 00036 *> \verbatim 00037 *> 00038 *> SLARFX applies a real elementary reflector H to a real m by n 00039 *> matrix C, from either the left or the right. H is represented in the 00040 *> form 00041 *> 00042 *> H = I - tau * v * v**T 00043 *> 00044 *> where tau is a real scalar and v is a real vector. 00045 *> 00046 *> If tau = 0, then H is taken to be the unit matrix 00047 *> 00048 *> This version uses inline code if H has order < 11. 00049 *> \endverbatim 00050 * 00051 * Arguments: 00052 * ========== 00053 * 00054 *> \param[in] SIDE 00055 *> \verbatim 00056 *> SIDE is CHARACTER*1 00057 *> = 'L': form H * C 00058 *> = 'R': form C * H 00059 *> \endverbatim 00060 *> 00061 *> \param[in] M 00062 *> \verbatim 00063 *> M is INTEGER 00064 *> The number of rows of the matrix C. 00065 *> \endverbatim 00066 *> 00067 *> \param[in] N 00068 *> \verbatim 00069 *> N is INTEGER 00070 *> The number of columns of the matrix C. 00071 *> \endverbatim 00072 *> 00073 *> \param[in] V 00074 *> \verbatim 00075 *> V is REAL array, dimension (M) if SIDE = 'L' 00076 *> or (N) if SIDE = 'R' 00077 *> The vector v in the representation of H. 00078 *> \endverbatim 00079 *> 00080 *> \param[in] TAU 00081 *> \verbatim 00082 *> TAU is REAL 00083 *> The value tau in the representation of H. 00084 *> \endverbatim 00085 *> 00086 *> \param[in,out] C 00087 *> \verbatim 00088 *> C is REAL array, dimension (LDC,N) 00089 *> On entry, the m by n matrix C. 00090 *> On exit, C is overwritten by the matrix H * C if SIDE = 'L', 00091 *> or C * H if SIDE = 'R'. 00092 *> \endverbatim 00093 *> 00094 *> \param[in] LDC 00095 *> \verbatim 00096 *> LDC is INTEGER 00097 *> The leading dimension of the array C. LDA >= (1,M). 00098 *> \endverbatim 00099 *> 00100 *> \param[out] WORK 00101 *> \verbatim 00102 *> WORK is REAL array, dimension 00103 *> (N) if SIDE = 'L' 00104 *> or (M) if SIDE = 'R' 00105 *> WORK is not referenced if H has order < 11. 00106 *> \endverbatim 00107 * 00108 * Authors: 00109 * ======== 00110 * 00111 *> \author Univ. of Tennessee 00112 *> \author Univ. of California Berkeley 00113 *> \author Univ. of Colorado Denver 00114 *> \author NAG Ltd. 00115 * 00116 *> \date November 2011 00117 * 00118 *> \ingroup realOTHERauxiliary 00119 * 00120 * ===================================================================== 00121 SUBROUTINE SLARFX( SIDE, M, N, V, TAU, C, LDC, WORK ) 00122 * 00123 * -- LAPACK auxiliary routine (version 3.4.0) -- 00124 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00125 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00126 * November 2011 00127 * 00128 * .. Scalar Arguments .. 00129 CHARACTER SIDE 00130 INTEGER LDC, M, N 00131 REAL TAU 00132 * .. 00133 * .. Array Arguments .. 00134 REAL C( LDC, * ), V( * ), WORK( * ) 00135 * .. 00136 * 00137 * ===================================================================== 00138 * 00139 * .. Parameters .. 00140 REAL ZERO, ONE 00141 PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) 00142 * .. 00143 * .. Local Scalars .. 00144 INTEGER J 00145 REAL SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9, 00146 $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9 00147 * .. 00148 * .. External Functions .. 00149 LOGICAL LSAME 00150 EXTERNAL LSAME 00151 * .. 00152 * .. External Subroutines .. 00153 EXTERNAL SLARF 00154 * .. 00155 * .. Executable Statements .. 00156 * 00157 IF( TAU.EQ.ZERO ) 00158 $ RETURN 00159 IF( LSAME( SIDE, 'L' ) ) THEN 00160 * 00161 * Form H * C, where H has order m. 00162 * 00163 GO TO ( 10, 30, 50, 70, 90, 110, 130, 150, 00164 $ 170, 190 )M 00165 * 00166 * Code for general M 00167 * 00168 CALL SLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK ) 00169 GO TO 410 00170 10 CONTINUE 00171 * 00172 * Special code for 1 x 1 Householder 00173 * 00174 T1 = ONE - TAU*V( 1 )*V( 1 ) 00175 DO 20 J = 1, N 00176 C( 1, J ) = T1*C( 1, J ) 00177 20 CONTINUE 00178 GO TO 410 00179 30 CONTINUE 00180 * 00181 * Special code for 2 x 2 Householder 00182 * 00183 V1 = V( 1 ) 00184 T1 = TAU*V1 00185 V2 = V( 2 ) 00186 T2 = TAU*V2 00187 DO 40 J = 1, N 00188 SUM = V1*C( 1, J ) + V2*C( 2, J ) 00189 C( 1, J ) = C( 1, J ) - SUM*T1 00190 C( 2, J ) = C( 2, J ) - SUM*T2 00191 40 CONTINUE 00192 GO TO 410 00193 50 CONTINUE 00194 * 00195 * Special code for 3 x 3 Householder 00196 * 00197 V1 = V( 1 ) 00198 T1 = TAU*V1 00199 V2 = V( 2 ) 00200 T2 = TAU*V2 00201 V3 = V( 3 ) 00202 T3 = TAU*V3 00203 DO 60 J = 1, N 00204 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) 00205 C( 1, J ) = C( 1, J ) - SUM*T1 00206 C( 2, J ) = C( 2, J ) - SUM*T2 00207 C( 3, J ) = C( 3, J ) - SUM*T3 00208 60 CONTINUE 00209 GO TO 410 00210 70 CONTINUE 00211 * 00212 * Special code for 4 x 4 Householder 00213 * 00214 V1 = V( 1 ) 00215 T1 = TAU*V1 00216 V2 = V( 2 ) 00217 T2 = TAU*V2 00218 V3 = V( 3 ) 00219 T3 = TAU*V3 00220 V4 = V( 4 ) 00221 T4 = TAU*V4 00222 DO 80 J = 1, N 00223 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00224 $ V4*C( 4, J ) 00225 C( 1, J ) = C( 1, J ) - SUM*T1 00226 C( 2, J ) = C( 2, J ) - SUM*T2 00227 C( 3, J ) = C( 3, J ) - SUM*T3 00228 C( 4, J ) = C( 4, J ) - SUM*T4 00229 80 CONTINUE 00230 GO TO 410 00231 90 CONTINUE 00232 * 00233 * Special code for 5 x 5 Householder 00234 * 00235 V1 = V( 1 ) 00236 T1 = TAU*V1 00237 V2 = V( 2 ) 00238 T2 = TAU*V2 00239 V3 = V( 3 ) 00240 T3 = TAU*V3 00241 V4 = V( 4 ) 00242 T4 = TAU*V4 00243 V5 = V( 5 ) 00244 T5 = TAU*V5 00245 DO 100 J = 1, N 00246 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00247 $ V4*C( 4, J ) + V5*C( 5, J ) 00248 C( 1, J ) = C( 1, J ) - SUM*T1 00249 C( 2, J ) = C( 2, J ) - SUM*T2 00250 C( 3, J ) = C( 3, J ) - SUM*T3 00251 C( 4, J ) = C( 4, J ) - SUM*T4 00252 C( 5, J ) = C( 5, J ) - SUM*T5 00253 100 CONTINUE 00254 GO TO 410 00255 110 CONTINUE 00256 * 00257 * Special code for 6 x 6 Householder 00258 * 00259 V1 = V( 1 ) 00260 T1 = TAU*V1 00261 V2 = V( 2 ) 00262 T2 = TAU*V2 00263 V3 = V( 3 ) 00264 T3 = TAU*V3 00265 V4 = V( 4 ) 00266 T4 = TAU*V4 00267 V5 = V( 5 ) 00268 T5 = TAU*V5 00269 V6 = V( 6 ) 00270 T6 = TAU*V6 00271 DO 120 J = 1, N 00272 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00273 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) 00274 C( 1, J ) = C( 1, J ) - SUM*T1 00275 C( 2, J ) = C( 2, J ) - SUM*T2 00276 C( 3, J ) = C( 3, J ) - SUM*T3 00277 C( 4, J ) = C( 4, J ) - SUM*T4 00278 C( 5, J ) = C( 5, J ) - SUM*T5 00279 C( 6, J ) = C( 6, J ) - SUM*T6 00280 120 CONTINUE 00281 GO TO 410 00282 130 CONTINUE 00283 * 00284 * Special code for 7 x 7 Householder 00285 * 00286 V1 = V( 1 ) 00287 T1 = TAU*V1 00288 V2 = V( 2 ) 00289 T2 = TAU*V2 00290 V3 = V( 3 ) 00291 T3 = TAU*V3 00292 V4 = V( 4 ) 00293 T4 = TAU*V4 00294 V5 = V( 5 ) 00295 T5 = TAU*V5 00296 V6 = V( 6 ) 00297 T6 = TAU*V6 00298 V7 = V( 7 ) 00299 T7 = TAU*V7 00300 DO 140 J = 1, N 00301 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00302 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + 00303 $ V7*C( 7, J ) 00304 C( 1, J ) = C( 1, J ) - SUM*T1 00305 C( 2, J ) = C( 2, J ) - SUM*T2 00306 C( 3, J ) = C( 3, J ) - SUM*T3 00307 C( 4, J ) = C( 4, J ) - SUM*T4 00308 C( 5, J ) = C( 5, J ) - SUM*T5 00309 C( 6, J ) = C( 6, J ) - SUM*T6 00310 C( 7, J ) = C( 7, J ) - SUM*T7 00311 140 CONTINUE 00312 GO TO 410 00313 150 CONTINUE 00314 * 00315 * Special code for 8 x 8 Householder 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 DO 160 J = 1, N 00334 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00335 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + 00336 $ V7*C( 7, J ) + V8*C( 8, J ) 00337 C( 1, J ) = C( 1, J ) - SUM*T1 00338 C( 2, J ) = C( 2, J ) - SUM*T2 00339 C( 3, J ) = C( 3, J ) - SUM*T3 00340 C( 4, J ) = C( 4, J ) - SUM*T4 00341 C( 5, J ) = C( 5, J ) - SUM*T5 00342 C( 6, J ) = C( 6, J ) - SUM*T6 00343 C( 7, J ) = C( 7, J ) - SUM*T7 00344 C( 8, J ) = C( 8, J ) - SUM*T8 00345 160 CONTINUE 00346 GO TO 410 00347 170 CONTINUE 00348 * 00349 * Special code for 9 x 9 Householder 00350 * 00351 V1 = V( 1 ) 00352 T1 = TAU*V1 00353 V2 = V( 2 ) 00354 T2 = TAU*V2 00355 V3 = V( 3 ) 00356 T3 = TAU*V3 00357 V4 = V( 4 ) 00358 T4 = TAU*V4 00359 V5 = V( 5 ) 00360 T5 = TAU*V5 00361 V6 = V( 6 ) 00362 T6 = TAU*V6 00363 V7 = V( 7 ) 00364 T7 = TAU*V7 00365 V8 = V( 8 ) 00366 T8 = TAU*V8 00367 V9 = V( 9 ) 00368 T9 = TAU*V9 00369 DO 180 J = 1, N 00370 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00371 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + 00372 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) 00373 C( 1, J ) = C( 1, J ) - SUM*T1 00374 C( 2, J ) = C( 2, J ) - SUM*T2 00375 C( 3, J ) = C( 3, J ) - SUM*T3 00376 C( 4, J ) = C( 4, J ) - SUM*T4 00377 C( 5, J ) = C( 5, J ) - SUM*T5 00378 C( 6, J ) = C( 6, J ) - SUM*T6 00379 C( 7, J ) = C( 7, J ) - SUM*T7 00380 C( 8, J ) = C( 8, J ) - SUM*T8 00381 C( 9, J ) = C( 9, J ) - SUM*T9 00382 180 CONTINUE 00383 GO TO 410 00384 190 CONTINUE 00385 * 00386 * Special code for 10 x 10 Householder 00387 * 00388 V1 = V( 1 ) 00389 T1 = TAU*V1 00390 V2 = V( 2 ) 00391 T2 = TAU*V2 00392 V3 = V( 3 ) 00393 T3 = TAU*V3 00394 V4 = V( 4 ) 00395 T4 = TAU*V4 00396 V5 = V( 5 ) 00397 T5 = TAU*V5 00398 V6 = V( 6 ) 00399 T6 = TAU*V6 00400 V7 = V( 7 ) 00401 T7 = TAU*V7 00402 V8 = V( 8 ) 00403 T8 = TAU*V8 00404 V9 = V( 9 ) 00405 T9 = TAU*V9 00406 V10 = V( 10 ) 00407 T10 = TAU*V10 00408 DO 200 J = 1, N 00409 SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) + 00410 $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) + 00411 $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) + 00412 $ V10*C( 10, J ) 00413 C( 1, J ) = C( 1, J ) - SUM*T1 00414 C( 2, J ) = C( 2, J ) - SUM*T2 00415 C( 3, J ) = C( 3, J ) - SUM*T3 00416 C( 4, J ) = C( 4, J ) - SUM*T4 00417 C( 5, J ) = C( 5, J ) - SUM*T5 00418 C( 6, J ) = C( 6, J ) - SUM*T6 00419 C( 7, J ) = C( 7, J ) - SUM*T7 00420 C( 8, J ) = C( 8, J ) - SUM*T8 00421 C( 9, J ) = C( 9, J ) - SUM*T9 00422 C( 10, J ) = C( 10, J ) - SUM*T10 00423 200 CONTINUE 00424 GO TO 410 00425 ELSE 00426 * 00427 * Form C * H, where H has order n. 00428 * 00429 GO TO ( 210, 230, 250, 270, 290, 310, 330, 350, 00430 $ 370, 390 )N 00431 * 00432 * Code for general N 00433 * 00434 CALL SLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK ) 00435 GO TO 410 00436 210 CONTINUE 00437 * 00438 * Special code for 1 x 1 Householder 00439 * 00440 T1 = ONE - TAU*V( 1 )*V( 1 ) 00441 DO 220 J = 1, M 00442 C( J, 1 ) = T1*C( J, 1 ) 00443 220 CONTINUE 00444 GO TO 410 00445 230 CONTINUE 00446 * 00447 * Special code for 2 x 2 Householder 00448 * 00449 V1 = V( 1 ) 00450 T1 = TAU*V1 00451 V2 = V( 2 ) 00452 T2 = TAU*V2 00453 DO 240 J = 1, M 00454 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) 00455 C( J, 1 ) = C( J, 1 ) - SUM*T1 00456 C( J, 2 ) = C( J, 2 ) - SUM*T2 00457 240 CONTINUE 00458 GO TO 410 00459 250 CONTINUE 00460 * 00461 * Special code for 3 x 3 Householder 00462 * 00463 V1 = V( 1 ) 00464 T1 = TAU*V1 00465 V2 = V( 2 ) 00466 T2 = TAU*V2 00467 V3 = V( 3 ) 00468 T3 = TAU*V3 00469 DO 260 J = 1, M 00470 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) 00471 C( J, 1 ) = C( J, 1 ) - SUM*T1 00472 C( J, 2 ) = C( J, 2 ) - SUM*T2 00473 C( J, 3 ) = C( J, 3 ) - SUM*T3 00474 260 CONTINUE 00475 GO TO 410 00476 270 CONTINUE 00477 * 00478 * Special code for 4 x 4 Householder 00479 * 00480 V1 = V( 1 ) 00481 T1 = TAU*V1 00482 V2 = V( 2 ) 00483 T2 = TAU*V2 00484 V3 = V( 3 ) 00485 T3 = TAU*V3 00486 V4 = V( 4 ) 00487 T4 = TAU*V4 00488 DO 280 J = 1, M 00489 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00490 $ V4*C( J, 4 ) 00491 C( J, 1 ) = C( J, 1 ) - SUM*T1 00492 C( J, 2 ) = C( J, 2 ) - SUM*T2 00493 C( J, 3 ) = C( J, 3 ) - SUM*T3 00494 C( J, 4 ) = C( J, 4 ) - SUM*T4 00495 280 CONTINUE 00496 GO TO 410 00497 290 CONTINUE 00498 * 00499 * Special code for 5 x 5 Householder 00500 * 00501 V1 = V( 1 ) 00502 T1 = TAU*V1 00503 V2 = V( 2 ) 00504 T2 = TAU*V2 00505 V3 = V( 3 ) 00506 T3 = TAU*V3 00507 V4 = V( 4 ) 00508 T4 = TAU*V4 00509 V5 = V( 5 ) 00510 T5 = TAU*V5 00511 DO 300 J = 1, M 00512 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00513 $ V4*C( J, 4 ) + V5*C( J, 5 ) 00514 C( J, 1 ) = C( J, 1 ) - SUM*T1 00515 C( J, 2 ) = C( J, 2 ) - SUM*T2 00516 C( J, 3 ) = C( J, 3 ) - SUM*T3 00517 C( J, 4 ) = C( J, 4 ) - SUM*T4 00518 C( J, 5 ) = C( J, 5 ) - SUM*T5 00519 300 CONTINUE 00520 GO TO 410 00521 310 CONTINUE 00522 * 00523 * Special code for 6 x 6 Householder 00524 * 00525 V1 = V( 1 ) 00526 T1 = TAU*V1 00527 V2 = V( 2 ) 00528 T2 = TAU*V2 00529 V3 = V( 3 ) 00530 T3 = TAU*V3 00531 V4 = V( 4 ) 00532 T4 = TAU*V4 00533 V5 = V( 5 ) 00534 T5 = TAU*V5 00535 V6 = V( 6 ) 00536 T6 = TAU*V6 00537 DO 320 J = 1, M 00538 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00539 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) 00540 C( J, 1 ) = C( J, 1 ) - SUM*T1 00541 C( J, 2 ) = C( J, 2 ) - SUM*T2 00542 C( J, 3 ) = C( J, 3 ) - SUM*T3 00543 C( J, 4 ) = C( J, 4 ) - SUM*T4 00544 C( J, 5 ) = C( J, 5 ) - SUM*T5 00545 C( J, 6 ) = C( J, 6 ) - SUM*T6 00546 320 CONTINUE 00547 GO TO 410 00548 330 CONTINUE 00549 * 00550 * Special code for 7 x 7 Householder 00551 * 00552 V1 = V( 1 ) 00553 T1 = TAU*V1 00554 V2 = V( 2 ) 00555 T2 = TAU*V2 00556 V3 = V( 3 ) 00557 T3 = TAU*V3 00558 V4 = V( 4 ) 00559 T4 = TAU*V4 00560 V5 = V( 5 ) 00561 T5 = TAU*V5 00562 V6 = V( 6 ) 00563 T6 = TAU*V6 00564 V7 = V( 7 ) 00565 T7 = TAU*V7 00566 DO 340 J = 1, M 00567 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00568 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + 00569 $ V7*C( J, 7 ) 00570 C( J, 1 ) = C( J, 1 ) - SUM*T1 00571 C( J, 2 ) = C( J, 2 ) - SUM*T2 00572 C( J, 3 ) = C( J, 3 ) - SUM*T3 00573 C( J, 4 ) = C( J, 4 ) - SUM*T4 00574 C( J, 5 ) = C( J, 5 ) - SUM*T5 00575 C( J, 6 ) = C( J, 6 ) - SUM*T6 00576 C( J, 7 ) = C( J, 7 ) - SUM*T7 00577 340 CONTINUE 00578 GO TO 410 00579 350 CONTINUE 00580 * 00581 * Special code for 8 x 8 Householder 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 DO 360 J = 1, M 00600 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00601 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + 00602 $ V7*C( J, 7 ) + V8*C( J, 8 ) 00603 C( J, 1 ) = C( J, 1 ) - SUM*T1 00604 C( J, 2 ) = C( J, 2 ) - SUM*T2 00605 C( J, 3 ) = C( J, 3 ) - SUM*T3 00606 C( J, 4 ) = C( J, 4 ) - SUM*T4 00607 C( J, 5 ) = C( J, 5 ) - SUM*T5 00608 C( J, 6 ) = C( J, 6 ) - SUM*T6 00609 C( J, 7 ) = C( J, 7 ) - SUM*T7 00610 C( J, 8 ) = C( J, 8 ) - SUM*T8 00611 360 CONTINUE 00612 GO TO 410 00613 370 CONTINUE 00614 * 00615 * Special code for 9 x 9 Householder 00616 * 00617 V1 = V( 1 ) 00618 T1 = TAU*V1 00619 V2 = V( 2 ) 00620 T2 = TAU*V2 00621 V3 = V( 3 ) 00622 T3 = TAU*V3 00623 V4 = V( 4 ) 00624 T4 = TAU*V4 00625 V5 = V( 5 ) 00626 T5 = TAU*V5 00627 V6 = V( 6 ) 00628 T6 = TAU*V6 00629 V7 = V( 7 ) 00630 T7 = TAU*V7 00631 V8 = V( 8 ) 00632 T8 = TAU*V8 00633 V9 = V( 9 ) 00634 T9 = TAU*V9 00635 DO 380 J = 1, M 00636 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00637 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + 00638 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) 00639 C( J, 1 ) = C( J, 1 ) - SUM*T1 00640 C( J, 2 ) = C( J, 2 ) - SUM*T2 00641 C( J, 3 ) = C( J, 3 ) - SUM*T3 00642 C( J, 4 ) = C( J, 4 ) - SUM*T4 00643 C( J, 5 ) = C( J, 5 ) - SUM*T5 00644 C( J, 6 ) = C( J, 6 ) - SUM*T6 00645 C( J, 7 ) = C( J, 7 ) - SUM*T7 00646 C( J, 8 ) = C( J, 8 ) - SUM*T8 00647 C( J, 9 ) = C( J, 9 ) - SUM*T9 00648 380 CONTINUE 00649 GO TO 410 00650 390 CONTINUE 00651 * 00652 * Special code for 10 x 10 Householder 00653 * 00654 V1 = V( 1 ) 00655 T1 = TAU*V1 00656 V2 = V( 2 ) 00657 T2 = TAU*V2 00658 V3 = V( 3 ) 00659 T3 = TAU*V3 00660 V4 = V( 4 ) 00661 T4 = TAU*V4 00662 V5 = V( 5 ) 00663 T5 = TAU*V5 00664 V6 = V( 6 ) 00665 T6 = TAU*V6 00666 V7 = V( 7 ) 00667 T7 = TAU*V7 00668 V8 = V( 8 ) 00669 T8 = TAU*V8 00670 V9 = V( 9 ) 00671 T9 = TAU*V9 00672 V10 = V( 10 ) 00673 T10 = TAU*V10 00674 DO 400 J = 1, M 00675 SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) + 00676 $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) + 00677 $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) + 00678 $ V10*C( J, 10 ) 00679 C( J, 1 ) = C( J, 1 ) - SUM*T1 00680 C( J, 2 ) = C( J, 2 ) - SUM*T2 00681 C( J, 3 ) = C( J, 3 ) - SUM*T3 00682 C( J, 4 ) = C( J, 4 ) - SUM*T4 00683 C( J, 5 ) = C( J, 5 ) - SUM*T5 00684 C( J, 6 ) = C( J, 6 ) - SUM*T6 00685 C( J, 7 ) = C( J, 7 ) - SUM*T7 00686 C( J, 8 ) = C( J, 8 ) - SUM*T8 00687 C( J, 9 ) = C( J, 9 ) - SUM*T9 00688 C( J, 10 ) = C( J, 10 ) - SUM*T10 00689 400 CONTINUE 00690 GO TO 410 00691 END IF 00692 410 RETURN 00693 * 00694 * End of SLARFX 00695 * 00696 END