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