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