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