LAPACK  3.6.1
LAPACK: Linear Algebra PACKage
dchkee.f
Go to the documentation of this file.
1 *> \brief \b DCHKEE
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 DCHKEE
12 *
13 *
14 *> \par Purpose:
15 * =============
16 *>
17 *> \verbatim
18 *>
19 *> DCHKEE tests the DOUBLE PRECISION LAPACK subroutines for the matrix
20 *> eigenvalue problem. The test paths in this version are
21 *>
22 *> NEP (Nonsymmetric Eigenvalue Problem):
23 *> Test DGEHRD, DORGHR, DHSEQR, DTREVC, DHSEIN, and DORMHR
24 *>
25 *> SEP (Symmetric Eigenvalue Problem):
26 *> Test DSYTRD, DORGTR, DSTEQR, DSTERF, DSTEIN, DSTEDC,
27 *> and drivers DSYEV(X), DSBEV(X), DSPEV(X), DSTEV(X),
28 *> DSYEVD, DSBEVD, DSPEVD, DSTEVD
29 *>
30 *> SVD (Singular Value Decomposition):
31 *> Test DGEBRD, DORGBR, DBDSQR, DBDSDC
32 *> and the drivers DGESVD, DGESDD
33 *>
34 *> DEV (Nonsymmetric Eigenvalue/eigenvector Driver):
35 *> Test DGEEV
36 *>
37 *> DES (Nonsymmetric Schur form Driver):
38 *> Test DGEES
39 *>
40 *> DVX (Nonsymmetric Eigenvalue/eigenvector Expert Driver):
41 *> Test DGEEVX
42 *>
43 *> DSX (Nonsymmetric Schur form Expert Driver):
44 *> Test DGEESX
45 *>
46 *> DGG (Generalized Nonsymmetric Eigenvalue Problem):
47 *> Test DGGHD3, DGGBAL, DGGBAK, DHGEQZ, and DTGEVC
48 *>
49 *> DGS (Generalized Nonsymmetric Schur form Driver):
50 *> Test DGGES
51 *>
52 *> DGV (Generalized Nonsymmetric Eigenvalue/eigenvector Driver):
53 *> Test DGGEV
54 *>
55 *> DGX (Generalized Nonsymmetric Schur form Expert Driver):
56 *> Test DGGESX
57 *>
58 *> DXV (Generalized Nonsymmetric Eigenvalue/eigenvector Expert Driver):
59 *> Test DGGEVX
60 *>
61 *> DSG (Symmetric Generalized Eigenvalue Problem):
62 *> Test DSYGST, DSYGV, DSYGVD, DSYGVX, DSPGST, DSPGV, DSPGVD,
63 *> DSPGVX, DSBGST, DSBGV, DSBGVD, and DSBGVX
64 *>
65 *> DSB (Symmetric Band Eigenvalue Problem):
66 *> Test DSBTRD
67 *>
68 *> DBB (Band Singular Value Decomposition):
69 *> Test DGBBRD
70 *>
71 *> DEC (Eigencondition estimation):
72 *> Test DLALN2, DLASY2, DLAEQU, DLAEXC, DTRSYL, DTREXC, DTRSNA,
73 *> DTRSEN, and DLAQTR
74 *>
75 *> DBL (Balancing a general matrix)
76 *> Test DGEBAL
77 *>
78 *> DBK (Back transformation on a balanced matrix)
79 *> Test DGEBAK
80 *>
81 *> DGL (Balancing a matrix pair)
82 *> Test DGGBAL
83 *>
84 *> DGK (Back transformation on a matrix pair)
85 *> Test DGGBAK
86 *>
87 *> GLM (Generalized Linear Regression Model):
88 *> Tests DGGGLM
89 *>
90 *> GQR (Generalized QR and RQ factorizations):
91 *> Tests DGGQRF and DGGRQF
92 *>
93 *> GSV (Generalized Singular Value Decomposition):
94 *> Tests DGGSVD, DGGSVP, DTGSJA, DLAGS2, DLAPLL, and DLAPMT
95 *>
96 *> CSD (CS decomposition):
97 *> Tests DORCSD
98 *>
99 *> LSE (Constrained Linear Least Squares):
100 *> Tests DGGLSE
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 *> DHS or NEP 21 DCHKHS
115 *> DST or SEP 21 DCHKST (routines)
116 *> 18 DDRVST (drivers)
117 *> DBD or SVD 16 DCHKBD (routines)
118 *> 5 DDRVBD (drivers)
119 *> DEV 21 DDRVEV
120 *> DES 21 DDRVES
121 *> DVX 21 DDRVVX
122 *> DSX 21 DDRVSX
123 *> DGG 26 DCHKGG (routines)
124 *> DGS 26 DDRGES
125 *> DGX 5 DDRGSX
126 *> DGV 26 DDRGEV
127 *> DXV 2 DDRGVX
128 *> DSG 21 DDRVSG
129 *> DSB 15 DCHKSB
130 *> DBB 15 DCHKBB
131 *> DEC - DCHKEC
132 *> DBL - DCHKBL
133 *> DBK - DCHKBK
134 *> DGL - DCHKGL
135 *> DGK - DCHKGK
136 *> GLM 8 DCKGLM
137 *> GQR 8 DCKGQR
138 *> GSV 8 DCKGSV
139 *> CSD 3 DCKCSD
140 *> LSE 8 DCKLSE
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 DSG 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 *> 'DSG' 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 *> DEV and DES data files:
333 *>
334 *> line 1: 'DEV' or 'DES' 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 'DEV' to test SGEEV, or
375 *> 'DES' to test SGEES.
376 *>
377 *>-----------------------------------------------------------------------
378 *>
379 *> The DVX data has two parts. The first part is identical to DEV,
380 *> and the second part consists of test matrices with precomputed
381 *> solutions.
382 *>
383 *> line 1: 'DVX' 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 'DVX' 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 DSX data is like DVX. The first part is identical to DEV, and the
425 *> second part consists of test matrices with precomputed solutions.
426 *>
427 *> line 1: 'DSX' 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 'DSX' 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 *> DGG 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 'DGG' for the generalized
530 *> eigenvalue problem routines and driver routines.
531 *>
532 *>-----------------------------------------------------------------------
533 *>
534 *> DGS and DGV input files:
535 *>
536 *> line 1: 'DGS' or 'DGV' 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 'DGS' for the generalized
575 *> eigenvalue problem routines and driver routines.
576 *>
577 *>-----------------------------------------------------------------------
578 *>
579 *> DXV input files:
580 *>
581 *> line 1: 'DXV' 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 *> DGX input files:
634 *>
635 *> line 1: 'DGX' 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 *> DSB 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 'DSB'.
723 *>
724 *>-----------------------------------------------------------------------
725 *>
726 *> DBB 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 'DBB'.
768 *>
769 *>-----------------------------------------------------------------------
770 *>
771 *> DEC 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 *> DBL and DBK input files:
787 *>
788 *> line 1: 'DBL' in columns 1-3 to test SGEBAL, or 'DBK' in
789 *> columns 1-3 to test SGEBAK.
790 *>
791 *> The remaining lines consist of specially constructed test cases.
792 *>
793 *>-----------------------------------------------------------------------
794 *>
795 *> DGL and DGK input files:
796 *>
797 *> line 1: 'DGL' in columns 1-3 to test DGGBAL, or 'DGK' in
798 *> columns 1-3 to test DGGBAK.
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 DGG.
1022 *> \endverbatim
1023 *
1024 * Arguments:
1025 * ==========
1026 *
1027 *
1028 * Authors:
1029 * ========
1030 *
1031 *> \author Univ. of Tennessee
1032 *> \author Univ. of California Berkeley
1033 *> \author Univ. of Colorado Denver
1034 *> \author NAG Ltd.
1035 *
1036 *> \date June 2016
1037 *
1038 *> \ingroup double_eig
1039 *
1040 * =====================================================================
1041  PROGRAM dchkee
1042 *
1043 * -- LAPACK test routine (version 3.6.1) --
1044 * -- LAPACK is a software package provided by Univ. of Tennessee, --
1045 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1046 * June 2016
1047 *
1048 * =====================================================================
1049 *
1050 * .. Parameters ..
1051  INTEGER NMAX
1052  parameter ( nmax = 132 )
1053  INTEGER NCMAX
1054  parameter ( ncmax = 20 )
1055  INTEGER NEED
1056  parameter ( need = 14 )
1057  INTEGER LWORK
1058  parameter ( lwork = nmax*( 5*nmax+5 )+1 )
1059  INTEGER LIWORK
1060  parameter ( liwork = nmax*( 5*nmax+20 ) )
1061  INTEGER MAXIN
1062  parameter ( maxin = 20 )
1063  INTEGER MAXT
1064  parameter ( maxt = 30 )
1065  INTEGER NIN, NOUT
1066  parameter ( nin = 5, nout = 6 )
1067 * ..
1068 * .. Local Scalars ..
1069  LOGICAL CSD, DBB, DGG, DSB, FATAL, GLM, GQR, GSV, LSE,
1070  $ nep, dbk, dbl, sep, des, dev, dgk, dgl, dgs,
1071  $ dgv, dgx, dsx, svd, dvx, dxv, tstchk, tstdif,
1072  $ tstdrv, tsterr
1073  CHARACTER C1
1074  CHARACTER*3 C3, PATH
1075  CHARACTER*32 VNAME
1076  CHARACTER*10 INTSTR
1077  CHARACTER*80 LINE
1078  INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
1079  $ nk, nn, nparms, nrhs, ntypes,
1080  $ vers_major, vers_minor, vers_patch
1081  DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN
1082 * ..
1083 * .. Local Arrays ..
1084  LOGICAL DOTYPE( maxt ), LOGWRK( nmax )
1085  INTEGER IOLDSD( 4 ), ISEED( 4 ), IWORK( liwork ),
1086  $ kval( maxin ), mval( maxin ), mxbval( maxin ),
1087  $ nbcol( maxin ), nbmin( maxin ), nbval( maxin ),
1088  $ nsval( maxin ), nval( maxin ), nxval( maxin ),
1089  $ pval( maxin )
1090  INTEGER INMIN( maxin ), INWIN( maxin ), INIBL( maxin ),
1091  $ ishfts( maxin ), iacc22( maxin )
1092  DOUBLE PRECISION A( nmax*nmax, need ), B( nmax*nmax, 5 ),
1093  $ c( ncmax*ncmax, ncmax*ncmax ), d( nmax, 12 ),
1094  $ result( 500 ), taua( nmax ), taub( nmax ),
1095  $ work( lwork ), x( 5*nmax )
1096 * ..
1097 * .. External Functions ..
1098  LOGICAL LSAMEN
1099  DOUBLE PRECISION DLAMCH, DSECND
1100  EXTERNAL lsamen, dlamch, dsecnd
1101 * ..
1102 * .. External Subroutines ..
1103  EXTERNAL alareq, dchkbb, dchkbd, dchkbk, dchkbl, dchkec,
1109  $ ddrges3, ddrgev3
1110 * ..
1111 * .. Intrinsic Functions ..
1112  INTRINSIC len, min
1113 * ..
1114 * .. Scalars in Common ..
1115  LOGICAL LERR, OK
1116  CHARACTER*32 SRNAMT
1117  INTEGER INFOT, MAXB, NPROC, NSHIFT, NUNIT, SELDIM,
1118  $ selopt
1119 * ..
1120 * .. Arrays in Common ..
1121  LOGICAL SELVAL( 20 )
1122  INTEGER IPARMS( 100 )
1123  DOUBLE PRECISION SELWI( 20 ), SELWR( 20 )
1124 * ..
1125 * .. Common blocks ..
1126  COMMON / cenvir / nproc, nshift, maxb
1127  COMMON / infoc / infot, nunit, ok, lerr
1128  COMMON / srnamc / srnamt
1129  COMMON / sslct / selopt, seldim, selval, selwr, selwi
1130  COMMON / claenv / iparms
1131 * ..
1132 * .. Data statements ..
1133  DATA intstr / '0123456789' /
1134  DATA ioldsd / 0, 0, 0, 1 /
1135 * ..
1136 * .. Executable Statements ..
1137 *
1138  a = 0.0
1139  b = 0.0
1140  c = 0.0
1141  d = 0.0
1142  s1 = dsecnd( )
1143  fatal = .false.
1144  nunit = nout
1145 *
1146 * Return to here to read multiple sets of data
1147 *
1148  10 CONTINUE
1149 *
1150 * Read the first line and set the 3-character test path
1151 *
1152  READ( nin, fmt = '(A80)', end = 380 )line
1153  path = line( 1: 3 )
1154  nep = lsamen( 3, path, 'NEP' ) .OR. lsamen( 3, path, 'DHS' )
1155  sep = lsamen( 3, path, 'SEP' ) .OR. lsamen( 3, path, 'DST' ) .OR.
1156  $ lsamen( 3, path, 'DSG' )
1157  svd = lsamen( 3, path, 'SVD' ) .OR. lsamen( 3, path, 'DBD' )
1158  dev = lsamen( 3, path, 'DEV' )
1159  des = lsamen( 3, path, 'DES' )
1160  dvx = lsamen( 3, path, 'DVX' )
1161  dsx = lsamen( 3, path, 'DSX' )
1162  dgg = lsamen( 3, path, 'DGG' )
1163  dgs = lsamen( 3, path, 'DGS' )
1164  dgx = lsamen( 3, path, 'DGX' )
1165  dgv = lsamen( 3, path, 'DGV' )
1166  dxv = lsamen( 3, path, 'DXV' )
1167  dsb = lsamen( 3, path, 'DSB' )
1168  dbb = lsamen( 3, path, 'DBB' )
1169  glm = lsamen( 3, path, 'GLM' )
1170  gqr = lsamen( 3, path, 'GQR' ) .OR. lsamen( 3, path, 'GRQ' )
1171  gsv = lsamen( 3, path, 'GSV' )
1172  csd = lsamen( 3, path, 'CSD' )
1173  lse = lsamen( 3, path, 'LSE' )
1174  dbl = lsamen( 3, path, 'DBL' )
1175  dbk = lsamen( 3, path, 'DBK' )
1176  dgl = lsamen( 3, path, 'DGL' )
1177  dgk = lsamen( 3, path, 'DGK' )
1178 *
1179 * Report values of parameters.
1180 *
1181  IF( path.EQ.' ' ) THEN
1182  GO TO 10
1183  ELSE IF( nep ) THEN
1184  WRITE( nout, fmt = 9987 )
1185  ELSE IF( sep ) THEN
1186  WRITE( nout, fmt = 9986 )
1187  ELSE IF( svd ) THEN
1188  WRITE( nout, fmt = 9985 )
1189  ELSE IF( dev ) THEN
1190  WRITE( nout, fmt = 9979 )
1191  ELSE IF( des ) THEN
1192  WRITE( nout, fmt = 9978 )
1193  ELSE IF( dvx ) THEN
1194  WRITE( nout, fmt = 9977 )
1195  ELSE IF( dsx ) THEN
1196  WRITE( nout, fmt = 9976 )
1197  ELSE IF( dgg ) THEN
1198  WRITE( nout, fmt = 9975 )
1199  ELSE IF( dgs ) THEN
1200  WRITE( nout, fmt = 9964 )
1201  ELSE IF( dgx ) THEN
1202  WRITE( nout, fmt = 9965 )
1203  ELSE IF( dgv ) THEN
1204  WRITE( nout, fmt = 9963 )
1205  ELSE IF( dxv ) THEN
1206  WRITE( nout, fmt = 9962 )
1207  ELSE IF( dsb ) THEN
1208  WRITE( nout, fmt = 9974 )
1209  ELSE IF( dbb ) THEN
1210  WRITE( nout, fmt = 9967 )
1211  ELSE IF( glm ) THEN
1212  WRITE( nout, fmt = 9971 )
1213  ELSE IF( gqr ) THEN
1214  WRITE( nout, fmt = 9970 )
1215  ELSE IF( gsv ) THEN
1216  WRITE( nout, fmt = 9969 )
1217  ELSE IF( csd ) THEN
1218  WRITE( nout, fmt = 9960 )
1219  ELSE IF( lse ) THEN
1220  WRITE( nout, fmt = 9968 )
1221  ELSE IF( dbl ) THEN
1222 *
1223 * DGEBAL: Balancing
1224 *
1225  CALL dchkbl( nin, nout )
1226  GO TO 10
1227  ELSE IF( dbk ) THEN
1228 *
1229 * DGEBAK: Back transformation
1230 *
1231  CALL dchkbk( nin, nout )
1232  GO TO 10
1233  ELSE IF( dgl ) THEN
1234 *
1235 * DGGBAL: Balancing
1236 *
1237  CALL dchkgl( nin, nout )
1238  GO TO 10
1239  ELSE IF( dgk ) THEN
1240 *
1241 * DGGBAK: Back transformation
1242 *
1243  CALL dchkgk( nin, nout )
1244  GO TO 10
1245  ELSE IF( lsamen( 3, path, 'DEC' ) ) THEN
1246 *
1247 * DEC: Eigencondition estimation
1248 *
1249  READ( nin, fmt = * )thresh
1250  CALL xlaenv( 1, 1 )
1251  CALL xlaenv( 12, 11 )
1252  CALL xlaenv( 13, 2 )
1253  CALL xlaenv( 14, 0 )
1254  CALL xlaenv( 15, 2 )
1255  CALL xlaenv( 16, 2 )
1256  tsterr = .true.
1257  CALL dchkec( thresh, tsterr, nin, nout )
1258  GO TO 10
1259  ELSE
1260  WRITE( nout, fmt = 9992 )path
1261  GO TO 10
1262  END IF
1263  CALL ilaver( vers_major, vers_minor, vers_patch )
1264  WRITE( nout, fmt = 9972 ) vers_major, vers_minor, vers_patch
1265  WRITE( nout, fmt = 9984 )
1266 *
1267 * Read the number of values of M, P, and N.
1268 *
1269  READ( nin, fmt = * )nn
1270  IF( nn.LT.0 ) THEN
1271  WRITE( nout, fmt = 9989 )' NN ', nn, 1
1272  nn = 0
1273  fatal = .true.
1274  ELSE IF( nn.GT.maxin ) THEN
1275  WRITE( nout, fmt = 9988 )' NN ', nn, maxin
1276  nn = 0
1277  fatal = .true.
1278  END IF
1279 *
1280 * Read the values of M
1281 *
1282  IF( .NOT.( dgx .OR. dxv ) ) THEN
1283  READ( nin, fmt = * )( mval( i ), i = 1, nn )
1284  IF( svd ) THEN
1285  vname = ' M '
1286  ELSE
1287  vname = ' N '
1288  END IF
1289  DO 20 i = 1, nn
1290  IF( mval( i ).LT.0 ) THEN
1291  WRITE( nout, fmt = 9989 )vname, mval( i ), 0
1292  fatal = .true.
1293  ELSE IF( mval( i ).GT.nmax ) THEN
1294  WRITE( nout, fmt = 9988 )vname, mval( i ), nmax
1295  fatal = .true.
1296  END IF
1297  20 CONTINUE
1298  WRITE( nout, fmt = 9983 )'M: ', ( mval( i ), i = 1, nn )
1299  END IF
1300 *
1301 * Read the values of P
1302 *
1303  IF( glm .OR. gqr .OR. gsv .OR. csd .OR. lse ) THEN
1304  READ( nin, fmt = * )( pval( i ), i = 1, nn )
1305  DO 30 i = 1, nn
1306  IF( pval( i ).LT.0 ) THEN
1307  WRITE( nout, fmt = 9989 )' P ', pval( i ), 0
1308  fatal = .true.
1309  ELSE IF( pval( i ).GT.nmax ) THEN
1310  WRITE( nout, fmt = 9988 )' P ', pval( i ), nmax
1311  fatal = .true.
1312  END IF
1313  30 CONTINUE
1314  WRITE( nout, fmt = 9983 )'P: ', ( pval( i ), i = 1, nn )
1315  END IF
1316 *
1317 * Read the values of N
1318 *
1319  IF( svd .OR. dbb .OR. glm .OR. gqr .OR. gsv .OR. csd .OR.
1320  $ lse ) THEN
1321  READ( nin, fmt = * )( nval( i ), i = 1, nn )
1322  DO 40 i = 1, nn
1323  IF( nval( i ).LT.0 ) THEN
1324  WRITE( nout, fmt = 9989 )' N ', nval( i ), 0
1325  fatal = .true.
1326  ELSE IF( nval( i ).GT.nmax ) THEN
1327  WRITE( nout, fmt = 9988 )' N ', nval( i ), nmax
1328  fatal = .true.
1329  END IF
1330  40 CONTINUE
1331  ELSE
1332  DO 50 i = 1, nn
1333  nval( i ) = mval( i )
1334  50 CONTINUE
1335  END IF
1336  IF( .NOT.( dgx .OR. dxv ) ) THEN
1337  WRITE( nout, fmt = 9983 )'N: ', ( nval( i ), i = 1, nn )
1338  ELSE
1339  WRITE( nout, fmt = 9983 )'N: ', nn
1340  END IF
1341 *
1342 * Read the number of values of K, followed by the values of K
1343 *
1344  IF( dsb .OR. dbb ) THEN
1345  READ( nin, fmt = * )nk
1346  READ( nin, fmt = * )( kval( i ), i = 1, nk )
1347  DO 60 i = 1, nk
1348  IF( kval( i ).LT.0 ) THEN
1349  WRITE( nout, fmt = 9989 )' K ', kval( i ), 0
1350  fatal = .true.
1351  ELSE IF( kval( i ).GT.nmax ) THEN
1352  WRITE( nout, fmt = 9988 )' K ', kval( i ), nmax
1353  fatal = .true.
1354  END IF
1355  60 CONTINUE
1356  WRITE( nout, fmt = 9983 )'K: ', ( kval( i ), i = 1, nk )
1357  END IF
1358 *
1359  IF( dev .OR. des .OR. dvx .OR. dsx ) THEN
1360 *
1361 * For the nonsymmetric QR driver routines, only one set of
1362 * parameters is allowed.
1363 *
1364  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1365  $ inmin( 1 ), inwin( 1 ), inibl(1), ishfts(1), iacc22(1)
1366  IF( nbval( 1 ).LT.1 ) THEN
1367  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1368  fatal = .true.
1369  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1370  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1371  fatal = .true.
1372  ELSE IF( nxval( 1 ).LT.1 ) THEN
1373  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1374  fatal = .true.
1375  ELSE IF( inmin( 1 ).LT.1 ) THEN
1376  WRITE( nout, fmt = 9989 )' INMIN ', inmin( 1 ), 1
1377  fatal = .true.
1378  ELSE IF( inwin( 1 ).LT.1 ) THEN
1379  WRITE( nout, fmt = 9989 )' INWIN ', inwin( 1 ), 1
1380  fatal = .true.
1381  ELSE IF( inibl( 1 ).LT.1 ) THEN
1382  WRITE( nout, fmt = 9989 )' INIBL ', inibl( 1 ), 1
1383  fatal = .true.
1384  ELSE IF( ishfts( 1 ).LT.1 ) THEN
1385  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( 1 ), 1
1386  fatal = .true.
1387  ELSE IF( iacc22( 1 ).LT.0 ) THEN
1388  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( 1 ), 0
1389  fatal = .true.
1390  END IF
1391  CALL xlaenv( 1, nbval( 1 ) )
1392  CALL xlaenv( 2, nbmin( 1 ) )
1393  CALL xlaenv( 3, nxval( 1 ) )
1394  CALL xlaenv(12, max( 11, inmin( 1 ) ) )
1395  CALL xlaenv(13, inwin( 1 ) )
1396  CALL xlaenv(14, inibl( 1 ) )
1397  CALL xlaenv(15, ishfts( 1 ) )
1398  CALL xlaenv(16, iacc22( 1 ) )
1399  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1400  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1401  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1402  WRITE( nout, fmt = 9983 )'INMIN: ', inmin( 1 )
1403  WRITE( nout, fmt = 9983 )'INWIN: ', inwin( 1 )
1404  WRITE( nout, fmt = 9983 )'INIBL: ', inibl( 1 )
1405  WRITE( nout, fmt = 9983 )'ISHFTS: ', ishfts( 1 )
1406  WRITE( nout, fmt = 9983 )'IACC22: ', iacc22( 1 )
1407 *
1408  ELSEIF( dgs .OR. dgx .OR. dgv .OR. dxv ) THEN
1409 *
1410 * For the nonsymmetric generalized driver routines, only one set
1411 * of parameters is allowed.
1412 *
1413  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1414  $ nsval( 1 ), mxbval( 1 )
1415  IF( nbval( 1 ).LT.1 ) THEN
1416  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1417  fatal = .true.
1418  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1419  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1420  fatal = .true.
1421  ELSE IF( nxval( 1 ).LT.1 ) THEN
1422  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1423  fatal = .true.
1424  ELSE IF( nsval( 1 ).LT.2 ) THEN
1425  WRITE( nout, fmt = 9989 )' NS ', nsval( 1 ), 2
1426  fatal = .true.
1427  ELSE IF( mxbval( 1 ).LT.1 ) THEN
1428  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( 1 ), 1
1429  fatal = .true.
1430  END IF
1431  CALL xlaenv( 1, nbval( 1 ) )
1432  CALL xlaenv( 2, nbmin( 1 ) )
1433  CALL xlaenv( 3, nxval( 1 ) )
1434  CALL xlaenv( 4, nsval( 1 ) )
1435  CALL xlaenv( 8, mxbval( 1 ) )
1436  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1437  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1438  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1439  WRITE( nout, fmt = 9983 )'NS: ', nsval( 1 )
1440  WRITE( nout, fmt = 9983 )'MAXB: ', mxbval( 1 )
1441 *
1442  ELSE IF( .NOT.dsb .AND. .NOT.glm .AND. .NOT.gqr .AND. .NOT.
1443  $ gsv .AND. .NOT.csd .AND. .NOT.lse ) THEN
1444 *
1445 * For the other paths, the number of parameters can be varied
1446 * from the input file. Read the number of parameter values.
1447 *
1448  READ( nin, fmt = * )nparms
1449  IF( nparms.LT.1 ) THEN
1450  WRITE( nout, fmt = 9989 )'NPARMS', nparms, 1
1451  nparms = 0
1452  fatal = .true.
1453  ELSE IF( nparms.GT.maxin ) THEN
1454  WRITE( nout, fmt = 9988 )'NPARMS', nparms, maxin
1455  nparms = 0
1456  fatal = .true.
1457  END IF
1458 *
1459 * Read the values of NB
1460 *
1461  IF( .NOT.dbb ) THEN
1462  READ( nin, fmt = * )( nbval( i ), i = 1, nparms )
1463  DO 70 i = 1, nparms
1464  IF( nbval( i ).LT.0 ) THEN
1465  WRITE( nout, fmt = 9989 )' NB ', nbval( i ), 0
1466  fatal = .true.
1467  ELSE IF( nbval( i ).GT.nmax ) THEN
1468  WRITE( nout, fmt = 9988 )' NB ', nbval( i ), nmax
1469  fatal = .true.
1470  END IF
1471  70 CONTINUE
1472  WRITE( nout, fmt = 9983 )'NB: ',
1473  $ ( nbval( i ), i = 1, nparms )
1474  END IF
1475 *
1476 * Read the values of NBMIN
1477 *
1478  IF( nep .OR. sep .OR. svd .OR. dgg ) THEN
1479  READ( nin, fmt = * )( nbmin( i ), i = 1, nparms )
1480  DO 80 i = 1, nparms
1481  IF( nbmin( i ).LT.0 ) THEN
1482  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( i ), 0
1483  fatal = .true.
1484  ELSE IF( nbmin( i ).GT.nmax ) THEN
1485  WRITE( nout, fmt = 9988 )'NBMIN ', nbmin( i ), nmax
1486  fatal = .true.
1487  END IF
1488  80 CONTINUE
1489  WRITE( nout, fmt = 9983 )'NBMIN:',
1490  $ ( nbmin( i ), i = 1, nparms )
1491  ELSE
1492  DO 90 i = 1, nparms
1493  nbmin( i ) = 1
1494  90 CONTINUE
1495  END IF
1496 *
1497 * Read the values of NX
1498 *
1499  IF( nep .OR. sep .OR. svd ) THEN
1500  READ( nin, fmt = * )( nxval( i ), i = 1, nparms )
1501  DO 100 i = 1, nparms
1502  IF( nxval( i ).LT.0 ) THEN
1503  WRITE( nout, fmt = 9989 )' NX ', nxval( i ), 0
1504  fatal = .true.
1505  ELSE IF( nxval( i ).GT.nmax ) THEN
1506  WRITE( nout, fmt = 9988 )' NX ', nxval( i ), nmax
1507  fatal = .true.
1508  END IF
1509  100 CONTINUE
1510  WRITE( nout, fmt = 9983 )'NX: ',
1511  $ ( nxval( i ), i = 1, nparms )
1512  ELSE
1513  DO 110 i = 1, nparms
1514  nxval( i ) = 1
1515  110 CONTINUE
1516  END IF
1517 *
1518 * Read the values of NSHIFT (if DGG) or NRHS (if SVD
1519 * or DBB).
1520 *
1521  IF( svd .OR. dbb .OR. dgg ) THEN
1522  READ( nin, fmt = * )( nsval( i ), i = 1, nparms )
1523  DO 120 i = 1, nparms
1524  IF( nsval( i ).LT.0 ) THEN
1525  WRITE( nout, fmt = 9989 )' NS ', nsval( i ), 0
1526  fatal = .true.
1527  ELSE IF( nsval( i ).GT.nmax ) THEN
1528  WRITE( nout, fmt = 9988 )' NS ', nsval( i ), nmax
1529  fatal = .true.
1530  END IF
1531  120 CONTINUE
1532  WRITE( nout, fmt = 9983 )'NS: ',
1533  $ ( nsval( i ), i = 1, nparms )
1534  ELSE
1535  DO 130 i = 1, nparms
1536  nsval( i ) = 1
1537  130 CONTINUE
1538  END IF
1539 *
1540 * Read the values for MAXB.
1541 *
1542  IF( dgg ) THEN
1543  READ( nin, fmt = * )( mxbval( i ), i = 1, nparms )
1544  DO 140 i = 1, nparms
1545  IF( mxbval( i ).LT.0 ) THEN
1546  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( i ), 0
1547  fatal = .true.
1548  ELSE IF( mxbval( i ).GT.nmax ) THEN
1549  WRITE( nout, fmt = 9988 )' MAXB ', mxbval( i ), nmax
1550  fatal = .true.
1551  END IF
1552  140 CONTINUE
1553  WRITE( nout, fmt = 9983 )'MAXB: ',
1554  $ ( mxbval( i ), i = 1, nparms )
1555  ELSE
1556  DO 150 i = 1, nparms
1557  mxbval( i ) = 1
1558  150 CONTINUE
1559  END IF
1560 *
1561 * Read the values for INMIN.
1562 *
1563  IF( nep ) THEN
1564  READ( nin, fmt = * )( inmin( i ), i = 1, nparms )
1565  DO 540 i = 1, nparms
1566  IF( inmin( i ).LT.0 ) THEN
1567  WRITE( nout, fmt = 9989 )' INMIN ', inmin( i ), 0
1568  fatal = .true.
1569  END IF
1570  540 CONTINUE
1571  WRITE( nout, fmt = 9983 )'INMIN: ',
1572  $ ( inmin( i ), i = 1, nparms )
1573  ELSE
1574  DO 550 i = 1, nparms
1575  inmin( i ) = 1
1576  550 CONTINUE
1577  END IF
1578 *
1579 * Read the values for INWIN.
1580 *
1581  IF( nep ) THEN
1582  READ( nin, fmt = * )( inwin( i ), i = 1, nparms )
1583  DO 560 i = 1, nparms
1584  IF( inwin( i ).LT.0 ) THEN
1585  WRITE( nout, fmt = 9989 )' INWIN ', inwin( i ), 0
1586  fatal = .true.
1587  END IF
1588  560 CONTINUE
1589  WRITE( nout, fmt = 9983 )'INWIN: ',
1590  $ ( inwin( i ), i = 1, nparms )
1591  ELSE
1592  DO 570 i = 1, nparms
1593  inwin( i ) = 1
1594  570 CONTINUE
1595  END IF
1596 *
1597 * Read the values for INIBL.
1598 *
1599  IF( nep ) THEN
1600  READ( nin, fmt = * )( inibl( i ), i = 1, nparms )
1601  DO 580 i = 1, nparms
1602  IF( inibl( i ).LT.0 ) THEN
1603  WRITE( nout, fmt = 9989 )' INIBL ', inibl( i ), 0
1604  fatal = .true.
1605  END IF
1606  580 CONTINUE
1607  WRITE( nout, fmt = 9983 )'INIBL: ',
1608  $ ( inibl( i ), i = 1, nparms )
1609  ELSE
1610  DO 590 i = 1, nparms
1611  inibl( i ) = 1
1612  590 CONTINUE
1613  END IF
1614 *
1615 * Read the values for ISHFTS.
1616 *
1617  IF( nep ) THEN
1618  READ( nin, fmt = * )( ishfts( i ), i = 1, nparms )
1619  DO 600 i = 1, nparms
1620  IF( ishfts( i ).LT.0 ) THEN
1621  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( i ), 0
1622  fatal = .true.
1623  END IF
1624  600 CONTINUE
1625  WRITE( nout, fmt = 9983 )'ISHFTS: ',
1626  $ ( ishfts( i ), i = 1, nparms )
1627  ELSE
1628  DO 610 i = 1, nparms
1629  ishfts( i ) = 1
1630  610 CONTINUE
1631  END IF
1632 *
1633 * Read the values for IACC22.
1634 *
1635  IF( nep .OR. dgg ) THEN
1636  READ( nin, fmt = * )( iacc22( i ), i = 1, nparms )
1637  DO 620 i = 1, nparms
1638  IF( iacc22( i ).LT.0 ) THEN
1639  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( i ), 0
1640  fatal = .true.
1641  END IF
1642  620 CONTINUE
1643  WRITE( nout, fmt = 9983 )'IACC22: ',
1644  $ ( iacc22( i ), i = 1, nparms )
1645  ELSE
1646  DO 630 i = 1, nparms
1647  iacc22( i ) = 1
1648  630 CONTINUE
1649  END IF
1650 *
1651 * Read the values for NBCOL.
1652 *
1653  IF( dgg ) THEN
1654  READ( nin, fmt = * )( nbcol( i ), i = 1, nparms )
1655  DO 160 i = 1, nparms
1656  IF( nbcol( i ).LT.0 ) THEN
1657  WRITE( nout, fmt = 9989 )'NBCOL ', nbcol( i ), 0
1658  fatal = .true.
1659  ELSE IF( nbcol( i ).GT.nmax ) THEN
1660  WRITE( nout, fmt = 9988 )'NBCOL ', nbcol( i ), nmax
1661  fatal = .true.
1662  END IF
1663  160 CONTINUE
1664  WRITE( nout, fmt = 9983 )'NBCOL:',
1665  $ ( nbcol( i ), i = 1, nparms )
1666  ELSE
1667  DO 170 i = 1, nparms
1668  nbcol( i ) = 1
1669  170 CONTINUE
1670  END IF
1671  END IF
1672 *
1673 * Calculate and print the machine dependent constants.
1674 *
1675  WRITE( nout, fmt = * )
1676  eps = dlamch( 'Underflow threshold' )
1677  WRITE( nout, fmt = 9981 )'underflow', eps
1678  eps = dlamch( 'Overflow threshold' )
1679  WRITE( nout, fmt = 9981 )'overflow ', eps
1680  eps = dlamch( 'Epsilon' )
1681  WRITE( nout, fmt = 9981 )'precision', eps
1682 *
1683 * Read the threshold value for the test ratios.
1684 *
1685  READ( nin, fmt = * )thresh
1686  WRITE( nout, fmt = 9982 )thresh
1687  IF( sep .OR. svd .OR. dgg ) THEN
1688 *
1689 * Read the flag that indicates whether to test LAPACK routines.
1690 *
1691  READ( nin, fmt = * )tstchk
1692 *
1693 * Read the flag that indicates whether to test driver routines.
1694 *
1695  READ( nin, fmt = * )tstdrv
1696  END IF
1697 *
1698 * Read the flag that indicates whether to test the error exits.
1699 *
1700  READ( nin, fmt = * )tsterr
1701 *
1702 * Read the code describing how to set the random number seed.
1703 *
1704  READ( nin, fmt = * )newsd
1705 *
1706 * If NEWSD = 2, read another line with 4 integers for the seed.
1707 *
1708  IF( newsd.EQ.2 )
1709  $ READ( nin, fmt = * )( ioldsd( i ), i = 1, 4 )
1710 *
1711  DO 180 i = 1, 4
1712  iseed( i ) = ioldsd( i )
1713  180 CONTINUE
1714 *
1715  IF( fatal ) THEN
1716  WRITE( nout, fmt = 9999 )
1717  stop
1718  END IF
1719 *
1720 * Read the input lines indicating the test path and its parameters.
1721 * The first three characters indicate the test path, and the number
1722 * of test matrix types must be the first nonblank item in columns
1723 * 4-80.
1724 *
1725  190 CONTINUE
1726 *
1727  IF( .NOT.( dgx .OR. dxv ) ) THEN
1728 *
1729  200 CONTINUE
1730  READ( nin, fmt = '(A80)', end = 380 )line
1731  c3 = line( 1: 3 )
1732  lenp = len( line )
1733  i = 3
1734  itmp = 0
1735  i1 = 0
1736  210 CONTINUE
1737  i = i + 1
1738  IF( i.GT.lenp ) THEN
1739  IF( i1.GT.0 ) THEN
1740  GO TO 240
1741  ELSE
1742  ntypes = maxt
1743  GO TO 240
1744  END IF
1745  END IF
1746  IF( line( i: i ).NE.' ' .AND. line( i: i ).NE.',' ) THEN
1747  i1 = i
1748  c1 = line( i1: i1 )
1749 *
1750 * Check that a valid integer was read
1751 *
1752  DO 220 k = 1, 10
1753  IF( c1.EQ.intstr( k: k ) ) THEN
1754  ic = k - 1
1755  GO TO 230
1756  END IF
1757  220 CONTINUE
1758  WRITE( nout, fmt = 9991 )i, line
1759  GO TO 200
1760  230 CONTINUE
1761  itmp = 10*itmp + ic
1762  GO TO 210
1763  ELSE IF( i1.GT.0 ) THEN
1764  GO TO 240
1765  ELSE
1766  GO TO 210
1767  END IF
1768  240 CONTINUE
1769  ntypes = itmp
1770 *
1771 * Skip the tests if NTYPES is <= 0.
1772 *
1773  IF( .NOT.( dev .OR. des .OR. dvx .OR. dsx .OR. dgv .OR.
1774  $ dgs ) .AND. ntypes.LE.0 ) THEN
1775  WRITE( nout, fmt = 9990 )c3
1776  GO TO 200
1777  END IF
1778 *
1779  ELSE
1780  IF( dxv )
1781  $ c3 = 'DXV'
1782  IF( dgx )
1783  $ c3 = 'DGX'
1784  END IF
1785 *
1786 * Reset the random number seed.
1787 *
1788  IF( newsd.EQ.0 ) THEN
1789  DO 250 k = 1, 4
1790  iseed( k ) = ioldsd( k )
1791  250 CONTINUE
1792  END IF
1793 *
1794  IF( lsamen( 3, c3, 'DHS' ) .OR. lsamen( 3, c3, 'NEP' ) ) THEN
1795 *
1796 * -------------------------------------
1797 * NEP: Nonsymmetric Eigenvalue Problem
1798 * -------------------------------------
1799 * Vary the parameters
1800 * NB = block size
1801 * NBMIN = minimum block size
1802 * NX = crossover point
1803 * NS = number of shifts
1804 * MAXB = minimum submatrix size
1805 *
1806  maxtyp = 21
1807  ntypes = min( maxtyp, ntypes )
1808  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1809  CALL xlaenv( 1, 1 )
1810  IF( tsterr )
1811  $ CALL derrhs( 'DHSEQR', nout )
1812  DO 270 i = 1, nparms
1813  CALL xlaenv( 1, nbval( i ) )
1814  CALL xlaenv( 2, nbmin( i ) )
1815  CALL xlaenv( 3, nxval( i ) )
1816  CALL xlaenv(12, max( 11, inmin( i ) ) )
1817  CALL xlaenv(13, inwin( i ) )
1818  CALL xlaenv(14, inibl( i ) )
1819  CALL xlaenv(15, ishfts( i ) )
1820  CALL xlaenv(16, iacc22( i ) )
1821 *
1822  IF( newsd.EQ.0 ) THEN
1823  DO 260 k = 1, 4
1824  iseed( k ) = ioldsd( k )
1825  260 CONTINUE
1826  END IF
1827  WRITE( nout, fmt = 9961 )c3, nbval( i ), nbmin( i ),
1828  $ nxval( i ), max( 11, inmin(i)),
1829  $ inwin( i ), inibl( i ), ishfts( i ), iacc22( i )
1830  CALL dchkhs( nn, nval, maxtyp, dotype, iseed, thresh, nout,
1831  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
1832  $ a( 1, 4 ), a( 1, 5 ), nmax, a( 1, 6 ),
1833  $ a( 1, 7 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
1834  $ d( 1, 4 ), d( 1, 5 ), d( 1, 6 ), a( 1, 8 ),
1835  $ a( 1, 9 ), a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
1836  $ d( 1, 7 ), work, lwork, iwork, logwrk, result,
1837  $ info )
1838  IF( info.NE.0 )
1839  $ WRITE( nout, fmt = 9980 )'DCHKHS', info
1840  270 CONTINUE
1841 *
1842  ELSE IF( lsamen( 3, c3, 'DST' ) .OR. lsamen( 3, c3, 'SEP' ) ) THEN
1843 *
1844 * ----------------------------------
1845 * SEP: Symmetric Eigenvalue Problem
1846 * ----------------------------------
1847 * Vary the parameters
1848 * NB = block size
1849 * NBMIN = minimum block size
1850 * NX = crossover point
1851 *
1852  maxtyp = 21
1853  ntypes = min( maxtyp, ntypes )
1854  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1855  CALL xlaenv( 1, 1 )
1856  CALL xlaenv( 9, 25 )
1857  IF( tsterr )
1858  $ CALL derrst( 'DST', nout )
1859  DO 290 i = 1, nparms
1860  CALL xlaenv( 1, nbval( i ) )
1861  CALL xlaenv( 2, nbmin( i ) )
1862  CALL xlaenv( 3, nxval( i ) )
1863 *
1864  IF( newsd.EQ.0 ) THEN
1865  DO 280 k = 1, 4
1866  iseed( k ) = ioldsd( k )
1867  280 CONTINUE
1868  END IF
1869  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1870  $ nxval( i )
1871  IF( tstchk ) THEN
1872  CALL dchkst( nn, nval, maxtyp, dotype, iseed, thresh,
1873  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
1874  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
1875  $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
1876  $ d( 1, 10 ), d( 1, 11 ), a( 1, 3 ), nmax,
1877  $ a( 1, 4 ), a( 1, 5 ), d( 1, 12 ), a( 1, 6 ),
1878  $ work, lwork, iwork, liwork, result, info )
1879  IF( info.NE.0 )
1880  $ WRITE( nout, fmt = 9980 )'DCHKST', info
1881  END IF
1882  IF( tstdrv ) THEN
1883  CALL ddrvst( nn, nval, 18, dotype, iseed, thresh, nout,
1884  $ a( 1, 1 ), nmax, d( 1, 3 ), d( 1, 4 ),
1885  $ d( 1, 5 ), d( 1, 6 ), d( 1, 8 ), d( 1, 9 ),
1886  $ d( 1, 10 ), d( 1, 11 ), a( 1, 2 ), nmax,
1887  $ a( 1, 3 ), d( 1, 12 ), a( 1, 4 ), work,
1888  $ lwork, iwork, liwork, result, info )
1889  IF( info.NE.0 )
1890  $ WRITE( nout, fmt = 9980 )'DDRVST', info
1891  END IF
1892  290 CONTINUE
1893 *
1894  ELSE IF( lsamen( 3, c3, 'DSG' ) ) THEN
1895 *
1896 * ----------------------------------------------
1897 * DSG: Symmetric Generalized Eigenvalue Problem
1898 * ----------------------------------------------
1899 * Vary the parameters
1900 * NB = block size
1901 * NBMIN = minimum block size
1902 * NX = crossover point
1903 *
1904  maxtyp = 21
1905  ntypes = min( maxtyp, ntypes )
1906  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1907  CALL xlaenv( 9, 25 )
1908  DO 310 i = 1, nparms
1909  CALL xlaenv( 1, nbval( i ) )
1910  CALL xlaenv( 2, nbmin( i ) )
1911  CALL xlaenv( 3, nxval( i ) )
1912 *
1913  IF( newsd.EQ.0 ) THEN
1914  DO 300 k = 1, 4
1915  iseed( k ) = ioldsd( k )
1916  300 CONTINUE
1917  END IF
1918  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1919  $ nxval( i )
1920  IF( tstchk ) THEN
1921  CALL ddrvsg( nn, nval, maxtyp, dotype, iseed, thresh,
1922  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1923  $ d( 1, 3 ), a( 1, 3 ), nmax, a( 1, 4 ),
1924  $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), work,
1925  $ lwork, iwork, liwork, result, info )
1926  IF( info.NE.0 )
1927  $ WRITE( nout, fmt = 9980 )'DDRVSG', info
1928  END IF
1929  310 CONTINUE
1930 *
1931  ELSE IF( lsamen( 3, c3, 'DBD' ) .OR. lsamen( 3, c3, 'SVD' ) ) THEN
1932 *
1933 * ----------------------------------
1934 * SVD: Singular Value Decomposition
1935 * ----------------------------------
1936 * Vary the parameters
1937 * NB = block size
1938 * NBMIN = minimum block size
1939 * NX = crossover point
1940 * NRHS = number of right hand sides
1941 *
1942  maxtyp = 16
1943  ntypes = min( maxtyp, ntypes )
1944  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1945  CALL xlaenv( 1, 1 )
1946  CALL xlaenv( 9, 25 )
1947 *
1948 * Test the error exits
1949 *
1950  IF( tsterr .AND. tstchk )
1951  $ CALL derrbd( 'DBD', nout )
1952  IF( tsterr .AND. tstdrv )
1953  $ CALL derred( 'DBD', nout )
1954 *
1955  DO 330 i = 1, nparms
1956  nrhs = nsval( i )
1957  CALL xlaenv( 1, nbval( i ) )
1958  CALL xlaenv( 2, nbmin( i ) )
1959  CALL xlaenv( 3, nxval( i ) )
1960  IF( newsd.EQ.0 ) THEN
1961  DO 320 k = 1, 4
1962  iseed( k ) = ioldsd( k )
1963  320 CONTINUE
1964  END IF
1965  WRITE( nout, fmt = 9995 )c3, nbval( i ), nbmin( i ),
1966  $ nxval( i ), nrhs
1967  IF( tstchk ) THEN
1968  CALL dchkbd( nn, mval, nval, maxtyp, dotype, nrhs, iseed,
1969  $ thresh, a( 1, 1 ), nmax, d( 1, 1 ),
1970  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 2 ),
1971  $ nmax, a( 1, 3 ), a( 1, 4 ), a( 1, 5 ), nmax,
1972  $ a( 1, 6 ), nmax, a( 1, 7 ), a( 1, 8 ), work,
1973  $ lwork, iwork, nout, info )
1974  IF( info.NE.0 )
1975  $ WRITE( nout, fmt = 9980 )'DCHKBD', info
1976  END IF
1977  IF( tstdrv )
1978  $ CALL ddrvbd( nn, mval, nval, maxtyp, dotype, iseed,
1979  $ thresh, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1980  $ a( 1, 3 ), nmax, a( 1, 4 ), a( 1, 5 ),
1981  $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
1982  $ work, lwork, iwork, nout, info )
1983  330 CONTINUE
1984 *
1985  ELSE IF( lsamen( 3, c3, 'DEV' ) ) THEN
1986 *
1987 * --------------------------------------------
1988 * DEV: Nonsymmetric Eigenvalue Problem Driver
1989 * DGEEV (eigenvalues and eigenvectors)
1990 * --------------------------------------------
1991 *
1992  maxtyp = 21
1993  ntypes = min( maxtyp, ntypes )
1994  IF( ntypes.LE.0 ) THEN
1995  WRITE( nout, fmt = 9990 )c3
1996  ELSE
1997  IF( tsterr )
1998  $ CALL derred( c3, nout )
1999  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2000  CALL ddrvev( nn, nval, ntypes, dotype, iseed, thresh, nout,
2001  $ a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
2002  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
2003  $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax, result,
2004  $ work, lwork, iwork, info )
2005  IF( info.NE.0 )
2006  $ WRITE( nout, fmt = 9980 )'DGEEV', info
2007  END IF
2008  WRITE( nout, fmt = 9973 )
2009  GO TO 10
2010 *
2011  ELSE IF( lsamen( 3, c3, 'DES' ) ) THEN
2012 *
2013 * --------------------------------------------
2014 * DES: Nonsymmetric Eigenvalue Problem Driver
2015 * DGEES (Schur form)
2016 * --------------------------------------------
2017 *
2018  maxtyp = 21
2019  ntypes = min( maxtyp, ntypes )
2020  IF( ntypes.LE.0 ) THEN
2021  WRITE( nout, fmt = 9990 )c3
2022  ELSE
2023  IF( tsterr )
2024  $ CALL derred( c3, nout )
2025  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2026  CALL ddrves( nn, nval, ntypes, dotype, iseed, thresh, nout,
2027  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2028  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2029  $ a( 1, 4 ), nmax, result, work, lwork, iwork,
2030  $ logwrk, info )
2031  IF( info.NE.0 )
2032  $ WRITE( nout, fmt = 9980 )'DGEES', info
2033  END IF
2034  WRITE( nout, fmt = 9973 )
2035  GO TO 10
2036 *
2037  ELSE IF( lsamen( 3, c3, 'DVX' ) ) THEN
2038 *
2039 * --------------------------------------------------------------
2040 * DVX: Nonsymmetric Eigenvalue Problem Expert Driver
2041 * DGEEVX (eigenvalues, eigenvectors and condition numbers)
2042 * --------------------------------------------------------------
2043 *
2044  maxtyp = 21
2045  ntypes = min( maxtyp, ntypes )
2046  IF( ntypes.LT.0 ) THEN
2047  WRITE( nout, fmt = 9990 )c3
2048  ELSE
2049  IF( tsterr )
2050  $ CALL derred( c3, nout )
2051  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2052  CALL ddrvvx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2053  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
2054  $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
2055  $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax,
2056  $ d( 1, 5 ), d( 1, 6 ), d( 1, 7 ), d( 1, 8 ),
2057  $ d( 1, 9 ), d( 1, 10 ), d( 1, 11 ), d( 1, 12 ),
2058  $ result, work, lwork, iwork, info )
2059  IF( info.NE.0 )
2060  $ WRITE( nout, fmt = 9980 )'DGEEVX', info
2061  END IF
2062  WRITE( nout, fmt = 9973 )
2063  GO TO 10
2064 *
2065  ELSE IF( lsamen( 3, c3, 'DSX' ) ) THEN
2066 *
2067 * ---------------------------------------------------
2068 * DSX: Nonsymmetric Eigenvalue Problem Expert Driver
2069 * DGEESX (Schur form and condition numbers)
2070 * ---------------------------------------------------
2071 *
2072  maxtyp = 21
2073  ntypes = min( maxtyp, ntypes )
2074  IF( ntypes.LT.0 ) THEN
2075  WRITE( nout, fmt = 9990 )c3
2076  ELSE
2077  IF( tsterr )
2078  $ CALL derred( c3, nout )
2079  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2080  CALL ddrvsx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2081  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2082  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2083  $ d( 1, 5 ), d( 1, 6 ), a( 1, 4 ), nmax,
2084  $ a( 1, 5 ), result, work, lwork, iwork, logwrk,
2085  $ info )
2086  IF( info.NE.0 )
2087  $ WRITE( nout, fmt = 9980 )'DGEESX', info
2088  END IF
2089  WRITE( nout, fmt = 9973 )
2090  GO TO 10
2091 *
2092  ELSE IF( lsamen( 3, c3, 'DGG' ) ) THEN
2093 *
2094 * -------------------------------------------------
2095 * DGG: Generalized Nonsymmetric Eigenvalue Problem
2096 * -------------------------------------------------
2097 * Vary the parameters
2098 * NB = block size
2099 * NBMIN = minimum block size
2100 * NS = number of shifts
2101 * MAXB = minimum submatrix size
2102 * IACC22: structured matrix multiply
2103 * NBCOL = minimum column dimension for blocks
2104 *
2105  maxtyp = 26
2106  ntypes = min( maxtyp, ntypes )
2107  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2108  CALL xlaenv(1,1)
2109  IF( tstchk .AND. tsterr )
2110  $ CALL derrgg( c3, nout )
2111  DO 350 i = 1, nparms
2112  CALL xlaenv( 1, nbval( i ) )
2113  CALL xlaenv( 2, nbmin( i ) )
2114  CALL xlaenv( 4, nsval( i ) )
2115  CALL xlaenv( 8, mxbval( i ) )
2116  CALL xlaenv( 16, iacc22( i ) )
2117  CALL xlaenv( 5, nbcol( i ) )
2118 *
2119  IF( newsd.EQ.0 ) THEN
2120  DO 340 k = 1, 4
2121  iseed( k ) = ioldsd( k )
2122  340 CONTINUE
2123  END IF
2124  WRITE( nout, fmt = 9996 )c3, nbval( i ), nbmin( i ),
2125  $ nsval( i ), mxbval( i ), iacc22( i ), nbcol( i )
2126  tstdif = .false.
2127  thrshn = 10.d0
2128  IF( tstchk ) THEN
2129  CALL dchkgg( nn, nval, maxtyp, dotype, iseed, thresh,
2130  $ tstdif, thrshn, nout, a( 1, 1 ), nmax,
2131  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2132  $ a( 1, 6 ), a( 1, 7 ), a( 1, 8 ), a( 1, 9 ),
2133  $ nmax, a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
2134  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2135  $ d( 1, 5 ), d( 1, 6 ), a( 1, 13 ),
2136  $ a( 1, 14 ), work, lwork, logwrk, result,
2137  $ info )
2138  IF( info.NE.0 )
2139  $ WRITE( nout, fmt = 9980 )'DCHKGG', info
2140  END IF
2141  350 CONTINUE
2142 *
2143  ELSE IF( lsamen( 3, c3, 'DGS' ) ) THEN
2144 *
2145 * -------------------------------------------------
2146 * DGS: Generalized Nonsymmetric Eigenvalue Problem
2147 * DGGES (Schur form)
2148 * -------------------------------------------------
2149 *
2150  maxtyp = 26
2151  ntypes = min( maxtyp, ntypes )
2152  IF( ntypes.LE.0 ) THEN
2153  WRITE( nout, fmt = 9990 )c3
2154  ELSE
2155  IF( tsterr )
2156  $ CALL derrgg( c3, nout )
2157  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2158  CALL ddrges( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2159  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2160  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2161  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), work, lwork,
2162  $ result, logwrk, info )
2163  IF( info.NE.0 )
2164  $ WRITE( nout, fmt = 9980 )'DDRGES', info
2165 *
2166 * Blocked version
2167 *
2168  CALL xlaenv(16, 2)
2169  CALL ddrges3( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2170  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2171  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2172  $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), work, lwork,
2173  $ result, logwrk, info )
2174  IF( info.NE.0 )
2175  $ WRITE( nout, fmt = 9980 )'DDRGES3', info
2176  END IF
2177  WRITE( nout, fmt = 9973 )
2178  GO TO 10
2179 *
2180  ELSE IF( dgx ) THEN
2181 *
2182 * -------------------------------------------------
2183 * DGX: Generalized Nonsymmetric Eigenvalue Problem
2184 * DGGESX (Schur form and condition numbers)
2185 * -------------------------------------------------
2186 *
2187  maxtyp = 5
2188  ntypes = maxtyp
2189  IF( nn.LT.0 ) THEN
2190  WRITE( nout, fmt = 9990 )c3
2191  ELSE
2192  IF( tsterr )
2193  $ CALL derrgg( c3, nout )
2194  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2195  CALL xlaenv( 5, 2 )
2196  CALL ddrgsx( nn, ncmax, thresh, nin, nout, a( 1, 1 ), nmax,
2197  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2198  $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
2199  $ c( 1, 1 ), ncmax*ncmax, a( 1, 12 ), work,
2200  $ lwork, iwork, liwork, logwrk, info )
2201  IF( info.NE.0 )
2202  $ WRITE( nout, fmt = 9980 )'DDRGSX', info
2203  END IF
2204  WRITE( nout, fmt = 9973 )
2205  GO TO 10
2206 *
2207  ELSE IF( lsamen( 3, c3, 'DGV' ) ) THEN
2208 *
2209 * -------------------------------------------------
2210 * DGV: Generalized Nonsymmetric Eigenvalue Problem
2211 * DGGEV (Eigenvalue/vector form)
2212 * -------------------------------------------------
2213 *
2214  maxtyp = 26
2215  ntypes = min( maxtyp, ntypes )
2216  IF( ntypes.LE.0 ) THEN
2217  WRITE( nout, fmt = 9990 )c3
2218  ELSE
2219  IF( tsterr )
2220  $ CALL derrgg( c3, nout )
2221  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2222  CALL ddrgev( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2223  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2224  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2225  $ a( 1, 9 ), nmax, d( 1, 1 ), d( 1, 2 ),
2226  $ d( 1, 3 ), d( 1, 4 ), d( 1, 5 ), d( 1, 6 ),
2227  $ work, lwork, result, info )
2228  IF( info.NE.0 )
2229  $ WRITE( nout, fmt = 9980 )'DDRGEV', info
2230 *
2231 * Blocked version
2232 *
2233  CALL ddrgev3( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2234  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2235  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2236  $ a( 1, 9 ), nmax, d( 1, 1 ), d( 1, 2 ),
2237  $ d( 1, 3 ), d( 1, 4 ), d( 1, 5 ), d( 1, 6 ),
2238  $ work, lwork, result, info )
2239  IF( info.NE.0 )
2240  $ WRITE( nout, fmt = 9980 )'DDRGEV3', info
2241  END IF
2242  WRITE( nout, fmt = 9973 )
2243  GO TO 10
2244 *
2245  ELSE IF( dxv ) THEN
2246 *
2247 * -------------------------------------------------
2248 * DXV: Generalized Nonsymmetric Eigenvalue Problem
2249 * DGGEVX (eigenvalue/vector with condition numbers)
2250 * -------------------------------------------------
2251 *
2252  maxtyp = 2
2253  ntypes = maxtyp
2254  IF( nn.LT.0 ) THEN
2255  WRITE( nout, fmt = 9990 )c3
2256  ELSE
2257  IF( tsterr )
2258  $ CALL derrgg( c3, nout )
2259  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2260  CALL ddrgvx( nn, thresh, nin, nout, a( 1, 1 ), nmax,
2261  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), d( 1, 1 ),
2262  $ d( 1, 2 ), d( 1, 3 ), a( 1, 5 ), a( 1, 6 ),
2263  $ iwork( 1 ), iwork( 2 ), d( 1, 4 ), d( 1, 5 ),
2264  $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
2265  $ work, lwork, iwork( 3 ), liwork-2, result,
2266  $ logwrk, info )
2267 *
2268  IF( info.NE.0 )
2269  $ WRITE( nout, fmt = 9980 )'DDRGVX', info
2270  END IF
2271  WRITE( nout, fmt = 9973 )
2272  GO TO 10
2273 *
2274  ELSE IF( lsamen( 3, c3, 'DSB' ) ) THEN
2275 *
2276 * ------------------------------
2277 * DSB: Symmetric Band Reduction
2278 * ------------------------------
2279 *
2280  maxtyp = 15
2281  ntypes = min( maxtyp, ntypes )
2282  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2283  IF( tsterr )
2284  $ CALL derrst( 'DSB', nout )
2285  CALL dchksb( nn, nval, nk, kval, maxtyp, dotype, iseed, thresh,
2286  $ nout, a( 1, 1 ), nmax, d( 1, 1 ), d( 1, 2 ),
2287  $ a( 1, 2 ), nmax, work, lwork, result, info )
2288  IF( info.NE.0 )
2289  $ WRITE( nout, fmt = 9980 )'DCHKSB', info
2290 *
2291  ELSE IF( lsamen( 3, c3, 'DBB' ) ) THEN
2292 *
2293 * ------------------------------
2294 * DBB: General Band Reduction
2295 * ------------------------------
2296 *
2297  maxtyp = 15
2298  ntypes = min( maxtyp, ntypes )
2299  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2300  DO 370 i = 1, nparms
2301  nrhs = nsval( i )
2302 *
2303  IF( newsd.EQ.0 ) THEN
2304  DO 360 k = 1, 4
2305  iseed( k ) = ioldsd( k )
2306  360 CONTINUE
2307  END IF
2308  WRITE( nout, fmt = 9966 )c3, nrhs
2309  CALL dchkbb( nn, mval, nval, nk, kval, maxtyp, dotype, nrhs,
2310  $ iseed, thresh, nout, a( 1, 1 ), nmax,
2311  $ a( 1, 2 ), 2*nmax, d( 1, 1 ), d( 1, 2 ),
2312  $ a( 1, 4 ), nmax, a( 1, 5 ), nmax, a( 1, 6 ),
2313  $ nmax, a( 1, 7 ), work, lwork, result, info )
2314  IF( info.NE.0 )
2315  $ WRITE( nout, fmt = 9980 )'DCHKBB', info
2316  370 CONTINUE
2317 *
2318  ELSE IF( lsamen( 3, c3, 'GLM' ) ) THEN
2319 *
2320 * -----------------------------------------
2321 * GLM: Generalized Linear Regression Model
2322 * -----------------------------------------
2323 *
2324  CALL xlaenv( 1, 1 )
2325  IF( tsterr )
2326  $ CALL derrgg( 'GLM', nout )
2327  CALL dckglm( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2328  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2329  $ work, d( 1, 1 ), nin, nout, info )
2330  IF( info.NE.0 )
2331  $ WRITE( nout, fmt = 9980 )'DCKGLM', info
2332 *
2333  ELSE IF( lsamen( 3, c3, 'GQR' ) ) THEN
2334 *
2335 * ------------------------------------------
2336 * GQR: Generalized QR and RQ factorizations
2337 * ------------------------------------------
2338 *
2339  CALL xlaenv( 1, 1 )
2340  IF( tsterr )
2341  $ CALL derrgg( 'GQR', nout )
2342  CALL dckgqr( nn, mval, nn, pval, nn, nval, ntypes, iseed,
2343  $ thresh, nmax, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
2344  $ a( 1, 4 ), taua, b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
2345  $ b( 1, 4 ), b( 1, 5 ), taub, work, d( 1, 1 ), nin,
2346  $ nout, info )
2347  IF( info.NE.0 )
2348  $ WRITE( nout, fmt = 9980 )'DCKGQR', info
2349 *
2350  ELSE IF( lsamen( 3, c3, 'GSV' ) ) THEN
2351 *
2352 * ----------------------------------------------
2353 * GSV: Generalized Singular Value Decomposition
2354 * ----------------------------------------------
2355 *
2356  CALL xlaenv(1,1)
2357  IF( tsterr )
2358  $ CALL derrgg( 'GSV', nout )
2359  CALL dckgsv( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2360  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
2361  $ a( 1, 3 ), b( 1, 3 ), a( 1, 4 ), taua, taub,
2362  $ b( 1, 4 ), iwork, work, d( 1, 1 ), nin, nout,
2363  $ info )
2364  IF( info.NE.0 )
2365  $ WRITE( nout, fmt = 9980 )'DCKGSV', info
2366 *
2367  ELSE IF( lsamen( 3, c3, 'CSD' ) ) THEN
2368 *
2369 * ----------------------------------------------
2370 * CSD: CS Decomposition
2371 * ----------------------------------------------
2372 *
2373  CALL xlaenv(1,1)
2374  IF( tsterr )
2375  $ CALL derrgg( 'CSD', nout )
2376  CALL dckcsd( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2377  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), a( 1, 4 ),
2378  $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), iwork, work,
2379  $ d( 1, 1 ), nin, nout, info )
2380  IF( info.NE.0 )
2381  $ WRITE( nout, fmt = 9980 )'DCKCSD', info
2382 *
2383  ELSE IF( lsamen( 3, c3, 'LSE' ) ) THEN
2384 *
2385 * --------------------------------------
2386 * LSE: Constrained Linear Least Squares
2387 * --------------------------------------
2388 *
2389  CALL xlaenv( 1, 1 )
2390  IF( tsterr )
2391  $ CALL derrgg( 'LSE', nout )
2392  CALL dcklse( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2393  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2394  $ work, d( 1, 1 ), nin, nout, info )
2395  IF( info.NE.0 )
2396  $ WRITE( nout, fmt = 9980 )'DCKLSE', info
2397 *
2398  ELSE
2399  WRITE( nout, fmt = * )
2400  WRITE( nout, fmt = * )
2401  WRITE( nout, fmt = 9992 )c3
2402  END IF
2403  IF( .NOT.( dgx .OR. dxv ) )
2404  $ GO TO 190
2405  380 CONTINUE
2406  WRITE( nout, fmt = 9994 )
2407  s2 = dsecnd( )
2408  WRITE( nout, fmt = 9993 )s2 - s1
2409 *
2410  9999 FORMAT( / ' Execution not attempted due to input errors' )
2411  9997 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4 )
2412  9996 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NS =', i4,
2413  $ ', MAXB =', i4, ', IACC22 =', i4, ', NBCOL =', i4 )
2414  9995 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2415  $ ', NRHS =', i4 )
2416  9994 FORMAT( / / ' End of tests' )
2417  9993 FORMAT( ' Total time used = ', f12.2, ' seconds', / )
2418  9992 FORMAT( 1x, a3, ': Unrecognized path name' )
2419  9991 FORMAT( / / ' *** Invalid integer value in column ', i2,
2420  $ ' of input', ' line:', / a79 )
2421  9990 FORMAT( / / 1x, a3, ' routines were not tested' )
2422  9989 FORMAT( ' Invalid input value: ', a, '=', i6, '; must be >=',
2423  $ i6 )
2424  9988 FORMAT( ' Invalid input value: ', a, '=', i6, '; must be <=',
2425  $ i6 )
2426  9987 FORMAT( ' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2427  9986 FORMAT( ' Tests of the Symmetric Eigenvalue Problem routines' )
2428  9985 FORMAT( ' Tests of the Singular Value Decomposition routines' )
2429  9984 FORMAT( / ' The following parameter values will be used:' )
2430  9983 FORMAT( 4x, a, 10i6, / 10x, 10i6 )
2431  9982 FORMAT( / ' Routines pass computational tests if test ratio is ',
2432  $ 'less than', f8.2, / )
2433  9981 FORMAT( ' Relative machine ', a, ' is taken to be', d16.6 )
2434  9980 FORMAT( ' *** Error code from ', a, ' = ', i4 )
2435  9979 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2436  $ / ' DGEEV (eigenvalues and eigevectors)' )
2437  9978 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2438  $ / ' DGEES (Schur form)' )
2439  9977 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2440  $ ' Driver', / ' DGEEVX (eigenvalues, eigenvectors and',
2441  $ ' condition numbers)' )
2442  9976 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2443  $ ' Driver', / ' DGEESX (Schur form and condition',
2444  $ ' numbers)' )
2445  9975 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2446  $ 'Problem routines' )
2447  9974 FORMAT( ' Tests of DSBTRD', / ' (reduction of a symmetric band ',
2448  $ 'matrix to tridiagonal form)' )
2449  9973 FORMAT( / 1x, 71( '-' ) )
2450  9972 FORMAT( / ' LAPACK VERSION ', i1, '.', i1, '.', i1 )
2451  9971 FORMAT( / ' Tests of the Generalized Linear Regression Model ',
2452  $ 'routines' )
2453  9970 FORMAT( / ' Tests of the Generalized QR and RQ routines' )
2454  9969 FORMAT( / ' Tests of the Generalized Singular Value',
2455  $ ' Decomposition routines' )
2456  9968 FORMAT( / ' Tests of the Linear Least Squares routines' )
2457  9967 FORMAT( ' Tests of DGBBRD', / ' (reduction of a general band ',
2458  $ 'matrix to real bidiagonal form)' )
2459  9966 FORMAT( / / 1x, a3, ': NRHS =', i4 )
2460  9965 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2461  $ 'Problem Expert Driver DGGESX' )
2462  9964 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2463  $ 'Problem Driver DGGES' )
2464  9963 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2465  $ 'Problem Driver DGGEV' )
2466  9962 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2467  $ 'Problem Expert Driver DGGEVX' )
2468  9961 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2469  $ ', INMIN=', i4,
2470  $ ', INWIN =', i4, ', INIBL =', i4, ', ISHFTS =', i4,
2471  $ ', IACC22 =', i4)
2472  9960 FORMAT( / ' Tests of the CS Decomposition routines' )
2473 *
2474 * End of DCHKEE
2475 *
2476  END
subroutine ddrvbd(NSIZES, MM, NN, NTYPES, DOTYPE, ISEED, THRESH, A, LDA, U, LDU, VT, LDVT, ASAV, USAV, VTSAV, S, SSAV, E, WORK, LWORK, IWORK, NOUT, INFO)
DDRVBD
Definition: ddrvbd.f:357
subroutine dckgsv(NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, U, V, Q, ALPHA, BETA, R, IWORK, WORK, RWORK, NIN, NOUT, INFO)
DCKGSV
Definition: dckgsv.f:200
subroutine dchkbd(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)
DCHKBD
Definition: dchkbd.f:495
subroutine ddrges3(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHAR, ALPHAI, BETA, WORK, LWORK, RESULT, BWORK, INFO)
DDRGES3
Definition: ddrges3.f:405
subroutine dchkgl(NIN, NOUT)
DCHKGL
Definition: dchkgl.f:55
program dchkee
DCHKEE
Definition: dchkee.f:1041
subroutine dckgqr(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)
DCKGQR
Definition: dckgqr.f:212
subroutine ddrvev(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)
DDRVEV
Definition: ddrvev.f:408
subroutine ddrges(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHAR, ALPHAI, BETA, WORK, LWORK, RESULT, BWORK, INFO)
DDRGES
Definition: ddrges.f:405
subroutine dchkec(THRESH, TSTERR, NIN, NOUT)
DCHKEC
Definition: dchkec.f:78
subroutine dchkst(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)
DCHKST
Definition: dchkst.f:593
subroutine dcklse(NN, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
DCKLSE
Definition: dcklse.f:169
subroutine dckglm(NN, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
DCKGLM
Definition: dckglm.f:169
subroutine dchkgg(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)
DCHKGG
Definition: dchkgg.f:513
subroutine dchkbb(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)
DCHKBB
Definition: dchkbb.f:357
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:92
subroutine ddrvsg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, LDB, D, Z, LDZ, AB, BB, AP, BP, WORK, NWORK, IWORK, LIWORK, RESULT, INFO)
DDRVSG
Definition: ddrvsg.f:357
subroutine dchkhs(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)
DCHKHS
Definition: dchkhs.f:414
subroutine dckcsd(NM, MVAL, PVAL, QVAL, NMATS, ISEED, THRESH, MMAX, X, XF, U1, U2, V1T, V2T, THETA, IWORK, WORK, RWORK, NIN, NOUT, INFO)
DCKCSD
Definition: dckcsd.f:186
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
Definition: xlaenv.f:83
subroutine dchksb(NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, SD, SE, U, LDU, WORK, LWORK, RESULT, INFO)
DCHKSB
Definition: dchksb.f:295
subroutine ddrgev3(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)
DDRGEV3
Definition: ddrgev3.f:410
subroutine derred(PATH, NUNIT)
DERRED
Definition: derred.f:70
subroutine ddrves(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, HT, WR, WI, WRT, WIT, VS, LDVS, RESULT, WORK, NWORK, IWORK, BWORK, INFO)
DDRVES
Definition: ddrves.f:390
subroutine derrbd(PATH, NUNIT)
DERRBD
Definition: derrbd.f:57
subroutine ddrvsx(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)
DDRVSX
Definition: ddrvsx.f:456
subroutine derrgg(PATH, NUNIT)
DERRGG
Definition: derrgg.f:59
subroutine derrst(PATH, NUNIT)
DERRST
Definition: derrst.f:59
subroutine ddrgvx(NSIZE, THRESH, NIN, NOUT, A, LDA, B, AI, BI, ALPHAR, ALPHAI, BETA, VL, VR, ILO, IHI, LSCALE, RSCALE, S, DTRU, DIF, DIFTRU, WORK, LWORK, IWORK, LIWORK, RESULT, BWORK, INFO)
DDRGVX
Definition: ddrgvx.f:302
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:50
subroutine ddrgev(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)
DDRGEV
Definition: ddrgev.f:410
subroutine dchkbl(NIN, NOUT)
DCHKBL
Definition: dchkbl.f:56
subroutine derrhs(PATH, NUNIT)
DERRHS
Definition: derrhs.f:57
subroutine dchkgk(NIN, NOUT)
DCHKGK
Definition: dchkgk.f:56
subroutine ddrvvx(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)
DDRVVX
Definition: ddrvvx.f:523
subroutine dchkbk(NIN, NOUT)
DCHKBK
Definition: dchkbk.f:57
subroutine ddrgsx(NSIZE, NCMAX, THRESH, NIN, NOUT, A, LDA, B, AI, BI, Z, Q, ALPHAR, ALPHAI, BETA, C, LDC, S, WORK, LWORK, IWORK, LIWORK, BWORK, INFO)
DDRGSX
Definition: ddrgsx.f:361
subroutine ddrvst(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)
DDRVST
Definition: ddrvst.f:455