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