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