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