LAPACK 3.3.0
|
00001 PROGRAM ZCHKEE 00002 * 00003 * -- LAPACK test routine (version 3.3.0) -- 00004 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. 00005 * February 2007 00006 * 00007 * Purpose 00008 * ======= 00009 * 00010 * ZCHKEE tests the COMPLEX*16 LAPACK subroutines for the matrix 00011 * eigenvalue problem. The test paths in this version are 00012 * 00013 * NEP (Nonsymmetric Eigenvalue Problem): 00014 * Test ZGEHRD, ZUNGHR, ZHSEQR, ZTREVC, ZHSEIN, and ZUNMHR 00015 * 00016 * SEP (Hermitian Eigenvalue Problem): 00017 * Test ZHETRD, ZUNGTR, ZSTEQR, ZSTERF, ZSTEIN, ZSTEDC, 00018 * and drivers ZHEEV(X), ZHBEV(X), ZHPEV(X), 00019 * ZHEEVD, ZHBEVD, ZHPEVD 00020 * 00021 * SVD (Singular Value Decomposition): 00022 * Test ZGEBRD, ZUNGBR, and ZBDSQR 00023 * and the drivers ZGESVD, ZGESDD 00024 * 00025 * ZEV (Nonsymmetric Eigenvalue/eigenvector Driver): 00026 * Test ZGEEV 00027 * 00028 * ZES (Nonsymmetric Schur form Driver): 00029 * Test ZGEES 00030 * 00031 * ZVX (Nonsymmetric Eigenvalue/eigenvector Expert Driver): 00032 * Test ZGEEVX 00033 * 00034 * ZSX (Nonsymmetric Schur form Expert Driver): 00035 * Test ZGEESX 00036 * 00037 * ZGG (Generalized Nonsymmetric Eigenvalue Problem): 00038 * Test ZGGHRD, ZGGBAL, ZGGBAK, ZHGEQZ, and ZTGEVC 00039 * and the driver routines ZGEGS and ZGEGV 00040 * 00041 * ZGS (Generalized Nonsymmetric Schur form Driver): 00042 * Test ZGGES 00043 * 00044 * ZGV (Generalized Nonsymmetric Eigenvalue/eigenvector Driver): 00045 * Test ZGGEV 00046 * 00047 * ZGX (Generalized Nonsymmetric Schur form Expert Driver): 00048 * Test ZGGESX 00049 * 00050 * ZXV (Generalized Nonsymmetric Eigenvalue/eigenvector Expert Driver): 00051 * Test ZGGEVX 00052 * 00053 * ZSG (Hermitian Generalized Eigenvalue Problem): 00054 * Test ZHEGST, ZHEGV, ZHEGVD, ZHEGVX, ZHPGST, ZHPGV, ZHPGVD, 00055 * ZHPGVX, ZHBGST, ZHBGV, ZHBGVD, and ZHBGVX 00056 * 00057 * ZHB (Hermitian Band Eigenvalue Problem): 00058 * Test ZHBTRD 00059 * 00060 * ZBB (Band Singular Value Decomposition): 00061 * Test ZGBBRD 00062 * 00063 * ZEC (Eigencondition estimation): 00064 * Test ZTRSYL, ZTREXC, ZTRSNA, and ZTRSEN 00065 * 00066 * ZBL (Balancing a general matrix) 00067 * Test ZGEBAL 00068 * 00069 * ZBK (Back transformation on a balanced matrix) 00070 * Test ZGEBAK 00071 * 00072 * ZGL (Balancing a matrix pair) 00073 * Test ZGGBAL 00074 * 00075 * ZGK (Back transformation on a matrix pair) 00076 * Test ZGGBAK 00077 * 00078 * GLM (Generalized Linear Regression Model): 00079 * Tests ZGGGLM 00080 * 00081 * GQR (Generalized QR and RQ factorizations): 00082 * Tests ZGGQRF and ZGGRQF 00083 * 00084 * GSV (Generalized Singular Value Decomposition): 00085 * Tests ZGGSVD, ZGGSVP, ZTGSJA, ZLAGS2, ZLAPLL, and ZLAPMT 00086 * 00087 * CSD (CS decomposition): 00088 * Tests ZUNCSD 00089 * 00090 * LSE (Constrained Linear Least Squares): 00091 * Tests ZGGLSE 00092 * 00093 * Each test path has a different set of inputs, but the data sets for 00094 * the driver routines xEV, xES, xVX, and xSX can be concatenated in a 00095 * single input file. The first line of input should contain one of the 00096 * 3-character path names in columns 1-3. The number of remaining lines 00097 * depends on what is found on the first line. 00098 * 00099 * The number of matrix types used in testing is often controllable from 00100 * the input file. The number of matrix types for each path, and the 00101 * test routine that describes them, is as follows: 00102 * 00103 * Path name(s) Types Test routine 00104 * 00105 * ZHS or NEP 21 ZCHKHS 00106 * ZST or SEP 21 ZCHKST (routines) 00107 * 18 ZDRVST (drivers) 00108 * ZBD or SVD 16 ZCHKBD (routines) 00109 * 5 ZDRVBD (drivers) 00110 * ZEV 21 ZDRVEV 00111 * ZES 21 ZDRVES 00112 * ZVX 21 ZDRVVX 00113 * ZSX 21 ZDRVSX 00114 * ZGG 26 ZCHKGG (routines) 00115 * 26 ZDRVGG (drivers) 00116 * ZGS 26 ZDRGES 00117 * ZGX 5 ZDRGSX 00118 * ZGV 26 ZDRGEV 00119 * ZXV 2 ZDRGVX 00120 * ZSG 21 ZDRVSG 00121 * ZHB 15 ZCHKHB 00122 * ZBB 15 ZCHKBB 00123 * ZEC - ZCHKEC 00124 * ZBL - ZCHKBL 00125 * ZBK - ZCHKBK 00126 * ZGL - ZCHKGL 00127 * ZGK - ZCHKGK 00128 * GLM 8 ZCKGLM 00129 * GQR 8 ZCKGQR 00130 * GSV 8 ZCKGSV 00131 * CSD 3 ZCKCSD 00132 * LSE 8 ZCKLSE 00133 * 00134 *----------------------------------------------------------------------- 00135 * 00136 * NEP input file: 00137 * 00138 * line 2: NN, INTEGER 00139 * Number of values of N. 00140 * 00141 * line 3: NVAL, INTEGER array, dimension (NN) 00142 * The values for the matrix dimension N. 00143 * 00144 * line 4: NPARMS, INTEGER 00145 * Number of values of the parameters NB, NBMIN, NX, NS, and 00146 * MAXB. 00147 * 00148 * line 5: NBVAL, INTEGER array, dimension (NPARMS) 00149 * The values for the blocksize NB. 00150 * 00151 * line 6: NBMIN, INTEGER array, dimension (NPARMS) 00152 * The values for the minimum blocksize NBMIN. 00153 * 00154 * line 7: NXVAL, INTEGER array, dimension (NPARMS) 00155 * The values for the crossover point NX. 00156 * 00157 * line 8: INMIN, INTEGER array, dimension (NPARMS) 00158 * LAHQR vs TTQRE crossover point, >= 11 00159 * 00160 * line 9: INWIN, INTEGER array, dimension (NPARMS) 00161 * recommended deflation window size 00162 * 00163 * line 10: INIBL, INTEGER array, dimension (NPARMS) 00164 * nibble crossover point 00165 * 00166 * line 11: ISHFTS, INTEGER array, dimension (NPARMS) 00167 * number of simultaneous shifts) 00168 * 00169 * line 12: IACC22, INTEGER array, dimension (NPARMS) 00170 * select structured matrix multiply: 0, 1 or 2) 00171 * 00172 * line 13: THRESH 00173 * Threshold value for the test ratios. Information will be 00174 * printed about each test for which the test ratio is greater 00175 * than or equal to the threshold. To have all of the test 00176 * ratios printed, use THRESH = 0.0 . 00177 * 00178 * line 14: NEWSD, INTEGER 00179 * A code indicating how to set the random number seed. 00180 * = 0: Set the seed to a default value before each run 00181 * = 1: Initialize the seed to a default value only before the 00182 * first run 00183 * = 2: Like 1, but use the seed values on the next line 00184 * 00185 * If line 14 was 2: 00186 * 00187 * line 15: INTEGER array, dimension (4) 00188 * Four integer values for the random number seed. 00189 * 00190 * lines 15-EOF: The remaining lines occur in sets of 1 or 2 and allow 00191 * the user to specify the matrix types. Each line contains 00192 * a 3-character path name in columns 1-3, and the number 00193 * of matrix types must be the first nonblank item in columns 00194 * 4-80. If the number of matrix types is at least 1 but is 00195 * less than the maximum number of possible types, a second 00196 * line will be read to get the numbers of the matrix types to 00197 * be used. For example, 00198 * NEP 21 00199 * requests all of the matrix types for the nonsymmetric 00200 * eigenvalue problem, while 00201 * NEP 4 00202 * 9 10 11 12 00203 * requests only matrices of type 9, 10, 11, and 12. 00204 * 00205 * The valid 3-character path names are 'NEP' or 'ZHS' for the 00206 * nonsymmetric eigenvalue routines. 00207 * 00208 *----------------------------------------------------------------------- 00209 * 00210 * SEP or ZSG input file: 00211 * 00212 * line 2: NN, INTEGER 00213 * Number of values of N. 00214 * 00215 * line 3: NVAL, INTEGER array, dimension (NN) 00216 * The values for the matrix dimension N. 00217 * 00218 * line 4: NPARMS, INTEGER 00219 * Number of values of the parameters NB, NBMIN, and NX. 00220 * 00221 * line 5: NBVAL, INTEGER array, dimension (NPARMS) 00222 * The values for the blocksize NB. 00223 * 00224 * line 6: NBMIN, INTEGER array, dimension (NPARMS) 00225 * The values for the minimum blocksize NBMIN. 00226 * 00227 * line 7: NXVAL, INTEGER array, dimension (NPARMS) 00228 * The values for the crossover point NX. 00229 * 00230 * line 8: THRESH 00231 * Threshold value for the test ratios. Information will be 00232 * printed about each test for which the test ratio is greater 00233 * than or equal to the threshold. 00234 * 00235 * line 9: TSTCHK, LOGICAL 00236 * Flag indicating whether or not to test the LAPACK routines. 00237 * 00238 * line 10: TSTDRV, LOGICAL 00239 * Flag indicating whether or not to test the driver routines. 00240 * 00241 * line 11: TSTERR, LOGICAL 00242 * Flag indicating whether or not to test the error exits for 00243 * the LAPACK routines and driver routines. 00244 * 00245 * line 12: NEWSD, INTEGER 00246 * A code indicating how to set the random number seed. 00247 * = 0: Set the seed to a default value before each run 00248 * = 1: Initialize the seed to a default value only before the 00249 * first run 00250 * = 2: Like 1, but use the seed values on the next line 00251 * 00252 * If line 12 was 2: 00253 * 00254 * line 13: INTEGER array, dimension (4) 00255 * Four integer values for the random number seed. 00256 * 00257 * lines 13-EOF: Lines specifying matrix types, as for NEP. 00258 * The valid 3-character path names are 'SEP' or 'ZST' for the 00259 * Hermitian eigenvalue routines and driver routines, and 00260 * 'ZSG' for the routines for the Hermitian generalized 00261 * eigenvalue problem. 00262 * 00263 *----------------------------------------------------------------------- 00264 * 00265 * SVD input file: 00266 * 00267 * line 2: NN, INTEGER 00268 * Number of values of M and N. 00269 * 00270 * line 3: MVAL, INTEGER array, dimension (NN) 00271 * The values for the matrix row dimension M. 00272 * 00273 * line 4: NVAL, INTEGER array, dimension (NN) 00274 * The values for the matrix column dimension N. 00275 * 00276 * line 5: NPARMS, INTEGER 00277 * Number of values of the parameter NB, NBMIN, NX, and NRHS. 00278 * 00279 * line 6: NBVAL, INTEGER array, dimension (NPARMS) 00280 * The values for the blocksize NB. 00281 * 00282 * line 7: NBMIN, INTEGER array, dimension (NPARMS) 00283 * The values for the minimum blocksize NBMIN. 00284 * 00285 * line 8: NXVAL, INTEGER array, dimension (NPARMS) 00286 * The values for the crossover point NX. 00287 * 00288 * line 9: NSVAL, INTEGER array, dimension (NPARMS) 00289 * The values for the number of right hand sides NRHS. 00290 * 00291 * line 10: THRESH 00292 * Threshold value for the test ratios. Information will be 00293 * printed about each test for which the test ratio is greater 00294 * than or equal to the threshold. 00295 * 00296 * line 11: TSTCHK, LOGICAL 00297 * Flag indicating whether or not to test the LAPACK routines. 00298 * 00299 * line 12: TSTDRV, LOGICAL 00300 * Flag indicating whether or not to test the driver routines. 00301 * 00302 * line 13: TSTERR, LOGICAL 00303 * Flag indicating whether or not to test the error exits for 00304 * the LAPACK routines and driver routines. 00305 * 00306 * line 14: NEWSD, INTEGER 00307 * A code indicating how to set the random number seed. 00308 * = 0: Set the seed to a default value before each run 00309 * = 1: Initialize the seed to a default value only before the 00310 * first run 00311 * = 2: Like 1, but use the seed values on the next line 00312 * 00313 * If line 14 was 2: 00314 * 00315 * line 15: INTEGER array, dimension (4) 00316 * Four integer values for the random number seed. 00317 * 00318 * lines 15-EOF: Lines specifying matrix types, as for NEP. 00319 * The 3-character path names are 'SVD' or 'ZBD' for both the 00320 * SVD routines and the SVD driver routines. 00321 * 00322 *----------------------------------------------------------------------- 00323 * 00324 * ZEV and ZES data files: 00325 * 00326 * line 1: 'ZEV' or 'ZES' in columns 1 to 3. 00327 * 00328 * line 2: NSIZES, INTEGER 00329 * Number of sizes of matrices to use. Should be at least 0 00330 * and at most 20. If NSIZES = 0, no testing is done 00331 * (although the remaining 3 lines are still read). 00332 * 00333 * line 3: NN, INTEGER array, dimension(NSIZES) 00334 * Dimensions of matrices to be tested. 00335 * 00336 * line 4: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00337 * These integer parameters determine how blocking is done 00338 * (see ILAENV for details) 00339 * NB : block size 00340 * NBMIN : minimum block size 00341 * NX : minimum dimension for blocking 00342 * NS : number of shifts in xHSEQR 00343 * NBCOL : minimum column dimension for blocking 00344 * 00345 * line 5: THRESH, REAL 00346 * The test threshold against which computed residuals are 00347 * compared. Should generally be in the range from 10. to 20. 00348 * If it is 0., all test case data will be printed. 00349 * 00350 * line 6: NEWSD, INTEGER 00351 * A code indicating how to set the random number seed. 00352 * = 0: Set the seed to a default value before each run 00353 * = 1: Initialize the seed to a default value only before the 00354 * first run 00355 * = 2: Like 1, but use the seed values on the next line 00356 * 00357 * If line 6 was 2: 00358 * 00359 * line 7: INTEGER array, dimension (4) 00360 * Four integer values for the random number seed. 00361 * 00362 * lines 8 and following: Lines specifying matrix types, as for NEP. 00363 * The 3-character path name is 'ZEV' to test CGEEV, or 00364 * 'ZES' to test CGEES. 00365 * 00366 *----------------------------------------------------------------------- 00367 * 00368 * The ZVX data has two parts. The first part is identical to ZEV, 00369 * and the second part consists of test matrices with precomputed 00370 * solutions. 00371 * 00372 * line 1: 'ZVX' in columns 1-3. 00373 * 00374 * line 2: NSIZES, INTEGER 00375 * If NSIZES = 0, no testing of randomly generated examples 00376 * is done, but any precomputed examples are tested. 00377 * 00378 * line 3: NN, INTEGER array, dimension(NSIZES) 00379 * 00380 * line 4: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00381 * 00382 * line 5: THRESH, REAL 00383 * 00384 * line 6: NEWSD, INTEGER 00385 * 00386 * If line 6 was 2: 00387 * 00388 * line 7: INTEGER array, dimension (4) 00389 * 00390 * lines 8 and following: The first line contains 'ZVX' in columns 1-3 00391 * followed by the number of matrix types, possibly with 00392 * a second line to specify certain matrix types. 00393 * If the number of matrix types = 0, no testing of randomly 00394 * generated examples is done, but any precomputed examples 00395 * are tested. 00396 * 00397 * remaining lines : Each matrix is stored on 1+N+N**2 lines, where N is 00398 * its dimension. The first line contains the dimension N and 00399 * ISRT (two integers). ISRT indicates whether the last N lines 00400 * are sorted by increasing real part of the eigenvalue 00401 * (ISRT=0) or by increasing imaginary part (ISRT=1). The next 00402 * N**2 lines contain the matrix rowwise, one entry per line. 00403 * The last N lines correspond to each eigenvalue. Each of 00404 * these last N lines contains 4 real values: the real part of 00405 * the eigenvalues, the imaginary part of the eigenvalue, the 00406 * reciprocal condition number of the eigenvalues, and the 00407 * reciprocal condition number of the vector eigenvector. The 00408 * end of data is indicated by dimension N=0. Even if no data 00409 * is to be tested, there must be at least one line containing 00410 * N=0. 00411 * 00412 *----------------------------------------------------------------------- 00413 * 00414 * The ZSX data is like ZVX. The first part is identical to ZEV, and the 00415 * second part consists of test matrices with precomputed solutions. 00416 * 00417 * line 1: 'ZSX' in columns 1-3. 00418 * 00419 * line 2: NSIZES, INTEGER 00420 * If NSIZES = 0, no testing of randomly generated examples 00421 * is done, but any precomputed examples are tested. 00422 * 00423 * line 3: NN, INTEGER array, dimension(NSIZES) 00424 * 00425 * line 4: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00426 * 00427 * line 5: THRESH, REAL 00428 * 00429 * line 6: NEWSD, INTEGER 00430 * 00431 * If line 6 was 2: 00432 * 00433 * line 7: INTEGER array, dimension (4) 00434 * 00435 * lines 8 and following: The first line contains 'ZSX' in columns 1-3 00436 * followed by the number of matrix types, possibly with 00437 * a second line to specify certain matrix types. 00438 * If the number of matrix types = 0, no testing of randomly 00439 * generated examples is done, but any precomputed examples 00440 * are tested. 00441 * 00442 * remaining lines : Each matrix is stored on 3+N**2 lines, where N is 00443 * its dimension. The first line contains the dimension N, the 00444 * dimension M of an invariant subspace, and ISRT. The second 00445 * line contains M integers, identifying the eigenvalues in the 00446 * invariant subspace (by their position in a list of 00447 * eigenvalues ordered by increasing real part (if ISRT=0) or 00448 * by increasing imaginary part (if ISRT=1)). The next N**2 00449 * lines contain the matrix rowwise. The last line contains the 00450 * reciprocal condition number for the average of the selected 00451 * eigenvalues, and the reciprocal condition number for the 00452 * corresponding right invariant subspace. The end of data in 00453 * indicated by a line containing N=0, M=0, and ISRT = 0. Even 00454 * if no data is to be tested, there must be at least one line 00455 * containing N=0, M=0 and ISRT=0. 00456 * 00457 *----------------------------------------------------------------------- 00458 * 00459 * ZGG input file: 00460 * 00461 * line 2: NN, INTEGER 00462 * Number of values of N. 00463 * 00464 * line 3: NVAL, INTEGER array, dimension (NN) 00465 * The values for the matrix dimension N. 00466 * 00467 * line 4: NPARMS, INTEGER 00468 * Number of values of the parameters NB, NBMIN, NBCOL, NS, and 00469 * MAXB. 00470 * 00471 * line 5: NBVAL, INTEGER array, dimension (NPARMS) 00472 * The values for the blocksize NB. 00473 * 00474 * line 6: NBMIN, INTEGER array, dimension (NPARMS) 00475 * The values for NBMIN, the minimum row dimension for blocks. 00476 * 00477 * line 7: NSVAL, INTEGER array, dimension (NPARMS) 00478 * The values for the number of shifts. 00479 * 00480 * line 8: MXBVAL, INTEGER array, dimension (NPARMS) 00481 * The values for MAXB, used in determining minimum blocksize. 00482 * 00483 * line 9: NBCOL, INTEGER array, dimension (NPARMS) 00484 * The values for NBCOL, the minimum column dimension for 00485 * blocks. 00486 * 00487 * line 10: THRESH 00488 * Threshold value for the test ratios. Information will be 00489 * printed about each test for which the test ratio is greater 00490 * than or equal to the threshold. 00491 * 00492 * line 11: TSTCHK, LOGICAL 00493 * Flag indicating whether or not to test the LAPACK routines. 00494 * 00495 * line 12: TSTDRV, LOGICAL 00496 * Flag indicating whether or not to test the driver routines. 00497 * 00498 * line 13: TSTERR, LOGICAL 00499 * Flag indicating whether or not to test the error exits for 00500 * the LAPACK routines and driver routines. 00501 * 00502 * line 14: NEWSD, INTEGER 00503 * A code indicating how to set the random number seed. 00504 * = 0: Set the seed to a default value before each run 00505 * = 1: Initialize the seed to a default value only before the 00506 * first run 00507 * = 2: Like 1, but use the seed values on the next line 00508 * 00509 * If line 14 was 2: 00510 * 00511 * line 15: INTEGER array, dimension (4) 00512 * Four integer values for the random number seed. 00513 * 00514 * lines 16-EOF: Lines specifying matrix types, as for NEP. 00515 * The 3-character path name is 'ZGG' for the generalized 00516 * eigenvalue problem routines and driver routines. 00517 * 00518 *----------------------------------------------------------------------- 00519 * 00520 * ZGS and ZGV input files: 00521 * 00522 * line 1: 'ZGS' or 'ZGV' in columns 1 to 3. 00523 * 00524 * line 2: NN, INTEGER 00525 * Number of values of N. 00526 * 00527 * line 3: NVAL, INTEGER array, dimension(NN) 00528 * Dimensions of matrices to be tested. 00529 * 00530 * line 4: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00531 * These integer parameters determine how blocking is done 00532 * (see ILAENV for details) 00533 * NB : block size 00534 * NBMIN : minimum block size 00535 * NX : minimum dimension for blocking 00536 * NS : number of shifts in xHGEQR 00537 * NBCOL : minimum column dimension for blocking 00538 * 00539 * line 5: THRESH, REAL 00540 * The test threshold against which computed residuals are 00541 * compared. Should generally be in the range from 10. to 20. 00542 * If it is 0., all test case data will be printed. 00543 * 00544 * line 6: TSTERR, LOGICAL 00545 * Flag indicating whether or not to test the error exits. 00546 * 00547 * line 7: NEWSD, INTEGER 00548 * A code indicating how to set the random number seed. 00549 * = 0: Set the seed to a default value before each run 00550 * = 1: Initialize the seed to a default value only before the 00551 * first run 00552 * = 2: Like 1, but use the seed values on the next line 00553 * 00554 * If line 17 was 2: 00555 * 00556 * line 7: INTEGER array, dimension (4) 00557 * Four integer values for the random number seed. 00558 * 00559 * lines 7-EOF: Lines specifying matrix types, as for NEP. 00560 * The 3-character path name is 'ZGS' for the generalized 00561 * eigenvalue problem routines and driver routines. 00562 * 00563 *----------------------------------------------------------------------- 00564 * 00565 * ZGX input file: 00566 * line 1: 'ZGX' in columns 1 to 3. 00567 * 00568 * line 2: N, INTEGER 00569 * Value of N. 00570 * 00571 * line 3: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00572 * These integer parameters determine how blocking is done 00573 * (see ILAENV for details) 00574 * NB : block size 00575 * NBMIN : minimum block size 00576 * NX : minimum dimension for blocking 00577 * NS : number of shifts in xHGEQR 00578 * NBCOL : minimum column dimension for blocking 00579 * 00580 * line 4: THRESH, REAL 00581 * The test threshold against which computed residuals are 00582 * compared. Should generally be in the range from 10. to 20. 00583 * Information will be printed about each test for which the 00584 * test ratio is greater than or equal to the threshold. 00585 * 00586 * line 5: TSTERR, LOGICAL 00587 * Flag indicating whether or not to test the error exits for 00588 * the LAPACK routines and driver routines. 00589 * 00590 * line 6: NEWSD, INTEGER 00591 * A code indicating how to set the random number seed. 00592 * = 0: Set the seed to a default value before each run 00593 * = 1: Initialize the seed to a default value only before the 00594 * first run 00595 * = 2: Like 1, but use the seed values on the next line 00596 * 00597 * If line 6 was 2: 00598 * 00599 * line 7: INTEGER array, dimension (4) 00600 * Four integer values for the random number seed. 00601 * 00602 * If line 2 was 0: 00603 * 00604 * line 7-EOF: Precomputed examples are tested. 00605 * 00606 * remaining lines : Each example is stored on 3+2*N*N lines, where N is 00607 * its dimension. The first line contains the dimension (a 00608 * single integer). The next line contains an integer k such 00609 * that only the last k eigenvalues will be selected and appear 00610 * in the leading diagonal blocks of $A$ and $B$. The next N*N 00611 * lines contain the matrix A, one element per line. The next N*N 00612 * lines contain the matrix B. The last line contains the 00613 * reciprocal of the eigenvalue cluster condition number and the 00614 * reciprocal of the deflating subspace (associated with the 00615 * selected eigencluster) condition number. The end of data is 00616 * indicated by dimension N=0. Even if no data is to be tested, 00617 * there must be at least one line containing N=0. 00618 * 00619 *----------------------------------------------------------------------- 00620 * 00621 * ZXV input files: 00622 * line 1: 'ZXV' in columns 1 to 3. 00623 * 00624 * line 2: N, INTEGER 00625 * Value of N. 00626 * 00627 * line 3: NB, NBMIN, NX, NS, NBCOL, INTEGERs 00628 * These integer parameters determine how blocking is done 00629 * (see ILAENV for details) 00630 * NB : block size 00631 * NBMIN : minimum block size 00632 * NX : minimum dimension for blocking 00633 * NS : number of shifts in xHGEQR 00634 * NBCOL : minimum column dimension for blocking 00635 * 00636 * line 4: THRESH, REAL 00637 * The test threshold against which computed residuals are 00638 * compared. Should generally be in the range from 10. to 20. 00639 * Information will be printed about each test for which the 00640 * test ratio is greater than or equal to the threshold. 00641 * 00642 * line 5: TSTERR, LOGICAL 00643 * Flag indicating whether or not to test the error exits for 00644 * the LAPACK routines and driver routines. 00645 * 00646 * line 6: NEWSD, INTEGER 00647 * A code indicating how to set the random number seed. 00648 * = 0: Set the seed to a default value before each run 00649 * = 1: Initialize the seed to a default value only before the 00650 * first run 00651 * = 2: Like 1, but use the seed values on the next line 00652 * 00653 * If line 6 was 2: 00654 * 00655 * line 7: INTEGER array, dimension (4) 00656 * Four integer values for the random number seed. 00657 * 00658 * If line 2 was 0: 00659 * 00660 * line 7-EOF: Precomputed examples are tested. 00661 * 00662 * remaining lines : Each example is stored on 3+2*N*N lines, where N is 00663 * its dimension. The first line contains the dimension (a 00664 * single integer). The next N*N lines contain the matrix A, one 00665 * element per line. The next N*N lines contain the matrix B. 00666 * The next line contains the reciprocals of the eigenvalue 00667 * condition numbers. The last line contains the reciprocals of 00668 * the eigenvector condition numbers. The end of data is 00669 * indicated by dimension N=0. Even if no data is to be tested, 00670 * there must be at least one line containing N=0. 00671 * 00672 *----------------------------------------------------------------------- 00673 * 00674 * ZHB input file: 00675 * 00676 * line 2: NN, INTEGER 00677 * Number of values of N. 00678 * 00679 * line 3: NVAL, INTEGER array, dimension (NN) 00680 * The values for the matrix dimension N. 00681 * 00682 * line 4: NK, INTEGER 00683 * Number of values of K. 00684 * 00685 * line 5: KVAL, INTEGER array, dimension (NK) 00686 * The values for the matrix dimension K. 00687 * 00688 * line 6: THRESH 00689 * Threshold value for the test ratios. Information will be 00690 * printed about each test for which the test ratio is greater 00691 * than or equal to the threshold. 00692 * 00693 * line 7: NEWSD, INTEGER 00694 * A code indicating how to set the random number seed. 00695 * = 0: Set the seed to a default value before each run 00696 * = 1: Initialize the seed to a default value only before the 00697 * first run 00698 * = 2: Like 1, but use the seed values on the next line 00699 * 00700 * If line 7 was 2: 00701 * 00702 * line 8: INTEGER array, dimension (4) 00703 * Four integer values for the random number seed. 00704 * 00705 * lines 8-EOF: Lines specifying matrix types, as for NEP. 00706 * The 3-character path name is 'ZHB'. 00707 * 00708 *----------------------------------------------------------------------- 00709 * 00710 * ZBB input file: 00711 * 00712 * line 2: NN, INTEGER 00713 * Number of values of M and N. 00714 * 00715 * line 3: MVAL, INTEGER array, dimension (NN) 00716 * The values for the matrix row dimension M. 00717 * 00718 * line 4: NVAL, INTEGER array, dimension (NN) 00719 * The values for the matrix column dimension N. 00720 * 00721 * line 4: NK, INTEGER 00722 * Number of values of K. 00723 * 00724 * line 5: KVAL, INTEGER array, dimension (NK) 00725 * The values for the matrix bandwidth K. 00726 * 00727 * line 6: NPARMS, INTEGER 00728 * Number of values of the parameter NRHS 00729 * 00730 * line 7: NSVAL, INTEGER array, dimension (NPARMS) 00731 * The values for the number of right hand sides NRHS. 00732 * 00733 * line 8: THRESH 00734 * Threshold value for the test ratios. Information will be 00735 * printed about each test for which the test ratio is greater 00736 * than or equal to the threshold. 00737 * 00738 * line 9: NEWSD, INTEGER 00739 * A code indicating how to set the random number seed. 00740 * = 0: Set the seed to a default value before each run 00741 * = 1: Initialize the seed to a default value only before the 00742 * first run 00743 * = 2: Like 1, but use the seed values on the next line 00744 * 00745 * If line 9 was 2: 00746 * 00747 * line 10: INTEGER array, dimension (4) 00748 * Four integer values for the random number seed. 00749 * 00750 * lines 10-EOF: Lines specifying matrix types, as for SVD. 00751 * The 3-character path name is 'ZBB'. 00752 * 00753 *----------------------------------------------------------------------- 00754 * 00755 * ZEC input file: 00756 * 00757 * line 2: THRESH, REAL 00758 * Threshold value for the test ratios. Information will be 00759 * printed about each test for which the test ratio is greater 00760 * than or equal to the threshold. 00761 * 00762 * lines 3-EOF: 00763 * 00764 * Input for testing the eigencondition routines consists of a set of 00765 * specially constructed test cases and their solutions. The data 00766 * format is not intended to be modified by the user. 00767 * 00768 *----------------------------------------------------------------------- 00769 * 00770 * ZBL and ZBK input files: 00771 * 00772 * line 1: 'ZBL' in columns 1-3 to test CGEBAL, or 'ZBK' in 00773 * columns 1-3 to test CGEBAK. 00774 * 00775 * The remaining lines consist of specially constructed test cases. 00776 * 00777 *----------------------------------------------------------------------- 00778 * 00779 * ZGL and ZGK input files: 00780 * 00781 * line 1: 'ZGL' in columns 1-3 to test ZGGBAL, or 'ZGK' in 00782 * columns 1-3 to test ZGGBAK. 00783 * 00784 * The remaining lines consist of specially constructed test cases. 00785 * 00786 *----------------------------------------------------------------------- 00787 * 00788 * GLM data file: 00789 * 00790 * line 1: 'GLM' in columns 1 to 3. 00791 * 00792 * line 2: NN, INTEGER 00793 * Number of values of M, P, and N. 00794 * 00795 * line 3: MVAL, INTEGER array, dimension(NN) 00796 * Values of M (row dimension). 00797 * 00798 * line 4: PVAL, INTEGER array, dimension(NN) 00799 * Values of P (row dimension). 00800 * 00801 * line 5: NVAL, INTEGER array, dimension(NN) 00802 * Values of N (column dimension), note M <= N <= M+P. 00803 * 00804 * line 6: THRESH, REAL 00805 * Threshold value for the test ratios. Information will be 00806 * printed about each test for which the test ratio is greater 00807 * than or equal to the threshold. 00808 * 00809 * line 7: TSTERR, LOGICAL 00810 * Flag indicating whether or not to test the error exits for 00811 * the LAPACK routines and driver routines. 00812 * 00813 * line 8: NEWSD, INTEGER 00814 * A code indicating how to set the random number seed. 00815 * = 0: Set the seed to a default value before each run 00816 * = 1: Initialize the seed to a default value only before the 00817 * first run 00818 * = 2: Like 1, but use the seed values on the next line 00819 * 00820 * If line 8 was 2: 00821 * 00822 * line 9: INTEGER array, dimension (4) 00823 * Four integer values for the random number seed. 00824 * 00825 * lines 9-EOF: Lines specifying matrix types, as for NEP. 00826 * The 3-character path name is 'GLM' for the generalized 00827 * linear regression model routines. 00828 * 00829 *----------------------------------------------------------------------- 00830 * 00831 * GQR data file: 00832 * 00833 * line 1: 'GQR' in columns 1 to 3. 00834 * 00835 * line 2: NN, INTEGER 00836 * Number of values of M, P, and N. 00837 * 00838 * line 3: MVAL, INTEGER array, dimension(NN) 00839 * Values of M. 00840 * 00841 * line 4: PVAL, INTEGER array, dimension(NN) 00842 * Values of P. 00843 * 00844 * line 5: NVAL, INTEGER array, dimension(NN) 00845 * Values of N. 00846 * 00847 * line 6: THRESH, REAL 00848 * Threshold value for the test ratios. Information will be 00849 * printed about each test for which the test ratio is greater 00850 * than or equal to the threshold. 00851 * 00852 * line 7: TSTERR, LOGICAL 00853 * Flag indicating whether or not to test the error exits for 00854 * the LAPACK routines and driver routines. 00855 * 00856 * line 8: NEWSD, INTEGER 00857 * A code indicating how to set the random number seed. 00858 * = 0: Set the seed to a default value before each run 00859 * = 1: Initialize the seed to a default value only before the 00860 * first run 00861 * = 2: Like 1, but use the seed values on the next line 00862 * 00863 * If line 8 was 2: 00864 * 00865 * line 9: INTEGER array, dimension (4) 00866 * Four integer values for the random number seed. 00867 * 00868 * lines 9-EOF: Lines specifying matrix types, as for NEP. 00869 * The 3-character path name is 'GQR' for the generalized 00870 * QR and RQ routines. 00871 * 00872 *----------------------------------------------------------------------- 00873 * 00874 * GSV data file: 00875 * 00876 * line 1: 'GSV' in columns 1 to 3. 00877 * 00878 * line 2: NN, INTEGER 00879 * Number of values of M, P, and N. 00880 * 00881 * line 3: MVAL, INTEGER array, dimension(NN) 00882 * Values of M (row dimension). 00883 * 00884 * line 4: PVAL, INTEGER array, dimension(NN) 00885 * Values of P (row dimension). 00886 * 00887 * line 5: NVAL, INTEGER array, dimension(NN) 00888 * Values of N (column dimension). 00889 * 00890 * line 6: THRESH, REAL 00891 * Threshold value for the test ratios. Information will be 00892 * printed about each test for which the test ratio is greater 00893 * than or equal to the threshold. 00894 * 00895 * line 7: TSTERR, LOGICAL 00896 * Flag indicating whether or not to test the error exits for 00897 * the LAPACK routines and driver routines. 00898 * 00899 * line 8: NEWSD, INTEGER 00900 * A code indicating how to set the random number seed. 00901 * = 0: Set the seed to a default value before each run 00902 * = 1: Initialize the seed to a default value only before the 00903 * first run 00904 * = 2: Like 1, but use the seed values on the next line 00905 * 00906 * If line 8 was 2: 00907 * 00908 * line 9: INTEGER array, dimension (4) 00909 * Four integer values for the random number seed. 00910 * 00911 * lines 9-EOF: Lines specifying matrix types, as for NEP. 00912 * The 3-character path name is 'GSV' for the generalized 00913 * SVD routines. 00914 * 00915 *----------------------------------------------------------------------- 00916 * 00917 * CSD data file: 00918 * 00919 * line 1: 'CSD' in columns 1 to 3. 00920 * 00921 * line 2: NM, INTEGER 00922 * Number of values of M, P, and N. 00923 * 00924 * line 3: MVAL, INTEGER array, dimension(NM) 00925 * Values of M (row and column dimension of orthogonal matrix). 00926 * 00927 * line 4: PVAL, INTEGER array, dimension(NM) 00928 * Values of P (row dimension of top-left block). 00929 * 00930 * line 5: NVAL, INTEGER array, dimension(NM) 00931 * Values of N (column dimension of top-left block). 00932 * 00933 * line 6: THRESH, REAL 00934 * Threshold value for the test ratios. Information will be 00935 * printed about each test for which the test ratio is greater 00936 * than or equal to the threshold. 00937 * 00938 * line 7: TSTERR, LOGICAL 00939 * Flag indicating whether or not to test the error exits for 00940 * the LAPACK routines and driver routines. 00941 * 00942 * line 8: NEWSD, INTEGER 00943 * A code indicating how to set the random number seed. 00944 * = 0: Set the seed to a default value before each run 00945 * = 1: Initialize the seed to a default value only before the 00946 * first run 00947 * = 2: Like 1, but use the seed values on the next line 00948 * 00949 * If line 8 was 2: 00950 * 00951 * line 9: INTEGER array, dimension (4) 00952 * Four integer values for the random number seed. 00953 * 00954 * lines 9-EOF: Lines specifying matrix types, as for NEP. 00955 * The 3-character path name is 'CSD' for the CSD routine. 00956 * 00957 *----------------------------------------------------------------------- 00958 * 00959 * LSE data file: 00960 * 00961 * line 1: 'LSE' in columns 1 to 3. 00962 * 00963 * line 2: NN, INTEGER 00964 * Number of values of M, P, and N. 00965 * 00966 * line 3: MVAL, INTEGER array, dimension(NN) 00967 * Values of M. 00968 * 00969 * line 4: PVAL, INTEGER array, dimension(NN) 00970 * Values of P. 00971 * 00972 * line 5: NVAL, INTEGER array, dimension(NN) 00973 * Values of N, note P <= N <= P+M. 00974 * 00975 * line 6: THRESH, REAL 00976 * Threshold value for the test ratios. Information will be 00977 * printed about each test for which the test ratio is greater 00978 * than or equal to the threshold. 00979 * 00980 * line 7: TSTERR, LOGICAL 00981 * Flag indicating whether or not to test the error exits for 00982 * the LAPACK routines and driver routines. 00983 * 00984 * line 8: NEWSD, INTEGER 00985 * A code indicating how to set the random number seed. 00986 * = 0: Set the seed to a default value before each run 00987 * = 1: Initialize the seed to a default value only before the 00988 * first run 00989 * = 2: Like 1, but use the seed values on the next line 00990 * 00991 * If line 8 was 2: 00992 * 00993 * line 9: INTEGER array, dimension (4) 00994 * Four integer values for the random number seed. 00995 * 00996 * lines 9-EOF: Lines specifying matrix types, as for NEP. 00997 * The 3-character path name is 'GSV' for the generalized 00998 * SVD routines. 00999 * 01000 *----------------------------------------------------------------------- 01001 * 01002 * NMAX is currently set to 132 and must be at least 12 for some of the 01003 * precomputed examples, and LWORK = NMAX*(5*NMAX+20) in the parameter 01004 * statements below. For SVD, we assume NRHS may be as big as N. The 01005 * parameter NEED is set to 14 to allow for 14 N-by-N matrices for ZGG. 01006 * 01007 * ===================================================================== 01008 * 01009 * .. Parameters .. 01010 INTEGER NMAX 01011 PARAMETER ( NMAX = 132 ) 01012 INTEGER NCMAX 01013 PARAMETER ( NCMAX = 20 ) 01014 INTEGER NEED 01015 PARAMETER ( NEED = 14 ) 01016 INTEGER LWORK 01017 PARAMETER ( LWORK = NMAX*( 5*NMAX+20 ) ) 01018 INTEGER LIWORK 01019 PARAMETER ( LIWORK = NMAX*( NMAX+20 ) ) 01020 INTEGER MAXIN 01021 PARAMETER ( MAXIN = 20 ) 01022 INTEGER MAXT 01023 PARAMETER ( MAXT = 30 ) 01024 INTEGER NIN, NOUT 01025 PARAMETER ( NIN = 5, NOUT = 6 ) 01026 * .. 01027 * .. Local Scalars .. 01028 LOGICAL ZBK, ZBL, ZES, ZEV, ZGK, ZGL, ZGS, ZGV, ZGX, 01029 $ ZSX, ZVX, ZXV, CSD, FATAL, GLM, GQR, GSV, LSE, 01030 $ NEP, SEP, SVD, TSTCHK, TSTDIF, TSTDRV, TSTERR, 01031 $ ZBB, ZGG, ZHB 01032 CHARACTER C1 01033 CHARACTER*3 C3, PATH 01034 CHARACTER*32 VNAME 01035 CHARACTER*10 INTSTR 01036 CHARACTER*80 LINE 01037 INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD, 01038 $ NK, NN, NPARMS, NRHS, NTYPES, 01039 $ VERS_MAJOR, VERS_MINOR, VERS_PATCH 01040 DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN 01041 * .. 01042 * .. Local Arrays .. 01043 LOGICAL DOTYPE( MAXT ), LOGWRK( NMAX ) 01044 INTEGER IOLDSD( 4 ), ISEED( 4 ), IWORK( LIWORK ), 01045 $ KVAL( MAXIN ), MVAL( MAXIN ), MXBVAL( MAXIN ), 01046 $ NBCOL( MAXIN ), NBMIN( MAXIN ), NBVAL( MAXIN ), 01047 $ NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ), 01048 $ PVAL( MAXIN ) 01049 INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ), 01050 $ ISHFTS( MAXIN ), IACC22( MAXIN ) 01051 DOUBLE PRECISION ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ), 01052 $ RESULT( 500 ), RWORK( LWORK ), S( NMAX*NMAX ) 01053 COMPLEX*16 A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ), 01054 $ C( NCMAX*NCMAX, NCMAX*NCMAX ), DC( NMAX, 6 ), 01055 $ TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ), 01056 $ X( 5*NMAX ) 01057 * .. 01058 * .. External Functions .. 01059 LOGICAL LSAMEN 01060 DOUBLE PRECISION DLAMCH, DSECND 01061 EXTERNAL LSAMEN, DLAMCH, DSECND 01062 * .. 01063 * .. External Subroutines .. 01064 EXTERNAL ALAREQ, XLAENV, ZCHKBB, ZCHKBD, ZCHKBK, ZCHKBL, 01065 $ ZCHKEC, ZCHKGG, ZCHKGK, ZCHKGL, ZCHKHB, ZCHKHS, 01066 $ ZCHKST, ZCKCSD, ZCKGLM, ZCKGQR, ZCKGSV, ZCKLSE, 01067 $ ZDRGES, ZDRGEV, ZDRGSX, ZDRGVX, ZDRVBD, ZDRVES, 01068 $ ZDRVEV, ZDRVGG, ZDRVSG, ZDRVST, ZDRVSX, ZDRVVX, 01069 $ ZERRBD, ZERRED, ZERRGG, ZERRHS, ZERRST, ILAVER 01070 * .. 01071 * .. Intrinsic Functions .. 01072 INTRINSIC LEN, MIN 01073 * .. 01074 * .. Scalars in Common .. 01075 LOGICAL LERR, OK 01076 CHARACTER*32 SRNAMT 01077 INTEGER INFOT, MAXB, NPROC, NSHIFT, NUNIT, SELDIM, 01078 $ SELOPT 01079 * .. 01080 * .. Arrays in Common .. 01081 LOGICAL SELVAL( 20 ) 01082 INTEGER IPARMS( 100 ) 01083 DOUBLE PRECISION SELWI( 20 ), SELWR( 20 ) 01084 * .. 01085 * .. Common blocks .. 01086 COMMON / CENVIR / NPROC, NSHIFT, MAXB 01087 COMMON / INFOC / INFOT, NUNIT, OK, LERR 01088 COMMON / SRNAMC / SRNAMT 01089 COMMON / SSLCT / SELOPT, SELDIM, SELVAL, SELWR, SELWI 01090 COMMON / CLAENV / IPARMS 01091 * .. 01092 * .. Data statements .. 01093 DATA INTSTR / '0123456789' / 01094 DATA IOLDSD / 0, 0, 0, 1 / 01095 * .. 01096 * .. Executable Statements .. 01097 * 01098 S1 = DSECND( ) 01099 FATAL = .FALSE. 01100 NUNIT = NOUT 01101 * 01102 * Return to here to read multiple sets of data 01103 * 01104 10 CONTINUE 01105 * 01106 * Read the first line and set the 3-character test path 01107 * 01108 READ( NIN, FMT = '(A80)', END = 380 )LINE 01109 PATH = LINE( 1: 3 ) 01110 NEP = LSAMEN( 3, PATH, 'NEP' ) .OR. LSAMEN( 3, PATH, 'ZHS' ) 01111 SEP = LSAMEN( 3, PATH, 'SEP' ) .OR. LSAMEN( 3, PATH, 'ZST' ) .OR. 01112 $ LSAMEN( 3, PATH, 'ZSG' ) 01113 SVD = LSAMEN( 3, PATH, 'SVD' ) .OR. LSAMEN( 3, PATH, 'ZBD' ) 01114 ZEV = LSAMEN( 3, PATH, 'ZEV' ) 01115 ZES = LSAMEN( 3, PATH, 'ZES' ) 01116 ZVX = LSAMEN( 3, PATH, 'ZVX' ) 01117 ZSX = LSAMEN( 3, PATH, 'ZSX' ) 01118 ZGG = LSAMEN( 3, PATH, 'ZGG' ) 01119 ZGS = LSAMEN( 3, PATH, 'ZGS' ) 01120 ZGX = LSAMEN( 3, PATH, 'ZGX' ) 01121 ZGV = LSAMEN( 3, PATH, 'ZGV' ) 01122 ZXV = LSAMEN( 3, PATH, 'ZXV' ) 01123 ZHB = LSAMEN( 3, PATH, 'ZHB' ) 01124 ZBB = LSAMEN( 3, PATH, 'ZBB' ) 01125 GLM = LSAMEN( 3, PATH, 'GLM' ) 01126 GQR = LSAMEN( 3, PATH, 'GQR' ) .OR. LSAMEN( 3, PATH, 'GRQ' ) 01127 GSV = LSAMEN( 3, PATH, 'GSV' ) 01128 CSD = LSAMEN( 3, PATH, 'CSD' ) 01129 LSE = LSAMEN( 3, PATH, 'LSE' ) 01130 ZBL = LSAMEN( 3, PATH, 'ZBL' ) 01131 ZBK = LSAMEN( 3, PATH, 'ZBK' ) 01132 ZGL = LSAMEN( 3, PATH, 'ZGL' ) 01133 ZGK = LSAMEN( 3, PATH, 'ZGK' ) 01134 * 01135 * Report values of parameters. 01136 * 01137 IF( PATH.EQ.' ' ) THEN 01138 GO TO 10 01139 ELSE IF( NEP ) THEN 01140 WRITE( NOUT, FMT = 9987 ) 01141 ELSE IF( SEP ) THEN 01142 WRITE( NOUT, FMT = 9986 ) 01143 ELSE IF( SVD ) THEN 01144 WRITE( NOUT, FMT = 9985 ) 01145 ELSE IF( ZEV ) THEN 01146 WRITE( NOUT, FMT = 9979 ) 01147 ELSE IF( ZES ) THEN 01148 WRITE( NOUT, FMT = 9978 ) 01149 ELSE IF( ZVX ) THEN 01150 WRITE( NOUT, FMT = 9977 ) 01151 ELSE IF( ZSX ) THEN 01152 WRITE( NOUT, FMT = 9976 ) 01153 ELSE IF( ZGG ) THEN 01154 WRITE( NOUT, FMT = 9975 ) 01155 ELSE IF( ZGS ) THEN 01156 WRITE( NOUT, FMT = 9964 ) 01157 ELSE IF( ZGX ) THEN 01158 WRITE( NOUT, FMT = 9965 ) 01159 ELSE IF( ZGV ) THEN 01160 WRITE( NOUT, FMT = 9963 ) 01161 ELSE IF( ZXV ) THEN 01162 WRITE( NOUT, FMT = 9962 ) 01163 ELSE IF( ZHB ) THEN 01164 WRITE( NOUT, FMT = 9974 ) 01165 ELSE IF( ZBB ) THEN 01166 WRITE( NOUT, FMT = 9967 ) 01167 ELSE IF( GLM ) THEN 01168 WRITE( NOUT, FMT = 9971 ) 01169 ELSE IF( GQR ) THEN 01170 WRITE( NOUT, FMT = 9970 ) 01171 ELSE IF( GSV ) THEN 01172 WRITE( NOUT, FMT = 9969 ) 01173 ELSE IF( CSD ) THEN 01174 WRITE( NOUT, FMT = 9960 ) 01175 ELSE IF( LSE ) THEN 01176 WRITE( NOUT, FMT = 9968 ) 01177 ELSE IF( ZBL ) THEN 01178 * 01179 * ZGEBAL: Balancing 01180 * 01181 CALL ZCHKBL( NIN, NOUT ) 01182 GO TO 380 01183 ELSE IF( ZBK ) THEN 01184 * 01185 * ZGEBAK: Back transformation 01186 * 01187 CALL ZCHKBK( NIN, NOUT ) 01188 GO TO 380 01189 ELSE IF( ZGL ) THEN 01190 * 01191 * ZGGBAL: Balancing 01192 * 01193 CALL ZCHKGL( NIN, NOUT ) 01194 GO TO 380 01195 ELSE IF( ZGK ) THEN 01196 * 01197 * ZGGBAK: Back transformation 01198 * 01199 CALL ZCHKGK( NIN, NOUT ) 01200 GO TO 380 01201 ELSE IF( LSAMEN( 3, PATH, 'ZEC' ) ) THEN 01202 * 01203 * ZEC: Eigencondition estimation 01204 * 01205 READ( NIN, FMT = * )THRESH 01206 CALL XLAENV( 1, 1 ) 01207 TSTERR = .TRUE. 01208 CALL ZCHKEC( THRESH, TSTERR, NIN, NOUT ) 01209 GO TO 380 01210 ELSE 01211 WRITE( NOUT, FMT = 9992 )PATH 01212 GO TO 380 01213 END IF 01214 CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH ) 01215 WRITE( NOUT, FMT = 9972 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH 01216 WRITE( NOUT, FMT = 9984 ) 01217 * 01218 * Read the number of values of M, P, and N. 01219 * 01220 READ( NIN, FMT = * )NN 01221 IF( NN.LT.0 ) THEN 01222 WRITE( NOUT, FMT = 9989 )' NN ', NN, 1 01223 NN = 0 01224 FATAL = .TRUE. 01225 ELSE IF( NN.GT.MAXIN ) THEN 01226 WRITE( NOUT, FMT = 9988 )' NN ', NN, MAXIN 01227 NN = 0 01228 FATAL = .TRUE. 01229 END IF 01230 * 01231 * Read the values of M 01232 * 01233 IF( .NOT.( ZGX .OR. ZXV ) ) THEN 01234 READ( NIN, FMT = * )( MVAL( I ), I = 1, NN ) 01235 IF( SVD ) THEN 01236 VNAME = ' M ' 01237 ELSE 01238 VNAME = ' N ' 01239 END IF 01240 DO 20 I = 1, NN 01241 IF( MVAL( I ).LT.0 ) THEN 01242 WRITE( NOUT, FMT = 9989 )VNAME, MVAL( I ), 0 01243 FATAL = .TRUE. 01244 ELSE IF( MVAL( I ).GT.NMAX ) THEN 01245 WRITE( NOUT, FMT = 9988 )VNAME, MVAL( I ), NMAX 01246 FATAL = .TRUE. 01247 END IF 01248 20 CONTINUE 01249 WRITE( NOUT, FMT = 9983 )'M: ', ( MVAL( I ), I = 1, NN ) 01250 END IF 01251 * 01252 * Read the values of P 01253 * 01254 IF( GLM .OR. GQR .OR. GSV .OR. CSD .OR. LSE ) THEN 01255 READ( NIN, FMT = * )( PVAL( I ), I = 1, NN ) 01256 DO 30 I = 1, NN 01257 IF( PVAL( I ).LT.0 ) THEN 01258 WRITE( NOUT, FMT = 9989 )' P ', PVAL( I ), 0 01259 FATAL = .TRUE. 01260 ELSE IF( PVAL( I ).GT.NMAX ) THEN 01261 WRITE( NOUT, FMT = 9988 )' P ', PVAL( I ), NMAX 01262 FATAL = .TRUE. 01263 END IF 01264 30 CONTINUE 01265 WRITE( NOUT, FMT = 9983 )'P: ', ( PVAL( I ), I = 1, NN ) 01266 END IF 01267 * 01268 * Read the values of N 01269 * 01270 IF( SVD .OR. ZBB .OR. GLM .OR. GQR .OR. GSV .OR. CSD .OR. 01271 $ LSE ) THEN 01272 READ( NIN, FMT = * )( NVAL( I ), I = 1, NN ) 01273 DO 40 I = 1, NN 01274 IF( NVAL( I ).LT.0 ) THEN 01275 WRITE( NOUT, FMT = 9989 )' N ', NVAL( I ), 0 01276 FATAL = .TRUE. 01277 ELSE IF( NVAL( I ).GT.NMAX ) THEN 01278 WRITE( NOUT, FMT = 9988 )' N ', NVAL( I ), NMAX 01279 FATAL = .TRUE. 01280 END IF 01281 40 CONTINUE 01282 ELSE 01283 DO 50 I = 1, NN 01284 NVAL( I ) = MVAL( I ) 01285 50 CONTINUE 01286 END IF 01287 IF( .NOT.( ZGX .OR. ZXV ) ) THEN 01288 WRITE( NOUT, FMT = 9983 )'N: ', ( NVAL( I ), I = 1, NN ) 01289 ELSE 01290 WRITE( NOUT, FMT = 9983 )'N: ', NN 01291 END IF 01292 * 01293 * Read the number of values of K, followed by the values of K 01294 * 01295 IF( ZHB .OR. ZBB ) THEN 01296 READ( NIN, FMT = * )NK 01297 READ( NIN, FMT = * )( KVAL( I ), I = 1, NK ) 01298 DO 60 I = 1, NK 01299 IF( KVAL( I ).LT.0 ) THEN 01300 WRITE( NOUT, FMT = 9989 )' K ', KVAL( I ), 0 01301 FATAL = .TRUE. 01302 ELSE IF( KVAL( I ).GT.NMAX ) THEN 01303 WRITE( NOUT, FMT = 9988 )' K ', KVAL( I ), NMAX 01304 FATAL = .TRUE. 01305 END IF 01306 60 CONTINUE 01307 WRITE( NOUT, FMT = 9983 )'K: ', ( KVAL( I ), I = 1, NK ) 01308 END IF 01309 * 01310 IF( ZEV .OR. ZES .OR. ZVX .OR. ZSX ) THEN 01311 * 01312 * For the nonsymmetric QR driver routines, only one set of 01313 * parameters is allowed. 01314 * 01315 READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ), 01316 $ INMIN( 1 ), INWIN( 1 ), INIBL(1), ISHFTS(1), IACC22(1) 01317 IF( NBVAL( 1 ).LT.1 ) THEN 01318 WRITE( NOUT, FMT = 9989 )' NB ', NBVAL( 1 ), 1 01319 FATAL = .TRUE. 01320 ELSE IF( NBMIN( 1 ).LT.1 ) THEN 01321 WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1 01322 FATAL = .TRUE. 01323 ELSE IF( NXVAL( 1 ).LT.1 ) THEN 01324 WRITE( NOUT, FMT = 9989 )' NX ', NXVAL( 1 ), 1 01325 FATAL = .TRUE. 01326 ELSE IF( INMIN( 1 ).LT.1 ) THEN 01327 WRITE( NOUT, FMT = 9989 )' INMIN ', INMIN( 1 ), 1 01328 FATAL = .TRUE. 01329 ELSE IF( INWIN( 1 ).LT.1 ) THEN 01330 WRITE( NOUT, FMT = 9989 )' INWIN ', INWIN( 1 ), 1 01331 FATAL = .TRUE. 01332 ELSE IF( INIBL( 1 ).LT.1 ) THEN 01333 WRITE( NOUT, FMT = 9989 )' INIBL ', INIBL( 1 ), 1 01334 FATAL = .TRUE. 01335 ELSE IF( ISHFTS( 1 ).LT.1 ) THEN 01336 WRITE( NOUT, FMT = 9989 )' ISHFTS ', ISHFTS( 1 ), 1 01337 FATAL = .TRUE. 01338 ELSE IF( IACC22( 1 ).LT.0 ) THEN 01339 WRITE( NOUT, FMT = 9989 )' IACC22 ', IACC22( 1 ), 0 01340 FATAL = .TRUE. 01341 END IF 01342 CALL XLAENV( 1, NBVAL( 1 ) ) 01343 CALL XLAENV( 2, NBMIN( 1 ) ) 01344 CALL XLAENV( 3, NXVAL( 1 ) ) 01345 CALL XLAENV(12, MAX( 11, INMIN( 1 ) ) ) 01346 CALL XLAENV(13, INWIN( 1 ) ) 01347 CALL XLAENV(14, INIBL( 1 ) ) 01348 CALL XLAENV(15, ISHFTS( 1 ) ) 01349 CALL XLAENV(16, IACC22( 1 ) ) 01350 WRITE( NOUT, FMT = 9983 )'NB: ', NBVAL( 1 ) 01351 WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 ) 01352 WRITE( NOUT, FMT = 9983 )'NX: ', NXVAL( 1 ) 01353 WRITE( NOUT, FMT = 9983 )'INMIN: ', INMIN( 1 ) 01354 WRITE( NOUT, FMT = 9983 )'INWIN: ', INWIN( 1 ) 01355 WRITE( NOUT, FMT = 9983 )'INIBL: ', INIBL( 1 ) 01356 WRITE( NOUT, FMT = 9983 )'ISHFTS: ', ISHFTS( 1 ) 01357 WRITE( NOUT, FMT = 9983 )'IACC22: ', IACC22( 1 ) 01358 * 01359 ELSE IF( ZGS .OR. ZGX .OR. ZGV .OR. ZXV ) THEN 01360 * 01361 * For the nonsymmetric generalized driver routines, only one set of 01362 * parameters is allowed. 01363 * 01364 READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ), 01365 $ NSVAL( 1 ), MXBVAL( 1 ) 01366 IF( NBVAL( 1 ).LT.1 ) THEN 01367 WRITE( NOUT, FMT = 9989 )' NB ', NBVAL( 1 ), 1 01368 FATAL = .TRUE. 01369 ELSE IF( NBMIN( 1 ).LT.1 ) THEN 01370 WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1 01371 FATAL = .TRUE. 01372 ELSE IF( NXVAL( 1 ).LT.1 ) THEN 01373 WRITE( NOUT, FMT = 9989 )' NX ', NXVAL( 1 ), 1 01374 FATAL = .TRUE. 01375 ELSE IF( NSVAL( 1 ).LT.2 ) THEN 01376 WRITE( NOUT, FMT = 9989 )' NS ', NSVAL( 1 ), 2 01377 FATAL = .TRUE. 01378 ELSE IF( MXBVAL( 1 ).LT.1 ) THEN 01379 WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( 1 ), 1 01380 FATAL = .TRUE. 01381 END IF 01382 CALL XLAENV( 1, NBVAL( 1 ) ) 01383 CALL XLAENV( 2, NBMIN( 1 ) ) 01384 CALL XLAENV( 3, NXVAL( 1 ) ) 01385 CALL XLAENV( 4, NSVAL( 1 ) ) 01386 CALL XLAENV( 8, MXBVAL( 1 ) ) 01387 WRITE( NOUT, FMT = 9983 )'NB: ', NBVAL( 1 ) 01388 WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 ) 01389 WRITE( NOUT, FMT = 9983 )'NX: ', NXVAL( 1 ) 01390 WRITE( NOUT, FMT = 9983 )'NS: ', NSVAL( 1 ) 01391 WRITE( NOUT, FMT = 9983 )'MAXB: ', MXBVAL( 1 ) 01392 ELSE IF( .NOT.ZHB .AND. .NOT.GLM .AND. .NOT.GQR .AND. .NOT. 01393 $ GSV .AND. .NOT.CSD .AND. .NOT.LSE ) THEN 01394 * 01395 * For the other paths, the number of parameters can be varied 01396 * from the input file. Read the number of parameter values. 01397 * 01398 READ( NIN, FMT = * )NPARMS 01399 IF( NPARMS.LT.1 ) THEN 01400 WRITE( NOUT, FMT = 9989 )'NPARMS', NPARMS, 1 01401 NPARMS = 0 01402 FATAL = .TRUE. 01403 ELSE IF( NPARMS.GT.MAXIN ) THEN 01404 WRITE( NOUT, FMT = 9988 )'NPARMS', NPARMS, MAXIN 01405 NPARMS = 0 01406 FATAL = .TRUE. 01407 END IF 01408 * 01409 * Read the values of NB 01410 * 01411 IF( .NOT.ZBB ) THEN 01412 READ( NIN, FMT = * )( NBVAL( I ), I = 1, NPARMS ) 01413 DO 70 I = 1, NPARMS 01414 IF( NBVAL( I ).LT.0 ) THEN 01415 WRITE( NOUT, FMT = 9989 )' NB ', NBVAL( I ), 0 01416 FATAL = .TRUE. 01417 ELSE IF( NBVAL( I ).GT.NMAX ) THEN 01418 WRITE( NOUT, FMT = 9988 )' NB ', NBVAL( I ), NMAX 01419 FATAL = .TRUE. 01420 END IF 01421 70 CONTINUE 01422 WRITE( NOUT, FMT = 9983 )'NB: ', 01423 $ ( NBVAL( I ), I = 1, NPARMS ) 01424 END IF 01425 * 01426 * Read the values of NBMIN 01427 * 01428 IF( NEP .OR. SEP .OR. SVD .OR. ZGG ) THEN 01429 READ( NIN, FMT = * )( NBMIN( I ), I = 1, NPARMS ) 01430 DO 80 I = 1, NPARMS 01431 IF( NBMIN( I ).LT.0 ) THEN 01432 WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( I ), 0 01433 FATAL = .TRUE. 01434 ELSE IF( NBMIN( I ).GT.NMAX ) THEN 01435 WRITE( NOUT, FMT = 9988 )'NBMIN ', NBMIN( I ), NMAX 01436 FATAL = .TRUE. 01437 END IF 01438 80 CONTINUE 01439 WRITE( NOUT, FMT = 9983 )'NBMIN:', 01440 $ ( NBMIN( I ), I = 1, NPARMS ) 01441 ELSE 01442 DO 90 I = 1, NPARMS 01443 NBMIN( I ) = 1 01444 90 CONTINUE 01445 END IF 01446 * 01447 * Read the values of NX 01448 * 01449 IF( NEP .OR. SEP .OR. SVD ) THEN 01450 READ( NIN, FMT = * )( NXVAL( I ), I = 1, NPARMS ) 01451 DO 100 I = 1, NPARMS 01452 IF( NXVAL( I ).LT.0 ) THEN 01453 WRITE( NOUT, FMT = 9989 )' NX ', NXVAL( I ), 0 01454 FATAL = .TRUE. 01455 ELSE IF( NXVAL( I ).GT.NMAX ) THEN 01456 WRITE( NOUT, FMT = 9988 )' NX ', NXVAL( I ), NMAX 01457 FATAL = .TRUE. 01458 END IF 01459 100 CONTINUE 01460 WRITE( NOUT, FMT = 9983 )'NX: ', 01461 $ ( NXVAL( I ), I = 1, NPARMS ) 01462 ELSE 01463 DO 110 I = 1, NPARMS 01464 NXVAL( I ) = 1 01465 110 CONTINUE 01466 END IF 01467 * 01468 * Read the values of NSHIFT (if ZGG) or NRHS (if SVD 01469 * or ZBB). 01470 * 01471 IF( SVD .OR. ZBB .OR. ZGG ) THEN 01472 READ( NIN, FMT = * )( NSVAL( I ), I = 1, NPARMS ) 01473 DO 120 I = 1, NPARMS 01474 IF( NSVAL( I ).LT.0 ) THEN 01475 WRITE( NOUT, FMT = 9989 )' NS ', NSVAL( I ), 0 01476 FATAL = .TRUE. 01477 ELSE IF( NSVAL( I ).GT.NMAX ) THEN 01478 WRITE( NOUT, FMT = 9988 )' NS ', NSVAL( I ), NMAX 01479 FATAL = .TRUE. 01480 END IF 01481 120 CONTINUE 01482 WRITE( NOUT, FMT = 9983 )'NS: ', 01483 $ ( NSVAL( I ), I = 1, NPARMS ) 01484 ELSE 01485 DO 130 I = 1, NPARMS 01486 NSVAL( I ) = 1 01487 130 CONTINUE 01488 END IF 01489 * 01490 * Read the values for MAXB. 01491 * 01492 IF( ZGG ) THEN 01493 READ( NIN, FMT = * )( MXBVAL( I ), I = 1, NPARMS ) 01494 DO 140 I = 1, NPARMS 01495 IF( MXBVAL( I ).LT.0 ) THEN 01496 WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( I ), 0 01497 FATAL = .TRUE. 01498 ELSE IF( MXBVAL( I ).GT.NMAX ) THEN 01499 WRITE( NOUT, FMT = 9988 )' MAXB ', MXBVAL( I ), NMAX 01500 FATAL = .TRUE. 01501 END IF 01502 140 CONTINUE 01503 WRITE( NOUT, FMT = 9983 )'MAXB: ', 01504 $ ( MXBVAL( I ), I = 1, NPARMS ) 01505 ELSE 01506 DO 150 I = 1, NPARMS 01507 MXBVAL( I ) = 1 01508 150 CONTINUE 01509 END IF 01510 * 01511 * Read the values for INMIN. 01512 * 01513 IF( NEP ) THEN 01514 READ( NIN, FMT = * )( INMIN( I ), I = 1, NPARMS ) 01515 DO 540 I = 1, NPARMS 01516 IF( INMIN( I ).LT.0 ) THEN 01517 WRITE( NOUT, FMT = 9989 )' INMIN ', INMIN( I ), 0 01518 FATAL = .TRUE. 01519 END IF 01520 540 CONTINUE 01521 WRITE( NOUT, FMT = 9983 )'INMIN: ', 01522 $ ( INMIN( I ), I = 1, NPARMS ) 01523 ELSE 01524 DO 550 I = 1, NPARMS 01525 INMIN( I ) = 1 01526 550 CONTINUE 01527 END IF 01528 * 01529 * Read the values for INWIN. 01530 * 01531 IF( NEP ) THEN 01532 READ( NIN, FMT = * )( INWIN( I ), I = 1, NPARMS ) 01533 DO 560 I = 1, NPARMS 01534 IF( INWIN( I ).LT.0 ) THEN 01535 WRITE( NOUT, FMT = 9989 )' INWIN ', INWIN( I ), 0 01536 FATAL = .TRUE. 01537 END IF 01538 560 CONTINUE 01539 WRITE( NOUT, FMT = 9983 )'INWIN: ', 01540 $ ( INWIN( I ), I = 1, NPARMS ) 01541 ELSE 01542 DO 570 I = 1, NPARMS 01543 INWIN( I ) = 1 01544 570 CONTINUE 01545 END IF 01546 * 01547 * Read the values for INIBL. 01548 * 01549 IF( NEP ) THEN 01550 READ( NIN, FMT = * )( INIBL( I ), I = 1, NPARMS ) 01551 DO 580 I = 1, NPARMS 01552 IF( INIBL( I ).LT.0 ) THEN 01553 WRITE( NOUT, FMT = 9989 )' INIBL ', INIBL( I ), 0 01554 FATAL = .TRUE. 01555 END IF 01556 580 CONTINUE 01557 WRITE( NOUT, FMT = 9983 )'INIBL: ', 01558 $ ( INIBL( I ), I = 1, NPARMS ) 01559 ELSE 01560 DO 590 I = 1, NPARMS 01561 INIBL( I ) = 1 01562 590 CONTINUE 01563 END IF 01564 * 01565 * Read the values for ISHFTS. 01566 * 01567 IF( NEP ) THEN 01568 READ( NIN, FMT = * )( ISHFTS( I ), I = 1, NPARMS ) 01569 DO 600 I = 1, NPARMS 01570 IF( ISHFTS( I ).LT.0 ) THEN 01571 WRITE( NOUT, FMT = 9989 )' ISHFTS ', ISHFTS( I ), 0 01572 FATAL = .TRUE. 01573 END IF 01574 600 CONTINUE 01575 WRITE( NOUT, FMT = 9983 )'ISHFTS: ', 01576 $ ( ISHFTS( I ), I = 1, NPARMS ) 01577 ELSE 01578 DO 610 I = 1, NPARMS 01579 ISHFTS( I ) = 1 01580 610 CONTINUE 01581 END IF 01582 * 01583 * Read the values for IACC22. 01584 * 01585 IF( NEP ) THEN 01586 READ( NIN, FMT = * )( IACC22( I ), I = 1, NPARMS ) 01587 DO 620 I = 1, NPARMS 01588 IF( IACC22( I ).LT.0 ) THEN 01589 WRITE( NOUT, FMT = 9989 )' IACC22 ', IACC22( I ), 0 01590 FATAL = .TRUE. 01591 END IF 01592 620 CONTINUE 01593 WRITE( NOUT, FMT = 9983 )'IACC22: ', 01594 $ ( IACC22( I ), I = 1, NPARMS ) 01595 ELSE 01596 DO 630 I = 1, NPARMS 01597 IACC22( I ) = 1 01598 630 CONTINUE 01599 END IF 01600 * 01601 * Read the values for NBCOL. 01602 * 01603 IF( ZGG ) THEN 01604 READ( NIN, FMT = * )( NBCOL( I ), I = 1, NPARMS ) 01605 DO 160 I = 1, NPARMS 01606 IF( NBCOL( I ).LT.0 ) THEN 01607 WRITE( NOUT, FMT = 9989 )'NBCOL ', NBCOL( I ), 0 01608 FATAL = .TRUE. 01609 ELSE IF( NBCOL( I ).GT.NMAX ) THEN 01610 WRITE( NOUT, FMT = 9988 )'NBCOL ', NBCOL( I ), NMAX 01611 FATAL = .TRUE. 01612 END IF 01613 160 CONTINUE 01614 WRITE( NOUT, FMT = 9983 )'NBCOL:', 01615 $ ( NBCOL( I ), I = 1, NPARMS ) 01616 ELSE 01617 DO 170 I = 1, NPARMS 01618 NBCOL( I ) = 1 01619 170 CONTINUE 01620 END IF 01621 END IF 01622 * 01623 * Calculate and print the machine dependent constants. 01624 * 01625 WRITE( NOUT, FMT = * ) 01626 EPS = DLAMCH( 'Underflow threshold' ) 01627 WRITE( NOUT, FMT = 9981 )'underflow', EPS 01628 EPS = DLAMCH( 'Overflow threshold' ) 01629 WRITE( NOUT, FMT = 9981 )'overflow ', EPS 01630 EPS = DLAMCH( 'Epsilon' ) 01631 WRITE( NOUT, FMT = 9981 )'precision', EPS 01632 * 01633 * Read the threshold value for the test ratios. 01634 * 01635 READ( NIN, FMT = * )THRESH 01636 WRITE( NOUT, FMT = 9982 )THRESH 01637 IF( SEP .OR. SVD .OR. ZGG ) THEN 01638 * 01639 * Read the flag that indicates whether to test LAPACK routines. 01640 * 01641 READ( NIN, FMT = * )TSTCHK 01642 * 01643 * Read the flag that indicates whether to test driver routines. 01644 * 01645 READ( NIN, FMT = * )TSTDRV 01646 END IF 01647 * 01648 * Read the flag that indicates whether to test the error exits. 01649 * 01650 READ( NIN, FMT = * )TSTERR 01651 * 01652 * Read the code describing how to set the random number seed. 01653 * 01654 READ( NIN, FMT = * )NEWSD 01655 * 01656 * If NEWSD = 2, read another line with 4 integers for the seed. 01657 * 01658 IF( NEWSD.EQ.2 ) 01659 $ READ( NIN, FMT = * )( IOLDSD( I ), I = 1, 4 ) 01660 * 01661 DO 180 I = 1, 4 01662 ISEED( I ) = IOLDSD( I ) 01663 180 CONTINUE 01664 * 01665 IF( FATAL ) THEN 01666 WRITE( NOUT, FMT = 9999 ) 01667 STOP 01668 END IF 01669 * 01670 * Read the input lines indicating the test path and its parameters. 01671 * The first three characters indicate the test path, and the number 01672 * of test matrix types must be the first nonblank item in columns 01673 * 4-80. 01674 * 01675 190 CONTINUE 01676 * 01677 IF( .NOT.( ZGX .OR. ZXV ) ) THEN 01678 * 01679 200 CONTINUE 01680 READ( NIN, FMT = '(A80)', END = 380 )LINE 01681 C3 = LINE( 1: 3 ) 01682 LENP = LEN( LINE ) 01683 I = 3 01684 ITMP = 0 01685 I1 = 0 01686 210 CONTINUE 01687 I = I + 1 01688 IF( I.GT.LENP ) THEN 01689 IF( I1.GT.0 ) THEN 01690 GO TO 240 01691 ELSE 01692 NTYPES = MAXT 01693 GO TO 240 01694 END IF 01695 END IF 01696 IF( LINE( I: I ).NE.' ' .AND. LINE( I: I ).NE.',' ) THEN 01697 I1 = I 01698 C1 = LINE( I1: I1 ) 01699 * 01700 * Check that a valid integer was read 01701 * 01702 DO 220 K = 1, 10 01703 IF( C1.EQ.INTSTR( K: K ) ) THEN 01704 IC = K - 1 01705 GO TO 230 01706 END IF 01707 220 CONTINUE 01708 WRITE( NOUT, FMT = 9991 )I, LINE 01709 GO TO 200 01710 230 CONTINUE 01711 ITMP = 10*ITMP + IC 01712 GO TO 210 01713 ELSE IF( I1.GT.0 ) THEN 01714 GO TO 240 01715 ELSE 01716 GO TO 210 01717 END IF 01718 240 CONTINUE 01719 NTYPES = ITMP 01720 * 01721 * Skip the tests if NTYPES is <= 0. 01722 * 01723 IF( .NOT.( ZEV .OR. ZES .OR. ZVX .OR. ZSX .OR. ZGV .OR. 01724 $ ZGS ) .AND. NTYPES.LE.0 ) THEN 01725 WRITE( NOUT, FMT = 9990 )C3 01726 GO TO 200 01727 END IF 01728 * 01729 ELSE 01730 IF( ZGX ) 01731 $ C3 = 'ZGX' 01732 IF( ZXV ) 01733 $ C3 = 'ZXV' 01734 END IF 01735 * 01736 * Reset the random number seed. 01737 * 01738 IF( NEWSD.EQ.0 ) THEN 01739 DO 250 K = 1, 4 01740 ISEED( K ) = IOLDSD( K ) 01741 250 CONTINUE 01742 END IF 01743 * 01744 IF( LSAMEN( 3, C3, 'ZHS' ) .OR. LSAMEN( 3, C3, 'NEP' ) ) THEN 01745 * 01746 * ------------------------------------- 01747 * NEP: Nonsymmetric Eigenvalue Problem 01748 * ------------------------------------- 01749 * Vary the parameters 01750 * NB = block size 01751 * NBMIN = minimum block size 01752 * NX = crossover point 01753 * NS = number of shifts 01754 * MAXB = minimum submatrix size 01755 * 01756 MAXTYP = 21 01757 NTYPES = MIN( MAXTYP, NTYPES ) 01758 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01759 CALL XLAENV( 1, 1 ) 01760 IF( TSTERR ) 01761 $ CALL ZERRHS( 'ZHSEQR', NOUT ) 01762 DO 270 I = 1, NPARMS 01763 CALL XLAENV( 1, NBVAL( I ) ) 01764 CALL XLAENV( 2, NBMIN( I ) ) 01765 CALL XLAENV( 3, NXVAL( I ) ) 01766 CALL XLAENV(12, MAX( 11, INMIN( I ) ) ) 01767 CALL XLAENV(13, INWIN( I ) ) 01768 CALL XLAENV(14, INIBL( I ) ) 01769 CALL XLAENV(15, ISHFTS( I ) ) 01770 CALL XLAENV(16, IACC22( I ) ) 01771 * 01772 IF( NEWSD.EQ.0 ) THEN 01773 DO 260 K = 1, 4 01774 ISEED( K ) = IOLDSD( K ) 01775 260 CONTINUE 01776 END IF 01777 WRITE( NOUT, FMT = 9961 )C3, NBVAL( I ), NBMIN( I ), 01778 $ NXVAL( I ), MAX( 11, INMIN(I)), 01779 $ INWIN( I ), INIBL( I ), ISHFTS( I ), IACC22( I ) 01780 CALL ZCHKHS( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT, 01781 $ A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ), 01782 $ A( 1, 4 ), A( 1, 5 ), NMAX, A( 1, 6 ), 01783 $ A( 1, 7 ), DC( 1, 1 ), DC( 1, 2 ), A( 1, 8 ), 01784 $ A( 1, 9 ), A( 1, 10 ), A( 1, 11 ), A( 1, 12 ), 01785 $ DC( 1, 3 ), WORK, LWORK, RWORK, IWORK, LOGWRK, 01786 $ RESULT, INFO ) 01787 IF( INFO.NE.0 ) 01788 $ WRITE( NOUT, FMT = 9980 )'ZCHKHS', INFO 01789 270 CONTINUE 01790 * 01791 ELSE IF( LSAMEN( 3, C3, 'ZST' ) .OR. LSAMEN( 3, C3, 'SEP' ) ) THEN 01792 * 01793 * ---------------------------------- 01794 * SEP: Symmetric Eigenvalue Problem 01795 * ---------------------------------- 01796 * Vary the parameters 01797 * NB = block size 01798 * NBMIN = minimum block size 01799 * NX = crossover point 01800 * 01801 MAXTYP = 21 01802 NTYPES = MIN( MAXTYP, NTYPES ) 01803 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01804 CALL XLAENV( 1, 1 ) 01805 CALL XLAENV( 9, 25 ) 01806 IF( TSTERR ) 01807 $ CALL ZERRST( 'ZST', NOUT ) 01808 DO 290 I = 1, NPARMS 01809 CALL XLAENV( 1, NBVAL( I ) ) 01810 CALL XLAENV( 2, NBMIN( I ) ) 01811 CALL XLAENV( 3, NXVAL( I ) ) 01812 * 01813 IF( NEWSD.EQ.0 ) THEN 01814 DO 280 K = 1, 4 01815 ISEED( K ) = IOLDSD( K ) 01816 280 CONTINUE 01817 END IF 01818 WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ), 01819 $ NXVAL( I ) 01820 IF( TSTCHK ) THEN 01821 CALL ZCHKST( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, 01822 $ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), 01823 $ DR( 1, 1 ), DR( 1, 2 ), DR( 1, 3 ), 01824 $ DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ), 01825 $ DR( 1, 7 ), DR( 1, 8 ), DR( 1, 9 ), 01826 $ DR( 1, 10 ), DR( 1, 11 ), A( 1, 3 ), NMAX, 01827 $ A( 1, 4 ), A( 1, 5 ), DC( 1, 1 ), A( 1, 6 ), 01828 $ WORK, LWORK, RWORK, LWORK, IWORK, LIWORK, 01829 $ RESULT, INFO ) 01830 IF( INFO.NE.0 ) 01831 $ WRITE( NOUT, FMT = 9980 )'ZCHKST', INFO 01832 END IF 01833 IF( TSTDRV ) THEN 01834 CALL ZDRVST( NN, NVAL, 18, DOTYPE, ISEED, THRESH, NOUT, 01835 $ A( 1, 1 ), NMAX, DR( 1, 3 ), DR( 1, 4 ), 01836 $ DR( 1, 5 ), DR( 1, 8 ), DR( 1, 9 ), 01837 $ DR( 1, 10 ), A( 1, 2 ), NMAX, A( 1, 3 ), 01838 $ DC( 1, 1 ), A( 1, 4 ), WORK, LWORK, RWORK, 01839 $ LWORK, IWORK, LIWORK, RESULT, INFO ) 01840 IF( INFO.NE.0 ) 01841 $ WRITE( NOUT, FMT = 9980 )'ZDRVST', INFO 01842 END IF 01843 290 CONTINUE 01844 * 01845 ELSE IF( LSAMEN( 3, C3, 'ZSG' ) ) THEN 01846 * 01847 * ---------------------------------------------- 01848 * ZSG: Hermitian Generalized Eigenvalue Problem 01849 * ---------------------------------------------- 01850 * Vary the parameters 01851 * NB = block size 01852 * NBMIN = minimum block size 01853 * NX = crossover point 01854 * 01855 MAXTYP = 21 01856 NTYPES = MIN( MAXTYP, NTYPES ) 01857 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01858 CALL XLAENV( 9, 25 ) 01859 DO 310 I = 1, NPARMS 01860 CALL XLAENV( 1, NBVAL( I ) ) 01861 CALL XLAENV( 2, NBMIN( I ) ) 01862 CALL XLAENV( 3, NXVAL( I ) ) 01863 * 01864 IF( NEWSD.EQ.0 ) THEN 01865 DO 300 K = 1, 4 01866 ISEED( K ) = IOLDSD( K ) 01867 300 CONTINUE 01868 END IF 01869 WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ), 01870 $ NXVAL( I ) 01871 IF( TSTCHK ) THEN 01872 CALL ZDRVSG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, 01873 $ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX, 01874 $ DR( 1, 3 ), A( 1, 3 ), NMAX, A( 1, 4 ), 01875 $ A( 1, 5 ), A( 1, 6 ), A( 1, 7 ), WORK, 01876 $ LWORK, RWORK, LWORK, IWORK, LIWORK, RESULT, 01877 $ INFO ) 01878 IF( INFO.NE.0 ) 01879 $ WRITE( NOUT, FMT = 9980 )'ZDRVSG', INFO 01880 END IF 01881 310 CONTINUE 01882 * 01883 ELSE IF( LSAMEN( 3, C3, 'ZBD' ) .OR. LSAMEN( 3, C3, 'SVD' ) ) THEN 01884 * 01885 * ---------------------------------- 01886 * SVD: Singular Value Decomposition 01887 * ---------------------------------- 01888 * Vary the parameters 01889 * NB = block size 01890 * NBMIN = minimum block size 01891 * NX = crossover point 01892 * NRHS = number of right hand sides 01893 * 01894 MAXTYP = 16 01895 NTYPES = MIN( MAXTYP, NTYPES ) 01896 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01897 CALL XLAENV( 9, 25 ) 01898 * 01899 * Test the error exits 01900 * 01901 CALL XLAENV( 1, 1 ) 01902 IF( TSTERR .AND. TSTCHK ) 01903 $ CALL ZERRBD( 'ZBD', NOUT ) 01904 IF( TSTERR .AND. TSTDRV ) 01905 $ CALL ZERRED( 'ZBD', NOUT ) 01906 * 01907 DO 330 I = 1, NPARMS 01908 NRHS = NSVAL( I ) 01909 CALL XLAENV( 1, NBVAL( I ) ) 01910 CALL XLAENV( 2, NBMIN( I ) ) 01911 CALL XLAENV( 3, NXVAL( I ) ) 01912 IF( NEWSD.EQ.0 ) THEN 01913 DO 320 K = 1, 4 01914 ISEED( K ) = IOLDSD( K ) 01915 320 CONTINUE 01916 END IF 01917 WRITE( NOUT, FMT = 9995 )C3, NBVAL( I ), NBMIN( I ), 01918 $ NXVAL( I ), NRHS 01919 IF( TSTCHK ) THEN 01920 CALL ZCHKBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, NRHS, ISEED, 01921 $ THRESH, A( 1, 1 ), NMAX, DR( 1, 1 ), 01922 $ DR( 1, 2 ), DR( 1, 3 ), DR( 1, 4 ), 01923 $ A( 1, 2 ), NMAX, A( 1, 3 ), A( 1, 4 ), 01924 $ A( 1, 5 ), NMAX, A( 1, 6 ), NMAX, A( 1, 7 ), 01925 $ A( 1, 8 ), WORK, LWORK, RWORK, NOUT, INFO ) 01926 IF( INFO.NE.0 ) 01927 $ WRITE( NOUT, FMT = 9980 )'ZCHKBD', INFO 01928 END IF 01929 IF( TSTDRV ) 01930 $ CALL ZDRVBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, ISEED, 01931 $ THRESH, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX, 01932 $ A( 1, 3 ), NMAX, A( 1, 4 ), A( 1, 5 ), 01933 $ A( 1, 6 ), DR( 1, 1 ), DR( 1, 2 ), 01934 $ DR( 1, 3 ), WORK, LWORK, RWORK, IWORK, NOUT, 01935 $ INFO ) 01936 330 CONTINUE 01937 * 01938 ELSE IF( LSAMEN( 3, C3, 'ZEV' ) ) THEN 01939 * 01940 * -------------------------------------------- 01941 * ZEV: Nonsymmetric Eigenvalue Problem Driver 01942 * ZGEEV (eigenvalues and eigenvectors) 01943 * -------------------------------------------- 01944 * 01945 MAXTYP = 21 01946 NTYPES = MIN( MAXTYP, NTYPES ) 01947 IF( NTYPES.LE.0 ) THEN 01948 WRITE( NOUT, FMT = 9990 )C3 01949 ELSE 01950 IF( TSTERR ) 01951 $ CALL ZERRED( C3, NOUT ) 01952 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01953 CALL ZDRVEV( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT, 01954 $ A( 1, 1 ), NMAX, A( 1, 2 ), DC( 1, 1 ), 01955 $ DC( 1, 2 ), A( 1, 3 ), NMAX, A( 1, 4 ), NMAX, 01956 $ A( 1, 5 ), NMAX, RESULT, WORK, LWORK, RWORK, 01957 $ IWORK, INFO ) 01958 IF( INFO.NE.0 ) 01959 $ WRITE( NOUT, FMT = 9980 )'ZGEEV', INFO 01960 END IF 01961 WRITE( NOUT, FMT = 9973 ) 01962 GO TO 10 01963 * 01964 ELSE IF( LSAMEN( 3, C3, 'ZES' ) ) THEN 01965 * 01966 * -------------------------------------------- 01967 * ZES: Nonsymmetric Eigenvalue Problem Driver 01968 * ZGEES (Schur form) 01969 * -------------------------------------------- 01970 * 01971 MAXTYP = 21 01972 NTYPES = MIN( MAXTYP, NTYPES ) 01973 IF( NTYPES.LE.0 ) THEN 01974 WRITE( NOUT, FMT = 9990 )C3 01975 ELSE 01976 IF( TSTERR ) 01977 $ CALL ZERRED( C3, NOUT ) 01978 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 01979 CALL ZDRVES( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT, 01980 $ A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ), 01981 $ DC( 1, 1 ), DC( 1, 2 ), A( 1, 4 ), NMAX, 01982 $ RESULT, WORK, LWORK, RWORK, IWORK, LOGWRK, 01983 $ INFO ) 01984 IF( INFO.NE.0 ) 01985 $ WRITE( NOUT, FMT = 9980 )'ZGEES', INFO 01986 END IF 01987 WRITE( NOUT, FMT = 9973 ) 01988 GO TO 10 01989 * 01990 ELSE IF( LSAMEN( 3, C3, 'ZVX' ) ) THEN 01991 * 01992 * -------------------------------------------------------------- 01993 * ZVX: Nonsymmetric Eigenvalue Problem Expert Driver 01994 * ZGEEVX (eigenvalues, eigenvectors and condition numbers) 01995 * -------------------------------------------------------------- 01996 * 01997 MAXTYP = 21 01998 NTYPES = MIN( MAXTYP, NTYPES ) 01999 IF( NTYPES.LT.0 ) THEN 02000 WRITE( NOUT, FMT = 9990 )C3 02001 ELSE 02002 IF( TSTERR ) 02003 $ CALL ZERRED( C3, NOUT ) 02004 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02005 CALL ZDRVVX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN, 02006 $ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), DC( 1, 1 ), 02007 $ DC( 1, 2 ), A( 1, 3 ), NMAX, A( 1, 4 ), NMAX, 02008 $ A( 1, 5 ), NMAX, DR( 1, 1 ), DR( 1, 2 ), 02009 $ DR( 1, 3 ), DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ), 02010 $ DR( 1, 7 ), DR( 1, 8 ), RESULT, WORK, LWORK, 02011 $ RWORK, INFO ) 02012 IF( INFO.NE.0 ) 02013 $ WRITE( NOUT, FMT = 9980 )'ZGEEVX', INFO 02014 END IF 02015 WRITE( NOUT, FMT = 9973 ) 02016 GO TO 10 02017 * 02018 ELSE IF( LSAMEN( 3, C3, 'ZSX' ) ) THEN 02019 * 02020 * --------------------------------------------------- 02021 * ZSX: Nonsymmetric Eigenvalue Problem Expert Driver 02022 * ZGEESX (Schur form and condition numbers) 02023 * --------------------------------------------------- 02024 * 02025 MAXTYP = 21 02026 NTYPES = MIN( MAXTYP, NTYPES ) 02027 IF( NTYPES.LT.0 ) THEN 02028 WRITE( NOUT, FMT = 9990 )C3 02029 ELSE 02030 IF( TSTERR ) 02031 $ CALL ZERRED( C3, NOUT ) 02032 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02033 CALL ZDRVSX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN, 02034 $ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ), 02035 $ DC( 1, 1 ), DC( 1, 2 ), DC( 1, 3 ), A( 1, 4 ), 02036 $ NMAX, A( 1, 5 ), RESULT, WORK, LWORK, RWORK, 02037 $ LOGWRK, INFO ) 02038 IF( INFO.NE.0 ) 02039 $ WRITE( NOUT, FMT = 9980 )'ZGEESX', INFO 02040 END IF 02041 WRITE( NOUT, FMT = 9973 ) 02042 GO TO 10 02043 * 02044 ELSE IF( LSAMEN( 3, C3, 'ZGG' ) ) THEN 02045 * 02046 * ------------------------------------------------- 02047 * ZGG: Generalized Nonsymmetric Eigenvalue Problem 02048 * ------------------------------------------------- 02049 * Vary the parameters 02050 * NB = block size 02051 * NBMIN = minimum block size 02052 * NS = number of shifts 02053 * MAXB = minimum submatrix size 02054 * NBCOL = minimum column dimension for blocks 02055 * 02056 MAXTYP = 26 02057 NTYPES = MIN( MAXTYP, NTYPES ) 02058 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02059 IF( TSTCHK .AND. TSTERR ) 02060 $ CALL ZERRGG( C3, NOUT ) 02061 DO 350 I = 1, NPARMS 02062 CALL XLAENV( 1, NBVAL( I ) ) 02063 CALL XLAENV( 2, NBMIN( I ) ) 02064 CALL XLAENV( 4, NSVAL( I ) ) 02065 CALL XLAENV( 8, MXBVAL( I ) ) 02066 CALL XLAENV( 5, NBCOL( I ) ) 02067 * 02068 IF( NEWSD.EQ.0 ) THEN 02069 DO 340 K = 1, 4 02070 ISEED( K ) = IOLDSD( K ) 02071 340 CONTINUE 02072 END IF 02073 WRITE( NOUT, FMT = 9996 )C3, NBVAL( I ), NBMIN( I ), 02074 $ NSVAL( I ), MXBVAL( I ), NBCOL( I ) 02075 TSTDIF = .FALSE. 02076 THRSHN = 10.D0 02077 IF( TSTCHK ) THEN 02078 CALL ZCHKGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, 02079 $ TSTDIF, THRSHN, NOUT, A( 1, 1 ), NMAX, 02080 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 02081 $ A( 1, 6 ), A( 1, 7 ), A( 1, 8 ), A( 1, 9 ), 02082 $ NMAX, A( 1, 10 ), A( 1, 11 ), A( 1, 12 ), 02083 $ DC( 1, 1 ), DC( 1, 2 ), DC( 1, 3 ), 02084 $ DC( 1, 4 ), A( 1, 13 ), A( 1, 14 ), WORK, 02085 $ LWORK, RWORK, LOGWRK, RESULT, INFO ) 02086 IF( INFO.NE.0 ) 02087 $ WRITE( NOUT, FMT = 9980 )'ZCHKGG', INFO 02088 END IF 02089 CALL XLAENV( 1, 1 ) 02090 IF( TSTDRV ) THEN 02091 CALL ZDRVGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, 02092 $ THRSHN, NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), 02093 $ A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), A( 1, 6 ), 02094 $ A( 1, 7 ), NMAX, A( 1, 8 ), DC( 1, 1 ), 02095 $ DC( 1, 2 ), DC( 1, 3 ), DC( 1, 4 ), 02096 $ A( 1, 8 ), A( 1, 9 ), WORK, LWORK, RWORK, 02097 $ RESULT, INFO ) 02098 IF( INFO.NE.0 ) 02099 $ WRITE( NOUT, FMT = 9980 )'ZDRVGG', INFO 02100 END IF 02101 350 CONTINUE 02102 * 02103 ELSE IF( LSAMEN( 3, C3, 'ZGS' ) ) THEN 02104 * 02105 * ------------------------------------------------- 02106 * ZGS: Generalized Nonsymmetric Eigenvalue Problem 02107 * ZGGES (Schur form) 02108 * ------------------------------------------------- 02109 * 02110 MAXTYP = 26 02111 NTYPES = MIN( MAXTYP, NTYPES ) 02112 IF( NTYPES.LE.0 ) THEN 02113 WRITE( NOUT, FMT = 9990 )C3 02114 ELSE 02115 IF( TSTERR ) 02116 $ CALL ZERRGG( C3, NOUT ) 02117 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02118 CALL ZDRGES( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT, 02119 $ A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ), 02120 $ A( 1, 4 ), A( 1, 7 ), NMAX, A( 1, 8 ), 02121 $ DC( 1, 1 ), DC( 1, 2 ), WORK, LWORK, RWORK, 02122 $ RESULT, LOGWRK, INFO ) 02123 * 02124 IF( INFO.NE.0 ) 02125 $ WRITE( NOUT, FMT = 9980 )'ZDRGES', INFO 02126 END IF 02127 WRITE( NOUT, FMT = 9973 ) 02128 GO TO 10 02129 * 02130 ELSE IF( ZGX ) THEN 02131 * 02132 * ------------------------------------------------- 02133 * ZGX Generalized Nonsymmetric Eigenvalue Problem 02134 * ZGGESX (Schur form and condition numbers) 02135 * ------------------------------------------------- 02136 * 02137 MAXTYP = 5 02138 NTYPES = MAXTYP 02139 IF( NN.LT.0 ) THEN 02140 WRITE( NOUT, FMT = 9990 )C3 02141 ELSE 02142 IF( TSTERR ) 02143 $ CALL ZERRGG( C3, NOUT ) 02144 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02145 CALL XLAENV( 5, 2 ) 02146 CALL ZDRGSX( NN, NCMAX, THRESH, NIN, NOUT, A( 1, 1 ), NMAX, 02147 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 02148 $ A( 1, 6 ), DC( 1, 1 ), DC( 1, 2 ), C, 02149 $ NCMAX*NCMAX, S, WORK, LWORK, RWORK, IWORK, 02150 $ LIWORK, LOGWRK, INFO ) 02151 IF( INFO.NE.0 ) 02152 $ WRITE( NOUT, FMT = 9980 )'ZDRGSX', INFO 02153 END IF 02154 WRITE( NOUT, FMT = 9973 ) 02155 GO TO 10 02156 * 02157 ELSE IF( LSAMEN( 3, C3, 'ZGV' ) ) THEN 02158 * 02159 * ------------------------------------------------- 02160 * ZGV: Generalized Nonsymmetric Eigenvalue Problem 02161 * ZGGEV (Eigenvalue/vector form) 02162 * ------------------------------------------------- 02163 * 02164 MAXTYP = 26 02165 NTYPES = MIN( MAXTYP, NTYPES ) 02166 IF( NTYPES.LE.0 ) THEN 02167 WRITE( NOUT, FMT = 9990 )C3 02168 ELSE 02169 IF( TSTERR ) 02170 $ CALL ZERRGG( C3, NOUT ) 02171 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02172 CALL ZDRGEV( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT, 02173 $ A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ), 02174 $ A( 1, 4 ), A( 1, 7 ), NMAX, A( 1, 8 ), 02175 $ A( 1, 9 ), NMAX, DC( 1, 1 ), DC( 1, 2 ), 02176 $ DC( 1, 3 ), DC( 1, 4 ), WORK, LWORK, RWORK, 02177 $ RESULT, INFO ) 02178 IF( INFO.NE.0 ) 02179 $ WRITE( NOUT, FMT = 9980 )'ZDRGEV', INFO 02180 END IF 02181 WRITE( NOUT, FMT = 9973 ) 02182 GO TO 10 02183 * 02184 ELSE IF( ZXV ) THEN 02185 * 02186 * ------------------------------------------------- 02187 * ZXV: Generalized Nonsymmetric Eigenvalue Problem 02188 * ZGGEVX (eigenvalue/vector with condition numbers) 02189 * ------------------------------------------------- 02190 * 02191 MAXTYP = 2 02192 NTYPES = MAXTYP 02193 IF( NN.LT.0 ) THEN 02194 WRITE( NOUT, FMT = 9990 )C3 02195 ELSE 02196 IF( TSTERR ) 02197 $ CALL ZERRGG( C3, NOUT ) 02198 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02199 CALL ZDRGVX( NN, THRESH, NIN, NOUT, A( 1, 1 ), NMAX, 02200 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), DC( 1, 1 ), 02201 $ DC( 1, 2 ), A( 1, 5 ), A( 1, 6 ), IWORK( 1 ), 02202 $ IWORK( 2 ), DR( 1, 1 ), DR( 1, 2 ), DR( 1, 3 ), 02203 $ DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ), WORK, 02204 $ LWORK, RWORK, IWORK( 3 ), LIWORK-2, RESULT, 02205 $ LOGWRK, INFO ) 02206 * 02207 IF( INFO.NE.0 ) 02208 $ WRITE( NOUT, FMT = 9980 )'ZDRGVX', INFO 02209 END IF 02210 WRITE( NOUT, FMT = 9973 ) 02211 GO TO 10 02212 * 02213 ELSE IF( LSAMEN( 3, C3, 'ZHB' ) ) THEN 02214 * 02215 * ------------------------------ 02216 * ZHB: Hermitian Band Reduction 02217 * ------------------------------ 02218 * 02219 MAXTYP = 15 02220 NTYPES = MIN( MAXTYP, NTYPES ) 02221 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02222 IF( TSTERR ) 02223 $ CALL ZERRST( 'ZHB', NOUT ) 02224 CALL ZCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH, 02225 $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ), 02226 $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT, 02227 $ INFO ) 02228 IF( INFO.NE.0 ) 02229 $ WRITE( NOUT, FMT = 9980 )'ZCHKHB', INFO 02230 * 02231 ELSE IF( LSAMEN( 3, C3, 'ZBB' ) ) THEN 02232 * 02233 * ------------------------------ 02234 * ZBB: General Band Reduction 02235 * ------------------------------ 02236 * 02237 MAXTYP = 15 02238 NTYPES = MIN( MAXTYP, NTYPES ) 02239 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) 02240 DO 370 I = 1, NPARMS 02241 NRHS = NSVAL( I ) 02242 * 02243 IF( NEWSD.EQ.0 ) THEN 02244 DO 360 K = 1, 4 02245 ISEED( K ) = IOLDSD( K ) 02246 360 CONTINUE 02247 END IF 02248 WRITE( NOUT, FMT = 9966 )C3, NRHS 02249 CALL ZCHKBB( NN, MVAL, NVAL, NK, KVAL, MAXTYP, DOTYPE, NRHS, 02250 $ ISEED, THRESH, NOUT, A( 1, 1 ), NMAX, 02251 $ A( 1, 2 ), 2*NMAX, DR( 1, 1 ), DR( 1, 2 ), 02252 $ A( 1, 4 ), NMAX, A( 1, 5 ), NMAX, A( 1, 6 ), 02253 $ NMAX, A( 1, 7 ), WORK, LWORK, RWORK, RESULT, 02254 $ INFO ) 02255 IF( INFO.NE.0 ) 02256 $ WRITE( NOUT, FMT = 9980 )'ZCHKBB', INFO 02257 370 CONTINUE 02258 * 02259 ELSE IF( LSAMEN( 3, C3, 'GLM' ) ) THEN 02260 * 02261 * ----------------------------------------- 02262 * GLM: Generalized Linear Regression Model 02263 * ----------------------------------------- 02264 * 02265 CALL XLAENV( 1, 1 ) 02266 IF( TSTERR ) 02267 $ CALL ZERRGG( 'GLM', NOUT ) 02268 CALL ZCKGLM( NN, NVAL, MVAL, PVAL, NTYPES, ISEED, THRESH, NMAX, 02269 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), X, 02270 $ WORK, DR( 1, 1 ), NIN, NOUT, INFO ) 02271 IF( INFO.NE.0 ) 02272 $ WRITE( NOUT, FMT = 9980 )'ZCKGLM', INFO 02273 * 02274 ELSE IF( LSAMEN( 3, C3, 'GQR' ) ) THEN 02275 * 02276 * ------------------------------------------ 02277 * GQR: Generalized QR and RQ factorizations 02278 * ------------------------------------------ 02279 * 02280 CALL XLAENV( 1, 1 ) 02281 IF( TSTERR ) 02282 $ CALL ZERRGG( 'GQR', NOUT ) 02283 CALL ZCKGQR( NN, MVAL, NN, PVAL, NN, NVAL, NTYPES, ISEED, 02284 $ THRESH, NMAX, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 02285 $ A( 1, 4 ), TAUA, B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 02286 $ B( 1, 4 ), B( 1, 5 ), TAUB, WORK, DR( 1, 1 ), NIN, 02287 $ NOUT, INFO ) 02288 IF( INFO.NE.0 ) 02289 $ WRITE( NOUT, FMT = 9980 )'ZCKGQR', INFO 02290 * 02291 ELSE IF( LSAMEN( 3, C3, 'GSV' ) ) THEN 02292 * 02293 * ---------------------------------------------- 02294 * GSV: Generalized Singular Value Decomposition 02295 * ---------------------------------------------- 02296 * 02297 IF( TSTERR ) 02298 $ CALL ZERRGG( 'GSV', NOUT ) 02299 CALL ZCKGSV( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX, 02300 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), 02301 $ A( 1, 3 ), B( 1, 3 ), A( 1, 4 ), ALPHA, BETA, 02302 $ B( 1, 4 ), IWORK, WORK, DR( 1, 1 ), NIN, NOUT, 02303 $ INFO ) 02304 IF( INFO.NE.0 ) 02305 $ WRITE( NOUT, FMT = 9980 )'ZCKGSV', INFO 02306 * 02307 ELSE IF( LSAMEN( 3, C3, 'CSD' ) ) THEN 02308 * 02309 * ---------------------------------------------- 02310 * CSD: CS Decomposition 02311 * ---------------------------------------------- 02312 * 02313 IF( TSTERR ) 02314 $ CALL ZERRGG( 'CSD', NOUT ) 02315 CALL ZCKCSD( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX, 02316 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), 02317 $ A( 1, 5 ), A( 1, 6 ), A( 1, 7 ), IWORK, WORK, 02318 $ DR( 1, 1 ), NIN, NOUT, INFO ) 02319 IF( INFO.NE.0 ) 02320 $ WRITE( NOUT, FMT = 9980 )'ZCKCSD', INFO 02321 * 02322 ELSE IF( LSAMEN( 3, C3, 'LSE' ) ) THEN 02323 * 02324 * -------------------------------------- 02325 * LSE: Constrained Linear Least Squares 02326 * -------------------------------------- 02327 * 02328 CALL XLAENV( 1, 1 ) 02329 IF( TSTERR ) 02330 $ CALL ZERRGG( 'LSE', NOUT ) 02331 CALL ZCKLSE( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX, 02332 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), X, 02333 $ WORK, DR( 1, 1 ), NIN, NOUT, INFO ) 02334 IF( INFO.NE.0 ) 02335 $ WRITE( NOUT, FMT = 9980 )'ZCKLSE', INFO 02336 ELSE 02337 WRITE( NOUT, FMT = * ) 02338 WRITE( NOUT, FMT = * ) 02339 WRITE( NOUT, FMT = 9992 )C3 02340 END IF 02341 IF( .NOT.( ZGX .OR. ZXV ) ) 02342 $ GO TO 190 02343 380 CONTINUE 02344 WRITE( NOUT, FMT = 9994 ) 02345 S2 = DSECND( ) 02346 WRITE( NOUT, FMT = 9993 )S2 - S1 02347 * 02348 9999 FORMAT( / ' Execution not attempted due to input errors' ) 02349 9998 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4, 02350 $ ', NS =', I4, ', MAXB =', I4 ) 02351 9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 ) 02352 9996 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NS =', I4, 02353 $ ', MAXB =', I4, ', NBCOL =', I4 ) 02354 9995 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4, 02355 $ ', NRHS =', I4 ) 02356 9994 FORMAT( / / ' End of tests' ) 02357 9993 FORMAT( ' Total time used = ', F12.2, ' seconds', / ) 02358 9992 FORMAT( 1X, A3, ': Unrecognized path name' ) 02359 9991 FORMAT( / / ' *** Invalid integer value in column ', I2, 02360 $ ' of input', ' line:', / A79 ) 02361 9990 FORMAT( / / 1X, A3, ' routines were not tested' ) 02362 9989 FORMAT( ' Invalid input value: ', A, '=', I6, '; must be >=', 02363 $ I6 ) 02364 9988 FORMAT( ' Invalid input value: ', A, '=', I6, '; must be <=', 02365 $ I6 ) 02366 9987 FORMAT( ' Tests of the Nonsymmetric Eigenvalue Problem routines' ) 02367 9986 FORMAT( ' Tests of the Hermitian Eigenvalue Problem routines' ) 02368 9985 FORMAT( ' Tests of the Singular Value Decomposition routines' ) 02369 9984 FORMAT( / ' The following parameter values will be used:' ) 02370 9983 FORMAT( 4X, A, 10I6, / 10X, 10I6 ) 02371 9982 FORMAT( / ' Routines pass computational tests if test ratio is ', 02372 $ 'less than', F8.2, / ) 02373 9981 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 ) 02374 9980 FORMAT( ' *** Error code from ', A, ' = ', I4 ) 02375 9979 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver', 02376 $ / ' ZGEEV (eigenvalues and eigevectors)' ) 02377 9978 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver', 02378 $ / ' ZGEES (Schur form)' ) 02379 9977 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert', 02380 $ ' Driver', / ' ZGEEVX (eigenvalues, eigenvectors and', 02381 $ ' condition numbers)' ) 02382 9976 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert', 02383 $ ' Driver', / ' ZGEESX (Schur form and condition', 02384 $ ' numbers)' ) 02385 9975 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ', 02386 $ 'Problem routines' ) 02387 9974 FORMAT( ' Tests of ZHBTRD', / ' (reduction of a Hermitian band ', 02388 $ 'matrix to real tridiagonal form)' ) 02389 9973 FORMAT( / 1X, 71( '-' ) ) 02390 9972 FORMAT( / ' LAPACK VERSION ', I1, '.', I1, '.', I1 ) 02391 9971 FORMAT( / ' Tests of the Generalized Linear Regression Model ', 02392 $ 'routines' ) 02393 9970 FORMAT( / ' Tests of the Generalized QR and RQ routines' ) 02394 9969 FORMAT( / ' Tests of the Generalized Singular Value', 02395 $ ' Decomposition routines' ) 02396 9968 FORMAT( / ' Tests of the Linear Least Squares routines' ) 02397 9967 FORMAT( ' Tests of ZGBBRD', / ' (reduction of a general band ', 02398 $ 'matrix to real bidiagonal form)' ) 02399 9966 FORMAT( / / 1X, A3, ': NRHS =', I4 ) 02400 9965 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ', 02401 $ 'Problem Expert Driver ZGGESX' ) 02402 9964 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ', 02403 $ 'Problem Driver ZGGES' ) 02404 9963 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ', 02405 $ 'Problem Driver ZGGEV' ) 02406 9962 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ', 02407 $ 'Problem Expert Driver ZGGEVX' ) 02408 9961 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4, 02409 $ ', INMIN=', I4, 02410 $ ', INWIN =', I4, ', INIBL =', I4, ', ISHFTS =', I4, 02411 $ ', IACC22 =', I4) 02412 9960 FORMAT( / ' Tests of the CS Decomposition routines' ) 02413 * 02414 * End of ZCHKEE 02415 * 02416 END