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