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