1       PROGRAM SCHKEE
   2 *
   3 *  -- LAPACK test routine (version 3.1.1) --
   4 *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
   5 *     February 2007
   6 *
   7 *  Purpose
   8 *  =======
   9 *
  10 *  SCHKEE tests the REAL LAPACK subroutines for the matrix
  11 *  eigenvalue problem.  The test paths in this version are
  12 *
  13 *  NEP (Nonsymmetric Eigenvalue Problem):
  14 *      Test SGEHRD, SORGHR, SHSEQR, STREVC, SHSEIN, and SORMHR
  15 *
  16 *  SEP (Symmetric Eigenvalue Problem):
  17 *      Test SSYTRD, SORGTR, SSTEQR, SSTERF, SSTEIN, SSTEDC,
  18 *      and drivers SSYEV(X), SSBEV(X), SSPEV(X), SSTEV(X),
  19 *                  SSYEVD,   SSBEVD,   SSPEVD,   SSTEVD
  20 *
  21 *  SVD (Singular Value Decomposition):
  22 *      Test SGEBRD, SORGBR, SBDSQR, SBDSDC
  23 *      and the drivers SGESVD, SGESDD
  24 *
  25 *  SEV (Nonsymmetric Eigenvalue/eigenvector Driver):
  26 *      Test SGEEV
  27 *
  28 *  SES (Nonsymmetric Schur form Driver):
  29 *      Test SGEES
  30 *
  31 *  SVX (Nonsymmetric Eigenvalue/eigenvector Expert Driver):
  32 *      Test SGEEVX
  33 *
  34 *  SSX (Nonsymmetric Schur form Expert Driver):
  35 *      Test SGEESX
  36 *
  37 *  SGG (Generalized Nonsymmetric Eigenvalue Problem):
  38 *      Test SGGHRD, SGGBAL, SGGBAK, SHGEQZ, and STGEVC
  39 *      and the driver routines SGEGS and SGEGV
  40 *
  41 *  SGS (Generalized Nonsymmetric Schur form Driver):
  42 *      Test SGGES
  43 *
  44 *  SGV (Generalized Nonsymmetric Eigenvalue/eigenvector Driver):
  45 *      Test SGGEV
  46 *
  47 *  SGX (Generalized Nonsymmetric Schur form Expert Driver):
  48 *      Test SGGESX
  49 *
  50 *  SXV (Generalized Nonsymmetric Eigenvalue/eigenvector Expert Driver):
  51 *      Test SGGEVX
  52 *
  53 *  SSG (Symmetric Generalized Eigenvalue Problem):
  54 *      Test SSYGST, SSYGV, SSYGVD, SSYGVX, SSPGST, SSPGV, SSPGVD,
  55 *      SSPGVX, SSBGST, SSBGV, SSBGVD, and SSBGVX
  56 *
  57 *  SSB (Symmetric Band Eigenvalue Problem):
  58 *      Test SSBTRD
  59 *
  60 *  SBB (Band Singular Value Decomposition):
  61 *      Test SGBBRD
  62 *
  63 *  SEC (Eigencondition estimation):
  64 *      Test SLALN2, SLASY2, SLAEQU, SLAEXC, STRSYL, STREXC, STRSNA,
  65 *      STRSEN, and SLAQTR
  66 *
  67 *  SBL (Balancing a general matrix)
  68 *      Test SGEBAL
  69 *
  70 *  SBK (Back transformation on a balanced matrix)
  71 *      Test SGEBAK
  72 *
  73 *  SGL (Balancing a matrix pair)
  74 *      Test SGGBAL
  75 *
  76 *  SGK (Back transformation on a matrix pair)
  77 *      Test SGGBAK
  78 *
  79 *  GLM (Generalized Linear Regression Model):
  80 *      Tests SGGGLM
  81 *
  82 *  GQR (Generalized QR and RQ factorizations):
  83 *      Tests SGGQRF and SGGRQF
  84 *
  85 *  GSV (Generalized Singular Value Decomposition):
  86 *      Tests SGGSVD, SGGSVP, STGSJA, SLAGS2, SLAPLL, and SLAPMT
  87 *
  88 *  CSD (CS decomposition):
  89 *      Tests SORCSD
  90 *
  91 *  LSE (Constrained Linear Least Squares):
  92 *      Tests SGGLSE
  93 *
  94 *  Each test path has a different set of inputs, but the data sets for
  95 *  the driver routines xEV, xES, xVX, and xSX can be concatenated in a
  96 *  single input file.  The first line of input should contain one of the
  97 *  3-character path names in columns 1-3.  The number of remaining lines
  98 *  depends on what is found on the first line.
  99 *
 100 *  The number of matrix types used in testing is often controllable from
 101 *  the input file.  The number of matrix types for each path, and the
 102 *  test routine that describes them, is as follows:
 103 *
 104 *  Path name(s)  Types    Test routine
 105 *
 106 *  SHS or NEP      21     SCHKHS
 107 *  SST or SEP      21     SCHKST (routines)
 108 *                  18     SDRVST (drivers)
 109 *  SBD or SVD      16     SCHKBD (routines)
 110 *                   5     SDRVBD (drivers)
 111 *  SEV             21     SDRVEV
 112 *  SES             21     SDRVES
 113 *  SVX             21     SDRVVX
 114 *  SSX             21     SDRVSX
 115 *  SGG             26     SCHKGG (routines)
 116 *                  26     SDRVGG (drivers)
 117 *  SGS             26     SDRGES
 118 *  SGX              5     SDRGSX
 119 *  SGV             26     SDRGEV
 120 *  SXV              2     SDRGVX
 121 *  SSG             21     SDRVSG
 122 *  SSB             15     SCHKSB
 123 *  SBB             15     SCHKBB
 124 *  SEC              -     SCHKEC
 125 *  SBL              -     SCHKBL
 126 *  SBK              -     SCHKBK
 127 *  SGL              -     SCHKGL
 128 *  SGK              -     SCHKGK
 129 *  GLM              8     SCKGLM
 130 *  GQR              8     SCKGQR
 131 *  GSV              8     SCKGSV
 132 *  CSD              3     SCKCSD
 133 *  LSE              8     SCKLSE
 134 *
 135 *-----------------------------------------------------------------------
 136 *
 137 *  NEP input file:
 138 *
 139 *  line 2:  NN, INTEGER
 140 *           Number of values of N.
 141 *
 142 *  line 3:  NVAL, INTEGER array, dimension (NN)
 143 *           The values for the matrix dimension N.
 144 *
 145 *  line 4:  NPARMS, INTEGER
 146 *           Number of values of the parameters NB, NBMIN, NX, NS, and
 147 *           MAXB.
 148 *
 149 *  line 5:  NBVAL, INTEGER array, dimension (NPARMS)
 150 *           The values for the blocksize NB.
 151 *
 152 *  line 6:  NBMIN, INTEGER array, dimension (NPARMS)
 153 *           The values for the minimum blocksize NBMIN.
 154 *
 155 *  line 7:  NXVAL, INTEGER array, dimension (NPARMS)
 156 *           The values for the crossover point NX.
 157 *
 158 *  line 8:  INMIN, INTEGER array, dimension (NPARMS)
 159 *           LAHQR vs TTQRE crossover point, >= 11
 160 *
 161 *  line 9:  INWIN, INTEGER array, dimension (NPARMS)
 162 *           recommended deflation window size
 163 *
 164 *  line 10: INIBL, INTEGER array, dimension (NPARMS)
 165 *           nibble crossover point
 166 *
 167 *  line 11:  ISHFTS, INTEGER array, dimension (NPARMS)
 168 *           number of simultaneous shifts)
 169 *
 170 *  line 12:  IACC22, INTEGER array, dimension (NPARMS)
 171 *           select structured matrix multiply: 0, 1 or 2)
 172 *
 173 *  line 13: THRESH
 174 *           Threshold value for the test ratios.  Information will be
 175 *           printed about each test for which the test ratio is greater
 176 *           than or equal to the threshold.  To have all of the test
 177 *           ratios printed, use THRESH = 0.0 .
 178 *
 179 *  line 14: NEWSD, INTEGER
 180 *           A code indicating how to set the random number seed.
 181 *           = 0:  Set the seed to a default value before each run
 182 *           = 1:  Initialize the seed to a default value only before the
 183 *                 first run
 184 *           = 2:  Like 1, but use the seed values on the next line
 185 *
 186 *  If line 14 was 2:
 187 *
 188 *  line 15: INTEGER array, dimension (4)
 189 *           Four integer values for the random number seed.
 190 *
 191 *  lines 15-EOF:  The remaining lines occur in sets of 1 or 2 and allow
 192 *           the user to specify the matrix types.  Each line contains
 193 *           a 3-character path name in columns 1-3, and the number
 194 *           of matrix types must be the first nonblank item in columns
 195 *           4-80.  If the number of matrix types is at least 1 but is
 196 *           less than the maximum number of possible types, a second
 197 *           line will be read to get the numbers of the matrix types to
 198 *           be used.  For example,
 199 *  NEP 21
 200 *           requests all of the matrix types for the nonsymmetric
 201 *           eigenvalue problem, while
 202 *  NEP  4
 203 *  9 10 11 12
 204 *           requests only matrices of type 9, 10, 11, and 12.
 205 *
 206 *           The valid 3-character path names are 'NEP' or 'SHS' for the
 207 *           nonsymmetric eigenvalue routines.
 208 *
 209 *-----------------------------------------------------------------------
 210 *
 211 *  SEP or SSG input file:
 212 *
 213 *  line 2:  NN, INTEGER
 214 *           Number of values of N.
 215 *
 216 *  line 3:  NVAL, INTEGER array, dimension (NN)
 217 *           The values for the matrix dimension N.
 218 *
 219 *  line 4:  NPARMS, INTEGER
 220 *           Number of values of the parameters NB, NBMIN, and NX.
 221 *
 222 *  line 5:  NBVAL, INTEGER array, dimension (NPARMS)
 223 *           The values for the blocksize NB.
 224 *
 225 *  line 6:  NBMIN, INTEGER array, dimension (NPARMS)
 226 *           The values for the minimum blocksize NBMIN.
 227 *
 228 *  line 7:  NXVAL, INTEGER array, dimension (NPARMS)
 229 *           The values for the crossover point NX.
 230 *
 231 *  line 8:  THRESH
 232 *           Threshold value for the test ratios.  Information will be
 233 *           printed about each test for which the test ratio is greater
 234 *           than or equal to the threshold.
 235 *
 236 *  line 9:  TSTCHK, LOGICAL
 237 *           Flag indicating whether or not to test the LAPACK routines.
 238 *
 239 *  line 10: TSTDRV, LOGICAL
 240 *           Flag indicating whether or not to test the driver routines.
 241 *
 242 *  line 11: TSTERR, LOGICAL
 243 *           Flag indicating whether or not to test the error exits for
 244 *           the LAPACK routines and driver routines.
 245 *
 246 *  line 12: NEWSD, INTEGER
 247 *           A code indicating how to set the random number seed.
 248 *           = 0:  Set the seed to a default value before each run
 249 *           = 1:  Initialize the seed to a default value only before the
 250 *                 first run
 251 *           = 2:  Like 1, but use the seed values on the next line
 252 *
 253 *  If line 12 was 2:
 254 *
 255 *  line 13: INTEGER array, dimension (4)
 256 *           Four integer values for the random number seed.
 257 *
 258 *  lines 13-EOF:  Lines specifying matrix types, as for NEP.
 259 *           The 3-character path names are 'SEP' or 'SST' for the
 260 *           symmetric eigenvalue routines and driver routines, and
 261 *           'SSG' for the routines for the symmetric generalized
 262 *           eigenvalue problem.
 263 *
 264 *-----------------------------------------------------------------------
 265 *
 266 *  SVD input file:
 267 *
 268 *  line 2:  NN, INTEGER
 269 *           Number of values of M and N.
 270 *
 271 *  line 3:  MVAL, INTEGER array, dimension (NN)
 272 *           The values for the matrix row dimension M.
 273 *
 274 *  line 4:  NVAL, INTEGER array, dimension (NN)
 275 *           The values for the matrix column dimension N.
 276 *
 277 *  line 5:  NPARMS, INTEGER
 278 *           Number of values of the parameter NB, NBMIN, NX, and NRHS.
 279 *
 280 *  line 6:  NBVAL, INTEGER array, dimension (NPARMS)
 281 *           The values for the blocksize NB.
 282 *
 283 *  line 7:  NBMIN, INTEGER array, dimension (NPARMS)
 284 *           The values for the minimum blocksize NBMIN.
 285 *
 286 *  line 8:  NXVAL, INTEGER array, dimension (NPARMS)
 287 *           The values for the crossover point NX.
 288 *
 289 *  line 9:  NSVAL, INTEGER array, dimension (NPARMS)
 290 *           The values for the number of right hand sides NRHS.
 291 *
 292 *  line 10: THRESH
 293 *           Threshold value for the test ratios.  Information will be
 294 *           printed about each test for which the test ratio is greater
 295 *           than or equal to the threshold.
 296 *
 297 *  line 11: TSTCHK, LOGICAL
 298 *           Flag indicating whether or not to test the LAPACK routines.
 299 *
 300 *  line 12: TSTDRV, LOGICAL
 301 *           Flag indicating whether or not to test the driver routines.
 302 *
 303 *  line 13: TSTERR, LOGICAL
 304 *           Flag indicating whether or not to test the error exits for
 305 *           the LAPACK routines and driver routines.
 306 *
 307 *  line 14: NEWSD, INTEGER
 308 *           A code indicating how to set the random number seed.
 309 *           = 0:  Set the seed to a default value before each run
 310 *           = 1:  Initialize the seed to a default value only before the
 311 *                 first run
 312 *           = 2:  Like 1, but use the seed values on the next line
 313 *
 314 *  If line 14 was 2:
 315 *
 316 *  line 15: INTEGER array, dimension (4)
 317 *           Four integer values for the random number seed.
 318 *
 319 *  lines 15-EOF:  Lines specifying matrix types, as for NEP.
 320 *           The 3-character path names are 'SVD' or 'SBD' for both the
 321 *           SVD routines and the SVD driver routines.
 322 *
 323 *-----------------------------------------------------------------------
 324 *
 325 *  SEV and SES data files:
 326 *
 327 *  line 1:  'SEV' or 'SES' in columns 1 to 3.
 328 *
 329 *  line 2:  NSIZES, INTEGER
 330 *           Number of sizes of matrices to use. Should be at least 0
 331 *           and at most 20. If NSIZES = 0, no testing is done
 332 *           (although the remaining  3 lines are still read).
 333 *
 334 *  line 3:  NN, INTEGER array, dimension(NSIZES)
 335 *           Dimensions of matrices to be tested.
 336 *
 337 *  line 4:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 338 *           These integer parameters determine how blocking is done
 339 *           (see ILAENV for details)
 340 *           NB     : block size
 341 *           NBMIN  : minimum block size
 342 *           NX     : minimum dimension for blocking
 343 *           NS     : number of shifts in xHSEQR
 344 *           NBCOL  : minimum column dimension for blocking
 345 *
 346 *  line 5:  THRESH, REAL
 347 *           The test threshold against which computed residuals are
 348 *           compared. Should generally be in the range from 10. to 20.
 349 *           If it is 0., all test case data will be printed.
 350 *
 351 *  line 6:  TSTERR, LOGICAL
 352 *           Flag indicating whether or not to test the error exits.
 353 *
 354 *  line 7:  NEWSD, INTEGER
 355 *           A code indicating how to set the random number seed.
 356 *           = 0:  Set the seed to a default value before each run
 357 *           = 1:  Initialize the seed to a default value only before the
 358 *                 first run
 359 *           = 2:  Like 1, but use the seed values on the next line
 360 *
 361 *  If line 7 was 2:
 362 *
 363 *  line 8:  INTEGER array, dimension (4)
 364 *           Four integer values for the random number seed.
 365 *
 366 *  lines 9 and following:  Lines specifying matrix types, as for NEP.
 367 *           The 3-character path name is 'SEV' to test SGEEV, or
 368 *           'SES' to test SGEES.
 369 *
 370 *-----------------------------------------------------------------------
 371 *
 372 *  The SVX data has two parts. The first part is identical to SEV,
 373 *  and the second part consists of test matrices with precomputed
 374 *  solutions.
 375 *
 376 *  line 1:  'SVX' in columns 1-3.
 377 *
 378 *  line 2:  NSIZES, INTEGER
 379 *           If NSIZES = 0, no testing of randomly generated examples
 380 *           is done, but any precomputed examples are tested.
 381 *
 382 *  line 3:  NN, INTEGER array, dimension(NSIZES)
 383 *
 384 *  line 4:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 385 *
 386 *  line 5:  THRESH, REAL
 387 *
 388 *  line 6:  TSTERR, LOGICAL
 389 *
 390 *  line 7:  NEWSD, INTEGER
 391 *
 392 *  If line 7 was 2:
 393 *
 394 *  line 8:  INTEGER array, dimension (4)
 395 *
 396 *  lines 9 and following: The first line contains 'SVX' in columns 1-3
 397 *           followed by the number of matrix types, possibly with
 398 *           a second line to specify certain matrix types.
 399 *           If the number of matrix types = 0, no testing of randomly
 400 *           generated examples is done, but any precomputed examples
 401 *           are tested.
 402 *
 403 *  remaining lines : Each matrix is stored on 1+2*N lines, where N is
 404 *           its dimension. The first line contains the dimension (a
 405 *           single integer). The next N lines contain the matrix, one
 406 *           row per line. The last N lines correspond to each
 407 *           eigenvalue. Each of these last N lines contains 4 real
 408 *           values: the real part of the eigenvalue, the imaginary
 409 *           part of the eigenvalue, the reciprocal condition number of
 410 *           the eigenvalues, and the reciprocal condition number of the
 411 *           eigenvector.  The end of data is indicated by dimension N=0.
 412 *           Even if no data is to be tested, there must be at least one
 413 *           line containing N=0.
 414 *
 415 *-----------------------------------------------------------------------
 416 *
 417 *  The SSX data is like SVX. The first part is identical to SEV, and the
 418 *  second part consists of test matrices with precomputed solutions.
 419 *
 420 *  line 1:  'SSX' in columns 1-3.
 421 *
 422 *  line 2:  NSIZES, INTEGER
 423 *           If NSIZES = 0, no testing of randomly generated examples
 424 *           is done, but any precomputed examples are tested.
 425 *
 426 *  line 3:  NN, INTEGER array, dimension(NSIZES)
 427 *
 428 *  line 4:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 429 *
 430 *  line 5:  THRESH, REAL
 431 *
 432 *  line 6:  TSTERR, LOGICAL
 433 *
 434 *  line 7:  NEWSD, INTEGER
 435 *
 436 *  If line 7 was 2:
 437 *
 438 *  line 8:  INTEGER array, dimension (4)
 439 *
 440 *  lines 9 and following: The first line contains 'SSX' in columns 1-3
 441 *           followed by the number of matrix types, possibly with
 442 *           a second line to specify certain matrix types.
 443 *           If the number of matrix types = 0, no testing of randomly
 444 *           generated examples is done, but any precomputed examples
 445 *           are tested.
 446 *
 447 *  remaining lines : Each matrix is stored on 3+N lines, where N is its
 448 *           dimension. The first line contains the dimension N and the
 449 *           dimension M of an invariant subspace. The second line
 450 *           contains M integers, identifying the eigenvalues in the
 451 *           invariant subspace (by their position in a list of
 452 *           eigenvalues ordered by increasing real part). The next N
 453 *           lines contain the matrix. The last line contains the
 454 *           reciprocal condition number for the average of the selected
 455 *           eigenvalues, and the reciprocal condition number for the
 456 *           corresponding right invariant subspace. The end of data is
 457 *           indicated by a line containing N=0 and M=0. Even if no data
 458 *           is to be tested, there must be at least one line containing
 459 *           N=0 and M=0.
 460 *
 461 *-----------------------------------------------------------------------
 462 *
 463 *  SGG input file:
 464 *
 465 *  line 2:  NN, INTEGER
 466 *           Number of values of N.
 467 *
 468 *  line 3:  NVAL, INTEGER array, dimension (NN)
 469 *           The values for the matrix dimension N.
 470 *
 471 *  line 4:  NPARMS, INTEGER
 472 *           Number of values of the parameters NB, NBMIN, NS, MAXB, and
 473 *           NBCOL.
 474 *
 475 *  line 5:  NBVAL, INTEGER array, dimension (NPARMS)
 476 *           The values for the blocksize NB.
 477 *
 478 *  line 6:  NBMIN, INTEGER array, dimension (NPARMS)
 479 *           The values for NBMIN, the minimum row dimension for blocks.
 480 *
 481 *  line 7:  NSVAL, INTEGER array, dimension (NPARMS)
 482 *           The values for the number of shifts.
 483 *
 484 *  line 8:  MXBVAL, INTEGER array, dimension (NPARMS)
 485 *           The values for MAXB, used in determining minimum blocksize.
 486 *
 487 *  line 9:  NBCOL, INTEGER array, dimension (NPARMS)
 488 *           The values for NBCOL, the minimum column dimension for
 489 *           blocks.
 490 *
 491 *  line 10: THRESH
 492 *           Threshold value for the test ratios.  Information will be
 493 *           printed about each test for which the test ratio is greater
 494 *           than or equal to the threshold.
 495 *
 496 *  line 11: TSTCHK, LOGICAL
 497 *           Flag indicating whether or not to test the LAPACK routines.
 498 *
 499 *  line 12: TSTDRV, LOGICAL
 500 *           Flag indicating whether or not to test the driver routines.
 501 *
 502 *  line 13: TSTERR, LOGICAL
 503 *           Flag indicating whether or not to test the error exits for
 504 *           the LAPACK routines and driver routines.
 505 *
 506 *  line 14: NEWSD, INTEGER
 507 *           A code indicating how to set the random number seed.
 508 *           = 0:  Set the seed to a default value before each run
 509 *           = 1:  Initialize the seed to a default value only before the
 510 *                 first run
 511 *           = 2:  Like 1, but use the seed values on the next line
 512 *
 513 *  If line 14 was 2:
 514 *
 515 *  line 15: INTEGER array, dimension (4)
 516 *           Four integer values for the random number seed.
 517 *
 518 *  lines 15-EOF:  Lines specifying matrix types, as for NEP.
 519 *           The 3-character path name is 'SGG' for the generalized
 520 *           eigenvalue problem routines and driver routines.
 521 *
 522 *-----------------------------------------------------------------------
 523 *
 524 *  SGS and SGV input files:
 525 *
 526 *  line 1:  'SGS' or 'SGV' in columns 1 to 3.
 527 *
 528 *  line 2:  NN, INTEGER
 529 *           Number of values of N.
 530 *
 531 *  line 3:  NVAL, INTEGER array, dimension(NN)
 532 *           Dimensions of matrices to be tested.
 533 *
 534 *  line 4:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 535 *           These integer parameters determine how blocking is done
 536 *           (see ILAENV for details)
 537 *           NB     : block size
 538 *           NBMIN  : minimum block size
 539 *           NX     : minimum dimension for blocking
 540 *           NS     : number of shifts in xHGEQR
 541 *           NBCOL  : minimum column dimension for blocking
 542 *
 543 *  line 5:  THRESH, REAL
 544 *           The test threshold against which computed residuals are
 545 *           compared. Should generally be in the range from 10. to 20.
 546 *           If it is 0., all test case data will be printed.
 547 *
 548 *  line 6:  TSTERR, LOGICAL
 549 *           Flag indicating whether or not to test the error exits.
 550 *
 551 *  line 7:  NEWSD, INTEGER
 552 *           A code indicating how to set the random number seed.
 553 *           = 0:  Set the seed to a default value before each run
 554 *           = 1:  Initialize the seed to a default value only before the
 555 *                 first run
 556 *           = 2:  Like 1, but use the seed values on the next line
 557 *
 558 *  If line 17 was 2:
 559 *
 560 *  line 7:  INTEGER array, dimension (4)
 561 *           Four integer values for the random number seed.
 562 *
 563 *  lines 7-EOF:  Lines specifying matrix types, as for NEP.
 564 *           The 3-character path name is 'SGS' for the generalized
 565 *           eigenvalue problem routines and driver routines.
 566 *
 567 *-----------------------------------------------------------------------
 568 *
 569 *  SXV input files:
 570 *
 571 *  line 1:  'SXV' in columns 1 to 3.
 572 *
 573 *  line 2:  N, INTEGER
 574 *           Value of N.
 575 *
 576 *  line 3:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 577 *           These integer parameters determine how blocking is done
 578 *           (see ILAENV for details)
 579 *           NB     : block size
 580 *           NBMIN  : minimum block size
 581 *           NX     : minimum dimension for blocking
 582 *           NS     : number of shifts in xHGEQR
 583 *           NBCOL  : minimum column dimension for blocking
 584 *
 585 *  line 4:  THRESH, REAL
 586 *           The test threshold against which computed residuals are
 587 *           compared. Should generally be in the range from 10. to 20.
 588 *           Information will be printed about each test for which the
 589 *           test ratio is greater than or equal to the threshold.
 590 *
 591 *  line 5:  TSTERR, LOGICAL
 592 *           Flag indicating whether or not to test the error exits for
 593 *           the LAPACK routines and driver routines.
 594 *
 595 *  line 6:  NEWSD, INTEGER
 596 *           A code indicating how to set the random number seed.
 597 *           = 0:  Set the seed to a default value before each run
 598 *           = 1:  Initialize the seed to a default value only before the
 599 *                 first run
 600 *           = 2:  Like 1, but use the seed values on the next line
 601 *
 602 *  If line 6 was 2:
 603 *
 604 *  line 7: INTEGER array, dimension (4)
 605 *           Four integer values for the random number seed.
 606 *
 607 *  If line 2 was 0:
 608 *
 609 *  line 7-EOF: Precomputed examples are tested.
 610 *
 611 *  remaining lines : Each example is stored on 3+2*N lines, where N is
 612 *           its dimension. The first line contains the dimension (a
 613 *           single integer). The next N lines contain the matrix A, one
 614 *           row per line. The next N lines contain the matrix B.  The
 615 *           next line contains the reciprocals of the eigenvalue
 616 *           condition numbers.  The last line contains the reciprocals of
 617 *           the eigenvector condition numbers.  The end of data is
 618 *           indicated by dimension N=0.  Even if no data is to be tested,
 619 *           there must be at least one line containing N=0.
 620 *
 621 *-----------------------------------------------------------------------
 622 *
 623 *  SGX input files:
 624 *
 625 *  line 1:  'SGX' in columns 1 to 3.
 626 *
 627 *  line 2:  N, INTEGER
 628 *           Value of N.
 629 *
 630 *  line 3:  NB, NBMIN, NX, NS, NBCOL, INTEGERs
 631 *           These integer parameters determine how blocking is done
 632 *           (see ILAENV for details)
 633 *           NB     : block size
 634 *           NBMIN  : minimum block size
 635 *           NX     : minimum dimension for blocking
 636 *           NS     : number of shifts in xHGEQR
 637 *           NBCOL  : minimum column dimension for blocking
 638 *
 639 *  line 4:  THRESH, REAL
 640 *           The test threshold against which computed residuals are
 641 *           compared. Should generally be in the range from 10. to 20.
 642 *           Information will be printed about each test for which the
 643 *           test ratio is greater than or equal to the threshold.
 644 *
 645 *  line 5:  TSTERR, LOGICAL
 646 *           Flag indicating whether or not to test the error exits for
 647 *           the LAPACK routines and driver routines.
 648 *
 649 *  line 6:  NEWSD, INTEGER
 650 *           A code indicating how to set the random number seed.
 651 *           = 0:  Set the seed to a default value before each run
 652 *           = 1:  Initialize the seed to a default value only before the
 653 *                 first run
 654 *           = 2:  Like 1, but use the seed values on the next line
 655 *
 656 *  If line 6 was 2:
 657 *
 658 *  line 7: INTEGER array, dimension (4)
 659 *           Four integer values for the random number seed.
 660 *
 661 *  If line 2 was 0:
 662 *
 663 *  line 7-EOF: Precomputed examples are tested.
 664 *
 665 *  remaining lines : Each example is stored on 3+2*N lines, where N is
 666 *           its dimension. The first line contains the dimension (a
 667 *           single integer).  The next line contains an integer k such
 668 *           that only the last k eigenvalues will be selected and appear
 669 *           in the leading diagonal blocks of $A$ and $B$. The next N
 670 *           lines contain the matrix A, one row per line.  The next N
 671 *           lines contain the matrix B.  The last line contains the
 672 *           reciprocal of the eigenvalue cluster condition number and the
 673 *           reciprocal of the deflating subspace (associated with the
 674 *           selected eigencluster) condition number.  The end of data is
 675 *           indicated by dimension N=0.  Even if no data is to be tested,
 676 *           there must be at least one line containing N=0.
 677 *
 678 *-----------------------------------------------------------------------
 679 *
 680 *  SSB input file:
 681 *
 682 *  line 2:  NN, INTEGER
 683 *           Number of values of N.
 684 *
 685 *  line 3:  NVAL, INTEGER array, dimension (NN)
 686 *           The values for the matrix dimension N.
 687 *
 688 *  line 4:  NK, INTEGER
 689 *           Number of values of K.
 690 *
 691 *  line 5:  KVAL, INTEGER array, dimension (NK)
 692 *           The values for the matrix dimension K.
 693 *
 694 *  line 6:  THRESH
 695 *           Threshold value for the test ratios.  Information will be
 696 *           printed about each test for which the test ratio is greater
 697 *           than or equal to the threshold.
 698 *
 699 *  line 7:  NEWSD, INTEGER
 700 *           A code indicating how to set the random number seed.
 701 *           = 0:  Set the seed to a default value before each run
 702 *           = 1:  Initialize the seed to a default value only before the
 703 *                 first run
 704 *           = 2:  Like 1, but use the seed values on the next line
 705 *
 706 *  If line 7 was 2:
 707 *
 708 *  line 8:  INTEGER array, dimension (4)
 709 *           Four integer values for the random number seed.
 710 *
 711 *  lines 8-EOF:  Lines specifying matrix types, as for NEP.
 712 *           The 3-character path name is 'SSB'.
 713 *
 714 *-----------------------------------------------------------------------
 715 *
 716 *  SBB input file:
 717 *
 718 *  line 2:  NN, INTEGER
 719 *           Number of values of M and N.
 720 *
 721 *  line 3:  MVAL, INTEGER array, dimension (NN)
 722 *           The values for the matrix row dimension M.
 723 *
 724 *  line 4:  NVAL, INTEGER array, dimension (NN)
 725 *           The values for the matrix column dimension N.
 726 *
 727 *  line 4:  NK, INTEGER
 728 *           Number of values of K.
 729 *
 730 *  line 5:  KVAL, INTEGER array, dimension (NK)
 731 *           The values for the matrix bandwidth K.
 732 *
 733 *  line 6:  NPARMS, INTEGER
 734 *           Number of values of the parameter NRHS
 735 *
 736 *  line 7:  NSVAL, INTEGER array, dimension (NPARMS)
 737 *           The values for the number of right hand sides NRHS.
 738 *
 739 *  line 8:  THRESH
 740 *           Threshold value for the test ratios.  Information will be
 741 *           printed about each test for which the test ratio is greater
 742 *           than or equal to the threshold.
 743 *
 744 *  line 9:  NEWSD, INTEGER
 745 *           A code indicating how to set the random number seed.
 746 *           = 0:  Set the seed to a default value before each run
 747 *           = 1:  Initialize the seed to a default value only before the
 748 *                 first run
 749 *           = 2:  Like 1, but use the seed values on the next line
 750 *
 751 *  If line 9 was 2:
 752 *
 753 *  line 10: INTEGER array, dimension (4)
 754 *           Four integer values for the random number seed.
 755 *
 756 *  lines 10-EOF:  Lines specifying matrix types, as for SVD.
 757 *           The 3-character path name is 'SBB'.
 758 *
 759 *-----------------------------------------------------------------------
 760 *
 761 *  SEC input file:
 762 *
 763 *  line  2: THRESH, REAL
 764 *           Threshold value for the test ratios.  Information will be
 765 *           printed about each test for which the test ratio is greater
 766 *           than or equal to the threshold.
 767 *
 768 *  lines  3-EOF:
 769 *
 770 *  Input for testing the eigencondition routines consists of a set of
 771 *  specially constructed test cases and their solutions.  The data
 772 *  format is not intended to be modified by the user.
 773 *
 774 *-----------------------------------------------------------------------
 775 *
 776 *  SBL and SBK input files:
 777 *
 778 *  line 1:  'SBL' in columns 1-3 to test SGEBAL, or 'SBK' in
 779 *           columns 1-3 to test SGEBAK.
 780 *
 781 *  The remaining lines consist of specially constructed test cases.
 782 *
 783 *-----------------------------------------------------------------------
 784 *
 785 *  SGL and SGK input files:
 786 *
 787 *  line 1:  'SGL' in columns 1-3 to test SGGBAL, or 'SGK' in
 788 *           columns 1-3 to test SGGBAK.
 789 *
 790 *  The remaining lines consist of specially constructed test cases.
 791 *
 792 *-----------------------------------------------------------------------
 793 *
 794 *  GLM data file:
 795 *
 796 *  line 1:  'GLM' in columns 1 to 3.
 797 *
 798 *  line 2:  NN, INTEGER
 799 *           Number of values of M, P, and N.
 800 *
 801 *  line 3:  MVAL, INTEGER array, dimension(NN)
 802 *           Values of M (row dimension).
 803 *
 804 *  line 4:  PVAL, INTEGER array, dimension(NN)
 805 *           Values of P (row dimension).
 806 *
 807 *  line 5:  NVAL, INTEGER array, dimension(NN)
 808 *           Values of N (column dimension), note M <= N <= M+P.
 809 *
 810 *  line 6:  THRESH, REAL
 811 *           Threshold value for the test ratios.  Information will be
 812 *           printed about each test for which the test ratio is greater
 813 *           than or equal to the threshold.
 814 *
 815 *  line 7:  TSTERR, LOGICAL
 816 *           Flag indicating whether or not to test the error exits for
 817 *           the LAPACK routines and driver routines.
 818 *
 819 *  line 8:  NEWSD, INTEGER
 820 *           A code indicating how to set the random number seed.
 821 *           = 0:  Set the seed to a default value before each run
 822 *           = 1:  Initialize the seed to a default value only before the
 823 *                 first run
 824 *           = 2:  Like 1, but use the seed values on the next line
 825 *
 826 *  If line 8 was 2:
 827 *
 828 *  line 9:  INTEGER array, dimension (4)
 829 *           Four integer values for the random number seed.
 830 *
 831 *  lines 9-EOF:  Lines specifying matrix types, as for NEP.
 832 *           The 3-character path name is 'GLM' for the generalized
 833 *           linear regression model routines.
 834 *
 835 *-----------------------------------------------------------------------
 836 *
 837 *  GQR data file:
 838 *
 839 *  line 1:  'GQR' in columns 1 to 3.
 840 *
 841 *  line 2:  NN, INTEGER
 842 *           Number of values of M, P, and N.
 843 *
 844 *  line 3:  MVAL, INTEGER array, dimension(NN)
 845 *           Values of M.
 846 *
 847 *  line 4:  PVAL, INTEGER array, dimension(NN)
 848 *           Values of P.
 849 *
 850 *  line 5:  NVAL, INTEGER array, dimension(NN)
 851 *           Values of N.
 852 *
 853 *  line 6:  THRESH, REAL
 854 *           Threshold value for the test ratios.  Information will be
 855 *           printed about each test for which the test ratio is greater
 856 *           than or equal to the threshold.
 857 *
 858 *  line 7:  TSTERR, LOGICAL
 859 *           Flag indicating whether or not to test the error exits for
 860 *           the LAPACK routines and driver routines.
 861 *
 862 *  line 8:  NEWSD, INTEGER
 863 *           A code indicating how to set the random number seed.
 864 *           = 0:  Set the seed to a default value before each run
 865 *           = 1:  Initialize the seed to a default value only before the
 866 *                 first run
 867 *           = 2:  Like 1, but use the seed values on the next line
 868 *
 869 *  If line 8 was 2:
 870 *
 871 *  line 9:  INTEGER array, dimension (4)
 872 *           Four integer values for the random number seed.
 873 *
 874 *  lines 9-EOF:  Lines specifying matrix types, as for NEP.
 875 *           The 3-character path name is 'GQR' for the generalized
 876 *           QR and RQ routines.
 877 *
 878 *-----------------------------------------------------------------------
 879 *
 880 *  GSV data file:
 881 *
 882 *  line 1:  'GSV' in columns 1 to 3.
 883 *
 884 *  line 2:  NN, INTEGER
 885 *           Number of values of M, P, and N.
 886 *
 887 *  line 3:  MVAL, INTEGER array, dimension(NN)
 888 *           Values of M (row dimension).
 889 *
 890 *  line 4:  PVAL, INTEGER array, dimension(NN)
 891 *           Values of P (row dimension).
 892 *
 893 *  line 5:  NVAL, INTEGER array, dimension(NN)
 894 *           Values of N (column dimension).
 895 *
 896 *  line 6:  THRESH, REAL
 897 *           Threshold value for the test ratios.  Information will be
 898 *           printed about each test for which the test ratio is greater
 899 *           than or equal to the threshold.
 900 *
 901 *  line 7:  TSTERR, LOGICAL
 902 *           Flag indicating whether or not to test the error exits for
 903 *           the LAPACK routines and driver routines.
 904 *
 905 *  line 8:  NEWSD, INTEGER
 906 *           A code indicating how to set the random number seed.
 907 *           = 0:  Set the seed to a default value before each run
 908 *           = 1:  Initialize the seed to a default value only before the
 909 *                 first run
 910 *           = 2:  Like 1, but use the seed values on the next line
 911 *
 912 *  If line 8 was 2:
 913 *
 914 *  line 9:  INTEGER array, dimension (4)
 915 *           Four integer values for the random number seed.
 916 *
 917 *  lines 9-EOF:  Lines specifying matrix types, as for NEP.
 918 *           The 3-character path name is 'GSV' for the generalized
 919 *           SVD routines.
 920 *
 921 *-----------------------------------------------------------------------
 922 *
 923 *  CSD data file:
 924 *
 925 *  line 1:  'CSD' in columns 1 to 3.
 926 *
 927 *  line 2:  NM, INTEGER
 928 *           Number of values of M, P, and N.
 929 *
 930 *  line 3:  MVAL, INTEGER array, dimension(NM)
 931 *           Values of M (row and column dimension of orthogonal matrix).
 932 *
 933 *  line 4:  PVAL, INTEGER array, dimension(NM)
 934 *           Values of P (row dimension of top-left block).
 935 *
 936 *  line 5:  NVAL, INTEGER array, dimension(NM)
 937 *           Values of N (column dimension of top-left block).
 938 *
 939 *  line 6:  THRESH, REAL
 940 *           Threshold value for the test ratios.  Information will be
 941 *           printed about each test for which the test ratio is greater
 942 *           than or equal to the threshold.
 943 *
 944 *  line 7:  TSTERR, LOGICAL
 945 *           Flag indicating whether or not to test the error exits for
 946 *           the LAPACK routines and driver routines.
 947 *
 948 *  line 8:  NEWSD, INTEGER
 949 *           A code indicating how to set the random number seed.
 950 *           = 0:  Set the seed to a default value before each run
 951 *           = 1:  Initialize the seed to a default value only before the
 952 *                 first run
 953 *           = 2:  Like 1, but use the seed values on the next line
 954 *
 955 *  If line 8 was 2:
 956 *
 957 *  line 9:  INTEGER array, dimension (4)
 958 *           Four integer values for the random number seed.
 959 *
 960 *  lines 9-EOF:  Lines specifying matrix types, as for NEP.
 961 *           The 3-character path name is 'CSD' for the CSD routine.
 962 *
 963 *-----------------------------------------------------------------------
 964 *
 965 *  LSE data file:
 966 *
 967 *  line 1:  'LSE' in columns 1 to 3.
 968 *
 969 *  line 2:  NN, INTEGER
 970 *           Number of values of M, P, and N.
 971 *
 972 *  line 3:  MVAL, INTEGER array, dimension(NN)
 973 *           Values of M.
 974 *
 975 *  line 4:  PVAL, INTEGER array, dimension(NN)
 976 *           Values of P.
 977 *
 978 *  line 5:  NVAL, INTEGER array, dimension(NN)
 979 *           Values of N, note P <= N <= P+M.
 980 *
 981 *  line 6:  THRESH, REAL
 982 *           Threshold value for the test ratios.  Information will be
 983 *           printed about each test for which the test ratio is greater
 984 *           than or equal to the threshold.
 985 *
 986 *  line 7:  TSTERR, LOGICAL
 987 *           Flag indicating whether or not to test the error exits for
 988 *           the LAPACK routines and driver routines.
 989 *
 990 *  line 8:  NEWSD, INTEGER
 991 *           A code indicating how to set the random number seed.
 992 *           = 0:  Set the seed to a default value before each run
 993 *           = 1:  Initialize the seed to a default value only before the
 994 *                 first run
 995 *           = 2:  Like 1, but use the seed values on the next line
 996 *
 997 *  If line 8 was 2:
 998 *
 999 *  line 9:  INTEGER array, dimension (4)
