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