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