LAPACK  3.4.0
LAPACK: Linear Algebra PACKage
zchkee.f
Go to the documentation of this file.
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 November 2011
01030 *
01031 *> \ingroup complex16_eig
01032 *
01033 *  =====================================================================      PROGRAM ZCHKEE
01034 *
01035 *  -- LAPACK test routine (version 3.4.0) --
01036 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
01037 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
01038 *     November 2011
01039 *
01040 *  =====================================================================
01041 *
01042 *     .. Parameters ..
01043       INTEGER            NMAX
01044       PARAMETER          ( NMAX = 132 )
01045       INTEGER            NCMAX
01046       PARAMETER          ( NCMAX = 20 )
01047       INTEGER            NEED
01048       PARAMETER          ( NEED = 14 )
01049       INTEGER            LWORK
01050       PARAMETER          ( LWORK = NMAX*( 5*NMAX+20 ) )
01051       INTEGER            LIWORK
01052       PARAMETER          ( LIWORK = NMAX*( NMAX+20 ) )
01053       INTEGER            MAXIN
01054       PARAMETER          ( MAXIN = 20 )
01055       INTEGER            MAXT
01056       PARAMETER          ( MAXT = 30 )
01057       INTEGER            NIN, NOUT
01058       PARAMETER          ( NIN = 5, NOUT = 6 )
01059 *     ..
01060 *     .. Local Scalars ..
01061       LOGICAL            ZBK, ZBL, ZES, ZEV, ZGK, ZGL, ZGS, ZGV, ZGX,
01062      $                   ZSX, ZVX, ZXV, CSD, FATAL, GLM, GQR, GSV, LSE,
01063      $                   NEP, SEP, SVD, TSTCHK, TSTDIF, TSTDRV, TSTERR,
01064      $                   ZBB, ZGG, ZHB
01065       CHARACTER          C1
01066       CHARACTER*3        C3, PATH
01067       CHARACTER*32       VNAME
01068       CHARACTER*10       INTSTR
01069       CHARACTER*80       LINE
01070       INTEGER            I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
01071      $                   NK, NN, NPARMS, NRHS, NTYPES,
01072      $                   VERS_MAJOR, VERS_MINOR, VERS_PATCH
01073       DOUBLE PRECISION   EPS, S1, S2, THRESH, THRSHN
01074 *     ..
01075 *     .. Local Arrays ..
01076       LOGICAL            DOTYPE( MAXT ), LOGWRK( NMAX )
01077       INTEGER            IOLDSD( 4 ), ISEED( 4 ), IWORK( LIWORK ),
01078      $                   KVAL( MAXIN ), MVAL( MAXIN ), MXBVAL( MAXIN ),
01079      $                   NBCOL( MAXIN ), NBMIN( MAXIN ), NBVAL( MAXIN ),
01080      $                   NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
01081      $                   PVAL( MAXIN )
01082       INTEGER            INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
01083      $                   ISHFTS( MAXIN ), IACC22( MAXIN )
01084       DOUBLE PRECISION   ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ),
01085      $                   RESULT( 500 ), RWORK( LWORK ), S( NMAX*NMAX )
01086       COMPLEX*16         A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ),
01087      $                   C( NCMAX*NCMAX, NCMAX*NCMAX ), DC( NMAX, 6 ),
01088      $                   TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ),
01089      $                   X( 5*NMAX )
01090 *     ..
01091 *     .. External Functions ..
01092       LOGICAL            LSAMEN
01093       DOUBLE PRECISION   DLAMCH, DSECND
01094       EXTERNAL           LSAMEN, DLAMCH, DSECND
01095 *     ..
01096 *     .. External Subroutines ..
01097       EXTERNAL           ALAREQ, XLAENV, ZCHKBB, ZCHKBD, ZCHKBK, ZCHKBL,
01098      $                   ZCHKEC, ZCHKGG, ZCHKGK, ZCHKGL, ZCHKHB, ZCHKHS,
01099      $                   ZCHKST, ZCKCSD, ZCKGLM, ZCKGQR, ZCKGSV, ZCKLSE,
01100      $                   ZDRGES, ZDRGEV, ZDRGSX, ZDRGVX, ZDRVBD, ZDRVES,
01101      $                   ZDRVEV, ZDRVGG, ZDRVSG, ZDRVST, ZDRVSX, ZDRVVX,
01102      $                   ZERRBD, ZERRED, ZERRGG, ZERRHS, ZERRST, ILAVER
01103 *     ..
01104 *     .. Intrinsic Functions ..
01105       INTRINSIC          LEN, MIN
01106 *     ..
01107 *     .. Scalars in Common ..
01108       LOGICAL            LERR, OK
01109       CHARACTER*32       SRNAMT
01110       INTEGER            INFOT, MAXB, NPROC, NSHIFT, NUNIT, SELDIM,
01111      $                   SELOPT
01112 *     ..
01113 *     .. Arrays in Common ..
01114       LOGICAL            SELVAL( 20 )
01115       INTEGER            IPARMS( 100 )
01116       DOUBLE PRECISION   SELWI( 20 ), SELWR( 20 )
01117 *     ..
01118 *     .. Common blocks ..
01119       COMMON             / CENVIR / NPROC, NSHIFT, MAXB
01120       COMMON             / INFOC / INFOT, NUNIT, OK, LERR
01121       COMMON             / SRNAMC / SRNAMT
01122       COMMON             / SSLCT / SELOPT, SELDIM, SELVAL, SELWR, SELWI
01123       COMMON             / CLAENV / IPARMS
01124 *     ..
01125 *     .. Data statements ..
01126       DATA               INTSTR / '0123456789' /
01127       DATA               IOLDSD / 0, 0, 0, 1 /
01128 *     ..
01129 *     .. Executable Statements ..
01130 *
01131       S1 = DSECND( )
01132       FATAL = .FALSE.
01133       NUNIT = NOUT
01134 *
01135 *     Return to here to read multiple sets of data
01136 *
01137    10 CONTINUE
01138 *
01139 *     Read the first line and set the 3-character test path
01140 *
01141       READ( NIN, FMT = '(A80)', END = 380 )LINE
01142       PATH = LINE( 1: 3 )
01143       NEP = LSAMEN( 3, PATH, 'NEP' ) .OR. LSAMEN( 3, PATH, 'ZHS' )
01144       SEP = LSAMEN( 3, PATH, 'SEP' ) .OR. LSAMEN( 3, PATH, 'ZST' ) .OR.
01145      $      LSAMEN( 3, PATH, 'ZSG' )
01146       SVD = LSAMEN( 3, PATH, 'SVD' ) .OR. LSAMEN( 3, PATH, 'ZBD' )
01147       ZEV = LSAMEN( 3, PATH, 'ZEV' )
01148       ZES = LSAMEN( 3, PATH, 'ZES' )
01149       ZVX = LSAMEN( 3, PATH, 'ZVX' )
01150       ZSX = LSAMEN( 3, PATH, 'ZSX' )
01151       ZGG = LSAMEN( 3, PATH, 'ZGG' )
01152       ZGS = LSAMEN( 3, PATH, 'ZGS' )
01153       ZGX = LSAMEN( 3, PATH, 'ZGX' )
01154       ZGV = LSAMEN( 3, PATH, 'ZGV' )
01155       ZXV = LSAMEN( 3, PATH, 'ZXV' )
01156       ZHB = LSAMEN( 3, PATH, 'ZHB' )
01157       ZBB = LSAMEN( 3, PATH, 'ZBB' )
01158       GLM = LSAMEN( 3, PATH, 'GLM' )
01159       GQR = LSAMEN( 3, PATH, 'GQR' ) .OR. LSAMEN( 3, PATH, 'GRQ' )
01160       GSV = LSAMEN( 3, PATH, 'GSV' )
01161       CSD = LSAMEN( 3, PATH, 'CSD' )
01162       LSE = LSAMEN( 3, PATH, 'LSE' )
01163       ZBL = LSAMEN( 3, PATH, 'ZBL' )
01164       ZBK = LSAMEN( 3, PATH, 'ZBK' )
01165       ZGL = LSAMEN( 3, PATH, 'ZGL' )
01166       ZGK = LSAMEN( 3, PATH, 'ZGK' )
01167 *
01168 *     Report values of parameters.
01169 *
01170       IF( PATH.EQ.'   ' ) THEN
01171          GO TO 10
01172       ELSE IF( NEP ) THEN
01173          WRITE( NOUT, FMT = 9987 )
01174       ELSE IF( SEP ) THEN
01175          WRITE( NOUT, FMT = 9986 )
01176       ELSE IF( SVD ) THEN
01177          WRITE( NOUT, FMT = 9985 )
01178       ELSE IF( ZEV ) THEN
01179          WRITE( NOUT, FMT = 9979 )
01180       ELSE IF( ZES ) THEN
01181          WRITE( NOUT, FMT = 9978 )
01182       ELSE IF( ZVX ) THEN
01183          WRITE( NOUT, FMT = 9977 )
01184       ELSE IF( ZSX ) THEN
01185          WRITE( NOUT, FMT = 9976 )
01186       ELSE IF( ZGG ) THEN
01187          WRITE( NOUT, FMT = 9975 )
01188       ELSE IF( ZGS ) THEN
01189          WRITE( NOUT, FMT = 9964 )
01190       ELSE IF( ZGX ) THEN
01191          WRITE( NOUT, FMT = 9965 )
01192       ELSE IF( ZGV ) THEN
01193          WRITE( NOUT, FMT = 9963 )
01194       ELSE IF( ZXV ) THEN
01195          WRITE( NOUT, FMT = 9962 )
01196       ELSE IF( ZHB ) THEN
01197          WRITE( NOUT, FMT = 9974 )
01198       ELSE IF( ZBB ) THEN
01199          WRITE( NOUT, FMT = 9967 )
01200       ELSE IF( GLM ) THEN
01201          WRITE( NOUT, FMT = 9971 )
01202       ELSE IF( GQR ) THEN
01203          WRITE( NOUT, FMT = 9970 )
01204       ELSE IF( GSV ) THEN
01205          WRITE( NOUT, FMT = 9969 )
01206       ELSE IF( CSD ) THEN
01207          WRITE( NOUT, FMT = 9960 )
01208       ELSE IF( LSE ) THEN
01209          WRITE( NOUT, FMT = 9968 )
01210       ELSE IF( ZBL ) THEN
01211 *
01212 *        ZGEBAL:  Balancing
01213 *
01214          CALL ZCHKBL( NIN, NOUT )
01215          GO TO 380
01216       ELSE IF( ZBK ) THEN
01217 *
01218 *        ZGEBAK:  Back transformation
01219 *
01220          CALL ZCHKBK( NIN, NOUT )
01221          GO TO 380
01222       ELSE IF( ZGL ) THEN
01223 *
01224 *        ZGGBAL:  Balancing
01225 *
01226          CALL ZCHKGL( NIN, NOUT )
01227          GO TO 380
01228       ELSE IF( ZGK ) THEN
01229 *
01230 *        ZGGBAK:  Back transformation
01231 *
01232          CALL ZCHKGK( NIN, NOUT )
01233          GO TO 380
01234       ELSE IF( LSAMEN( 3, PATH, 'ZEC' ) ) THEN
01235 *
01236 *        ZEC:  Eigencondition estimation
01237 *
01238          READ( NIN, FMT = * )THRESH
01239          CALL XLAENV( 1, 1 )
01240          CALL XLAENV( 12, 1 )
01241          TSTERR = .TRUE.
01242          CALL ZCHKEC( THRESH, TSTERR, NIN, NOUT )
01243          GO TO 380
01244       ELSE
01245          WRITE( NOUT, FMT = 9992 )PATH
01246          GO TO 380
01247       END IF
01248       CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
01249       WRITE( NOUT, FMT = 9972 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
01250       WRITE( NOUT, FMT = 9984 )
01251 *
01252 *     Read the number of values of M, P, and N.
01253 *
01254       READ( NIN, FMT = * )NN
01255       IF( NN.LT.0 ) THEN
01256          WRITE( NOUT, FMT = 9989 )'   NN ', NN, 1
01257          NN = 0
01258          FATAL = .TRUE.
01259       ELSE IF( NN.GT.MAXIN ) THEN
01260          WRITE( NOUT, FMT = 9988 )'   NN ', NN, MAXIN
01261          NN = 0
01262          FATAL = .TRUE.
01263       END IF
01264 *
01265 *     Read the values of M
01266 *
01267       IF( .NOT.( ZGX .OR. ZXV ) ) THEN
01268          READ( NIN, FMT = * )( MVAL( I ), I = 1, NN )
01269          IF( SVD ) THEN
01270             VNAME = '    M '
01271          ELSE
01272             VNAME = '    N '
01273          END IF
01274          DO 20 I = 1, NN
01275             IF( MVAL( I ).LT.0 ) THEN
01276                WRITE( NOUT, FMT = 9989 )VNAME, MVAL( I ), 0
01277                FATAL = .TRUE.
01278             ELSE IF( MVAL( I ).GT.NMAX ) THEN
01279                WRITE( NOUT, FMT = 9988 )VNAME, MVAL( I ), NMAX
01280                FATAL = .TRUE.
01281             END IF
01282    20    CONTINUE
01283          WRITE( NOUT, FMT = 9983 )'M:    ', ( MVAL( I ), I = 1, NN )
01284       END IF
01285 *
01286 *     Read the values of P
01287 *
01288       IF( GLM .OR. GQR .OR. GSV .OR. CSD .OR. LSE ) THEN
01289          READ( NIN, FMT = * )( PVAL( I ), I = 1, NN )
01290          DO 30 I = 1, NN
01291             IF( PVAL( I ).LT.0 ) THEN
01292                WRITE( NOUT, FMT = 9989 )' P  ', PVAL( I ), 0
01293                FATAL = .TRUE.
01294             ELSE IF( PVAL( I ).GT.NMAX ) THEN
01295                WRITE( NOUT, FMT = 9988 )' P  ', PVAL( I ), NMAX
01296                FATAL = .TRUE.
01297             END IF
01298    30    CONTINUE
01299          WRITE( NOUT, FMT = 9983 )'P:    ', ( PVAL( I ), I = 1, NN )
01300       END IF
01301 *
01302 *     Read the values of N
01303 *
01304       IF( SVD .OR. ZBB .OR. GLM .OR. GQR .OR. GSV .OR. CSD .OR.
01305      $    LSE ) THEN
01306          READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
01307          DO 40 I = 1, NN
01308             IF( NVAL( I ).LT.0 ) THEN
01309                WRITE( NOUT, FMT = 9989 )'    N ', NVAL( I ), 0
01310                FATAL = .TRUE.
01311             ELSE IF( NVAL( I ).GT.NMAX ) THEN
01312                WRITE( NOUT, FMT = 9988 )'    N ', NVAL( I ), NMAX
01313                FATAL = .TRUE.
01314             END IF
01315    40    CONTINUE
01316       ELSE
01317          DO 50 I = 1, NN
01318             NVAL( I ) = MVAL( I )
01319    50    CONTINUE
01320       END IF
01321       IF( .NOT.( ZGX .OR. ZXV ) ) THEN
01322          WRITE( NOUT, FMT = 9983 )'N:    ', ( NVAL( I ), I = 1, NN )
01323       ELSE
01324          WRITE( NOUT, FMT = 9983 )'N:    ', NN
01325       END IF
01326 *
01327 *     Read the number of values of K, followed by the values of K
01328 *
01329       IF( ZHB .OR. ZBB ) THEN
01330          READ( NIN, FMT = * )NK
01331          READ( NIN, FMT = * )( KVAL( I ), I = 1, NK )
01332          DO 60 I = 1, NK
01333             IF( KVAL( I ).LT.0 ) THEN
01334                WRITE( NOUT, FMT = 9989 )'    K ', KVAL( I ), 0
01335                FATAL = .TRUE.
01336             ELSE IF( KVAL( I ).GT.NMAX ) THEN
01337                WRITE( NOUT, FMT = 9988 )'    K ', KVAL( I ), NMAX
01338                FATAL = .TRUE.
01339             END IF
01340    60    CONTINUE
01341          WRITE( NOUT, FMT = 9983 )'K:    ', ( KVAL( I ), I = 1, NK )
01342       END IF
01343 *
01344       IF( ZEV .OR. ZES .OR. ZVX .OR. ZSX ) THEN
01345 *
01346 *        For the nonsymmetric QR driver routines, only one set of
01347 *        parameters is allowed.
01348 *
01349          READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ),
01350      $      INMIN( 1 ), INWIN( 1 ), INIBL(1), ISHFTS(1), IACC22(1)
01351          IF( NBVAL( 1 ).LT.1 ) THEN
01352             WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( 1 ), 1
01353             FATAL = .TRUE.
01354          ELSE IF( NBMIN( 1 ).LT.1 ) THEN
01355             WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1
01356             FATAL = .TRUE.
01357          ELSE IF( NXVAL( 1 ).LT.1 ) THEN
01358             WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( 1 ), 1
01359             FATAL = .TRUE.
01360          ELSE IF( INMIN( 1 ).LT.1 ) THEN
01361             WRITE( NOUT, FMT = 9989 )'   INMIN ', INMIN( 1 ), 1
01362             FATAL = .TRUE.
01363          ELSE IF( INWIN( 1 ).LT.1 ) THEN
01364             WRITE( NOUT, FMT = 9989 )'   INWIN ', INWIN( 1 ), 1
01365             FATAL = .TRUE.
01366          ELSE IF( INIBL( 1 ).LT.1 ) THEN
01367             WRITE( NOUT, FMT = 9989 )'   INIBL ', INIBL( 1 ), 1
01368             FATAL = .TRUE.
01369          ELSE IF( ISHFTS( 1 ).LT.1 ) THEN
01370             WRITE( NOUT, FMT = 9989 )'   ISHFTS ', ISHFTS( 1 ), 1
01371             FATAL = .TRUE.
01372          ELSE IF( IACC22( 1 ).LT.0 ) THEN
01373             WRITE( NOUT, FMT = 9989 )'   IACC22 ', IACC22( 1 ), 0
01374             FATAL = .TRUE.
01375          END IF
01376          CALL XLAENV( 1, NBVAL( 1 ) )
01377          CALL XLAENV( 2, NBMIN( 1 ) )
01378          CALL XLAENV( 3, NXVAL( 1 ) )
01379          CALL XLAENV(12, MAX( 11, INMIN( 1 ) ) )
01380          CALL XLAENV(13, INWIN( 1 ) )
01381          CALL XLAENV(14, INIBL( 1 ) )
01382          CALL XLAENV(15, ISHFTS( 1 ) )
01383          CALL XLAENV(16, IACC22( 1 ) )
01384          WRITE( NOUT, FMT = 9983 )'NB:   ', NBVAL( 1 )
01385          WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 )
01386          WRITE( NOUT, FMT = 9983 )'NX:   ', NXVAL( 1 )
01387          WRITE( NOUT, FMT = 9983 )'INMIN:   ', INMIN( 1 )
01388          WRITE( NOUT, FMT = 9983 )'INWIN: ', INWIN( 1 )
01389          WRITE( NOUT, FMT = 9983 )'INIBL: ', INIBL( 1 )
01390          WRITE( NOUT, FMT = 9983 )'ISHFTS: ', ISHFTS( 1 )
01391          WRITE( NOUT, FMT = 9983 )'IACC22: ', IACC22( 1 )
01392 *
01393       ELSE IF( ZGS .OR. ZGX .OR. ZGV .OR. ZXV ) THEN
01394 *
01395 *        For the nonsymmetric generalized driver routines, only one set of
01396 *        parameters is allowed.
01397 *
01398          READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ),
01399      $      NSVAL( 1 ), MXBVAL( 1 )
01400          IF( NBVAL( 1 ).LT.1 ) THEN
01401             WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( 1 ), 1
01402             FATAL = .TRUE.
01403          ELSE IF( NBMIN( 1 ).LT.1 ) THEN
01404             WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1
01405             FATAL = .TRUE.
01406          ELSE IF( NXVAL( 1 ).LT.1 ) THEN
01407             WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( 1 ), 1
01408             FATAL = .TRUE.
01409          ELSE IF( NSVAL( 1 ).LT.2 ) THEN
01410             WRITE( NOUT, FMT = 9989 )'   NS ', NSVAL( 1 ), 2
01411             FATAL = .TRUE.
01412          ELSE IF( MXBVAL( 1 ).LT.1 ) THEN
01413             WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( 1 ), 1
01414             FATAL = .TRUE.
01415          END IF
01416          CALL XLAENV( 1, NBVAL( 1 ) )
01417          CALL XLAENV( 2, NBMIN( 1 ) )
01418          CALL XLAENV( 3, NXVAL( 1 ) )
01419          CALL XLAENV( 4, NSVAL( 1 ) )
01420          CALL XLAENV( 8, MXBVAL( 1 ) )
01421          WRITE( NOUT, FMT = 9983 )'NB:   ', NBVAL( 1 )
01422          WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 )
01423          WRITE( NOUT, FMT = 9983 )'NX:   ', NXVAL( 1 )
01424          WRITE( NOUT, FMT = 9983 )'NS:   ', NSVAL( 1 )
01425          WRITE( NOUT, FMT = 9983 )'MAXB: ', MXBVAL( 1 )
01426       ELSE IF( .NOT.ZHB .AND. .NOT.GLM .AND. .NOT.GQR .AND. .NOT.
01427      $         GSV .AND. .NOT.CSD .AND. .NOT.LSE ) THEN
01428 *
01429 *        For the other paths, the number of parameters can be varied
01430 *        from the input file.  Read the number of parameter values.
01431 *
01432          READ( NIN, FMT = * )NPARMS
01433          IF( NPARMS.LT.1 ) THEN
01434             WRITE( NOUT, FMT = 9989 )'NPARMS', NPARMS, 1
01435             NPARMS = 0
01436             FATAL = .TRUE.
01437          ELSE IF( NPARMS.GT.MAXIN ) THEN
01438             WRITE( NOUT, FMT = 9988 )'NPARMS', NPARMS, MAXIN
01439             NPARMS = 0
01440             FATAL = .TRUE.
01441          END IF
01442 *
01443 *        Read the values of NB
01444 *
01445          IF( .NOT.ZBB ) THEN
01446             READ( NIN, FMT = * )( NBVAL( I ), I = 1, NPARMS )
01447             DO 70 I = 1, NPARMS
01448                IF( NBVAL( I ).LT.0 ) THEN
01449                   WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( I ), 0
01450                   FATAL = .TRUE.
01451                ELSE IF( NBVAL( I ).GT.NMAX ) THEN
01452                   WRITE( NOUT, FMT = 9988 )'   NB ', NBVAL( I ), NMAX
01453                   FATAL = .TRUE.
01454                END IF
01455    70       CONTINUE
01456             WRITE( NOUT, FMT = 9983 )'NB:   ',
01457      $         ( NBVAL( I ), I = 1, NPARMS )
01458          END IF
01459 *
01460 *        Read the values of NBMIN
01461 *
01462          IF( NEP .OR. SEP .OR. SVD .OR. ZGG ) THEN
01463             READ( NIN, FMT = * )( NBMIN( I ), I = 1, NPARMS )
01464             DO 80 I = 1, NPARMS
01465                IF( NBMIN( I ).LT.0 ) THEN
01466                   WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( I ), 0
01467                   FATAL = .TRUE.
01468                ELSE IF( NBMIN( I ).GT.NMAX ) THEN
01469                   WRITE( NOUT, FMT = 9988 )'NBMIN ', NBMIN( I ), NMAX
01470                   FATAL = .TRUE.
01471                END IF
01472    80       CONTINUE
01473             WRITE( NOUT, FMT = 9983 )'NBMIN:',
01474      $         ( NBMIN( I ), I = 1, NPARMS )
01475          ELSE
01476             DO 90 I = 1, NPARMS
01477                NBMIN( I ) = 1
01478    90       CONTINUE
01479          END IF
01480 *
01481 *        Read the values of NX
01482 *
01483          IF( NEP .OR. SEP .OR. SVD ) THEN
01484             READ( NIN, FMT = * )( NXVAL( I ), I = 1, NPARMS )
01485             DO 100 I = 1, NPARMS
01486                IF( NXVAL( I ).LT.0 ) THEN
01487                   WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( I ), 0
01488                   FATAL = .TRUE.
01489                ELSE IF( NXVAL( I ).GT.NMAX ) THEN
01490                   WRITE( NOUT, FMT = 9988 )'   NX ', NXVAL( I ), NMAX
01491                   FATAL = .TRUE.
01492                END IF
01493   100       CONTINUE
01494             WRITE( NOUT, FMT = 9983 )'NX:   ',
01495      $         ( NXVAL( I ), I = 1, NPARMS )
01496          ELSE
01497             DO 110 I = 1, NPARMS
01498                NXVAL( I ) = 1
01499   110       CONTINUE
01500          END IF
01501 *
01502 *        Read the values of NSHIFT (if ZGG) or NRHS (if SVD
01503 *        or ZBB).
01504 *
01505          IF( SVD .OR. ZBB .OR. ZGG ) THEN
01506             READ( NIN, FMT = * )( NSVAL( I ), I = 1, NPARMS )
01507             DO 120 I = 1, NPARMS
01508                IF( NSVAL( I ).LT.0 ) THEN
01509                   WRITE( NOUT, FMT = 9989 )'   NS ', NSVAL( I ), 0
01510                   FATAL = .TRUE.
01511                ELSE IF( NSVAL( I ).GT.NMAX ) THEN
01512                   WRITE( NOUT, FMT = 9988 )'   NS ', NSVAL( I ), NMAX
01513                   FATAL = .TRUE.
01514                END IF
01515   120       CONTINUE
01516             WRITE( NOUT, FMT = 9983 )'NS:   ',
01517      $         ( NSVAL( I ), I = 1, NPARMS )
01518          ELSE
01519             DO 130 I = 1, NPARMS
01520                NSVAL( I ) = 1
01521   130       CONTINUE
01522          END IF
01523 *
01524 *        Read the values for MAXB.
01525 *
01526          IF( ZGG ) THEN
01527             READ( NIN, FMT = * )( MXBVAL( I ), I = 1, NPARMS )
01528             DO 140 I = 1, NPARMS
01529                IF( MXBVAL( I ).LT.0 ) THEN
01530                   WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( I ), 0
01531                   FATAL = .TRUE.
01532                ELSE IF( MXBVAL( I ).GT.NMAX ) THEN
01533                   WRITE( NOUT, FMT = 9988 )' MAXB ', MXBVAL( I ), NMAX
01534                   FATAL = .TRUE.
01535                END IF
01536   140       CONTINUE
01537             WRITE( NOUT, FMT = 9983 )'MAXB: ',
01538      $         ( MXBVAL( I ), I = 1, NPARMS )
01539          ELSE
01540             DO 150 I = 1, NPARMS
01541                MXBVAL( I ) = 1
01542   150       CONTINUE
01543          END IF
01544 *
01545 *        Read the values for INMIN.
01546 *
01547          IF( NEP ) THEN
01548             READ( NIN, FMT = * )( INMIN( I ), I = 1, NPARMS )
01549             DO 540 I = 1, NPARMS
01550                IF( INMIN( I ).LT.0 ) THEN
01551                   WRITE( NOUT, FMT = 9989 )' INMIN ', INMIN( I ), 0
01552                   FATAL = .TRUE.
01553                END IF
01554   540       CONTINUE
01555             WRITE( NOUT, FMT = 9983 )'INMIN: ',
01556      $         ( INMIN( I ), I = 1, NPARMS )
01557          ELSE
01558             DO 550 I = 1, NPARMS
01559                INMIN( I ) = 1
01560   550       CONTINUE
01561          END IF
01562 *
01563 *        Read the values for INWIN.
01564 *
01565          IF( NEP ) THEN
01566             READ( NIN, FMT = * )( INWIN( I ), I = 1, NPARMS )
01567             DO 560 I = 1, NPARMS
01568                IF( INWIN( I ).LT.0 ) THEN
01569                   WRITE( NOUT, FMT = 9989 )' INWIN ', INWIN( I ), 0
01570                   FATAL = .TRUE.
01571                END IF
01572   560       CONTINUE
01573             WRITE( NOUT, FMT = 9983 )'INWIN: ',
01574      $         ( INWIN( I ), I = 1, NPARMS )
01575          ELSE
01576             DO 570 I = 1, NPARMS
01577                INWIN( I ) = 1
01578   570       CONTINUE
01579          END IF
01580 *
01581 *        Read the values for INIBL.
01582 *
01583          IF( NEP ) THEN
01584             READ( NIN, FMT = * )( INIBL( I ), I = 1, NPARMS )
01585             DO 580 I = 1, NPARMS
01586                IF( INIBL( I ).LT.0 ) THEN
01587                   WRITE( NOUT, FMT = 9989 )' INIBL ', INIBL( I ), 0
01588                   FATAL = .TRUE.
01589                END IF
01590   580       CONTINUE
01591             WRITE( NOUT, FMT = 9983 )'INIBL: ',
01592      $         ( INIBL( I ), I = 1, NPARMS )
01593          ELSE
01594             DO 590 I = 1, NPARMS
01595                INIBL( I ) = 1
01596   590       CONTINUE
01597          END IF
01598 *
01599 *        Read the values for ISHFTS.
01600 *
01601          IF( NEP ) THEN
01602             READ( NIN, FMT = * )( ISHFTS( I ), I = 1, NPARMS )
01603             DO 600 I = 1, NPARMS
01604                IF( ISHFTS( I ).LT.0 ) THEN
01605                   WRITE( NOUT, FMT = 9989 )' ISHFTS ', ISHFTS( I ), 0
01606                   FATAL = .TRUE.
01607                END IF
01608   600       CONTINUE
01609             WRITE( NOUT, FMT = 9983 )'ISHFTS: ',
01610      $         ( ISHFTS( I ), I = 1, NPARMS )
01611          ELSE
01612             DO 610 I = 1, NPARMS
01613                ISHFTS( I ) = 1
01614   610       CONTINUE
01615          END IF
01616 *
01617 *        Read the values for IACC22.
01618 *
01619          IF( NEP ) THEN
01620             READ( NIN, FMT = * )( IACC22( I ), I = 1, NPARMS )
01621             DO 620 I = 1, NPARMS
01622                IF( IACC22( I ).LT.0 ) THEN
01623                   WRITE( NOUT, FMT = 9989 )' IACC22 ', IACC22( I ), 0
01624                   FATAL = .TRUE.
01625                END IF
01626   620       CONTINUE
01627             WRITE( NOUT, FMT = 9983 )'IACC22: ',
01628      $         ( IACC22( I ), I = 1, NPARMS )
01629          ELSE
01630             DO 630 I = 1, NPARMS
01631                IACC22( I ) = 1
01632   630       CONTINUE
01633          END IF
01634 *
01635 *        Read the values for NBCOL.
01636 *
01637          IF( ZGG ) THEN
01638             READ( NIN, FMT = * )( NBCOL( I ), I = 1, NPARMS )
01639             DO 160 I = 1, NPARMS
01640                IF( NBCOL( I ).LT.0 ) THEN
01641                   WRITE( NOUT, FMT = 9989 )'NBCOL ', NBCOL( I ), 0
01642                   FATAL = .TRUE.
01643                ELSE IF( NBCOL( I ).GT.NMAX ) THEN
01644                   WRITE( NOUT, FMT = 9988 )'NBCOL ', NBCOL( I ), NMAX
01645                   FATAL = .TRUE.
01646                END IF
01647   160       CONTINUE
01648             WRITE( NOUT, FMT = 9983 )'NBCOL:',
01649      $         ( NBCOL( I ), I = 1, NPARMS )
01650          ELSE
01651             DO 170 I = 1, NPARMS
01652                NBCOL( I ) = 1
01653   170       CONTINUE
01654          END IF
01655       END IF
01656 *
01657 *     Calculate and print the machine dependent constants.
01658 *
01659       WRITE( NOUT, FMT = * )
01660       EPS = DLAMCH( 'Underflow threshold' )
01661       WRITE( NOUT, FMT = 9981 )'underflow', EPS
01662       EPS = DLAMCH( 'Overflow threshold' )
01663       WRITE( NOUT, FMT = 9981 )'overflow ', EPS
01664       EPS = DLAMCH( 'Epsilon' )
01665       WRITE( NOUT, FMT = 9981 )'precision', EPS
01666 *
01667 *     Read the threshold value for the test ratios.
01668 *
01669       READ( NIN, FMT = * )THRESH
01670       WRITE( NOUT, FMT = 9982 )THRESH
01671       IF( SEP .OR. SVD .OR. ZGG ) THEN
01672 *
01673 *        Read the flag that indicates whether to test LAPACK routines.
01674 *
01675          READ( NIN, FMT = * )TSTCHK
01676 *
01677 *        Read the flag that indicates whether to test driver routines.
01678 *
01679          READ( NIN, FMT = * )TSTDRV
01680       END IF
01681 *
01682 *     Read the flag that indicates whether to test the error exits.
01683 *
01684       READ( NIN, FMT = * )TSTERR
01685 *
01686 *     Read the code describing how to set the random number seed.
01687 *
01688       READ( NIN, FMT = * )NEWSD
01689 *
01690 *     If NEWSD = 2, read another line with 4 integers for the seed.
01691 *
01692       IF( NEWSD.EQ.2 )
01693      $   READ( NIN, FMT = * )( IOLDSD( I ), I = 1, 4 )
01694 *
01695       DO 180 I = 1, 4
01696          ISEED( I ) = IOLDSD( I )
01697   180 CONTINUE
01698 *
01699       IF( FATAL ) THEN
01700          WRITE( NOUT, FMT = 9999 )
01701          STOP
01702       END IF
01703 *
01704 *     Read the input lines indicating the test path and its parameters.
01705 *     The first three characters indicate the test path, and the number
01706 *     of test matrix types must be the first nonblank item in columns
01707 *     4-80.
01708 *
01709   190 CONTINUE
01710 *
01711       IF( .NOT.( ZGX .OR. ZXV ) ) THEN
01712 *
01713   200    CONTINUE
01714          READ( NIN, FMT = '(A80)', END = 380 )LINE
01715          C3 = LINE( 1: 3 )
01716          LENP = LEN( LINE )
01717          I = 3
01718          ITMP = 0
01719          I1 = 0
01720   210    CONTINUE
01721          I = I + 1
01722          IF( I.GT.LENP ) THEN
01723             IF( I1.GT.0 ) THEN
01724                GO TO 240
01725             ELSE
01726                NTYPES = MAXT
01727                GO TO 240
01728             END IF
01729          END IF
01730          IF( LINE( I: I ).NE.' ' .AND. LINE( I: I ).NE.',' ) THEN
01731             I1 = I
01732             C1 = LINE( I1: I1 )
01733 *
01734 *        Check that a valid integer was read
01735 *
01736             DO 220 K = 1, 10
01737                IF( C1.EQ.INTSTR( K: K ) ) THEN
01738                   IC = K - 1
01739                   GO TO 230
01740                END IF
01741   220       CONTINUE
01742             WRITE( NOUT, FMT = 9991 )I, LINE
01743             GO TO 200
01744   230       CONTINUE
01745             ITMP = 10*ITMP + IC
01746             GO TO 210
01747          ELSE IF( I1.GT.0 ) THEN
01748             GO TO 240
01749          ELSE
01750             GO TO 210
01751          END IF
01752   240    CONTINUE
01753          NTYPES = ITMP
01754 *
01755 *     Skip the tests if NTYPES is <= 0.
01756 *
01757          IF( .NOT.( ZEV .OR. ZES .OR. ZVX .OR. ZSX .OR. ZGV .OR.
01758      $       ZGS ) .AND. NTYPES.LE.0 ) THEN
01759             WRITE( NOUT, FMT = 9990 )C3
01760             GO TO 200
01761          END IF
01762 *
01763       ELSE
01764          IF( ZGX )
01765      $      C3 = 'ZGX'
01766          IF( ZXV )
01767      $      C3 = 'ZXV'
01768       END IF
01769 *
01770 *     Reset the random number seed.
01771 *
01772       IF( NEWSD.EQ.0 ) THEN
01773          DO 250 K = 1, 4
01774             ISEED( K ) = IOLDSD( K )
01775   250    CONTINUE
01776       END IF
01777 *
01778       IF( LSAMEN( 3, C3, 'ZHS' ) .OR. LSAMEN( 3, C3, 'NEP' ) ) THEN
01779 *
01780 *        -------------------------------------
01781 *        NEP:  Nonsymmetric Eigenvalue Problem
01782 *        -------------------------------------
01783 *        Vary the parameters
01784 *           NB    = block size
01785 *           NBMIN = minimum block size
01786 *           NX    = crossover point
01787 *           NS    = number of shifts
01788 *           MAXB  = minimum submatrix size
01789 *
01790          MAXTYP = 21
01791          NTYPES = MIN( MAXTYP, NTYPES )
01792          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
01793          CALL XLAENV( 1, 1 )
01794          IF( TSTERR )
01795      $      CALL ZERRHS( 'ZHSEQR', NOUT )
01796          DO 270 I = 1, NPARMS
01797             CALL XLAENV( 1, NBVAL( I ) )
01798             CALL XLAENV( 2, NBMIN( I ) )
01799             CALL XLAENV( 3, NXVAL( I ) )
01800             CALL XLAENV(12, MAX( 11, INMIN( I ) ) )
01801             CALL XLAENV(13, INWIN( I ) )
01802             CALL XLAENV(14, INIBL( I ) )
01803             CALL XLAENV(15, ISHFTS( I ) )
01804             CALL XLAENV(16, IACC22( I ) )
01805 *
01806             IF( NEWSD.EQ.0 ) THEN
01807                DO 260 K = 1, 4
01808                   ISEED( K ) = IOLDSD( K )
01809   260          CONTINUE
01810             END IF
01811             WRITE( NOUT, FMT = 9961 )C3, NBVAL( I ), NBMIN( I ),
01812      $         NXVAL( I ), MAX( 11, INMIN(I)),
01813      $         INWIN( I ), INIBL( I ), ISHFTS( I ), IACC22( I )
01814             CALL ZCHKHS( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
01815      $                   A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ),
01816      $                   A( 1, 4 ), A( 1, 5 ), NMAX, A( 1, 6 ),
01817      $                   A( 1, 7 ), DC( 1, 1 ), DC( 1, 2 ), A( 1, 8 ),
01818      $                   A( 1, 9 ), A( 1, 10 ), A( 1, 11 ), A( 1, 12 ),
01819      $                   DC( 1, 3 ), WORK, LWORK, RWORK, IWORK, LOGWRK,
01820      $                   RESULT, INFO )
01821             IF( INFO.NE.0 )
01822      $         WRITE( NOUT, FMT = 9980 )'ZCHKHS', INFO
01823   270    CONTINUE
01824 *
01825       ELSE IF( LSAMEN( 3, C3, 'ZST' ) .OR. LSAMEN( 3, C3, 'SEP' ) ) THEN
01826 *
01827 *        ----------------------------------
01828 *        SEP:  Symmetric Eigenvalue Problem
01829 *        ----------------------------------
01830 *        Vary the parameters
01831 *           NB    = block size
01832 *           NBMIN = minimum block size
01833 *           NX    = crossover point
01834 *
01835          MAXTYP = 21
01836          NTYPES = MIN( MAXTYP, NTYPES )
01837          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
01838          CALL XLAENV( 1, 1 )
01839          CALL XLAENV( 9, 25 )
01840          IF( TSTERR )
01841      $      CALL ZERRST( 'ZST', NOUT )
01842          DO 290 I = 1, NPARMS
01843             CALL XLAENV( 1, NBVAL( I ) )
01844             CALL XLAENV( 2, NBMIN( I ) )
01845             CALL XLAENV( 3, NXVAL( I ) )
01846 *
01847             IF( NEWSD.EQ.0 ) THEN
01848                DO 280 K = 1, 4
01849                   ISEED( K ) = IOLDSD( K )
01850   280          CONTINUE
01851             END IF
01852             WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
01853      $         NXVAL( I )
01854             IF( TSTCHK ) THEN
01855                CALL ZCHKST( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
01856      $                      NOUT, A( 1, 1 ), NMAX, A( 1, 2 ),
01857      $                      DR( 1, 1 ), DR( 1, 2 ), DR( 1, 3 ),
01858      $                      DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ),
01859      $                      DR( 1, 7 ), DR( 1, 8 ), DR( 1, 9 ),
01860      $                      DR( 1, 10 ), DR( 1, 11 ), A( 1, 3 ), NMAX,
01861      $                      A( 1, 4 ), A( 1, 5 ), DC( 1, 1 ), A( 1, 6 ),
01862      $                      WORK, LWORK, RWORK, LWORK, IWORK, LIWORK,
01863      $                      RESULT, INFO )
01864                IF( INFO.NE.0 )
01865      $            WRITE( NOUT, FMT = 9980 )'ZCHKST', INFO
01866             END IF
01867             IF( TSTDRV ) THEN
01868                CALL ZDRVST( NN, NVAL, 18, DOTYPE, ISEED, THRESH, NOUT,
01869      $                      A( 1, 1 ), NMAX, DR( 1, 3 ), DR( 1, 4 ),
01870      $                      DR( 1, 5 ), DR( 1, 8 ), DR( 1, 9 ),
01871      $                      DR( 1, 10 ), A( 1, 2 ), NMAX, A( 1, 3 ),
01872      $                      DC( 1, 1 ), A( 1, 4 ), WORK, LWORK, RWORK,
01873      $                      LWORK, IWORK, LIWORK, RESULT, INFO )
01874                IF( INFO.NE.0 )
01875      $            WRITE( NOUT, FMT = 9980 )'ZDRVST', INFO
01876             END IF
01877   290    CONTINUE
01878 *
01879       ELSE IF( LSAMEN( 3, C3, 'ZSG' ) ) THEN
01880 *
01881 *        ----------------------------------------------
01882 *        ZSG:  Hermitian Generalized Eigenvalue Problem
01883 *        ----------------------------------------------
01884 *        Vary the parameters
01885 *           NB    = block size
01886 *           NBMIN = minimum block size
01887 *           NX    = crossover point
01888 *
01889          MAXTYP = 21
01890          NTYPES = MIN( MAXTYP, NTYPES )
01891          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
01892          CALL XLAENV( 9, 25 )
01893          DO 310 I = 1, NPARMS
01894             CALL XLAENV( 1, NBVAL( I ) )
01895             CALL XLAENV( 2, NBMIN( I ) )
01896             CALL XLAENV( 3, NXVAL( I ) )
01897 *
01898             IF( NEWSD.EQ.0 ) THEN
01899                DO 300 K = 1, 4
01900                   ISEED( K ) = IOLDSD( K )
01901   300          CONTINUE
01902             END IF
01903             WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
01904      $         NXVAL( I )
01905             IF( TSTCHK ) THEN
01906                CALL ZDRVSG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
01907      $                      NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX,
01908      $                      DR( 1, 3 ), A( 1, 3 ), NMAX, A( 1, 4 ),
01909      $                      A( 1, 5 ), A( 1, 6 ), A( 1, 7 ), WORK,
01910      $                      LWORK, RWORK, LWORK, IWORK, LIWORK, RESULT,
01911      $                      INFO )
01912                IF( INFO.NE.0 )
01913      $            WRITE( NOUT, FMT = 9980 )'ZDRVSG', INFO
01914             END IF
01915   310    CONTINUE
01916 *
01917       ELSE IF( LSAMEN( 3, C3, 'ZBD' ) .OR. LSAMEN( 3, C3, 'SVD' ) ) THEN
01918 *
01919 *        ----------------------------------
01920 *        SVD:  Singular Value Decomposition
01921 *        ----------------------------------
01922 *        Vary the parameters
01923 *           NB    = block size
01924 *           NBMIN = minimum block size
01925 *           NX    = crossover point
01926 *           NRHS  = number of right hand sides
01927 *
01928          MAXTYP = 16
01929          NTYPES = MIN( MAXTYP, NTYPES )
01930          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
01931          CALL XLAENV( 9, 25 )
01932 *
01933 *        Test the error exits
01934 *
01935          CALL XLAENV( 1, 1 )
01936          IF( TSTERR .AND. TSTCHK )
01937      $      CALL ZERRBD( 'ZBD', NOUT )
01938          IF( TSTERR .AND. TSTDRV )
01939      $      CALL ZERRED( 'ZBD', NOUT )
01940 *
01941          DO 330 I = 1, NPARMS
01942             NRHS = NSVAL( I )
01943             CALL XLAENV( 1, NBVAL( I ) )
01944             CALL XLAENV( 2, NBMIN( I ) )
01945             CALL XLAENV( 3, NXVAL( I ) )
01946             IF( NEWSD.EQ.0 ) THEN
01947                DO 320 K = 1, 4
01948                   ISEED( K ) = IOLDSD( K )
01949   320          CONTINUE
01950             END IF
01951             WRITE( NOUT, FMT = 9995 )C3, NBVAL( I ), NBMIN( I ),
01952      $         NXVAL( I ), NRHS
01953             IF( TSTCHK ) THEN
01954                CALL ZCHKBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, NRHS, ISEED,
01955      $                      THRESH, A( 1, 1 ), NMAX, DR( 1, 1 ),
01956      $                      DR( 1, 2 ), DR( 1, 3 ), DR( 1, 4 ),
01957      $                      A( 1, 2 ), NMAX, A( 1, 3 ), A( 1, 4 ),
01958      $                      A( 1, 5 ), NMAX, A( 1, 6 ), NMAX, A( 1, 7 ),
01959      $                      A( 1, 8 ), WORK, LWORK, RWORK, NOUT, INFO )
01960                IF( INFO.NE.0 )
01961      $            WRITE( NOUT, FMT = 9980 )'ZCHKBD', INFO
01962             END IF
01963             IF( TSTDRV )
01964      $         CALL ZDRVBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, ISEED,
01965      $                      THRESH, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX,
01966      $                      A( 1, 3 ), NMAX, A( 1, 4 ), A( 1, 5 ),
01967      $                      A( 1, 6 ), DR( 1, 1 ), DR( 1, 2 ),
01968      $                      DR( 1, 3 ), WORK, LWORK, RWORK, IWORK, NOUT,
01969      $                      INFO )
01970   330    CONTINUE
01971 *
01972       ELSE IF( LSAMEN( 3, C3, 'ZEV' ) ) THEN
01973 *
01974 *        --------------------------------------------
01975 *        ZEV:  Nonsymmetric Eigenvalue Problem Driver
01976 *              ZGEEV (eigenvalues and eigenvectors)
01977 *        --------------------------------------------
01978 *
01979          MAXTYP = 21
01980          NTYPES = MIN( MAXTYP, NTYPES )
01981          IF( NTYPES.LE.0 ) THEN
01982             WRITE( NOUT, FMT = 9990 )C3
01983          ELSE
01984             IF( TSTERR )
01985      $         CALL ZERRED( C3, NOUT )
01986             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
01987             CALL ZDRVEV( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT,
01988      $                   A( 1, 1 ), NMAX, A( 1, 2 ), DC( 1, 1 ),
01989      $                   DC( 1, 2 ), A( 1, 3 ), NMAX, A( 1, 4 ), NMAX,
01990      $                   A( 1, 5 ), NMAX, RESULT, WORK, LWORK, RWORK,
01991      $                   IWORK, INFO )
01992             IF( INFO.NE.0 )
01993      $         WRITE( NOUT, FMT = 9980 )'ZGEEV', INFO
01994          END IF
01995          WRITE( NOUT, FMT = 9973 )
01996          GO TO 10
01997 *
01998       ELSE IF( LSAMEN( 3, C3, 'ZES' ) ) THEN
01999 *
02000 *        --------------------------------------------
02001 *        ZES:  Nonsymmetric Eigenvalue Problem Driver
02002 *              ZGEES (Schur form)
02003 *        --------------------------------------------
02004 *
02005          MAXTYP = 21
02006          NTYPES = MIN( MAXTYP, NTYPES )
02007          IF( NTYPES.LE.0 ) THEN
02008             WRITE( NOUT, FMT = 9990 )C3
02009          ELSE
02010             IF( TSTERR )
02011      $         CALL ZERRED( C3, NOUT )
02012             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02013             CALL ZDRVES( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT,
02014      $                   A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ),
02015      $                   DC( 1, 1 ), DC( 1, 2 ), A( 1, 4 ), NMAX,
02016      $                   RESULT, WORK, LWORK, RWORK, IWORK, LOGWRK,
02017      $                   INFO )
02018             IF( INFO.NE.0 )
02019      $         WRITE( NOUT, FMT = 9980 )'ZGEES', INFO
02020          END IF
02021          WRITE( NOUT, FMT = 9973 )
02022          GO TO 10
02023 *
02024       ELSE IF( LSAMEN( 3, C3, 'ZVX' ) ) THEN
02025 *
02026 *        --------------------------------------------------------------
02027 *        ZVX:  Nonsymmetric Eigenvalue Problem Expert Driver
02028 *              ZGEEVX (eigenvalues, eigenvectors and condition numbers)
02029 *        --------------------------------------------------------------
02030 *
02031          MAXTYP = 21
02032          NTYPES = MIN( MAXTYP, NTYPES )
02033          IF( NTYPES.LT.0 ) THEN
02034             WRITE( NOUT, FMT = 9990 )C3
02035          ELSE
02036             IF( TSTERR )
02037      $         CALL ZERRED( C3, NOUT )
02038             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02039             CALL ZDRVVX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN,
02040      $                   NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), DC( 1, 1 ),
02041      $                   DC( 1, 2 ), A( 1, 3 ), NMAX, A( 1, 4 ), NMAX,
02042      $                   A( 1, 5 ), NMAX, DR( 1, 1 ), DR( 1, 2 ),
02043      $                   DR( 1, 3 ), DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ),
02044      $                   DR( 1, 7 ), DR( 1, 8 ), RESULT, WORK, LWORK,
02045      $                   RWORK, INFO )
02046             IF( INFO.NE.0 )
02047      $         WRITE( NOUT, FMT = 9980 )'ZGEEVX', INFO
02048          END IF
02049          WRITE( NOUT, FMT = 9973 )
02050          GO TO 10
02051 *
02052       ELSE IF( LSAMEN( 3, C3, 'ZSX' ) ) THEN
02053 *
02054 *        ---------------------------------------------------
02055 *        ZSX:  Nonsymmetric Eigenvalue Problem Expert Driver
02056 *              ZGEESX (Schur form and condition numbers)
02057 *        ---------------------------------------------------
02058 *
02059          MAXTYP = 21
02060          NTYPES = MIN( MAXTYP, NTYPES )
02061          IF( NTYPES.LT.0 ) THEN
02062             WRITE( NOUT, FMT = 9990 )C3
02063          ELSE
02064             IF( TSTERR )
02065      $         CALL ZERRED( C3, NOUT )
02066             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02067             CALL ZDRVSX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN,
02068      $                   NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ),
02069      $                   DC( 1, 1 ), DC( 1, 2 ), DC( 1, 3 ), A( 1, 4 ),
02070      $                   NMAX, A( 1, 5 ), RESULT, WORK, LWORK, RWORK,
02071      $                   LOGWRK, INFO )
02072             IF( INFO.NE.0 )
02073      $         WRITE( NOUT, FMT = 9980 )'ZGEESX', INFO
02074          END IF
02075          WRITE( NOUT, FMT = 9973 )
02076          GO TO 10
02077 *
02078       ELSE IF( LSAMEN( 3, C3, 'ZGG' ) ) THEN
02079 *
02080 *        -------------------------------------------------
02081 *        ZGG:  Generalized Nonsymmetric Eigenvalue Problem
02082 *        -------------------------------------------------
02083 *        Vary the parameters
02084 *           NB    = block size
02085 *           NBMIN = minimum block size
02086 *           NS    = number of shifts
02087 *           MAXB  = minimum submatrix size
02088 *           NBCOL = minimum column dimension for blocks
02089 *
02090          MAXTYP = 26
02091          NTYPES = MIN( MAXTYP, NTYPES )
02092          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02093          IF( TSTCHK .AND. TSTERR )
02094      $      CALL ZERRGG( C3, NOUT )
02095          DO 350 I = 1, NPARMS
02096             CALL XLAENV( 1, NBVAL( I ) )
02097             CALL XLAENV( 2, NBMIN( I ) )
02098             CALL XLAENV( 4, NSVAL( I ) )
02099             CALL XLAENV( 8, MXBVAL( I ) )
02100             CALL XLAENV( 5, NBCOL( I ) )
02101 *
02102             IF( NEWSD.EQ.0 ) THEN
02103                DO 340 K = 1, 4
02104                   ISEED( K ) = IOLDSD( K )
02105   340          CONTINUE
02106             END IF
02107             WRITE( NOUT, FMT = 9996 )C3, NBVAL( I ), NBMIN( I ),
02108      $         NSVAL( I ), MXBVAL( I ), NBCOL( I )
02109             TSTDIF = .FALSE.
02110             THRSHN = 10.D0
02111             IF( TSTCHK ) THEN
02112                CALL ZCHKGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
02113      $                      TSTDIF, THRSHN, NOUT, A( 1, 1 ), NMAX,
02114      $                      A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
02115      $                      A( 1, 6 ), A( 1, 7 ), A( 1, 8 ), A( 1, 9 ),
02116      $                      NMAX, A( 1, 10 ), A( 1, 11 ), A( 1, 12 ),
02117      $                      DC( 1, 1 ), DC( 1, 2 ), DC( 1, 3 ),
02118      $                      DC( 1, 4 ), A( 1, 13 ), A( 1, 14 ), WORK,
02119      $                      LWORK, RWORK, LOGWRK, RESULT, INFO )
02120                IF( INFO.NE.0 )
02121      $            WRITE( NOUT, FMT = 9980 )'ZCHKGG', INFO
02122             END IF
02123             CALL XLAENV( 1, 1 )
02124             IF( TSTDRV ) THEN
02125                CALL ZDRVGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
02126      $                      THRSHN, NOUT, A( 1, 1 ), NMAX, A( 1, 2 ),
02127      $                      A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), A( 1, 6 ),
02128      $                      A( 1, 7 ), NMAX, A( 1, 8 ), DC( 1, 1 ),
02129      $                      DC( 1, 2 ), DC( 1, 3 ), DC( 1, 4 ),
02130      $                      A( 1, 8 ), A( 1, 9 ), WORK, LWORK, RWORK,
02131      $                      RESULT, INFO )
02132                IF( INFO.NE.0 )
02133      $            WRITE( NOUT, FMT = 9980 )'ZDRVGG', INFO
02134             END IF
02135   350    CONTINUE
02136 *
02137       ELSE IF( LSAMEN( 3, C3, 'ZGS' ) ) THEN
02138 *
02139 *        -------------------------------------------------
02140 *        ZGS:  Generalized Nonsymmetric Eigenvalue Problem
02141 *              ZGGES (Schur form)
02142 *        -------------------------------------------------
02143 *
02144          MAXTYP = 26
02145          NTYPES = MIN( MAXTYP, NTYPES )
02146          IF( NTYPES.LE.0 ) THEN
02147             WRITE( NOUT, FMT = 9990 )C3
02148          ELSE
02149             IF( TSTERR )
02150      $         CALL ZERRGG( C3, NOUT )
02151             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02152             CALL ZDRGES( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
02153      $                   A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ),
02154      $                   A( 1, 4 ), A( 1, 7 ), NMAX, A( 1, 8 ),
02155      $                   DC( 1, 1 ), DC( 1, 2 ), WORK, LWORK, RWORK,
02156      $                   RESULT, LOGWRK, INFO )
02157 *
02158             IF( INFO.NE.0 )
02159      $         WRITE( NOUT, FMT = 9980 )'ZDRGES', INFO
02160          END IF
02161          WRITE( NOUT, FMT = 9973 )
02162          GO TO 10
02163 *
02164       ELSE IF( ZGX ) THEN
02165 *
02166 *        -------------------------------------------------
02167 *        ZGX  Generalized Nonsymmetric Eigenvalue Problem
02168 *              ZGGESX (Schur form and condition numbers)
02169 *        -------------------------------------------------
02170 *
02171          MAXTYP = 5
02172          NTYPES = MAXTYP
02173          IF( NN.LT.0 ) THEN
02174             WRITE( NOUT, FMT = 9990 )C3
02175          ELSE
02176             IF( TSTERR )
02177      $         CALL ZERRGG( C3, NOUT )
02178             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02179             CALL XLAENV( 5, 2 )
02180             CALL ZDRGSX( NN, NCMAX, THRESH, NIN, NOUT, A( 1, 1 ), NMAX,
02181      $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
02182      $                   A( 1, 6 ), DC( 1, 1 ), DC( 1, 2 ), C,
02183      $                   NCMAX*NCMAX, S, WORK, LWORK, RWORK, IWORK,
02184      $                   LIWORK, LOGWRK, INFO )
02185             IF( INFO.NE.0 )
02186      $         WRITE( NOUT, FMT = 9980 )'ZDRGSX', INFO
02187          END IF
02188          WRITE( NOUT, FMT = 9973 )
02189          GO TO 10
02190 *
02191       ELSE IF( LSAMEN( 3, C3, 'ZGV' ) ) THEN
02192 *
02193 *        -------------------------------------------------
02194 *        ZGV:  Generalized Nonsymmetric Eigenvalue Problem
02195 *              ZGGEV (Eigenvalue/vector form)
02196 *        -------------------------------------------------
02197 *
02198          MAXTYP = 26
02199          NTYPES = MIN( MAXTYP, NTYPES )
02200          IF( NTYPES.LE.0 ) THEN
02201             WRITE( NOUT, FMT = 9990 )C3
02202          ELSE
02203             IF( TSTERR )
02204      $         CALL ZERRGG( C3, NOUT )
02205             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02206             CALL ZDRGEV( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
02207      $                   A( 1, 1 ), NMAX, A( 1, 2 ), A( 1, 3 ),
02208      $                   A( 1, 4 ), A( 1, 7 ), NMAX, A( 1, 8 ),
02209      $                   A( 1, 9 ), NMAX, DC( 1, 1 ), DC( 1, 2 ),
02210      $                   DC( 1, 3 ), DC( 1, 4 ), WORK, LWORK, RWORK,
02211      $                   RESULT, INFO )
02212             IF( INFO.NE.0 )
02213      $         WRITE( NOUT, FMT = 9980 )'ZDRGEV', INFO
02214          END IF
02215          WRITE( NOUT, FMT = 9973 )
02216          GO TO 10
02217 *
02218       ELSE IF( ZXV ) THEN
02219 *
02220 *        -------------------------------------------------
02221 *        ZXV:  Generalized Nonsymmetric Eigenvalue Problem
02222 *              ZGGEVX (eigenvalue/vector with condition numbers)
02223 *        -------------------------------------------------
02224 *
02225          MAXTYP = 2
02226          NTYPES = MAXTYP
02227          IF( NN.LT.0 ) THEN
02228             WRITE( NOUT, FMT = 9990 )C3
02229          ELSE
02230             IF( TSTERR )
02231      $         CALL ZERRGG( C3, NOUT )
02232             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02233             CALL ZDRGVX( NN, THRESH, NIN, NOUT, A( 1, 1 ), NMAX,
02234      $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), DC( 1, 1 ),
02235      $                   DC( 1, 2 ), A( 1, 5 ), A( 1, 6 ), IWORK( 1 ),
02236      $                   IWORK( 2 ), DR( 1, 1 ), DR( 1, 2 ), DR( 1, 3 ),
02237      $                   DR( 1, 4 ), DR( 1, 5 ), DR( 1, 6 ), WORK,
02238      $                   LWORK, RWORK, IWORK( 3 ), LIWORK-2, RESULT,
02239      $                   LOGWRK, INFO )
02240 *
02241             IF( INFO.NE.0 )
02242      $         WRITE( NOUT, FMT = 9980 )'ZDRGVX', INFO
02243          END IF
02244          WRITE( NOUT, FMT = 9973 )
02245          GO TO 10
02246 *
02247       ELSE IF( LSAMEN( 3, C3, 'ZHB' ) ) THEN
02248 *
02249 *        ------------------------------
02250 *        ZHB:  Hermitian Band Reduction
02251 *        ------------------------------
02252 *
02253          MAXTYP = 15
02254          NTYPES = MIN( MAXTYP, NTYPES )
02255          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02256          IF( TSTERR )
02257      $      CALL ZERRST( 'ZHB', NOUT )
02258          CALL ZCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH,
02259      $                NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ),
02260      $                A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT,
02261      $                INFO )
02262          IF( INFO.NE.0 )
02263      $      WRITE( NOUT, FMT = 9980 )'ZCHKHB', INFO
02264 *
02265       ELSE IF( LSAMEN( 3, C3, 'ZBB' ) ) THEN
02266 *
02267 *        ------------------------------
02268 *        ZBB:  General Band Reduction
02269 *        ------------------------------
02270 *
02271          MAXTYP = 15
02272          NTYPES = MIN( MAXTYP, NTYPES )
02273          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
02274          DO 370 I = 1, NPARMS
02275             NRHS = NSVAL( I )
02276 *
02277             IF( NEWSD.EQ.0 ) THEN
02278                DO 360 K = 1, 4
02279                   ISEED( K ) = IOLDSD( K )
02280   360          CONTINUE
02281             END IF
02282             WRITE( NOUT, FMT = 9966 )C3, NRHS
02283             CALL ZCHKBB( NN, MVAL, NVAL, NK, KVAL, MAXTYP, DOTYPE, NRHS,
02284      $                   ISEED, THRESH, NOUT, A( 1, 1 ), NMAX,
02285      $                   A( 1, 2 ), 2*NMAX, DR( 1, 1 ), DR( 1, 2 ),
02286      $                   A( 1, 4 ), NMAX, A( 1, 5 ), NMAX, A( 1, 6 ),
02287      $                   NMAX, A( 1, 7 ), WORK, LWORK, RWORK, RESULT,
02288      $                   INFO )
02289             IF( INFO.NE.0 )
02290      $         WRITE( NOUT, FMT = 9980 )'ZCHKBB', INFO
02291   370    CONTINUE
02292 *
02293       ELSE IF( LSAMEN( 3, C3, 'GLM' ) ) THEN
02294 *
02295 *        -----------------------------------------
02296 *        GLM:  Generalized Linear Regression Model
02297 *        -----------------------------------------
02298 *
02299          CALL XLAENV( 1, 1 )
02300          IF( TSTERR )
02301      $      CALL ZERRGG( 'GLM', NOUT )
02302          CALL ZCKGLM( NN, NVAL, MVAL, PVAL, NTYPES, ISEED, THRESH, NMAX,
02303      $                A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), X,
02304      $                WORK, DR( 1, 1 ), NIN, NOUT, INFO )
02305          IF( INFO.NE.0 )
02306      $      WRITE( NOUT, FMT = 9980 )'ZCKGLM', INFO
02307 *
02308       ELSE IF( LSAMEN( 3, C3, 'GQR' ) ) THEN
02309 *
02310 *        ------------------------------------------
02311 *        GQR:  Generalized QR and RQ factorizations
02312 *        ------------------------------------------
02313 *
02314          CALL XLAENV( 1, 1 )
02315          IF( TSTERR )
02316      $      CALL ZERRGG( 'GQR', NOUT )
02317          CALL ZCKGQR( NN, MVAL, NN, PVAL, NN, NVAL, NTYPES, ISEED,
02318      $                THRESH, NMAX, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
02319      $                A( 1, 4 ), TAUA, B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
02320      $                B( 1, 4 ), B( 1, 5 ), TAUB, WORK, DR( 1, 1 ), NIN,
02321      $                NOUT, INFO )
02322          IF( INFO.NE.0 )
02323      $      WRITE( NOUT, FMT = 9980 )'ZCKGQR', INFO
02324 *
02325       ELSE IF( LSAMEN( 3, C3, 'GSV' ) ) THEN
02326 *
02327 *        ----------------------------------------------
02328 *        GSV:  Generalized Singular Value Decomposition
02329 *        ----------------------------------------------
02330 *
02331          IF( TSTERR )
02332      $      CALL ZERRGG( 'GSV', NOUT )
02333          CALL ZCKGSV( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
02334      $                A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
02335      $                A( 1, 3 ), B( 1, 3 ), A( 1, 4 ), ALPHA, BETA,
02336      $                B( 1, 4 ), IWORK, WORK, DR( 1, 1 ), NIN, NOUT,
02337      $                INFO )
02338          IF( INFO.NE.0 )
02339      $      WRITE( NOUT, FMT = 9980 )'ZCKGSV', INFO
02340 *
02341       ELSE IF( LSAMEN( 3, C3, 'CSD' ) ) THEN
02342 *
02343 *        ----------------------------------------------
02344 *        CSD:  CS Decomposition
02345 *        ----------------------------------------------
02346 *
02347          CALL XLAENV(1,1)
02348          IF( TSTERR )
02349      $      CALL ZERRGG( 'CSD', NOUT )
02350          CALL ZCKCSD( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
02351      $                A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), A( 1, 4 ),
02352      $                A( 1, 5 ), A( 1, 6 ), RWORK, IWORK, WORK,
02353      $                DR( 1, 1 ), NIN, NOUT, INFO )
02354          IF( INFO.NE.0 )
02355      $      WRITE( NOUT, FMT = 9980 )'ZCKCSD', INFO
02356 *
02357       ELSE IF( LSAMEN( 3, C3, 'LSE' ) ) THEN
02358 *
02359 *        --------------------------------------
02360 *        LSE:  Constrained Linear Least Squares
02361 *        --------------------------------------
02362 *
02363          CALL XLAENV( 1, 1 )
02364          IF( TSTERR )
02365      $      CALL ZERRGG( 'LSE', NOUT )
02366          CALL ZCKLSE( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
02367      $                A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), X,
02368      $                WORK, DR( 1, 1 ), NIN, NOUT, INFO )
02369          IF( INFO.NE.0 )
02370      $      WRITE( NOUT, FMT = 9980 )'ZCKLSE', INFO
02371       ELSE
02372          WRITE( NOUT, FMT = * )
02373          WRITE( NOUT, FMT = * )
02374          WRITE( NOUT, FMT = 9992 )C3
02375       END IF
02376       IF( .NOT.( ZGX .OR. ZXV ) )
02377      $   GO TO 190
02378   380 CONTINUE
02379       WRITE( NOUT, FMT = 9994 )
02380       S2 = DSECND( )
02381       WRITE( NOUT, FMT = 9993 )S2 - S1
02382 *
02383  9999 FORMAT( / ' Execution not attempted due to input errors' )
02384  9997 FORMAT( / / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4 )
02385  9996 FORMAT( / / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NS =', I4,
02386      $      ', MAXB =', I4, ', NBCOL =', I4 )
02387  9995 FORMAT( / / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4,
02388      $      ', NRHS =', I4 )
02389  9994 FORMAT( / / ' End of tests' )
02390  9993 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
02391  9992 FORMAT( 1X, A3, ':  Unrecognized path name' )
02392  9991 FORMAT( / / ' *** Invalid integer value in column ', I2,
02393      $      ' of input', ' line:', / A79 )
02394  9990 FORMAT( / / 1X, A3, ' routines were not tested' )
02395  9989 FORMAT( ' Invalid input value: ', A, '=', I6, '; must be >=',
02396      $      I6 )
02397  9988 FORMAT( ' Invalid input value: ', A, '=', I6, '; must be <=',
02398      $      I6 )
02399  9987 FORMAT( ' Tests of the Nonsymmetric Eigenvalue Problem routines' )
02400  9986 FORMAT( ' Tests of the Hermitian Eigenvalue Problem routines' )
02401  9985 FORMAT( ' Tests of the Singular Value Decomposition routines' )
02402  9984 FORMAT( / ' The following parameter values will be used:' )
02403  9983 FORMAT( 4X, A, 10I6, / 10X, 10I6 )
02404  9982 FORMAT( / ' Routines pass computational tests if test ratio is ',
02405      $      'less than', F8.2, / )
02406  9981 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 )
02407  9980 FORMAT( ' *** Error code from ', A, ' = ', I4 )
02408  9979 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
02409      $      / '    ZGEEV (eigenvalues and eigevectors)' )
02410  9978 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
02411      $      / '    ZGEES (Schur form)' )
02412  9977 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
02413      $      ' Driver', / '    ZGEEVX (eigenvalues, eigenvectors and',
02414      $      ' condition numbers)' )
02415  9976 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
02416      $      ' Driver', / '    ZGEESX (Schur form and condition',
02417      $      ' numbers)' )
02418  9975 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
02419      $      'Problem routines' )
02420  9974 FORMAT( ' Tests of ZHBTRD', / ' (reduction of a Hermitian band ',
02421      $      'matrix to real tridiagonal form)' )
02422  9973 FORMAT( / 1X, 71( '-' ) )
02423  9972 FORMAT( / ' LAPACK VERSION ', I1, '.', I1, '.', I1 )
02424  9971 FORMAT( / ' Tests of the Generalized Linear Regression Model ',
02425      $      'routines' )
02426  9970 FORMAT( / ' Tests of the Generalized QR and RQ routines' )
02427  9969 FORMAT( / ' Tests of the Generalized Singular Value',
02428      $      ' Decomposition routines' )
02429  9968 FORMAT( / ' Tests of the Linear Least Squares routines' )
02430  9967 FORMAT( ' Tests of ZGBBRD', / ' (reduction of a general band ',
02431      $      'matrix to real bidiagonal form)' )
02432  9966 FORMAT( / / 1X, A3, ':  NRHS =', I4 )
02433  9965 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
02434      $      'Problem Expert Driver ZGGESX' )
02435  9964 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
02436      $      'Problem Driver ZGGES' )
02437  9963 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
02438      $      'Problem Driver ZGGEV' )
02439  9962 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
02440      $      'Problem Expert Driver ZGGEVX' )
02441  9961 FORMAT( / / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4,
02442      $      ', INMIN=', I4, 
02443      $      ', INWIN =', I4, ', INIBL =', I4, ', ISHFTS =', I4,
02444      $      ', IACC22 =', I4)
02445  9960 FORMAT( / ' Tests of the CS Decomposition routines' )
02446 *
02447 *     End of ZCHKEE
02448 *
02449       END
 All Files Functions