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