LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
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 April 2012
1036 *
1037 *> \ingroup single_eig
1038 *
1039 * =====================================================================
1040  PROGRAM schkee
1041 *
1042 * -- LAPACK test routine (version 3.4.1) --
1043 * -- LAPACK is a software package provided by Univ. of Tennessee, --
1044 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1045 * April 2012
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  s1 = second( )
1137  fatal = .false.
1138  nunit = nout
1139 *
1140 * Return to here to read multiple sets of data
1141 *
1142  10 continue
1143 *
1144 * Read the first line and set the 3-character test path
1145 *
1146  READ( nin, fmt = '(A80)', END = 380 )line
1147  path = line( 1: 3 )
1148  nep = lsamen( 3, path, 'NEP' ) .OR. lsamen( 3, path, 'SHS' )
1149  sep = lsamen( 3, path, 'SEP' ) .OR. lsamen( 3, path, 'SST' ) .OR.
1150  $ lsamen( 3, path, 'SSG' )
1151  svd = lsamen( 3, path, 'SVD' ) .OR. lsamen( 3, path, 'SBD' )
1152  sev = lsamen( 3, path, 'SEV' )
1153  ses = lsamen( 3, path, 'SES' )
1154  svx = lsamen( 3, path, 'SVX' )
1155  ssx = lsamen( 3, path, 'SSX' )
1156  sgg = lsamen( 3, path, 'SGG' )
1157  sgs = lsamen( 3, path, 'SGS' )
1158  sgx = lsamen( 3, path, 'SGX' )
1159  sgv = lsamen( 3, path, 'SGV' )
1160  sxv = lsamen( 3, path, 'SXV' )
1161  ssb = lsamen( 3, path, 'SSB' )
1162  sbb = lsamen( 3, path, 'SBB' )
1163  glm = lsamen( 3, path, 'GLM' )
1164  gqr = lsamen( 3, path, 'GQR' ) .OR. lsamen( 3, path, 'GRQ' )
1165  gsv = lsamen( 3, path, 'GSV' )
1166  csd = lsamen( 3, path, 'CSD' )
1167  lse = lsamen( 3, path, 'LSE' )
1168  sbl = lsamen( 3, path, 'SBL' )
1169  sbk = lsamen( 3, path, 'SBK' )
1170  sgl = lsamen( 3, path, 'SGL' )
1171  sgk = lsamen( 3, path, 'SGK' )
1172 *
1173 * Report values of parameters.
1174 *
1175  IF( path.EQ.' ' ) THEN
1176  go to 10
1177  ELSE IF( nep ) THEN
1178  WRITE( nout, fmt = 9987 )
1179  ELSE IF( sep ) THEN
1180  WRITE( nout, fmt = 9986 )
1181  ELSE IF( svd ) THEN
1182  WRITE( nout, fmt = 9985 )
1183  ELSE IF( sev ) THEN
1184  WRITE( nout, fmt = 9979 )
1185  ELSE IF( ses ) THEN
1186  WRITE( nout, fmt = 9978 )
1187  ELSE IF( svx ) THEN
1188  WRITE( nout, fmt = 9977 )
1189  ELSE IF( ssx ) THEN
1190  WRITE( nout, fmt = 9976 )
1191  ELSE IF( sgg ) THEN
1192  WRITE( nout, fmt = 9975 )
1193  ELSE IF( sgs ) THEN
1194  WRITE( nout, fmt = 9964 )
1195  ELSE IF( sgx ) THEN
1196  WRITE( nout, fmt = 9965 )
1197  ELSE IF( sgv ) THEN
1198  WRITE( nout, fmt = 9963 )
1199  ELSE IF( sxv ) THEN
1200  WRITE( nout, fmt = 9962 )
1201  ELSE IF( ssb ) THEN
1202  WRITE( nout, fmt = 9974 )
1203  ELSE IF( sbb ) THEN
1204  WRITE( nout, fmt = 9967 )
1205  ELSE IF( glm ) THEN
1206  WRITE( nout, fmt = 9971 )
1207  ELSE IF( gqr ) THEN
1208  WRITE( nout, fmt = 9970 )
1209  ELSE IF( gsv ) THEN
1210  WRITE( nout, fmt = 9969 )
1211  ELSE IF( csd ) THEN
1212  WRITE( nout, fmt = 9960 )
1213  ELSE IF( lse ) THEN
1214  WRITE( nout, fmt = 9968 )
1215  ELSE IF( sbl ) THEN
1216 *
1217 * SGEBAL: Balancing
1218 *
1219  CALL schkbl( nin, nout )
1220  go to 10
1221  ELSE IF( sbk ) THEN
1222 *
1223 * SGEBAK: Back transformation
1224 *
1225  CALL schkbk( nin, nout )
1226  go to 10
1227  ELSE IF( sgl ) THEN
1228 *
1229 * SGGBAL: Balancing
1230 *
1231  CALL schkgl( nin, nout )
1232  go to 10
1233  ELSE IF( sgk ) THEN
1234 *
1235 * SGGBAK: Back transformation
1236 *
1237  CALL schkgk( nin, nout )
1238  go to 10
1239  ELSE IF( lsamen( 3, path, 'SEC' ) ) THEN
1240 *
1241 * SEC: Eigencondition estimation
1242 *
1243  READ( nin, fmt = * )thresh
1244  CALL xlaenv( 1, 1 )
1245  CALL xlaenv( 12, 11 )
1246  CALL xlaenv( 13, 2 )
1247  CALL xlaenv( 14, 0 )
1248  CALL xlaenv( 15, 2 )
1249  CALL xlaenv( 16, 2 )
1250  tsterr = .true.
1251  CALL schkec( thresh, tsterr, nin, nout )
1252  go to 10
1253  ELSE
1254  WRITE( nout, fmt = 9992 )path
1255  go to 10
1256  END IF
1257  CALL ilaver( vers_major, vers_minor, vers_patch )
1258  WRITE( nout, fmt = 9972 ) vers_major, vers_minor, vers_patch
1259  WRITE( nout, fmt = 9984 )
1260 *
1261 * Read the number of values of M, P, and N.
1262 *
1263  READ( nin, fmt = * )nn
1264  IF( nn.LT.0 ) THEN
1265  WRITE( nout, fmt = 9989 )' NN ', nn, 1
1266  nn = 0
1267  fatal = .true.
1268  ELSE IF( nn.GT.maxin ) THEN
1269  WRITE( nout, fmt = 9988 )' NN ', nn, maxin
1270  nn = 0
1271  fatal = .true.
1272  END IF
1273 *
1274 * Read the values of M
1275 *
1276  IF( .NOT.( sgx .OR. sxv ) ) THEN
1277  READ( nin, fmt = * )( mval( i ), i = 1, nn )
1278  IF( svd ) THEN
1279  vname = ' M '
1280  ELSE
1281  vname = ' N '
1282  END IF
1283  DO 20 i = 1, nn
1284  IF( mval( i ).LT.0 ) THEN
1285  WRITE( nout, fmt = 9989 )vname, mval( i ), 0
1286  fatal = .true.
1287  ELSE IF( mval( i ).GT.nmax ) THEN
1288  WRITE( nout, fmt = 9988 )vname, mval( i ), nmax
1289  fatal = .true.
1290  END IF
1291  20 continue
1292  WRITE( nout, fmt = 9983 )'M: ', ( mval( i ), i = 1, nn )
1293  END IF
1294 *
1295 * Read the values of P
1296 *
1297  IF( glm .OR. gqr .OR. gsv .OR. csd .OR. lse ) THEN
1298  READ( nin, fmt = * )( pval( i ), i = 1, nn )
1299  DO 30 i = 1, nn
1300  IF( pval( i ).LT.0 ) THEN
1301  WRITE( nout, fmt = 9989 )' P ', pval( i ), 0
1302  fatal = .true.
1303  ELSE IF( pval( i ).GT.nmax ) THEN
1304  WRITE( nout, fmt = 9988 )' P ', pval( i ), nmax
1305  fatal = .true.
1306  END IF
1307  30 continue
1308  WRITE( nout, fmt = 9983 )'P: ', ( pval( i ), i = 1, nn )
1309  END IF
1310 *
1311 * Read the values of N
1312 *
1313  IF( svd .OR. sbb .OR. glm .OR. gqr .OR. gsv .OR. csd .OR.
1314  $ lse ) THEN
1315  READ( nin, fmt = * )( nval( i ), i = 1, nn )
1316  DO 40 i = 1, nn
1317  IF( nval( i ).LT.0 ) THEN
1318  WRITE( nout, fmt = 9989 )' N ', nval( i ), 0
1319  fatal = .true.
1320  ELSE IF( nval( i ).GT.nmax ) THEN
1321  WRITE( nout, fmt = 9988 )' N ', nval( i ), nmax
1322  fatal = .true.
1323  END IF
1324  40 continue
1325  ELSE
1326  DO 50 i = 1, nn
1327  nval( i ) = mval( i )
1328  50 continue
1329  END IF
1330  IF( .NOT.( sgx .OR. sxv ) ) THEN
1331  WRITE( nout, fmt = 9983 )'N: ', ( nval( i ), i = 1, nn )
1332  ELSE
1333  WRITE( nout, fmt = 9983 )'N: ', nn
1334  END IF
1335 *
1336 * Read the number of values of K, followed by the values of K
1337 *
1338  IF( ssb .OR. sbb ) THEN
1339  READ( nin, fmt = * )nk
1340  READ( nin, fmt = * )( kval( i ), i = 1, nk )
1341  DO 60 i = 1, nk
1342  IF( kval( i ).LT.0 ) THEN
1343  WRITE( nout, fmt = 9989 )' K ', kval( i ), 0
1344  fatal = .true.
1345  ELSE IF( kval( i ).GT.nmax ) THEN
1346  WRITE( nout, fmt = 9988 )' K ', kval( i ), nmax
1347  fatal = .true.
1348  END IF
1349  60 continue
1350  WRITE( nout, fmt = 9983 )'K: ', ( kval( i ), i = 1, nk )
1351  END IF
1352 *
1353  IF( sev .OR. ses .OR. svx .OR. ssx ) THEN
1354 *
1355 * For the nonsymmetric QR driver routines, only one set of
1356 * parameters is allowed.
1357 *
1358  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1359  $ inmin( 1 ), inwin( 1 ), inibl(1), ishfts(1), iacc22(1)
1360  IF( nbval( 1 ).LT.1 ) THEN
1361  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1362  fatal = .true.
1363  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1364  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1365  fatal = .true.
1366  ELSE IF( nxval( 1 ).LT.1 ) THEN
1367  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1368  fatal = .true.
1369  ELSE IF( inmin( 1 ).LT.1 ) THEN
1370  WRITE( nout, fmt = 9989 )' INMIN ', inmin( 1 ), 1
1371  fatal = .true.
1372  ELSE IF( inwin( 1 ).LT.1 ) THEN
1373  WRITE( nout, fmt = 9989 )' INWIN ', inwin( 1 ), 1
1374  fatal = .true.
1375  ELSE IF( inibl( 1 ).LT.1 ) THEN
1376  WRITE( nout, fmt = 9989 )' INIBL ', inibl( 1 ), 1
1377  fatal = .true.
1378  ELSE IF( ishfts( 1 ).LT.1 ) THEN
1379  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( 1 ), 1
1380  fatal = .true.
1381  ELSE IF( iacc22( 1 ).LT.0 ) THEN
1382  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( 1 ), 0
1383  fatal = .true.
1384  END IF
1385  CALL xlaenv( 1, nbval( 1 ) )
1386  CALL xlaenv( 2, nbmin( 1 ) )
1387  CALL xlaenv( 3, nxval( 1 ) )
1388  CALL xlaenv(12, max( 11, inmin( 1 ) ) )
1389  CALL xlaenv(13, inwin( 1 ) )
1390  CALL xlaenv(14, inibl( 1 ) )
1391  CALL xlaenv(15, ishfts( 1 ) )
1392  CALL xlaenv(16, iacc22( 1 ) )
1393  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1394  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1395  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1396  WRITE( nout, fmt = 9983 )'INMIN: ', inmin( 1 )
1397  WRITE( nout, fmt = 9983 )'INWIN: ', inwin( 1 )
1398  WRITE( nout, fmt = 9983 )'INIBL: ', inibl( 1 )
1399  WRITE( nout, fmt = 9983 )'ISHFTS: ', ishfts( 1 )
1400  WRITE( nout, fmt = 9983 )'IACC22: ', iacc22( 1 )
1401 *
1402  ELSE IF( sgs .OR. sgx .OR. sgv .OR. sxv ) THEN
1403 *
1404 * For the nonsymmetric generalized driver routines, only one set
1405 * of parameters is allowed.
1406 *
1407  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1408  $ nsval( 1 ), mxbval( 1 )
1409  IF( nbval( 1 ).LT.1 ) THEN
1410  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1411  fatal = .true.
1412  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1413  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1414  fatal = .true.
1415  ELSE IF( nxval( 1 ).LT.1 ) THEN
1416  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1417  fatal = .true.
1418  ELSE IF( nsval( 1 ).LT.2 ) THEN
1419  WRITE( nout, fmt = 9989 )' NS ', nsval( 1 ), 2
1420  fatal = .true.
1421  ELSE IF( mxbval( 1 ).LT.1 ) THEN
1422  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( 1 ), 1
1423  fatal = .true.
1424  END IF
1425  CALL xlaenv( 1, nbval( 1 ) )
1426  CALL xlaenv( 2, nbmin( 1 ) )
1427  CALL xlaenv( 3, nxval( 1 ) )
1428  CALL xlaenv( 4, nsval( 1 ) )
1429  CALL xlaenv( 8, mxbval( 1 ) )
1430  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1431  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1432  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1433  WRITE( nout, fmt = 9983 )'NS: ', nsval( 1 )
1434  WRITE( nout, fmt = 9983 )'MAXB: ', mxbval( 1 )
1435 *
1436  ELSE IF( .NOT.ssb .AND. .NOT.glm .AND. .NOT.gqr .AND. .NOT.
1437  $ gsv .AND. .NOT.csd .AND. .NOT.lse ) THEN
1438 *
1439 * For the other paths, the number of parameters can be varied
1440 * from the input file. Read the number of parameter values.
1441 *
1442  READ( nin, fmt = * )nparms
1443  IF( nparms.LT.1 ) THEN
1444  WRITE( nout, fmt = 9989 )'NPARMS', nparms, 1
1445  nparms = 0
1446  fatal = .true.
1447  ELSE IF( nparms.GT.maxin ) THEN
1448  WRITE( nout, fmt = 9988 )'NPARMS', nparms, maxin
1449  nparms = 0
1450  fatal = .true.
1451  END IF
1452 *
1453 * Read the values of NB
1454 *
1455  IF( .NOT.sbb ) THEN
1456  READ( nin, fmt = * )( nbval( i ), i = 1, nparms )
1457  DO 70 i = 1, nparms
1458  IF( nbval( i ).LT.0 ) THEN
1459  WRITE( nout, fmt = 9989 )' NB ', nbval( i ), 0
1460  fatal = .true.
1461  ELSE IF( nbval( i ).GT.nmax ) THEN
1462  WRITE( nout, fmt = 9988 )' NB ', nbval( i ), nmax
1463  fatal = .true.
1464  END IF
1465  70 continue
1466  WRITE( nout, fmt = 9983 )'NB: ',
1467  $ ( nbval( i ), i = 1, nparms )
1468  END IF
1469 *
1470 * Read the values of NBMIN
1471 *
1472  IF( nep .OR. sep .OR. svd .OR. sgg ) THEN
1473  READ( nin, fmt = * )( nbmin( i ), i = 1, nparms )
1474  DO 80 i = 1, nparms
1475  IF( nbmin( i ).LT.0 ) THEN
1476  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( i ), 0
1477  fatal = .true.
1478  ELSE IF( nbmin( i ).GT.nmax ) THEN
1479  WRITE( nout, fmt = 9988 )'NBMIN ', nbmin( i ), nmax
1480  fatal = .true.
1481  END IF
1482  80 continue
1483  WRITE( nout, fmt = 9983 )'NBMIN:',
1484  $ ( nbmin( i ), i = 1, nparms )
1485  ELSE
1486  DO 90 i = 1, nparms
1487  nbmin( i ) = 1
1488  90 continue
1489  END IF
1490 *
1491 * Read the values of NX
1492 *
1493  IF( nep .OR. sep .OR. svd ) THEN
1494  READ( nin, fmt = * )( nxval( i ), i = 1, nparms )
1495  DO 100 i = 1, nparms
1496  IF( nxval( i ).LT.0 ) THEN
1497  WRITE( nout, fmt = 9989 )' NX ', nxval( i ), 0
1498  fatal = .true.
1499  ELSE IF( nxval( i ).GT.nmax ) THEN
1500  WRITE( nout, fmt = 9988 )' NX ', nxval( i ), nmax
1501  fatal = .true.
1502  END IF
1503  100 continue
1504  WRITE( nout, fmt = 9983 )'NX: ',
1505  $ ( nxval( i ), i = 1, nparms )
1506  ELSE
1507  DO 110 i = 1, nparms
1508  nxval( i ) = 1
1509  110 continue
1510  END IF
1511 *
1512 * Read the values of NSHIFT (if SGG) or NRHS (if SVD
1513 * or SBB).
1514 *
1515  IF( svd .OR. sbb .OR. sgg ) THEN
1516  READ( nin, fmt = * )( nsval( i ), i = 1, nparms )
1517  DO 120 i = 1, nparms
1518  IF( nsval( i ).LT.0 ) THEN
1519  WRITE( nout, fmt = 9989 )' NS ', nsval( i ), 0
1520  fatal = .true.
1521  ELSE IF( nsval( i ).GT.nmax ) THEN
1522  WRITE( nout, fmt = 9988 )' NS ', nsval( i ), nmax
1523  fatal = .true.
1524  END IF
1525  120 continue
1526  WRITE( nout, fmt = 9983 )'NS: ',
1527  $ ( nsval( i ), i = 1, nparms )
1528  ELSE
1529  DO 130 i = 1, nparms
1530  nsval( i ) = 1
1531  130 continue
1532  END IF
1533 *
1534 * Read the values for MAXB.
1535 *
1536  IF( sgg ) THEN
1537  READ( nin, fmt = * )( mxbval( i ), i = 1, nparms )
1538  DO 140 i = 1, nparms
1539  IF( mxbval( i ).LT.0 ) THEN
1540  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( i ), 0
1541  fatal = .true.
1542  ELSE IF( mxbval( i ).GT.nmax ) THEN
1543  WRITE( nout, fmt = 9988 )' MAXB ', mxbval( i ), nmax
1544  fatal = .true.
1545  END IF
1546  140 continue
1547  WRITE( nout, fmt = 9983 )'MAXB: ',
1548  $ ( mxbval( i ), i = 1, nparms )
1549  ELSE
1550  DO 150 i = 1, nparms
1551  mxbval( i ) = 1
1552  150 continue
1553  END IF
1554 *
1555 * Read the values for INMIN.
1556 *
1557  IF( nep ) THEN
1558  READ( nin, fmt = * )( inmin( i ), i = 1, nparms )
1559  DO 540 i = 1, nparms
1560  IF( inmin( i ).LT.0 ) THEN
1561  WRITE( nout, fmt = 9989 )' INMIN ', inmin( i ), 0
1562  fatal = .true.
1563  END IF
1564  540 continue
1565  WRITE( nout, fmt = 9983 )'INMIN: ',
1566  $ ( inmin( i ), i = 1, nparms )
1567  ELSE
1568  DO 550 i = 1, nparms
1569  inmin( i ) = 1
1570  550 continue
1571  END IF
1572 *
1573 * Read the values for INWIN.
1574 *
1575  IF( nep ) THEN
1576  READ( nin, fmt = * )( inwin( i ), i = 1, nparms )
1577  DO 560 i = 1, nparms
1578  IF( inwin( i ).LT.0 ) THEN
1579  WRITE( nout, fmt = 9989 )' INWIN ', inwin( i ), 0
1580  fatal = .true.
1581  END IF
1582  560 continue
1583  WRITE( nout, fmt = 9983 )'INWIN: ',
1584  $ ( inwin( i ), i = 1, nparms )
1585  ELSE
1586  DO 570 i = 1, nparms
1587  inwin( i ) = 1
1588  570 continue
1589  END IF
1590 *
1591 * Read the values for INIBL.
1592 *
1593  IF( nep ) THEN
1594  READ( nin, fmt = * )( inibl( i ), i = 1, nparms )
1595  DO 580 i = 1, nparms
1596  IF( inibl( i ).LT.0 ) THEN
1597  WRITE( nout, fmt = 9989 )' INIBL ', inibl( i ), 0
1598  fatal = .true.
1599  END IF
1600  580 continue
1601  WRITE( nout, fmt = 9983 )'INIBL: ',
1602  $ ( inibl( i ), i = 1, nparms )
1603  ELSE
1604  DO 590 i = 1, nparms
1605  inibl( i ) = 1
1606  590 continue
1607  END IF
1608 *
1609 * Read the values for ISHFTS.
1610 *
1611  IF( nep ) THEN
1612  READ( nin, fmt = * )( ishfts( i ), i = 1, nparms )
1613  DO 600 i = 1, nparms
1614  IF( ishfts( i ).LT.0 ) THEN
1615  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( i ), 0
1616  fatal = .true.
1617  END IF
1618  600 continue
1619  WRITE( nout, fmt = 9983 )'ISHFTS: ',
1620  $ ( ishfts( i ), i = 1, nparms )
1621  ELSE
1622  DO 610 i = 1, nparms
1623  ishfts( i ) = 1
1624  610 continue
1625  END IF
1626 *
1627 * Read the values for IACC22.
1628 *
1629  IF( nep ) THEN
1630  READ( nin, fmt = * )( iacc22( i ), i = 1, nparms )
1631  DO 620 i = 1, nparms
1632  IF( iacc22( i ).LT.0 ) THEN
1633  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( i ), 0
1634  fatal = .true.
1635  END IF
1636  620 continue
1637  WRITE( nout, fmt = 9983 )'IACC22: ',
1638  $ ( iacc22( i ), i = 1, nparms )
1639  ELSE
1640  DO 630 i = 1, nparms
1641  iacc22( i ) = 1
1642  630 continue
1643  END IF
1644 *
1645 * Read the values for NBCOL.
1646 *
1647  IF( sgg ) THEN
1648  READ( nin, fmt = * )( nbcol( i ), i = 1, nparms )
1649  DO 160 i = 1, nparms
1650  IF( nbcol( i ).LT.0 ) THEN
1651  WRITE( nout, fmt = 9989 )'NBCOL ', nbcol( i ), 0
1652  fatal = .true.
1653  ELSE IF( nbcol( i ).GT.nmax ) THEN
1654  WRITE( nout, fmt = 9988 )'NBCOL ', nbcol( i ), nmax
1655  fatal = .true.
1656  END IF
1657  160 continue
1658  WRITE( nout, fmt = 9983 )'NBCOL:',
1659  $ ( nbcol( i ), i = 1, nparms )
1660  ELSE
1661  DO 170 i = 1, nparms
1662  nbcol( i ) = 1
1663  170 continue
1664  END IF
1665  END IF
1666 *
1667 * Calculate and print the machine dependent constants.
1668 *
1669  WRITE( nout, fmt = * )
1670  eps = slamch( 'Underflow threshold' )
1671  WRITE( nout, fmt = 9981 )'underflow', eps
1672  eps = slamch( 'Overflow threshold' )
1673  WRITE( nout, fmt = 9981 )'overflow ', eps
1674  eps = slamch( 'Epsilon' )
1675  WRITE( nout, fmt = 9981 )'precision', eps
1676 *
1677 * Read the threshold value for the test ratios.
1678 *
1679  READ( nin, fmt = * )thresh
1680  WRITE( nout, fmt = 9982 )thresh
1681  IF( sep .OR. svd .OR. sgg ) THEN
1682 *
1683 * Read the flag that indicates whether to test LAPACK routines.
1684 *
1685  READ( nin, fmt = * )tstchk
1686 *
1687 * Read the flag that indicates whether to test driver routines.
1688 *
1689  READ( nin, fmt = * )tstdrv
1690  END IF
1691 *
1692 * Read the flag that indicates whether to test the error exits.
1693 *
1694  READ( nin, fmt = * )tsterr
1695 *
1696 * Read the code describing how to set the random number seed.
1697 *
1698  READ( nin, fmt = * )newsd
1699 *
1700 * If NEWSD = 2, read another line with 4 integers for the seed.
1701 *
1702  IF( newsd.EQ.2 )
1703  $ READ( nin, fmt = * )( ioldsd( i ), i = 1, 4 )
1704 *
1705  DO 180 i = 1, 4
1706  iseed( i ) = ioldsd( i )
1707  180 continue
1708 *
1709  IF( fatal ) THEN
1710  WRITE( nout, fmt = 9999 )
1711  stop
1712  END IF
1713 *
1714 * Read the input lines indicating the test path and its parameters.
1715 * The first three characters indicate the test path, and the number
1716 * of test matrix types must be the first nonblank item in columns
1717 * 4-80.
1718 *
1719  190 continue
1720 *
1721  IF( .NOT.( sgx .OR. sxv ) ) THEN
1722 *
1723  200 continue
1724  READ( nin, fmt = '(A80)', END = 380 )line
1725  c3 = line( 1: 3 )
1726  lenp = len( line )
1727  i = 3
1728  itmp = 0
1729  i1 = 0
1730  210 continue
1731  i = i + 1
1732  IF( i.GT.lenp ) THEN
1733  IF( i1.GT.0 ) THEN
1734  go to 240
1735  ELSE
1736  ntypes = maxt
1737  go to 240
1738  END IF
1739  END IF
1740  IF( line( i: i ).NE.' ' .AND. line( i: i ).NE.',' ) THEN
1741  i1 = i
1742  c1 = line( i1: i1 )
1743 *
1744 * Check that a valid integer was read
1745 *
1746  DO 220 k = 1, 10
1747  IF( c1.EQ.intstr( k: k ) ) THEN
1748  ic = k - 1
1749  go to 230
1750  END IF
1751  220 continue
1752  WRITE( nout, fmt = 9991 )i, line
1753  go to 200
1754  230 continue
1755  itmp = 10*itmp + ic
1756  go to 210
1757  ELSE IF( i1.GT.0 ) THEN
1758  go to 240
1759  ELSE
1760  go to 210
1761  END IF
1762  240 continue
1763  ntypes = itmp
1764 *
1765 * Skip the tests if NTYPES is <= 0.
1766 *
1767  IF( .NOT.( sev .OR. ses .OR. svx .OR. ssx .OR. sgv .OR.
1768  $ sgs ) .AND. ntypes.LE.0 ) THEN
1769  WRITE( nout, fmt = 9990 )c3
1770  go to 200
1771  END IF
1772 *
1773  ELSE
1774  IF( sxv )
1775  $ c3 = 'SXV'
1776  IF( sgx )
1777  $ c3 = 'SGX'
1778  END IF
1779 *
1780 * Reset the random number seed.
1781 *
1782  IF( newsd.EQ.0 ) THEN
1783  DO 250 k = 1, 4
1784  iseed( k ) = ioldsd( k )
1785  250 continue
1786  END IF
1787 *
1788  IF( lsamen( 3, c3, 'SHS' ) .OR. lsamen( 3, c3, 'NEP' ) ) THEN
1789 *
1790 * -------------------------------------
1791 * NEP: Nonsymmetric Eigenvalue Problem
1792 * -------------------------------------
1793 * Vary the parameters
1794 * NB = block size
1795 * NBMIN = minimum block size
1796 * NX = crossover point
1797 * NS = number of shifts
1798 * MAXB = minimum submatrix size
1799 *
1800  maxtyp = 21
1801  ntypes = min( maxtyp, ntypes )
1802  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1803  CALL xlaenv( 1, 1 )
1804  IF( tsterr )
1805  $ CALL serrhs( 'SHSEQR', nout )
1806  DO 270 i = 1, nparms
1807  CALL xlaenv( 1, nbval( i ) )
1808  CALL xlaenv( 2, nbmin( i ) )
1809  CALL xlaenv( 3, nxval( i ) )
1810  CALL xlaenv(12, max( 11, inmin( i ) ) )
1811  CALL xlaenv(13, inwin( i ) )
1812  CALL xlaenv(14, inibl( i ) )
1813  CALL xlaenv(15, ishfts( i ) )
1814  CALL xlaenv(16, iacc22( i ) )
1815 *
1816  IF( newsd.EQ.0 ) THEN
1817  DO 260 k = 1, 4
1818  iseed( k ) = ioldsd( k )
1819  260 continue
1820  END IF
1821  WRITE( nout, fmt = 9961 )c3, nbval( i ), nbmin( i ),
1822  $ nxval( i ), max( 11, inmin(i)),
1823  $ inwin( i ), inibl( i ), ishfts( i ), iacc22( i )
1824  CALL schkhs( nn, nval, maxtyp, dotype, iseed, thresh, nout,
1825  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
1826  $ a( 1, 4 ), a( 1, 5 ), nmax, a( 1, 6 ),
1827  $ a( 1, 7 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
1828  $ d( 1, 4 ), a( 1, 8 ), a( 1, 9 ), a( 1, 10 ),
1829  $ a( 1, 11 ), a( 1, 12 ), d( 1, 5 ), work, lwork,
1830  $ iwork, logwrk, result, info )
1831  IF( info.NE.0 )
1832  $ WRITE( nout, fmt = 9980 )'SCHKHS', info
1833  270 continue
1834 *
1835  ELSE IF( lsamen( 3, c3, 'SST' ) .OR. lsamen( 3, c3, 'SEP' ) ) THEN
1836 *
1837 * ----------------------------------
1838 * SEP: Symmetric Eigenvalue Problem
1839 * ----------------------------------
1840 * Vary the parameters
1841 * NB = block size
1842 * NBMIN = minimum block size
1843 * NX = crossover point
1844 *
1845  maxtyp = 21
1846  ntypes = min( maxtyp, ntypes )
1847  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1848  CALL xlaenv( 1, 1 )
1849  CALL xlaenv( 9, 25 )
1850  IF( tsterr )
1851  $ CALL serrst( 'SST', nout )
1852  DO 290 i = 1, nparms
1853  CALL xlaenv( 1, nbval( i ) )
1854  CALL xlaenv( 2, nbmin( i ) )
1855  CALL xlaenv( 3, nxval( i ) )
1856 *
1857  IF( newsd.EQ.0 ) THEN
1858  DO 280 k = 1, 4
1859  iseed( k ) = ioldsd( k )
1860  280 continue
1861  END IF
1862  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1863  $ nxval( i )
1864  IF( tstchk ) THEN
1865  CALL schkst( nn, nval, maxtyp, dotype, iseed, thresh,
1866  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
1867  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
1868  $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
1869  $ d( 1, 10 ), d( 1, 11 ), a( 1, 3 ), nmax,
1870  $ a( 1, 4 ), a( 1, 5 ), d( 1, 12 ), a( 1, 6 ),
1871  $ work, lwork, iwork, liwork, result, info )
1872  IF( info.NE.0 )
1873  $ WRITE( nout, fmt = 9980 )'SCHKST', info
1874  END IF
1875  IF( tstdrv ) THEN
1876  CALL sdrvst( nn, nval, 18, dotype, iseed, thresh,
1877  $ nout, a( 1, 1 ), nmax, d( 1, 3 ), d( 1, 4 ),
1878  $ d( 1, 5 ), d( 1, 6 ), d( 1, 8 ), d( 1, 9 ),
1879  $ d( 1, 10 ), d( 1, 11), a( 1, 2 ), nmax,
1880  $ a( 1, 3 ), d( 1, 12 ), a( 1, 4 ), work,
1881  $ lwork, iwork, liwork, result, info )
1882  IF( info.NE.0 )
1883  $ WRITE( nout, fmt = 9980 )'SDRVST', info
1884  END IF
1885  290 continue
1886 *
1887  ELSE IF( lsamen( 3, c3, 'SSG' ) ) THEN
1888 *
1889 * ----------------------------------------------
1890 * SSG: Symmetric Generalized Eigenvalue Problem
1891 * ----------------------------------------------
1892 * Vary the parameters
1893 * NB = block size
1894 * NBMIN = minimum block size
1895 * NX = crossover point
1896 *
1897  maxtyp = 21
1898  ntypes = min( maxtyp, ntypes )
1899  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1900  CALL xlaenv( 9, 25 )
1901  DO 310 i = 1, nparms
1902  CALL xlaenv( 1, nbval( i ) )
1903  CALL xlaenv( 2, nbmin( i ) )
1904  CALL xlaenv( 3, nxval( i ) )
1905 *
1906  IF( newsd.EQ.0 ) THEN
1907  DO 300 k = 1, 4
1908  iseed( k ) = ioldsd( k )
1909  300 continue
1910  END IF
1911  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1912  $ nxval( i )
1913  IF( tstchk ) THEN
1914  CALL sdrvsg( nn, nval, maxtyp, dotype, iseed, thresh,
1915  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1916  $ d( 1, 3 ), a( 1, 3 ), nmax, a( 1, 4 ),
1917  $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), work,
1918  $ lwork, iwork, liwork, result, info )
1919  IF( info.NE.0 )
1920  $ WRITE( nout, fmt = 9980 )'SDRVSG', info
1921  END IF
1922  310 continue
1923 *
1924  ELSE IF( lsamen( 3, c3, 'SBD' ) .OR. lsamen( 3, c3, 'SVD' ) ) THEN
1925 *
1926 * ----------------------------------
1927 * SVD: Singular Value Decomposition
1928 * ----------------------------------
1929 * Vary the parameters
1930 * NB = block size
1931 * NBMIN = minimum block size
1932 * NX = crossover point
1933 * NRHS = number of right hand sides
1934 *
1935  maxtyp = 16
1936  ntypes = min( maxtyp, ntypes )
1937  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1938  CALL xlaenv( 1, 1 )
1939  CALL xlaenv( 9, 25 )
1940 *
1941 * Test the error exits
1942 *
1943  IF( tsterr .AND. tstchk )
1944  $ CALL serrbd( 'SBD', nout )
1945  IF( tsterr .AND. tstdrv )
1946  $ CALL serred( 'SBD', nout )
1947 *
1948  DO 330 i = 1, nparms
1949  nrhs = nsval( i )
1950  CALL xlaenv( 1, nbval( i ) )
1951  CALL xlaenv( 2, nbmin( i ) )
1952  CALL xlaenv( 3, nxval( i ) )
1953  IF( newsd.EQ.0 ) THEN
1954  DO 320 k = 1, 4
1955  iseed( k ) = ioldsd( k )
1956  320 continue
1957  END IF
1958  WRITE( nout, fmt = 9995 )c3, nbval( i ), nbmin( i ),
1959  $ nxval( i ), nrhs
1960  IF( tstchk ) THEN
1961  CALL schkbd( nn, mval, nval, maxtyp, dotype, nrhs, iseed,
1962  $ thresh, a( 1, 1 ), nmax, d( 1, 1 ),
1963  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 2 ),
1964  $ nmax, a( 1, 3 ), a( 1, 4 ), a( 1, 5 ), nmax,
1965  $ a( 1, 6 ), nmax, a( 1, 7 ), a( 1, 8 ), work,
1966  $ lwork, iwork, nout, info )
1967  IF( info.NE.0 )
1968  $ WRITE( nout, fmt = 9980 )'SCHKBD', info
1969  END IF
1970  IF( tstdrv )
1971  $ CALL sdrvbd( nn, mval, nval, maxtyp, dotype, iseed,
1972  $ thresh, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1973  $ a( 1, 3 ), nmax, a( 1, 4 ), a( 1, 5 ),
1974  $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
1975  $ work, lwork, iwork, nout, info )
1976  330 continue
1977 *
1978  ELSE IF( lsamen( 3, c3, 'SEV' ) ) THEN
1979 *
1980 * --------------------------------------------
1981 * SEV: Nonsymmetric Eigenvalue Problem Driver
1982 * SGEEV (eigenvalues and eigenvectors)
1983 * --------------------------------------------
1984 *
1985  maxtyp = 21
1986  ntypes = min( maxtyp, ntypes )
1987  IF( ntypes.LE.0 ) THEN
1988  WRITE( nout, fmt = 9990 )c3
1989  ELSE
1990  IF( tsterr )
1991  $ CALL serred( c3, nout )
1992  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1993  CALL sdrvev( nn, nval, ntypes, dotype, iseed, thresh, nout,
1994  $ a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
1995  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
1996  $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax, result,
1997  $ work, lwork, iwork, info )
1998  IF( info.NE.0 )
1999  $ WRITE( nout, fmt = 9980 )'SGEEV', info
2000  END IF
2001  WRITE( nout, fmt = 9973 )
2002  go to 10
2003 *
2004  ELSE IF( lsamen( 3, c3, 'SES' ) ) THEN
2005 *
2006 * --------------------------------------------
2007 * SES: Nonsymmetric Eigenvalue Problem Driver
2008 * SGEES (Schur form)
2009 * --------------------------------------------
2010 *
2011  maxtyp = 21
2012  ntypes = min( maxtyp, ntypes )
2013  IF( ntypes.LE.0 ) THEN
2014  WRITE( nout, fmt = 9990 )c3
2015  ELSE
2016  IF( tsterr )
2017  $ CALL serred( c3, nout )
2018  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2019  CALL sdrves( nn, nval, ntypes, dotype, iseed, thresh, nout,
2020  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2021  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2022  $ a( 1, 4 ), nmax, result, work, lwork, iwork,
2023  $ logwrk, info )
2024  IF( info.NE.0 )
2025  $ WRITE( nout, fmt = 9980 )'SGEES', info
2026  END IF
2027  WRITE( nout, fmt = 9973 )
2028  go to 10
2029 *
2030  ELSE IF( lsamen( 3, c3, 'SVX' ) ) THEN
2031 *
2032 * --------------------------------------------------------------
2033 * SVX: Nonsymmetric Eigenvalue Problem Expert Driver
2034 * SGEEVX (eigenvalues, eigenvectors and condition numbers)
2035 * --------------------------------------------------------------
2036 *
2037  maxtyp = 21
2038  ntypes = min( maxtyp, ntypes )
2039  IF( ntypes.LT.0 ) THEN
2040  WRITE( nout, fmt = 9990 )c3
2041  ELSE
2042  IF( tsterr )
2043  $ CALL serred( c3, nout )
2044  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2045  CALL sdrvvx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2046  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
2047  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
2048  $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax,
2049  $ d( 1, 5 ), d( 1, 6 ), d( 1, 7 ), d( 1, 8 ),
2050  $ d( 1, 9 ), d( 1, 10 ), d( 1, 11 ), d( 1, 12 ),
2051  $ result, work, lwork, iwork, info )
2052  IF( info.NE.0 )
2053  $ WRITE( nout, fmt = 9980 )'SGEEVX', info
2054  END IF
2055  WRITE( nout, fmt = 9973 )
2056  go to 10
2057 *
2058  ELSE IF( lsamen( 3, c3, 'SSX' ) ) THEN
2059 *
2060 * ---------------------------------------------------
2061 * SSX: Nonsymmetric Eigenvalue Problem Expert Driver
2062 * SGEESX (Schur form and condition numbers)
2063 * ---------------------------------------------------
2064 *
2065  maxtyp = 21
2066  ntypes = min( maxtyp, ntypes )
2067  IF( ntypes.LT.0 ) THEN
2068  WRITE( nout, fmt = 9990 )c3
2069  ELSE
2070  IF( tsterr )
2071  $ CALL serred( c3, nout )
2072  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2073  CALL sdrvsx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2074  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2075  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2076  $ d( 1, 5 ), d( 1, 6 ), a( 1, 4 ), nmax,
2077  $ a( 1, 5 ), result, work, lwork, iwork, logwrk,
2078  $ info )
2079  IF( info.NE.0 )
2080  $ WRITE( nout, fmt = 9980 )'SGEESX', info
2081  END IF
2082  WRITE( nout, fmt = 9973 )
2083  go to 10
2084 *
2085  ELSE IF( lsamen( 3, c3, 'SGG' ) ) THEN
2086 *
2087 * -------------------------------------------------
2088 * SGG: Generalized Nonsymmetric Eigenvalue Problem
2089 * -------------------------------------------------
2090 * Vary the parameters
2091 * NB = block size
2092 * NBMIN = minimum block size
2093 * NS = number of shifts
2094 * MAXB = minimum submatrix size
2095 * NBCOL = minimum column dimension for blocks
2096 *
2097  maxtyp = 26
2098  ntypes = min( maxtyp, ntypes )
2099  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2100  IF( tstchk .AND. tsterr )
2101  $ CALL serrgg( c3, nout )
2102  DO 350 i = 1, nparms
2103  CALL xlaenv( 1, nbval( i ) )
2104  CALL xlaenv( 2, nbmin( i ) )
2105  CALL xlaenv( 4, nsval( i ) )
2106  CALL xlaenv( 8, mxbval( i ) )
2107  CALL xlaenv( 5, nbcol( i ) )
2108 *
2109  IF( newsd.EQ.0 ) THEN
2110  DO 340 k = 1, 4
2111  iseed( k ) = ioldsd( k )
2112  340 continue
2113  END IF
2114  WRITE( nout, fmt = 9996 )c3, nbval( i ), nbmin( i ),
2115  $ nsval( i ), mxbval( i ), nbcol( i )
2116  tstdif = .false.
2117  thrshn = 10.
2118  IF( tstchk ) THEN
2119  CALL schkgg( nn, nval, maxtyp, dotype, iseed, thresh,
2120  $ tstdif, thrshn, nout, a( 1, 1 ), nmax,
2121  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2122  $ a( 1, 6 ), a( 1, 7 ), a( 1, 8 ), a( 1, 9 ),
2123  $ nmax, a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
2124  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2125  $ d( 1, 5 ), d( 1, 6 ), a( 1, 13 ),
2126  $ a( 1, 14 ), work, lwork, logwrk, result,
2127  $ info )
2128  IF( info.NE.0 )
2129  $ WRITE( nout, fmt = 9980 )'SCHKGG', info
2130  END IF
2131  CALL xlaenv( 1, 1 )
2132  IF( tstdrv ) THEN
2133  CALL sdrvgg( nn, nval, maxtyp, dotype, iseed, thresh,
2134  $ thrshn, nout, a( 1, 1 ), nmax, a( 1, 2 ),
2135  $ a( 1, 3 ), a( 1, 4 ), a( 1, 5 ), a( 1, 6 ),
2136  $ a( 1, 7 ), nmax, a( 1, 8 ), d( 1, 1 ),
2137  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
2138  $ d( 1, 6 ), a( 1, 13 ), a( 1, 14 ), work,
2139  $ lwork, result, info )
2140  IF( info.NE.0 )
2141  $ WRITE( nout, fmt = 9980 )'SDRVGG', info
2142  END IF
2143  350 continue
2144 *
2145  ELSE IF( lsamen( 3, c3, 'SGS' ) ) THEN
2146 *
2147 * -------------------------------------------------
2148 * SGS: Generalized Nonsymmetric Eigenvalue Problem
2149 * SGGES (Schur form)
2150 * -------------------------------------------------
2151 *
2152  maxtyp = 26
2153  ntypes = min( maxtyp, ntypes )
2154  IF( ntypes.LE.0 ) THEN
2155  WRITE( nout, fmt = 9990 )c3
2156  ELSE
2157  IF( tsterr )
2158  $ CALL serrgg( c3, nout )
2159  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2160  CALL sdrges( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2161  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2162  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2163  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), work, lwork,
2164  $ result, logwrk, info )
2165 *
2166  IF( info.NE.0 )
2167  $ WRITE( nout, fmt = 9980 )'SDRGES', info
2168  END IF
2169  WRITE( nout, fmt = 9973 )
2170  go to 10
2171 *
2172  ELSE IF( sgx ) THEN
2173 *
2174 * -------------------------------------------------
2175 * SGX: Generalized Nonsymmetric Eigenvalue Problem
2176 * SGGESX (Schur form and condition numbers)
2177 * -------------------------------------------------
2178 *
2179  maxtyp = 5
2180  ntypes = maxtyp
2181  IF( nn.LT.0 ) THEN
2182  WRITE( nout, fmt = 9990 )c3
2183  ELSE
2184  IF( tsterr )
2185  $ CALL serrgg( c3, nout )
2186  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2187  CALL xlaenv( 5, 2 )
2188  CALL sdrgsx( nn, ncmax, thresh, nin, nout, a( 1, 1 ), nmax,
2189  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2190  $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
2191  $ c( 1, 1 ), ncmax*ncmax, a( 1, 12 ), work,
2192  $ lwork, iwork, liwork, logwrk, info )
2193  IF( info.NE.0 )
2194  $ WRITE( nout, fmt = 9980 )'SDRGSX', info
2195  END IF
2196  WRITE( nout, fmt = 9973 )
2197  go to 10
2198 *
2199  ELSE IF( lsamen( 3, c3, 'SGV' ) ) THEN
2200 *
2201 * -------------------------------------------------
2202 * SGV: Generalized Nonsymmetric Eigenvalue Problem
2203 * SGGEV (Eigenvalue/vector form)
2204 * -------------------------------------------------
2205 *
2206  maxtyp = 26
2207  ntypes = min( maxtyp, ntypes )
2208  IF( ntypes.LE.0 ) THEN
2209  WRITE( nout, fmt = 9990 )c3
2210  ELSE
2211  IF( tsterr )
2212  $ CALL serrgg( c3, nout )
2213  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2214  CALL sdrgev( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2215  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2216  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2217  $ a( 1, 9 ), nmax, d( 1, 1 ), d( 1, 2 ),
2218  $ d( 1, 3 ), d( 1, 4 ), d( 1, 5 ), d( 1, 6 ),
2219  $ work, lwork, result, info )
2220  IF( info.NE.0 )
2221  $ WRITE( nout, fmt = 9980 )'SDRGEV', info
2222  END IF
2223  WRITE( nout, fmt = 9973 )
2224  go to 10
2225 *
2226  ELSE IF( sxv ) THEN
2227 *
2228 * -------------------------------------------------
2229 * SXV: Generalized Nonsymmetric Eigenvalue Problem
2230 * SGGEVX (eigenvalue/vector with condition numbers)
2231 * -------------------------------------------------
2232 *
2233  maxtyp = 2
2234  ntypes = maxtyp
2235  IF( nn.LT.0 ) THEN
2236  WRITE( nout, fmt = 9990 )c3
2237  ELSE
2238  IF( tsterr )
2239  $ CALL serrgg( c3, nout )
2240  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2241  CALL sdrgvx( nn, thresh, nin, nout, a( 1, 1 ), nmax,
2242  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), d( 1, 1 ),
2243  $ d( 1, 2 ), d( 1, 3 ), a( 1, 5 ), a( 1, 6 ),
2244  $ iwork( 1 ), iwork( 2 ), d( 1, 4 ), d( 1, 5 ),
2245  $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
2246  $ work, lwork, iwork( 3 ), liwork-2, result,
2247  $ logwrk, info )
2248 *
2249  IF( info.NE.0 )
2250  $ WRITE( nout, fmt = 9980 )'SDRGVX', info
2251  END IF
2252  WRITE( nout, fmt = 9973 )
2253  go to 10
2254 *
2255  ELSE IF( lsamen( 3, c3, 'SSB' ) ) THEN
2256 *
2257 * ------------------------------
2258 * SSB: Symmetric Band Reduction
2259 * ------------------------------
2260 *
2261  maxtyp = 15
2262  ntypes = min( maxtyp, ntypes )
2263  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2264  IF( tsterr )
2265  $ CALL serrst( 'SSB', nout )
2266  CALL schksb( nn, nval, nk, kval, maxtyp, dotype, iseed, thresh,
2267  $ nout, a( 1, 1 ), nmax, d( 1, 1 ), d( 1, 2 ),
2268  $ a( 1, 2 ), nmax, work, lwork, result, info )
2269  IF( info.NE.0 )
2270  $ WRITE( nout, fmt = 9980 )'SCHKSB', info
2271 *
2272  ELSE IF( lsamen( 3, c3, 'SBB' ) ) THEN
2273 *
2274 * ------------------------------
2275 * SBB: General Band Reduction
2276 * ------------------------------
2277 *
2278  maxtyp = 15
2279  ntypes = min( maxtyp, ntypes )
2280  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2281  DO 370 i = 1, nparms
2282  nrhs = nsval( i )
2283 *
2284  IF( newsd.EQ.0 ) THEN
2285  DO 360 k = 1, 4
2286  iseed( k ) = ioldsd( k )
2287  360 continue
2288  END IF
2289  WRITE( nout, fmt = 9966 )c3, nrhs
2290  CALL schkbb( nn, mval, nval, nk, kval, maxtyp, dotype, nrhs,
2291  $ iseed, thresh, nout, a( 1, 1 ), nmax,
2292  $ a( 1, 2 ), 2*nmax, d( 1, 1 ), d( 1, 2 ),
2293  $ a( 1, 4 ), nmax, a( 1, 5 ), nmax, a( 1, 6 ),
2294  $ nmax, a( 1, 7 ), work, lwork, result, info )
2295  IF( info.NE.0 )
2296  $ WRITE( nout, fmt = 9980 )'SCHKBB', info
2297  370 continue
2298 *
2299  ELSE IF( lsamen( 3, c3, 'GLM' ) ) THEN
2300 *
2301 * -----------------------------------------
2302 * GLM: Generalized Linear Regression Model
2303 * -----------------------------------------
2304 *
2305  CALL xlaenv( 1, 1 )
2306  IF( tsterr )
2307  $ CALL serrgg( 'GLM', nout )
2308  CALL sckglm( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2309  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2310  $ work, d( 1, 1 ), nin, nout, info )
2311  IF( info.NE.0 )
2312  $ WRITE( nout, fmt = 9980 )'SCKGLM', info
2313 *
2314  ELSE IF( lsamen( 3, c3, 'GQR' ) ) THEN
2315 *
2316 * ------------------------------------------
2317 * GQR: Generalized QR and RQ factorizations
2318 * ------------------------------------------
2319 *
2320  CALL xlaenv( 1, 1 )
2321  IF( tsterr )
2322  $ CALL serrgg( 'GQR', nout )
2323  CALL sckgqr( nn, mval, nn, pval, nn, nval, ntypes, iseed,
2324  $ thresh, nmax, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
2325  $ a( 1, 4 ), taua, b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
2326  $ b( 1, 4 ), b( 1, 5 ), taub, work, d( 1, 1 ), nin,
2327  $ nout, info )
2328  IF( info.NE.0 )
2329  $ WRITE( nout, fmt = 9980 )'SCKGQR', info
2330 *
2331  ELSE IF( lsamen( 3, c3, 'GSV' ) ) THEN
2332 *
2333 * ----------------------------------------------
2334 * GSV: Generalized Singular Value Decomposition
2335 * ----------------------------------------------
2336 *
2337  IF( tsterr )
2338  $ CALL serrgg( 'GSV', nout )
2339  CALL sckgsv( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2340  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
2341  $ a( 1, 3 ), b( 1, 3 ), a( 1, 4 ), taua, taub,
2342  $ b( 1, 4 ), iwork, work, d( 1, 1 ), nin, nout,
2343  $ info )
2344  IF( info.NE.0 )
2345  $ WRITE( nout, fmt = 9980 )'SCKGSV', info
2346 *
2347  ELSE IF( lsamen( 3, c3, 'CSD' ) ) THEN
2348 *
2349 * ----------------------------------------------
2350 * CSD: CS Decomposition
2351 * ----------------------------------------------
2352 *
2353  CALL xlaenv(1,1)
2354  IF( tsterr )
2355  $ CALL serrgg( 'CSD', nout )
2356  CALL sckcsd( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2357  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), a( 1, 4 ),
2358  $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), iwork, work,
2359  $ d( 1, 1 ), nin, nout, info )
2360  IF( info.NE.0 )
2361  $ WRITE( nout, fmt = 9980 )'SCKCSD', info
2362 *
2363  ELSE IF( lsamen( 3, c3, 'LSE' ) ) THEN
2364 *
2365 * --------------------------------------
2366 * LSE: Constrained Linear Least Squares
2367 * --------------------------------------
2368 *
2369  CALL xlaenv( 1, 1 )
2370  IF( tsterr )
2371  $ CALL serrgg( 'LSE', nout )
2372  CALL scklse( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2373  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2374  $ work, d( 1, 1 ), nin, nout, info )
2375  IF( info.NE.0 )
2376  $ WRITE( nout, fmt = 9980 )'SCKLSE', info
2377 *
2378  ELSE
2379  WRITE( nout, fmt = * )
2380  WRITE( nout, fmt = * )
2381  WRITE( nout, fmt = 9992 )c3
2382  END IF
2383  IF( .NOT.( sgx .OR. sxv ) )
2384  $ go to 190
2385  380 continue
2386  WRITE( nout, fmt = 9994 )
2387  s2 = second( )
2388  WRITE( nout, fmt = 9993 )s2 - s1
2389 *
2390  9999 format( / ' Execution not attempted due to input errors' )
2391  9997 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4 )
2392  9996 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NS =', i4,
2393  $ ', MAXB =', i4, ', NBCOL =', i4 )
2394  9995 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2395  $ ', NRHS =', i4 )
2396  9994 format( / / ' End of tests' )
2397  9993 format( ' Total time used = ', f12.2, ' seconds', / )
2398  9992 format( 1x, a3, ': Unrecognized path name' )
2399  9991 format( / / ' *** Invalid integer value in column ', i2,
2400  $ ' of input', ' line:', / a79 )
2401  9990 format( / / 1x, a3, ' routines were not tested' )
2402  9989 format( ' Invalid input value: ', a, '=', i6, '; must be >=',
2403  $ i6 )
2404  9988 format( ' Invalid input value: ', a, '=', i6, '; must be <=',
2405  $ i6 )
2406  9987 format( ' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2407  9986 format( ' Tests of the Symmetric Eigenvalue Problem routines' )
2408  9985 format( ' Tests of the Singular Value Decomposition routines' )
2409  9984 format( / ' The following parameter values will be used:' )
2410  9983 format( 4x, a, 10i6, / 10x, 10i6 )
2411  9982 format( / ' Routines pass computational tests if test ratio is ',
2412  $ 'less than', f8.2, / )
2413  9981 format( ' Relative machine ', a, ' is taken to be', e16.6 )
2414  9980 format( ' *** Error code from ', a, ' = ', i4 )
2415  9979 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2416  $ / ' SGEEV (eigenvalues and eigevectors)' )
2417  9978 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2418  $ / ' SGEES (Schur form)' )
2419  9977 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2420  $ ' Driver', / ' SGEEVX (eigenvalues, eigenvectors and',
2421  $ ' condition numbers)' )
2422  9976 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2423  $ ' Driver', / ' SGEESX (Schur form and condition',
2424  $ ' numbers)' )
2425  9975 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2426  $ 'Problem routines' )
2427  9974 format( ' Tests of SSBTRD', / ' (reduction of a symmetric band ',
2428  $ 'matrix to tridiagonal form)' )
2429  9973 format( / 1x, 71( '-' ) )
2430  9972 format( / ' LAPACK VERSION ', i1, '.', i1, '.', i1 )
2431  9971 format( / ' Tests of the Generalized Linear Regression Model ',
2432  $ 'routines' )
2433  9970 format( / ' Tests of the Generalized QR and RQ routines' )
2434  9969 format( / ' Tests of the Generalized Singular Value',
2435  $ ' Decomposition routines' )
2436  9968 format( / ' Tests of the Linear Least Squares routines' )
2437  9967 format( ' Tests of SGBBRD', / ' (reduction of a general band ',
2438  $ 'matrix to real bidiagonal form)' )
2439  9966 format( / / 1x, a3, ': NRHS =', i4 )
2440  9965 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2441  $ 'Problem Expert Driver SGGESX' )
2442  9964 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2443  $ 'Problem Driver SGGES' )
2444  9963 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2445  $ 'Problem Driver SGGEV' )
2446  9962 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2447  $ 'Problem Expert Driver SGGEVX' )
2448  9961 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2449  $ ', INMIN=', i4,
2450  $ ', INWIN =', i4, ', INIBL =', i4, ', ISHFTS =', i4,
2451  $ ', IACC22 =', i4)
2452  9960 format( / ' Tests of the CS Decomposition routines' )
2453 *
2454 * End of SCHKEE
2455 *
2456  END