1000 *           Four integer values for the random number seed.
1001 *
1002 *  lines 9-EOF:  Lines specifying matrix types, as for NEP.
1003 *           The 3-character path name is 'GSV' for the generalized
1004 *           SVD routines.
1005 *
1006 *-----------------------------------------------------------------------
1007 *
1008 *  NMAX is currently set to 132 and must be at least 12 for some of the
1009 *  precomputed examples, and LWORK = NMAX*(5*NMAX+5)+1 in the parameter
1010 *  statements below.  For SVD, we assume NRHS may be as big as N.  The
1011 *  parameter NEED is set to 14 to allow for 14 N-by-N matrices for SGG.
1012 *
1013 *  =====================================================================
1014 *
1015 *     .. Parameters ..
1016       INTEGER            NMAX
1017       PARAMETER          ( NMAX = 132 )
1018       INTEGER            NCMAX
1019       PARAMETER          ( NCMAX = 20 )
1020       INTEGER            NEED
1021       PARAMETER          ( NEED = 14 )
1022       INTEGER            LWORK
1023       PARAMETER          ( LWORK = NMAX*5*NMAX+5 )+1 )
1024       INTEGER            LIWORK
1025       PARAMETER          ( LIWORK = NMAX*5*NMAX+20 ) )
1026       INTEGER            MAXIN
1027       PARAMETER          ( MAXIN = 20 )
1028       INTEGER            MAXT
1029       PARAMETER          ( MAXT = 30 )
1030       INTEGER            NIN, NOUT
1031       PARAMETER          ( NIN = 5, NOUT = 6 )
1032 *     ..
1033 *     .. Local Scalars ..
1034       LOGICAL            CSD, FATAL, GLM, GQR, GSV, LSE, NEP, SBB, SBK,
1035      $                   SBL, SEP, SES, SEV, SGG, SGK, SGL, SGS, SGV,
1036      $                   SGX, SSB, SSX, SVD, SVX, SXV, TSTCHK, TSTDIF,
1037      $                   TSTDRV, TSTERR
1038       CHARACTER          C1
1039       CHARACTER*3        C3, PATH
1040       CHARACTER*32       VNAME
1041       CHARACTER*10       INTSTR
1042       CHARACTER*80       LINE
1043       INTEGER            I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
1044      $                   NK, NN, NPARMS, NRHS, NTYPES,
1045      $                   VERS_MAJOR, VERS_MINOR, VERS_PATCH
1046       REAL               EPS, S1, S2, THRESH, THRSHN
1047 *     ..
1048 *     .. Local Arrays ..
1049       LOGICAL            DOTYPE( MAXT ), LOGWRK( NMAX )
1050       INTEGER            IOLDSD( 4 ), ISEED( 4 ), IWORK( LIWORK ),
1051      $                   KVAL( MAXIN ), MVAL( MAXIN ), MXBVAL( MAXIN ),
1052      $                   NBCOL( MAXIN ), NBMIN( MAXIN ), NBVAL( MAXIN ),
1053      $                   NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
1054      $                   PVAL( MAXIN )
1055       INTEGER            INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
1056      $                   ISHFTS( MAXIN ), IACC22( MAXIN )
1057       REAL               A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ),
1058      $                   C( NCMAX*NCMAX, NCMAX*NCMAX ), D( NMAX, 12 ),
1059      $                   RESULT500 ), TAUA( NMAX ), TAUB( NMAX ),
1060      $                   WORK( LWORK ), X( 5*NMAX )
1061 *     ..
1062 *     .. External Functions ..
1063       LOGICAL            LSAMEN
1064       REAL               SECOND, SLAMCH
1065       EXTERNAL           LSAMEN, SECOND, SLAMCH
1066 *     ..
1067 *     .. External Subroutines ..
1068       EXTERNAL           ALAREQ, SCHKBB, SCHKBD, SCHKBK, SCHKBL, SCHKEC,
1069      $                   SCHKGG, SCHKGK, SCHKGL, SCHKHS, SCHKSB, SCHKST,
1070      $                   SCKCSD, SCKGLM, SCKGQR, SCKGSV, SCKLSE, SDRGES,
1071      $                   SDRGEV, SDRGSX, SDRGVX, SDRVBD, SDRVES, SDRVEV,
1072      $                   SDRVGG, SDRVSG, SDRVST, SDRVSX, SDRVVX, SERRBD,
1073      $                   SERRED, SERRGG, SERRHS, SERRST, ILAVER, XLAENV
1074 *     ..
1075 *     .. Intrinsic Functions ..
1076       INTRINSIC          LENMIN
1077 *     ..
1078 *     .. Scalars in Common ..
1079       LOGICAL            LERR, OK
1080       CHARACTER*32       SRNAMT
1081       INTEGER            INFOT, MAXB, NPROC, NSHIFT, NUNIT, SELDIM,
1082      $                   SELOPT
1083 *     ..
1084 *     .. Arrays in Common ..
1085       LOGICAL            SELVAL( 20 )
1086       INTEGER            IPARMS( 100 )
1087       REAL               SELWI( 20 ), SELWR( 20 )
1088 *     ..
1089 *     .. Common blocks ..
1090       COMMON             / CENVIR / NPROC, NSHIFT, MAXB
1091       COMMON             / CLAENV / IPARMS
1092       COMMON             / INFOC / INFOT, NUNIT, OK, LERR
1093       COMMON             / SRNAMC / SRNAMT
1094       COMMON             / SSLCT / SELOPT, SELDIM, SELVAL, SELWR, SELWI
1095 *     ..
1096 *     .. Data statements ..
1097       DATA               INTSTR / '0123456789' /
1098       DATA               IOLDSD / 0001 /
1099 *     ..
1100 *     .. Executable Statements ..
1101 *
1102       S1 = SECOND( )
1103       FATAL = .FALSE.
1104       NUNIT = NOUT
1105 *
1106 *     Return to here to read multiple sets of data
1107 *
1108    10 CONTINUE
1109 *
1110 *     Read the first line and set the 3-character test path
1111 *
1112       READ( NIN, FMT = '(A80)'END = 380 )LINE
1113       PATH = LINE( 13 )
1114       NEP = LSAMEN( 3, PATH, 'NEP' ) .OR. LSAMEN( 3, PATH, 'SHS' )
1115       SEP = LSAMEN( 3, PATH, 'SEP' ) .OR. LSAMEN( 3, PATH, 'SST' ) .OR.
1116      $      LSAMEN( 3, PATH, 'SSG' )
1117       SVD = LSAMEN( 3, PATH, 'SVD' ) .OR. LSAMEN( 3, PATH, 'SBD' )
1118       SEV = LSAMEN( 3, PATH, 'SEV' )
1119       SES = LSAMEN( 3, PATH, 'SES' )
1120       SVX = LSAMEN( 3, PATH, 'SVX' )
1121       SSX = LSAMEN( 3, PATH, 'SSX' )
1122       SGG = LSAMEN( 3, PATH, 'SGG' )
1123       SGS = LSAMEN( 3, PATH, 'SGS' )
1124       SGX = LSAMEN( 3, PATH, 'SGX' )
1125       SGV = LSAMEN( 3, PATH, 'SGV' )
1126       SXV = LSAMEN( 3, PATH, 'SXV' )
1127       SSB = LSAMEN( 3, PATH, 'SSB' )
1128       SBB = LSAMEN( 3, PATH, 'SBB' )
1129       GLM = LSAMEN( 3, PATH, 'GLM' )
1130       GQR = LSAMEN( 3, PATH, 'GQR' ) .OR. LSAMEN( 3, PATH, 'GRQ' )
1131       GSV = LSAMEN( 3, PATH, 'GSV' )
1132       CSD = LSAMEN( 3, PATH, 'CSD' )
1133       LSE = LSAMEN( 3, PATH, 'LSE' )
1134       SBL = LSAMEN( 3, PATH, 'SBL' )
1135       SBK = LSAMEN( 3, PATH, 'SBK' )
1136       SGL = LSAMEN( 3, PATH, 'SGL' )
1137       SGK = LSAMEN( 3, PATH, 'SGK' )
1138 *
1139 *     Report values of parameters.
1140 *
1141       IF( PATH.EQ.'   ' ) THEN
1142          GO TO 10
1143       ELSE IF( NEP ) THEN
1144          WRITE( NOUT, FMT = 9987 )
1145       ELSE IF( SEP ) THEN
1146          WRITE( NOUT, FMT = 9986 )
1147       ELSE IF( SVD ) THEN
1148          WRITE( NOUT, FMT = 9985 )
1149       ELSE IF( SEV ) THEN
1150          WRITE( NOUT, FMT = 9979 )
1151       ELSE IF( SES ) THEN
1152          WRITE( NOUT, FMT = 9978 )
1153       ELSE IF( SVX ) THEN
1154          WRITE( NOUT, FMT = 9977 )
1155       ELSE IF( SSX ) THEN
1156          WRITE( NOUT, FMT = 9976 )
1157       ELSE IF( SGG ) THEN
1158          WRITE( NOUT, FMT = 9975 )
1159       ELSE IF( SGS ) THEN
1160          WRITE( NOUT, FMT = 9964 )
1161       ELSE IF( SGX ) THEN
1162          WRITE( NOUT, FMT = 9965 )
1163       ELSE IF( SGV ) THEN
1164          WRITE( NOUT, FMT = 9963 )
1165       ELSE IF( SXV ) THEN
1166          WRITE( NOUT, FMT = 9962 )
1167       ELSE IF( SSB ) THEN
1168          WRITE( NOUT, FMT = 9974 )
1169       ELSE IF( SBB ) THEN
1170          WRITE( NOUT, FMT = 9967 )
1171       ELSE IF( GLM ) THEN
1172          WRITE( NOUT, FMT = 9971 )
1173       ELSE IF( GQR ) THEN
1174          WRITE( NOUT, FMT = 9970 )
1175       ELSE IF( GSV ) THEN
1176          WRITE( NOUT, FMT = 9969 )
1177       ELSE IF( CSD ) THEN
1178          WRITE( NOUT, FMT = 9960 )
1179       ELSE IF( LSE ) THEN
1180          WRITE( NOUT, FMT = 9968 )
1181       ELSE IF( SBL ) THEN
1182 *
1183 *        SGEBAL:  Balancing
1184 *
1185          CALL SCHKBL( NIN, NOUT )
1186          GO TO 10
1187       ELSE IF( SBK ) THEN
1188 *
1189 *        SGEBAK:  Back transformation
1190 *
1191          CALL SCHKBK( NIN, NOUT )
1192          GO TO 10
1193       ELSE IF( SGL ) THEN
1194 *
1195 *        SGGBAL:  Balancing
1196 *
1197          CALL SCHKGL( NIN, NOUT )
1198          GO TO 10
1199       ELSE IF( SGK ) THEN
1200 *
1201 *        SGGBAK:  Back transformation
1202 *
1203          CALL SCHKGK( NIN, NOUT )
1204          GO TO 10
1205       ELSE IF( LSAMEN( 3, PATH, 'SEC' ) ) THEN
1206 *
1207 *        SEC:  Eigencondition estimation
1208 *
1209          READ( NIN, FMT = * )THRESH
1210          CALL XLAENV( 11 )
1211          CALL XLAENV( 1211 )
1212          CALL XLAENV( 132 )
1213          CALL XLAENV( 140 )
1214          CALL XLAENV( 152 )
1215          CALL XLAENV( 162 )
1216          TSTERR = .TRUE.
1217          CALL SCHKEC( THRESH, TSTERR, NIN, NOUT )
1218          GO TO 10
1219       ELSE
1220          WRITE( NOUT, FMT = 9992 )PATH
1221          GO TO 10
1222       END IF
1223       CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
1224       WRITE( NOUT, FMT = 9972 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
1225       WRITE( NOUT, FMT = 9984 )
1226 *
1227 *     Read the number of values of M, P, and N.
1228 *
1229       READ( NIN, FMT = * )NN
1230       IF( NN.LT.0 ) THEN
1231          WRITE( NOUT, FMT = 9989 )'   NN ', NN, 1
1232          NN = 0
1233          FATAL = .TRUE.
1234       ELSE IF( NN.GT.MAXIN ) THEN
1235          WRITE( NOUT, FMT = 9988 )'   NN ', NN, MAXIN
1236          NN = 0
1237          FATAL = .TRUE.
1238       END IF
1239 *
1240 *     Read the values of M
1241 *
1242       IF.NOT.( SGX .OR. SXV ) ) THEN
1243          READ( NIN, FMT = * )( MVAL( I ), I = 1, NN )
1244          IF( SVD ) THEN
1245             VNAME = '    M '
1246          ELSE
1247             VNAME = '    N '
1248          END IF
1249          DO 20 I = 1, NN
1250             IF( MVAL( I ).LT.0 ) THEN
1251                WRITE( NOUT, FMT = 9989 )VNAME, MVAL( I ), 0
1252                FATAL = .TRUE.
1253             ELSE IF( MVAL( I ).GT.NMAX ) THEN
1254                WRITE( NOUT, FMT = 9988 )VNAME, MVAL( I ), NMAX
1255                FATAL = .TRUE.
1256             END IF
1257    20    CONTINUE
1258          WRITE( NOUT, FMT = 9983 )'M:    ', ( MVAL( I ), I = 1, NN )
1259       END IF
1260 *
1261 *     Read the values of P
1262 *
1263       IF( GLM .OR. GQR .OR. GSV .OR. CSD .OR. LSE ) THEN
1264          READ( NIN, FMT = * )( PVAL( I ), I = 1, NN )
1265          DO 30 I = 1, NN
1266             IF( PVAL( I ).LT.0 ) THEN
1267                WRITE( NOUT, FMT = 9989 )' P  ', PVAL( I ), 0
1268                FATAL = .TRUE.
1269             ELSE IF( PVAL( I ).GT.NMAX ) THEN
1270                WRITE( NOUT, FMT = 9988 )' P  ', PVAL( I ), NMAX
1271                FATAL = .TRUE.
1272             END IF
1273    30    CONTINUE
1274          WRITE( NOUT, FMT = 9983 )'P:    ', ( PVAL( I ), I = 1, NN )
1275       END IF
1276 *
1277 *     Read the values of N
1278 *
1279       IF( SVD .OR. SBB .OR. GLM .OR. GQR .OR. GSV .OR. CSD .OR.
1280      $    LSE ) THEN
1281          READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
1282          DO 40 I = 1, NN
1283             IF( NVAL( I ).LT.0 ) THEN
1284                WRITE( NOUT, FMT = 9989 )'    N ', NVAL( I ), 0
1285                FATAL = .TRUE.
1286             ELSE IF( NVAL( I ).GT.NMAX ) THEN
1287                WRITE( NOUT, FMT = 9988 )'    N ', NVAL( I ), NMAX
1288                FATAL = .TRUE.
1289             END IF
1290    40    CONTINUE
1291       ELSE
1292          DO 50 I = 1, NN
1293             NVAL( I ) = MVAL( I )
1294    50    CONTINUE
1295       END IF
1296       IF.NOT.( SGX .OR. SXV ) ) THEN
1297          WRITE( NOUT, FMT = 9983 )'N:    ', ( NVAL( I ), I = 1, NN )
1298       ELSE
1299          WRITE( NOUT, FMT = 9983 )'N:    ', NN
1300       END IF
1301 *
1302 *     Read the number of values of K, followed by the values of K
1303 *
1304       IF( SSB .OR. SBB ) THEN
1305          READ( NIN, FMT = * )NK
1306          READ( NIN, FMT = * )( KVAL( I ), I = 1, NK )
1307          DO 60 I = 1, NK
1308             IF( KVAL( I ).LT.0 ) THEN
1309                WRITE( NOUT, FMT = 9989 )'    K ', KVAL( I ), 0
1310                FATAL = .TRUE.
1311             ELSE IF( KVAL( I ).GT.NMAX ) THEN
1312                WRITE( NOUT, FMT = 9988 )'    K ', KVAL( I ), NMAX
1313                FATAL = .TRUE.
1314             END IF
1315    60    CONTINUE
1316          WRITE( NOUT, FMT = 9983 )'K:    ', ( KVAL( I ), I = 1, NK )
1317       END IF
1318 *
1319       IF( SEV .OR. SES .OR. SVX .OR. SSX ) THEN
1320 *
1321 *        For the nonsymmetric QR driver routines, only one set of
1322 *        parameters is allowed.
1323 *
1324          READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ),
1325      $      INMIN( 1 ), INWIN( 1 ), INIBL(1), ISHFTS(1), IACC22(1)
1326          IF( NBVAL( 1 ).LT.1 ) THEN
1327             WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( 1 ), 1
1328             FATAL = .TRUE.
1329          ELSE IF( NBMIN( 1 ).LT.1 ) THEN
1330             WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1
1331             FATAL = .TRUE.
1332          ELSE IF( NXVAL( 1 ).LT.1 ) THEN
1333             WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( 1 ), 1
1334             FATAL = .TRUE.
1335          ELSE IF( INMIN( 1 ).LT.1 ) THEN
1336             WRITE( NOUT, FMT = 9989 )'   INMIN ', INMIN( 1 ), 1
1337             FATAL = .TRUE.
1338          ELSE IF( INWIN( 1 ).LT.1 ) THEN
1339             WRITE( NOUT, FMT = 9989 )'   INWIN ', INWIN( 1 ), 1
1340             FATAL = .TRUE.
1341          ELSE IF( INIBL( 1 ).LT.1 ) THEN
1342             WRITE( NOUT, FMT = 9989 )'   INIBL ', INIBL( 1 ), 1
1343             FATAL = .TRUE.
1344          ELSE IF( ISHFTS( 1 ).LT.1 ) THEN
1345             WRITE( NOUT, FMT = 9989 )'   ISHFTS ', ISHFTS( 1 ), 1
1346             FATAL = .TRUE.
1347          ELSE IF( IACC22( 1 ).LT.0 ) THEN
1348             WRITE( NOUT, FMT = 9989 )'   IACC22 ', IACC22( 1 ), 0
1349             FATAL = .TRUE.
1350          END IF
1351          CALL XLAENV( 1, NBVAL( 1 ) )
1352          CALL XLAENV( 2, NBMIN( 1 ) )
1353          CALL XLAENV( 3, NXVAL( 1 ) )
1354          CALL XLAENV(12MAX11, INMIN( 1 ) ) )
1355          CALL XLAENV(13, INWIN( 1 ) )
1356          CALL XLAENV(14, INIBL( 1 ) )
1357          CALL XLAENV(15, ISHFTS( 1 ) )
1358          CALL XLAENV(16, IACC22( 1 ) )
1359          WRITE( NOUT, FMT = 9983 )'NB:   ', NBVAL( 1 )
1360          WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 )
1361          WRITE( NOUT, FMT = 9983 )'NX:   ', NXVAL( 1 )
1362          WRITE( NOUT, FMT = 9983 )'INMIN:   ', INMIN( 1 )
1363          WRITE( NOUT, FMT = 9983 )'INWIN: ', INWIN( 1 )
1364          WRITE( NOUT, FMT = 9983 )'INIBL: ', INIBL( 1 )
1365          WRITE( NOUT, FMT = 9983 )'ISHFTS: ', ISHFTS( 1 )
1366          WRITE( NOUT, FMT = 9983 )'IACC22: ', IACC22( 1 )
1367 *
1368       ELSE IF( SGS .OR. SGX .OR. SGV .OR. SXV ) THEN
1369 *
1370 *        For the nonsymmetric generalized driver routines, only one set
1371 *        of parameters is allowed.
1372 *
1373          READ( NIN, FMT = * )NBVAL( 1 ), NBMIN( 1 ), NXVAL( 1 ),
1374      $      NSVAL( 1 ), MXBVAL( 1 )
1375          IF( NBVAL( 1 ).LT.1 ) THEN
1376             WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( 1 ), 1
1377             FATAL = .TRUE.
1378          ELSE IF( NBMIN( 1 ).LT.1 ) THEN
1379             WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( 1 ), 1
1380             FATAL = .TRUE.
1381          ELSE IF( NXVAL( 1 ).LT.1 ) THEN
1382             WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( 1 ), 1
1383             FATAL = .TRUE.
1384          ELSE IF( NSVAL( 1 ).LT.2 ) THEN
1385             WRITE( NOUT, FMT = 9989 )'   NS ', NSVAL( 1 ), 2
1386             FATAL = .TRUE.
1387          ELSE IF( MXBVAL( 1 ).LT.1 ) THEN
1388             WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( 1 ), 1
1389             FATAL = .TRUE.
1390          END IF
1391          CALL XLAENV( 1, NBVAL( 1 ) )
1392          CALL XLAENV( 2, NBMIN( 1 ) )
1393          CALL XLAENV( 3, NXVAL( 1 ) )
1394          CALL XLAENV( 4, NSVAL( 1 ) )
1395          CALL XLAENV( 8, MXBVAL( 1 ) )
1396          WRITE( NOUT, FMT = 9983 )'NB:   ', NBVAL( 1 )
1397          WRITE( NOUT, FMT = 9983 )'NBMIN:', NBMIN( 1 )
1398          WRITE( NOUT, FMT = 9983 )'NX:   ', NXVAL( 1 )
1399          WRITE( NOUT, FMT = 9983 )'NS:   ', NSVAL( 1 )
1400          WRITE( NOUT, FMT = 9983 )'MAXB: ', MXBVAL( 1 )
1401 *
1402       ELSE IF.NOT.SSB .AND. .NOT.GLM .AND. .NOT.GQR .AND. .NOT.
1403      $         GSV .AND. .NOT.CSD .AND. .NOT.LSE ) THEN
1404 *
1405 *        For the other paths, the number of parameters can be varied
1406 *        from the input file.  Read the number of parameter values.
1407 *
1408          READ( NIN, FMT = * )NPARMS
1409          IF( NPARMS.LT.1 ) THEN
1410             WRITE( NOUT, FMT = 9989 )'NPARMS', NPARMS, 1
1411             NPARMS = 0
1412             FATAL = .TRUE.
1413          ELSE IF( NPARMS.GT.MAXIN ) THEN
1414             WRITE( NOUT, FMT = 9988 )'NPARMS', NPARMS, MAXIN
1415             NPARMS = 0
1416             FATAL = .TRUE.
1417          END IF
1418 *
1419 *        Read the values of NB
1420 *
1421          IF.NOT.SBB ) THEN
1422             READ( NIN, FMT = * )( NBVAL( I ), I = 1, NPARMS )
1423             DO 70 I = 1, NPARMS
1424                IF( NBVAL( I ).LT.0 ) THEN
1425                   WRITE( NOUT, FMT = 9989 )'   NB ', NBVAL( I ), 0
1426                   FATAL = .TRUE.
1427                ELSE IF( NBVAL( I ).GT.NMAX ) THEN
1428                   WRITE( NOUT, FMT = 9988 )'   NB ', NBVAL( I ), NMAX
1429                   FATAL = .TRUE.
1430                END IF
1431    70       CONTINUE
1432             WRITE( NOUT, FMT = 9983 )'NB:   ',
1433      $         ( NBVAL( I ), I = 1, NPARMS )
1434          END IF
1435 *
1436 *        Read the values of NBMIN
1437 *
1438          IF( NEP .OR. SEP .OR. SVD .OR. SGG ) THEN
1439             READ( NIN, FMT = * )( NBMIN( I ), I = 1, NPARMS )
1440             DO 80 I = 1, NPARMS
1441                IF( NBMIN( I ).LT.0 ) THEN
1442                   WRITE( NOUT, FMT = 9989 )'NBMIN ', NBMIN( I ), 0
1443                   FATAL = .TRUE.
1444                ELSE IF( NBMIN( I ).GT.NMAX ) THEN
1445                   WRITE( NOUT, FMT = 9988 )'NBMIN ', NBMIN( I ), NMAX
1446                   FATAL = .TRUE.
1447                END IF
1448    80       CONTINUE
1449             WRITE( NOUT, FMT = 9983 )'NBMIN:',
1450      $         ( NBMIN( I ), I = 1, NPARMS )
1451          ELSE
1452             DO 90 I = 1, NPARMS
1453                NBMIN( I ) = 1
1454    90       CONTINUE
1455          END IF
1456 *
1457 *        Read the values of NX
1458 *
1459          IF( NEP .OR. SEP .OR. SVD ) THEN
1460             READ( NIN, FMT = * )( NXVAL( I ), I = 1, NPARMS )
1461             DO 100 I = 1, NPARMS
1462                IF( NXVAL( I ).LT.0 ) THEN
1463                   WRITE( NOUT, FMT = 9989 )'   NX ', NXVAL( I ), 0
1464                   FATAL = .TRUE.
1465                ELSE IF( NXVAL( I ).GT.NMAX ) THEN
1466                   WRITE( NOUT, FMT = 9988 )'   NX ', NXVAL( I ), NMAX
1467                   FATAL = .TRUE.
1468                END IF
1469   100       CONTINUE
1470             WRITE( NOUT, FMT = 9983 )'NX:   ',
1471      $         ( NXVAL( I ), I = 1, NPARMS )
1472          ELSE
1473             DO 110 I = 1, NPARMS
1474                NXVAL( I ) = 1
1475   110       CONTINUE
1476          END IF
1477 *
1478 *        Read the values of NSHIFT (if SGG) or NRHS (if SVD
1479 *        or SBB).
1480 *
1481          IF( SVD .OR. SBB .OR. SGG ) THEN
1482             READ( NIN, FMT = * )( NSVAL( I ), I = 1, NPARMS )
1483             DO 120 I = 1, NPARMS
1484                IF( NSVAL( I ).LT.0 ) THEN
1485                   WRITE( NOUT, FMT = 9989 )'   NS ', NSVAL( I ), 0
1486                   FATAL = .TRUE.
1487                ELSE IF( NSVAL( I ).GT.NMAX ) THEN
1488                   WRITE( NOUT, FMT = 9988 )'   NS ', NSVAL( I ), NMAX
1489                   FATAL = .TRUE.
1490                END IF
1491   120       CONTINUE
1492             WRITE( NOUT, FMT = 9983 )'NS:   ',
1493      $         ( NSVAL( I ), I = 1, NPARMS )
1494          ELSE
1495             DO 130 I = 1, NPARMS
1496                NSVAL( I ) = 1
1497   130       CONTINUE
1498          END IF
1499 *
1500 *        Read the values for MAXB.
1501 *
1502          IF( SGG ) THEN
1503             READ( NIN, FMT = * )( MXBVAL( I ), I = 1, NPARMS )
1504             DO 140 I = 1, NPARMS
1505                IF( MXBVAL( I ).LT.0 ) THEN
1506                   WRITE( NOUT, FMT = 9989 )' MAXB ', MXBVAL( I ), 0
1507                   FATAL = .TRUE.
1508                ELSE IF( MXBVAL( I ).GT.NMAX ) THEN
1509                   WRITE( NOUT, FMT = 9988 )' MAXB ', MXBVAL( I ), NMAX
1510                   FATAL = .TRUE.
1511                END IF
1512   140       CONTINUE
1513             WRITE( NOUT, FMT = 9983 )'MAXB: ',
1514      $         ( MXBVAL( I ), I = 1, NPARMS )
1515          ELSE
1516             DO 150 I = 1, NPARMS
1517                MXBVAL( I ) = 1
1518   150       CONTINUE
1519          END IF
1520 *
1521 *        Read the values for INMIN.
1522 *
1523          IF( NEP ) THEN
1524             READ( NIN, FMT = * )( INMIN( I ), I = 1, NPARMS )
1525             DO 540 I = 1, NPARMS
1526                IF( INMIN( I ).LT.0 ) THEN
1527                   WRITE( NOUT, FMT = 9989 )' INMIN ', INMIN( I ), 0
1528                   FATAL = .TRUE.
1529                END IF
1530   540       CONTINUE
1531             WRITE( NOUT, FMT = 9983 )'INMIN: ',
1532      $         ( INMIN( I ), I = 1, NPARMS )
1533          ELSE
1534             DO 550 I = 1, NPARMS
1535                INMIN( I ) = 1
1536   550       CONTINUE
1537          END IF
1538 *
1539 *        Read the values for INWIN.
1540 *
1541          IF( NEP ) THEN
1542             READ( NIN, FMT = * )( INWIN( I ), I = 1, NPARMS )
1543             DO 560 I = 1, NPARMS
1544                IF( INWIN( I ).LT.0 ) THEN
1545                   WRITE( NOUT, FMT = 9989 )' INWIN ', INWIN( I ), 0
1546                   FATAL = .TRUE.
1547                END IF
1548   560       CONTINUE
1549             WRITE( NOUT, FMT = 9983 )'INWIN: ',
1550      $         ( INWIN( I ), I = 1, NPARMS )
1551          ELSE
1552             DO 570 I = 1, NPARMS
1553                INWIN( I ) = 1
1554   570       CONTINUE
1555          END IF
1556 *
1557 *        Read the values for INIBL.
1558 *
1559          IF( NEP ) THEN
1560             READ( NIN, FMT = * )( INIBL( I ), I = 1, NPARMS )
1561             DO 580 I = 1, NPARMS
1562                IF( INIBL( I ).LT.0 ) THEN
1563                   WRITE( NOUT, FMT = 9989 )' INIBL ', INIBL( I ), 0
1564                   FATAL = .TRUE.
1565                END IF
1566   580       CONTINUE
1567             WRITE( NOUT, FMT = 9983 )'INIBL: ',
1568      $         ( INIBL( I ), I = 1, NPARMS )
1569          ELSE
1570             DO 590 I = 1, NPARMS
1571                INIBL( I ) = 1
1572   590       CONTINUE
1573          END IF
1574 *
1575 *        Read the values for ISHFTS.
1576 *
1577          IF( NEP ) THEN
1578             READ( NIN, FMT = * )( ISHFTS( I ), I = 1, NPARMS )
1579             DO 600 I = 1, NPARMS
1580                IF( ISHFTS( I ).LT.0 ) THEN
1581                   WRITE( NOUT, FMT = 9989 )' ISHFTS ', ISHFTS( I ), 0
1582                   FATAL = .TRUE.
1583                END IF
1584   600       CONTINUE
1585             WRITE( NOUT, FMT = 9983 )'ISHFTS: ',
1586      $         ( ISHFTS( I ), I = 1, NPARMS )
1587          ELSE
1588             DO 610 I = 1, NPARMS
1589                ISHFTS( I ) = 1
1590   610       CONTINUE
1591          END IF
1592 *
1593 *        Read the values for IACC22.
1594 *
1595          IF( NEP ) THEN
1596             READ( NIN, FMT = * )( IACC22( I ), I = 1, NPARMS )
1597             DO 620 I = 1, NPARMS
1598                IF( IACC22( I ).LT.0 ) THEN
1599                   WRITE( NOUT, FMT = 9989 )' IACC22 ', IACC22( I ), 0
1600                   FATAL = .TRUE.
1601                END IF
1602   620       CONTINUE
1603             WRITE( NOUT, FMT = 9983 )'IACC22: ',
1604      $         ( IACC22( I ), I = 1, NPARMS )
1605          ELSE
1606             DO 630 I = 1, NPARMS
1607                IACC22( I ) = 1
1608   630       CONTINUE
1609          END IF
1610 *
1611 *        Read the values for NBCOL.
1612 *
1613          IF( SGG ) THEN
1614             READ( NIN, FMT = * )( NBCOL( I ), I = 1, NPARMS )
1615             DO 160 I = 1, NPARMS
1616                IF( NBCOL( I ).LT.0 ) THEN
1617                   WRITE( NOUT, FMT = 9989 )'NBCOL ', NBCOL( I ), 0
1618                   FATAL = .TRUE.
1619                ELSE IF( NBCOL( I ).GT.NMAX ) THEN
1620                   WRITE( NOUT, FMT = 9988 )'NBCOL ', NBCOL( I ), NMAX
1621                   FATAL = .TRUE.
1622                END IF
1623   160       CONTINUE
1624             WRITE( NOUT, FMT = 9983 )'NBCOL:',
1625      $         ( NBCOL( I ), I = 1, NPARMS )
1626          ELSE
1627             DO 170 I = 1, NPARMS
1628                NBCOL( I ) = 1
1629   170       CONTINUE
1630          END IF
1631       END IF
1632 *
1633 *     Calculate and print the machine dependent constants.
1634 *
1635       WRITE( NOUT, FMT = * )
1636       EPS = SLAMCH( 'Underflow threshold' )
1637       WRITE( NOUT, FMT = 9981 )'underflow', EPS
1638       EPS = SLAMCH( 'Overflow threshold' )
1639       WRITE( NOUT, FMT = 9981 )'overflow ', EPS
1640       EPS = SLAMCH( 'Epsilon' )
1641       WRITE( NOUT, FMT = 9981 )'precision', EPS
1642 *
1643 *     Read the threshold value for the test ratios.
1644 *
1645       READ( NIN, FMT = * )THRESH
1646       WRITE( NOUT, FMT = 9982 )THRESH
1647       IF( SEP .OR. SVD .OR. SGG ) THEN
1648 *
1649 *        Read the flag that indicates whether to test LAPACK routines.
1650 *
1651          READ( NIN, FMT = * )TSTCHK
1652 *
1653 *        Read the flag that indicates whether to test driver routines.
1654 *
1655          READ( NIN, FMT = * )TSTDRV
1656       END IF
1657 *
1658 *     Read the flag that indicates whether to test the error exits.
1659 *
1660       READ( NIN, FMT = * )TSTERR
1661 *
1662 *     Read the code describing how to set the random number seed.
1663 *
1664       READ( NIN, FMT = * )NEWSD
1665 *
1666 *     If NEWSD = 2, read another line with 4 integers for the seed.
1667 *
1668       IF( NEWSD.EQ.2 )
1669      $   READ( NIN, FMT = * )( IOLDSD( I ), I = 14 )
1670 *
1671       DO 180 I = 14
1672          ISEED( I ) = IOLDSD( I )
1673   180 CONTINUE
1674 *
1675       IF( FATAL ) THEN
1676          WRITE( NOUT, FMT = 9999 )
1677          STOP
1678       END IF
1679 *
1680 *     Read the input lines indicating the test path and its parameters.
1681 *     The first three characters indicate the test path, and the number
1682 *     of test matrix types must be the first nonblank item in columns
1683 *     4-80.
1684 *
1685   190 CONTINUE
1686 *
1687       IF.NOT.( SGX .OR. SXV ) ) THEN
1688 *
1689   200    CONTINUE
1690          READ( NIN, FMT = '(A80)'END = 380 )LINE
1691          C3 = LINE( 13 )
1692          LENP = LEN( LINE )
1693          I = 3
1694          ITMP = 0
1695          I1 = 0
1696   210    CONTINUE
1697          I = I + 1
1698          IF( I.GT.LENP ) THEN
1699             IF( I1.GT.0 ) THEN
1700                GO TO 240
1701             ELSE
1702                NTYPES = MAXT
1703                GO TO 240
1704             END IF
1705          END IF
1706          IF( LINE( I: I ).NE.' ' .AND. LINE( I: I ).NE.',' ) THEN
1707             I1 = I
1708             C1 = LINE( I1: I1 )
1709 *
1710 *        Check that a valid integer was read
1711 *
1712             DO 220 K = 110
1713                IF( C1.EQ.INTSTR( K: K ) ) THEN
1714                   IC = K - 1
1715                   GO TO 230
1716                END IF
1717   220       CONTINUE
1718             WRITE( NOUT, FMT = 9991 )I, LINE
1719             GO TO 200
1720   230       CONTINUE
1721             ITMP = 10*ITMP + IC
1722             GO TO 210
1723          ELSE IF( I1.GT.0 ) THEN
1724             GO TO 240
1725          ELSE
1726             GO TO 210
1727          END IF
1728   240    CONTINUE
1729          NTYPES = ITMP
1730 *
1731 *     Skip the tests if NTYPES is <= 0.
1732 *
1733          IF.NOT.( SEV .OR. SES .OR. SVX .OR. SSX .OR. SGV .OR.
1734      $       SGS ) .AND. NTYPES.LE.0 ) THEN
1735             WRITE( NOUT, FMT = 9990 )C3
1736             GO TO 200
1737          END IF
1738 *
1739       ELSE
1740          IF( SXV )
1741      $      C3 = 'SXV'
1742          IF( SGX )
1743      $      C3 = 'SGX'
1744       END IF
1745 *
1746 *     Reset the random number seed.
1747 *
1748       IF( NEWSD.EQ.0 ) THEN
1749          DO 250 K = 14
1750             ISEED( K ) = IOLDSD( K )
1751   250    CONTINUE
1752       END IF
1753 *
1754       IF( LSAMEN( 3, C3, 'SHS' ) .OR. LSAMEN( 3, C3, 'NEP' ) ) THEN
1755 *
1756 *        -------------------------------------
1757 *        NEP:  Nonsymmetric Eigenvalue Problem
1758 *        -------------------------------------
1759 *        Vary the parameters
1760 *           NB    = block size
1761 *           NBMIN = minimum block size
1762 *           NX    = crossover point
1763 *           NS    = number of shifts
1764 *           MAXB  = minimum submatrix size
1765 *
1766          MAXTYP = 21
1767          NTYPES = MIN( MAXTYP, NTYPES )
1768          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1769          CALL XLAENV( 11 )
1770          IF( TSTERR )
1771      $      CALL SERRHS( 'SHSEQR', NOUT )
1772          DO 270 I = 1, NPARMS
1773             CALL XLAENV( 1, NBVAL( I ) )
1774             CALL XLAENV( 2, NBMIN( I ) )
1775             CALL XLAENV( 3, NXVAL( I ) )
1776             CALL XLAENV(12MAX11, INMIN( I ) ) )
1777             CALL XLAENV(13, INWIN( I ) )
1778             CALL XLAENV(14, INIBL( I ) )
1779             CALL XLAENV(15, ISHFTS( I ) )
1780             CALL XLAENV(16, IACC22( I ) )
1781 *
1782             IF( NEWSD.EQ.0 ) THEN
1783                DO 260 K = 14
1784                   ISEED( K ) = IOLDSD( K )
1785   260          CONTINUE
1786             END IF
1787             WRITE( NOUT, FMT = 9961 )C3, NBVAL( I ), NBMIN( I ),
1788      $         NXVAL( I ), MAX11, INMIN(I)),
1789      $         INWIN( I ), INIBL( I ), ISHFTS( I ), IACC22( I )
1790             CALL SCHKHS( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
1791      $                   A( 11 ), NMAX, A( 12 ), A( 13 ),
1792      $                   A( 14 ), A( 15 ), NMAX, A( 16 ),
1793      $                   A( 17 ), D( 11 ), D( 12 ), D( 13 ),
1794      $                   D( 14 ), A( 18 ), A( 19 ), A( 110 ),
1795      $                   A( 111 ), A( 112 ), D( 15 ), WORK, LWORK,
1796      $                   IWORK, LOGWRK, RESULT, INFO )
1797             IF( INFO.NE.0 )
1798      $         WRITE( NOUT, FMT = 9980 )'SCHKHS', INFO
1799   270    CONTINUE
1800 *
1801       ELSE IF( LSAMEN( 3, C3, 'SST' ) .OR. LSAMEN( 3, C3, 'SEP' ) ) THEN
1802 *
1803 *        ----------------------------------
1804 *        SEP:  Symmetric Eigenvalue Problem
1805 *        ----------------------------------
1806 *        Vary the parameters
1807 *           NB    = block size
1808 *           NBMIN = minimum block size
1809 *           NX    = crossover point
1810 *
1811          MAXTYP = 21
1812          NTYPES = MIN( MAXTYP, NTYPES )
1813          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1814          CALL XLAENV( 11 )
1815          CALL XLAENV( 925 )
1816          IF( TSTERR )
1817      $      CALL SERRST( 'SST', NOUT )
1818          DO 290 I = 1, NPARMS
1819             CALL XLAENV( 1, NBVAL( I ) )
1820             CALL XLAENV( 2, NBMIN( I ) )
1821             CALL XLAENV( 3, NXVAL( I ) )
1822 *
1823             IF( NEWSD.EQ.0 ) THEN
1824                DO 280 K = 14
1825                   ISEED( K ) = IOLDSD( K )
1826   280          CONTINUE
1827             END IF
1828             WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
1829      $         NXVAL( I )
1830             IF( TSTCHK ) THEN
1831                CALL SCHKST( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
1832      $                      NOUT, A( 11 ), NMAX, A( 12 ), D( 11 ),
1833      $                      D( 12 ), D( 13 ), D( 14 ), D( 15 ),
1834      $                      D( 16 ), D( 17 ), D( 18 ), D( 19 ),
1835      $                      D( 110 ), D( 111 ), A( 13 ), NMAX,
1836      $                      A( 14 ), A( 15 ), D( 112 ), A( 16 ),
1837      $                      WORK, LWORK, IWORK, LIWORK, RESULT, INFO )
1838                IF( INFO.NE.0 )
1839      $            WRITE( NOUT, FMT = 9980 )'SCHKST', INFO
1840             END IF
1841             IF( TSTDRV ) THEN
1842                CALL SDRVST( NN, NVAL, 18, DOTYPE, ISEED, THRESH,
1843      $                      NOUT, A( 11 ), NMAX, D( 13 ), D( 14 ),
1844      $                      D( 15 ), D( 16 ), D( 18 ), D( 19 ),
1845      $                      D( 110 ), D( 111), A( 12 ), NMAX, 
1846      $                      A( 13 ), D( 112 ), A( 14 ), WORK, 
1847      $                      LWORK, IWORK, LIWORK, RESULT, INFO )
1848                IF( INFO.NE.0 )
1849      $            WRITE( NOUT, FMT = 9980 )'SDRVST', INFO
1850             END IF
1851   290    CONTINUE
1852 *
1853       ELSE IF( LSAMEN( 3, C3, 'SSG' ) ) THEN
1854 *
1855 *        ----------------------------------------------
1856 *        SSG:  Symmetric Generalized Eigenvalue Problem
1857 *        ----------------------------------------------
1858 *        Vary the parameters
1859 *           NB    = block size
1860 *           NBMIN = minimum block size
1861 *           NX    = crossover point
1862 *
1863          MAXTYP = 21
1864          NTYPES = MIN( MAXTYP, NTYPES )
1865          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1866          CALL XLAENV( 925 )
1867          DO 310 I = 1, NPARMS
1868             CALL XLAENV( 1, NBVAL( I ) )
1869             CALL XLAENV( 2, NBMIN( I ) )
1870             CALL XLAENV( 3, NXVAL( I ) )
1871 *
1872             IF( NEWSD.EQ.0 ) THEN
1873                DO 300 K = 14
1874                   ISEED( K ) = IOLDSD( K )
1875   300          CONTINUE
1876             END IF
1877             WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
1878      $         NXVAL( I )
1879             IF( TSTCHK ) THEN
1880                CALL SDRVSG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
1881      $                      NOUT, A( 11 ), NMAX, A( 12 ), NMAX,
1882      $                      D( 13 ), A( 13 ), NMAX, A( 14 ),
1883      $                      A( 15 ), A( 16 ), A( 17 ), WORK,
1884      $                      LWORK, IWORK, LIWORK, RESULT, INFO )
1885                IF( INFO.NE.0 )
1886      $            WRITE( NOUT, FMT = 9980 )'SDRVSG', INFO
1887             END IF
1888   310    CONTINUE
1889 *
1890       ELSE IF( LSAMEN( 3, C3, 'SBD' ) .OR. LSAMEN( 3, C3, 'SVD' ) ) THEN
1891 *
1892 *        ----------------------------------
1893 *        SVD:  Singular Value Decomposition
1894 *        ----------------------------------
1895 *        Vary the parameters
1896 *           NB    = block size
1897 *           NBMIN = minimum block size
1898 *           NX    = crossover point
1899 *           NRHS  = number of right hand sides
1900 *
1901          MAXTYP = 16
1902          NTYPES = MIN( MAXTYP, NTYPES )
1903          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1904          CALL XLAENV( 11 )
1905          CALL XLAENV( 925 )
1906 *
1907 *        Test the error exits
1908 *
1909          IF( TSTERR .AND. TSTCHK )
1910      $      CALL SERRBD( 'SBD', NOUT )
1911          IF( TSTERR .AND. TSTDRV )
1912      $      CALL SERRED( 'SBD', NOUT )
1913 *
1914          DO 330 I = 1, NPARMS
1915             NRHS = NSVAL( I )
1916             CALL XLAENV( 1, NBVAL( I ) )
1917             CALL XLAENV( 2, NBMIN( I ) )
1918             CALL XLAENV( 3, NXVAL( I ) )
1919             IF( NEWSD.EQ.0 ) THEN
1920                DO 320 K = 14
1921                   ISEED( K ) = IOLDSD( K )
1922   320          CONTINUE
1923             END IF
1924             WRITE( NOUT, FMT = 9995 )C3, NBVAL( I ), NBMIN( I ),
1925      $         NXVAL( I ), NRHS
1926             IF( TSTCHK ) THEN
1927                CALL SCHKBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, NRHS, ISEED,
1928      $                      THRESH, A( 11 ), NMAX, D( 11 ),
1929      $                      D( 12 ), D( 13 ), D( 14 ), A( 12 ),
1930      $                      NMAX, A( 13 ), A( 14 ), A( 15 ), NMAX,
1931      $                      A( 16 ), NMAX, A( 17 ), A( 18 ), WORK,
1932      $                      LWORK, IWORK, NOUT, INFO )
1933                IF( INFO.NE.0 )
1934      $            WRITE( NOUT, FMT = 9980 )'SCHKBD', INFO
1935             END IF
1936             IF( TSTDRV )
1937      $         CALL SDRVBD( NN, MVAL, NVAL, MAXTYP, DOTYPE, ISEED,
1938      $                      THRESH, A( 11 ), NMAX, A( 12 ), NMAX,
1939      $                      A( 13 ), NMAX, A( 14 ), A( 15 ),
1940      $                      A( 16 ), D( 11 ), D( 12 ), D( 13 ),
1941      $                      WORK, LWORK, IWORK, NOUT, INFO )
1942   330    CONTINUE
1943 *
1944       ELSE IF( LSAMEN( 3, C3, 'SEV' ) ) THEN
1945 *
1946 *        --------------------------------------------
1947 *        SEV:  Nonsymmetric Eigenvalue Problem Driver
1948 *              SGEEV (eigenvalues and eigenvectors)
1949 *        --------------------------------------------
1950 *
1951          MAXTYP = 21
1952          NTYPES = MIN( MAXTYP, NTYPES )
1953          IF( NTYPES.LE.0 ) THEN
1954             WRITE( NOUT, FMT = 9990 )C3
1955          ELSE
1956             IF( TSTERR )
1957      $         CALL SERRED( C3, NOUT )
1958             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1959             CALL SDRVEV( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT,
1960      $                   A( 11 ), NMAX, A( 12 ), D( 11 ),
1961      $                   D( 12 ), D( 13 ), D( 14 ), A( 13 ),
1962      $                   NMAX, A( 14 ), NMAX, A( 15 ), NMAX, RESULT,
1963      $                   WORK, LWORK, IWORK, INFO )
1964             IF( INFO.NE.0 )
1965      $         WRITE( NOUT, FMT = 9980 )'SGEEV', INFO
1966          END IF
1967          WRITE( NOUT, FMT = 9973 )
1968          GO TO 10
1969 *
1970       ELSE IF( LSAMEN( 3, C3, 'SES' ) ) THEN
1971 *
1972 *        --------------------------------------------
1973 *        SES:  Nonsymmetric Eigenvalue Problem Driver
1974 *              SGEES (Schur form)
1975 *        --------------------------------------------
1976 *
1977          MAXTYP = 21
1978          NTYPES = MIN( MAXTYP, NTYPES )
1979          IF( NTYPES.LE.0 ) THEN
1980             WRITE( NOUT, FMT = 9990 )C3
1981          ELSE
1982             IF( TSTERR )
1983      $         CALL SERRED( C3, NOUT )
1984             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
1985             CALL SDRVES( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NOUT,
1986      $                   A( 11 ), NMAX, A( 12 ), A( 13 ),
1987      $                   D( 11 ), D( 12 ), D( 13 ), D( 14 ),
1988      $                   A( 14 ), NMAX, RESULT, WORK, LWORK, IWORK,
1989      $                   LOGWRK, INFO )
1990             IF( INFO.NE.0 )
1991      $         WRITE( NOUT, FMT = 9980 )'SGEES', INFO
1992          END IF
1993          WRITE( NOUT, FMT = 9973 )
1994          GO TO 10
1995 *
1996       ELSE IF( LSAMEN( 3, C3, 'SVX' ) ) THEN
1997 *
1998 *        --------------------------------------------------------------
1999 *        SVX:  Nonsymmetric Eigenvalue Problem Expert Driver
2000 *              SGEEVX (eigenvalues, eigenvectors and condition numbers)
2001 *        --------------------------------------------------------------
2002 *
2003          MAXTYP = 21
2004          NTYPES = MIN( MAXTYP, NTYPES )
2005          IF( NTYPES.LT.0 ) THEN
2006             WRITE( NOUT, FMT = 9990 )C3
2007          ELSE
2008             IF( TSTERR )
2009      $         CALL SERRED( C3, NOUT )
2010             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2011             CALL SDRVVX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN,
2012      $                   NOUT, A( 11 ), NMAX, A( 12 ), D( 11 ),
2013      $                   D( 12 ), D( 13 ), D( 14 ), A( 13 ),
2014      $                   NMAX, A( 14 ), NMAX, A( 15 ), NMAX,
2015      $                   D( 15 ), D( 16 ), D( 17 ), D( 18 ),
2016      $                   D( 19 ), D( 110 ), D( 111 ), D( 112 ),
2017      $                   RESULT, WORK, LWORK, IWORK, INFO )
2018             IF( INFO.NE.0 )
2019      $         WRITE( NOUT, FMT = 9980 )'SGEEVX', INFO
2020          END IF
2021          WRITE( NOUT, FMT = 9973 )
2022          GO TO 10
2023 *
2024       ELSE IF( LSAMEN( 3, C3, 'SSX' ) ) THEN
2025 *
2026 *        ---------------------------------------------------
2027 *        SSX:  Nonsymmetric Eigenvalue Problem Expert Driver
2028 *              SGEESX (Schur form and condition numbers)
2029 *        ---------------------------------------------------
2030 *
2031          MAXTYP = 21
2032          NTYPES = MIN( MAXTYP, NTYPES )
2033          IF( NTYPES.LT.0 ) THEN
2034             WRITE( NOUT, FMT = 9990 )C3
2035          ELSE
2036             IF( TSTERR )
2037      $         CALL SERRED( C3, NOUT )
2038             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2039             CALL SDRVSX( NN, NVAL, NTYPES, DOTYPE, ISEED, THRESH, NIN,
2040      $                   NOUT, A( 11 ), NMAX, A( 12 ), A( 13 ),
2041      $                   D( 11 ), D( 12 ), D( 13 ), D( 14 ),
2042      $                   D( 15 ), D( 16 ), A( 14 ), NMAX,
2043      $                   A( 15 ), RESULT, WORK, LWORK, IWORK, LOGWRK,
2044      $                   INFO )
2045             IF( INFO.NE.0 )
2046      $         WRITE( NOUT, FMT = 9980 )'SGEESX', INFO
2047          END IF
2048          WRITE( NOUT, FMT = 9973 )
2049          GO TO 10
2050 *
2051       ELSE IF( LSAMEN( 3, C3, 'SGG' ) ) THEN
2052 *
2053 *        -------------------------------------------------
2054 *        SGG:  Generalized Nonsymmetric Eigenvalue Problem
2055 *        -------------------------------------------------
2056 *        Vary the parameters
2057 *           NB    = block size
2058 *           NBMIN = minimum block size
2059 *           NS    = number of shifts
2060 *           MAXB  = minimum submatrix size
2061 *           NBCOL = minimum column dimension for blocks
2062 *
2063          MAXTYP = 26
2064          NTYPES = MIN( MAXTYP, NTYPES )
2065          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2066          IF( TSTCHK .AND. TSTERR )
2067      $      CALL SERRGG( C3, NOUT )
2068          DO 350 I = 1, NPARMS
2069             CALL XLAENV( 1, NBVAL( I ) )
2070             CALL XLAENV( 2, NBMIN( I ) )
2071             CALL XLAENV( 4, NSVAL( I ) )
2072             CALL XLAENV( 8, MXBVAL( I ) )
2073             CALL XLAENV( 5, NBCOL( I ) )
2074 *
2075             IF( NEWSD.EQ.0 ) THEN
2076                DO 340 K = 14
2077                   ISEED( K ) = IOLDSD( K )
2078   340          CONTINUE
2079             END IF
2080             WRITE( NOUT, FMT = 9996 )C3, NBVAL( I ), NBMIN( I ),
2081      $         NSVAL( I ), MXBVAL( I ), NBCOL( I )
2082             TSTDIF = .FALSE.
2083             THRSHN = 10.
2084             IF( TSTCHK ) THEN
2085                CALL SCHKGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
2086      $                      TSTDIF, THRSHN, NOUT, A( 11 ), NMAX,
2087      $                      A( 12 ), A( 13 ), A( 14 ), A( 15 ),
2088      $                      A( 16 ), A( 17 ), A( 18 ), A( 19 ),
2089      $                      NMAX, A( 110 ), A( 111 ), A( 112 ),
2090      $                      D( 11 ), D( 12 ), D( 13 ), D( 14 ),
2091      $                      D( 15 ), D( 16 ), A( 113 ),
2092      $                      A( 114 ), WORK, LWORK, LOGWRK, RESULT,
2093      $                      INFO )
2094                IF( INFO.NE.0 )
2095      $            WRITE( NOUT, FMT = 9980 )'SCHKGG', INFO
2096             END IF
2097             CALL XLAENV( 11 )
2098             IF( TSTDRV ) THEN
2099                CALL SDRVGG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
2100      $                      THRSHN, NOUT, A( 11 ), NMAX, A( 12 ),
2101      $                      A( 13 ), A( 14 ), A( 15 ), A( 16 ),
2102      $                      A( 17 ), NMAX, A( 18 ), D( 11 ),
2103      $                      D( 12 ), D( 13 ), D( 14 ), D( 15 ),
2104      $                      D( 16 ), A( 113 ), A( 114 ), WORK,
2105      $                      LWORK, RESULT, INFO )
2106                IF( INFO.NE.0 )
2107      $            WRITE( NOUT, FMT = 9980 )'SDRVGG', INFO
2108             END IF
2109   350    CONTINUE
2110 *
2111       ELSE IF( LSAMEN( 3, C3, 'SGS' ) ) THEN
2112 *
2113 *        -------------------------------------------------
2114 *        SGS:  Generalized Nonsymmetric Eigenvalue Problem
2115 *              SGGES (Schur form)
2116 *        -------------------------------------------------
2117 *
2118          MAXTYP = 26
2119          NTYPES = MIN( MAXTYP, NTYPES )
2120          IF( NTYPES.LE.0 ) THEN
2121             WRITE( NOUT, FMT = 9990 )C3
2122          ELSE
2123             IF( TSTERR )
2124      $         CALL SERRGG( C3, NOUT )
2125             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2126             CALL SDRGES( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
2127      $                   A( 11 ), NMAX, A( 12 ), A( 13 ),
2128      $                   A( 14 ), A( 17 ), NMAX, A( 18 ),
2129      $                   D( 11 ), D( 12 ), D( 13 ), WORK, LWORK,
2130      $                   RESULT, LOGWRK, INFO )
2131 *
2132             IF( INFO.NE.0 )
2133      $         WRITE( NOUT, FMT = 9980 )'SDRGES', INFO
2134          END IF
2135          WRITE( NOUT, FMT = 9973 )
2136          GO TO 10
2137 *
2138       ELSE IF( SGX ) THEN
2139 *
2140 *        -------------------------------------------------
2141 *        SGX:  Generalized Nonsymmetric Eigenvalue Problem
2142 *              SGGESX (Schur form and condition numbers)
2143 *        -------------------------------------------------
2144 *
2145          MAXTYP = 5
2146          NTYPES = MAXTYP
2147          IF( NN.LT.0 ) THEN
2148             WRITE( NOUT, FMT = 9990 )C3
2149          ELSE
2150             IF( TSTERR )
2151      $         CALL SERRGG( C3, NOUT )
2152             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2153             CALL XLAENV( 52 )
2154             CALL SDRGSX( NN, NCMAX, THRESH, NIN, NOUT, A( 11 ), NMAX,
2155      $                   A( 12 ), A( 13 ), A( 14 ), A( 15 ),
2156      $                   A( 16 ), D( 11 ), D( 12 ), D( 13 ),
2157      $                   C( 11 ), NCMAX*NCMAX, A( 112 ), WORK,
2158      $                   LWORK, IWORK, LIWORK, LOGWRK, INFO )
2159             IF( INFO.NE.0 )
2160      $         WRITE( NOUT, FMT = 9980 )'SDRGSX', INFO
2161          END IF
2162          WRITE( NOUT, FMT = 9973 )
2163          GO TO 10
2164 *
2165       ELSE IF( LSAMEN( 3, C3, 'SGV' ) ) THEN
2166 *
2167 *        -------------------------------------------------
2168 *        SGV:  Generalized Nonsymmetric Eigenvalue Problem
2169 *              SGGEV (Eigenvalue/vector form)
2170 *        -------------------------------------------------
2171 *
2172          MAXTYP = 26
2173          NTYPES = MIN( MAXTYP, NTYPES )
2174          IF( NTYPES.LE.0 ) THEN
2175             WRITE( NOUT, FMT = 9990 )C3
2176          ELSE
2177             IF( TSTERR )
2178      $         CALL SERRGG( C3, NOUT )
2179             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2180             CALL SDRGEV( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH, NOUT,
2181      $                   A( 11 ), NMAX, A( 12 ), A( 13 ),
2182      $                   A( 14 ), A( 17 ), NMAX, A( 18 ),
2183      $                   A( 19 ), NMAX, D( 11 ), D( 12 ),
2184      $                   D( 13 ), D( 14 ), D( 15 ), D( 16 ),
2185      $                   WORK, LWORK, RESULT, INFO )
2186             IF( INFO.NE.0 )
2187      $         WRITE( NOUT, FMT = 9980 )'SDRGEV', INFO
2188          END IF
2189          WRITE( NOUT, FMT = 9973 )
2190          GO TO 10
2191 *
2192       ELSE IF( SXV ) THEN
2193 *
2194 *        -------------------------------------------------
2195 *        SXV:  Generalized Nonsymmetric Eigenvalue Problem
2196 *              SGGEVX (eigenvalue/vector with condition numbers)
2197 *        -------------------------------------------------
2198 *
2199          MAXTYP = 2
2200          NTYPES = MAXTYP
2201          IF( NN.LT.0 ) THEN
2202             WRITE( NOUT, FMT = 9990 )C3
2203          ELSE
2204             IF( TSTERR )
2205      $         CALL SERRGG( C3, NOUT )
2206             CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2207             CALL SDRGVX( NN, THRESH, NIN, NOUT, A( 11 ), NMAX,
2208      $                   A( 12 ), A( 13 ), A( 14 ), D( 11 ),
2209      $                   D( 12 ), D( 13 ), A( 15 ), A( 16 ),
2210      $                   IWORK( 1 ), IWORK( 2 ), D( 14 ), D( 15 ),
2211      $                   D( 16 ), D( 17 ), D( 18 ), D( 19 ),
2212      $                   WORK, LWORK, IWORK( 3 ), LIWORK-2RESULT,
2213      $                   LOGWRK, INFO )
2214 *
2215             IF( INFO.NE.0 )
2216      $         WRITE( NOUT, FMT = 9980 )'SDRGVX', INFO
2217          END IF
2218          WRITE( NOUT, FMT = 9973 )
2219          GO TO 10
2220 *
2221       ELSE IF( LSAMEN( 3, C3, 'SSB' ) ) THEN
2222 *
2223 *        ------------------------------
2224 *        SSB:  Symmetric Band Reduction
2225 *        ------------------------------
2226 *
2227          MAXTYP = 15
2228          NTYPES = MIN( MAXTYP, NTYPES )
2229          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2230          IF( TSTERR )
2231      $      CALL SERRST( 'SSB', NOUT )
2232          CALL SCHKSB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH,
2233      $                NOUT, A( 11 ), NMAX, D( 11 ), D( 12 ),
2234      $                A( 12 ), NMAX, WORK, LWORK, RESULT, INFO )
2235          IF( INFO.NE.0 )
2236      $      WRITE( NOUT, FMT = 9980 )'SCHKSB', INFO
2237 *
2238       ELSE IF( LSAMEN( 3, C3, 'SBB' ) ) THEN
2239 *
2240 *        ------------------------------
2241 *        SBB:  General Band Reduction
2242 *        ------------------------------
2243 *
2244          MAXTYP = 15
2245          NTYPES = MIN( MAXTYP, NTYPES )
2246          CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2247          DO 370 I = 1, NPARMS
2248             NRHS = NSVAL( I )
2249 *
2250             IF( NEWSD.EQ.0 ) THEN
2251                DO 360 K = 14
2252                   ISEED( K ) = IOLDSD( K )
2253   360          CONTINUE
2254             END IF
2255             WRITE( NOUT, FMT = 9966 )C3, NRHS
2256             CALL SCHKBB( NN, MVAL, NVAL, NK, KVAL, MAXTYP, DOTYPE, NRHS,
2257      $                   ISEED, THRESH, NOUT, A( 11 ), NMAX,
2258      $                   A( 12 ), 2*NMAX, D( 11 ), D( 12 ),
2259      $                   A( 14 ), NMAX, A( 15 ), NMAX, A( 16 ),
2260      $                   NMAX, A( 17 ), WORK, LWORK, RESULT, INFO )
2261             IF( INFO.NE.0 )
2262      $         WRITE( NOUT, FMT = 9980 )'SCHKBB', INFO
2263   370    CONTINUE
2264 *
2265       ELSE IF( LSAMEN( 3, C3, 'GLM' ) ) THEN
2266 *
2267 *        -----------------------------------------
2268 *        GLM:  Generalized Linear Regression Model
2269 *        -----------------------------------------
2270 *
2271          CALL XLAENV( 11 )
2272          IF( TSTERR )
2273      $      CALL SERRGG( 'GLM', NOUT )
2274          CALL SCKGLM( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
2275      $                A( 11 ), A( 12 ), B( 11 ), B( 12 ), X,
2276      $                WORK, D( 11 ), NIN, NOUT, INFO )
2277          IF( INFO.NE.0 )
2278      $      WRITE( NOUT, FMT = 9980 )'SCKGLM', INFO
2279 *
2280       ELSE IF( LSAMEN( 3, C3, 'GQR' ) ) THEN
2281 *
2282 *        ------------------------------------------
2283 *        GQR:  Generalized QR and RQ factorizations
2284 *        ------------------------------------------
2285 *
2286          CALL XLAENV( 11 )
2287          IF( TSTERR )
2288      $      CALL SERRGG( 'GQR', NOUT )
2289          CALL SCKGQR( NN, MVAL, NN, PVAL, NN, NVAL, NTYPES, ISEED,
2290      $                THRESH, NMAX, A( 11 ), A( 12 ), A( 13 ),
2291      $                A( 14 ), TAUA, B( 11 ), B( 12 ), B( 13 ),
2292      $                B( 14 ), B( 15 ), TAUB, WORK, D( 11 ), NIN,
2293      $                NOUT, INFO )
2294          IF( INFO.NE.0 )
2295      $      WRITE( NOUT, FMT = 9980 )'SCKGQR', INFO
2296 *
2297       ELSE IF( LSAMEN( 3, C3, 'GSV' ) ) THEN
2298 *
2299 *        ----------------------------------------------
2300 *        GSV:  Generalized Singular Value Decomposition
2301 *        ----------------------------------------------
2302 *
2303          IF( TSTERR )
2304      $      CALL SERRGG( 'GSV', NOUT )
2305          CALL SCKGSV( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
2306      $                A( 11 ), A( 12 ), B( 11 ), B( 12 ),
2307      $                A( 13 ), B( 13 ), A( 14 ), TAUA, TAUB,
2308      $                B( 14 ), IWORK, WORK, D( 11 ), NIN, NOUT,
2309      $                INFO )
2310          IF( INFO.NE.0 )
2311      $      WRITE( NOUT, FMT = 9980 )'SCKGSV', INFO
2312 *
2313       ELSE IF( LSAMEN( 3, C3, 'CSD' ) ) THEN
2314 *
2315 *        ----------------------------------------------
2316 *        CSD:  CS Decomposition
2317 *        ----------------------------------------------
2318 *
2319          IF( TSTERR )
2320      $      CALL SERRGG( 'CSD', NOUT )
2321          CALL SCKCSD( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
2322      $                A( 11 ), A( 12 ), A( 13 ), A( 14 ),
2323      $                A( 15 ), A( 16 ), A( 17 ), IWORK, WORK,
2324      $                D( 11 ), NIN, NOUT, INFO )
2325          IF( INFO.NE.0 )
2326      $      WRITE( NOUT, FMT = 9980 )'SCKCSD', INFO
2327 *
2328       ELSE IF( LSAMEN( 3, C3, 'LSE' ) ) THEN
2329 *
2330 *        --------------------------------------
2331 *        LSE:  Constrained Linear Least Squares
2332 *        --------------------------------------
2333 *
2334          CALL XLAENV( 11 )
2335          IF( TSTERR )
2336      $      CALL SERRGG( 'LSE', NOUT )
2337          CALL SCKLSE( NN, MVAL, PVAL, NVAL, NTYPES, ISEED, THRESH, NMAX,
2338      $                A( 11 ), A( 12 ), B( 11 ), B( 12 ), X,
2339      $                WORK, D( 11 ), NIN, NOUT, INFO )
2340          IF( INFO.NE.0 )
2341      $      WRITE( NOUT, FMT = 9980 )'SCKLSE', INFO
2342 *
2343       ELSE
2344          WRITE( NOUT, FMT = * )
2345          WRITE( NOUT, FMT = * )
2346          WRITE( NOUT, FMT = 9992 )C3
2347       END IF
2348       IF.NOT.( SGX .OR. SXV ) )
2349      $   GO TO 190
2350   380 CONTINUE
2351       WRITE( NOUT, FMT = 9994 )
2352       S2 = SECOND( )
2353       WRITE( NOUT, FMT = 9993 )S2 - S1
2354 *
2355  9999 FORMAT/ ' Execution not attempted due to input errors' )
2356  9998 FORMAT/ / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4,
2357      $      ', NS =', I4, ', MAXB =', I4 )
2358  9997 FORMAT/ / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4 )
2359  9996 FORMAT/ / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NS =', I4,
2360      $      ', MAXB =', I4, ', NBCOL =', I4 )
2361  9995 FORMAT/ / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4,
2362      $      ', NRHS =', I4 )
2363  9994 FORMAT/ / ' End of tests' )
2364  9993 FORMAT' Total time used = 'F12.2' seconds'/ )
2365  9992 FORMAT1X, A3, ':  Unrecognized path name' )
2366  9991 FORMAT/ / ' *** Invalid integer value in column ', I2,
2367      $      ' of input'' line:'/ A79 )
2368  9990 FORMAT/ / 1X, A3, ' routines were not tested' )
2369  9989 FORMAT' Invalid input value: ', A, '=', I6, '; must be >=',
2370      $      I6 )
2371  9988 FORMAT' Invalid input value: ', A, '=', I6, '; must be <=',
2372      $      I6 )
2373  9987 FORMAT' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2374  9986 FORMAT' Tests of the Symmetric Eigenvalue Problem routines' )
2375  9985 FORMAT' Tests of the Singular Value Decomposition routines' )
2376  9984 FORMAT/ ' The following parameter values will be used:' )
2377  9983 FORMAT4X, A, 10I6, / 10X, 10I6 )
2378  9982 FORMAT/ ' Routines pass computational tests if test ratio is ',
2379      $      'less than'F8.2/ )
2380  9981 FORMAT' Relative machine ', A, ' is taken to be'E16.6 )
2381  9980 FORMAT' *** Error code from ', A, ' = ', I4 )
2382  9979 FORMAT/ ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2383      $      / '    SGEEV (eigenvalues and eigevectors)' )
2384  9978 FORMAT/ ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2385      $      / '    SGEES (Schur form)' )
2386  9977 FORMAT/ ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2387      $      ' Driver'/ '    SGEEVX (eigenvalues, eigenvectors and',
2388      $      ' condition numbers)' )
2389  9976 FORMAT/ ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2390      $      ' Driver'/ '    SGEESX (Schur form and condition',
2391      $      ' numbers)' )
2392  9975 FORMAT/ ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2393      $      'Problem routines' )
2394  9974 FORMAT' Tests of SSBTRD'/ ' (reduction of a symmetric band ',
2395      $      'matrix to tridiagonal form)' )
2396  9973 FORMAT/ 1X71'-' ) )
2397  9972 FORMAT/ ' LAPACK VERSION ', I1, '.', I1, '.', I1 )
2398  9971 FORMAT/ ' Tests of the Generalized Linear Regression Model ',
2399      $      'routines' )
2400  9970 FORMAT/ ' Tests of the Generalized QR and RQ routines' )
2401  9969 FORMAT/ ' Tests of the Generalized Singular Value',
2402      $      ' Decomposition routines' )
2403  9968 FORMAT/ ' Tests of the Linear Least Squares routines' )
2404  9967 FORMAT' Tests of SGBBRD'/ ' (reduction of a general band ',
2405      $      'matrix to real bidiagonal form)' )
2406  9966 FORMAT/ / 1X, A3, ':  NRHS =', I4 )
2407  9965 FORMAT/ ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2408      $      'Problem Expert Driver SGGESX' )
2409  9964 FORMAT/ ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2410      $      'Problem Driver SGGES' )
2411  9963 FORMAT/ ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2412      $      'Problem Driver SGGEV' )
2413  9962 FORMAT/ ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2414      $      'Problem Expert Driver SGGEVX' )
2415  9961 FORMAT/ / 1X, A3, ':  NB =', I4, ', NBMIN =', I4, ', NX =', I4,
2416      $      ', INMIN=', I4, 
2417      $      ', INWIN =', I4, ', INIBL =', I4, ', ISHFTS =', I4,
2418      $      ', IACC22 =', I4)
2419  9960 FORMAT/ ' Tests of the CS Decomposition routines' )
2420 *
2421 *     End of SCHKEE
2422 *
2423       END