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