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