LAPACK  3.6.0
LAPACK: Linear Algebra PACKage
zchkee.f
Go to the documentation of this file.
1 *> \brief \b ZCHKEE
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 ZCHKEE
12 *
13 *
14 *> \par Purpose:
15 * =============
16 *>
17 *> \verbatim
18 *>
19 *> ZCHKEE tests the COMPLEX*16 LAPACK subroutines for the matrix
20 *> eigenvalue problem. The test paths in this version are
21 *>
22 *> NEP (Nonsymmetric Eigenvalue Problem):
23 *> Test ZGEHRD, ZUNGHR, ZHSEQR, ZTREVC, ZHSEIN, and ZUNMHR
24 *>
25 *> SEP (Hermitian Eigenvalue Problem):
26 *> Test ZHETRD, ZUNGTR, ZSTEQR, ZSTERF, ZSTEIN, ZSTEDC,
27 *> and drivers ZHEEV(X), ZHBEV(X), ZHPEV(X),
28 *> ZHEEVD, ZHBEVD, ZHPEVD
29 *>
30 *> SVD (Singular Value Decomposition):
31 *> Test ZGEBRD, ZUNGBR, and ZBDSQR
32 *> and the drivers ZGESVD, ZGESDD
33 *>
34 *> ZEV (Nonsymmetric Eigenvalue/eigenvector Driver):
35 *> Test ZGEEV
36 *>
37 *> ZES (Nonsymmetric Schur form Driver):
38 *> Test ZGEES
39 *>
40 *> ZVX (Nonsymmetric Eigenvalue/eigenvector Expert Driver):
41 *> Test ZGEEVX
42 *>
43 *> ZSX (Nonsymmetric Schur form Expert Driver):
44 *> Test ZGEESX
45 *>
46 *> ZGG (Generalized Nonsymmetric Eigenvalue Problem):
47 *> Test ZGGHD3, ZGGBAL, ZGGBAK, ZHGEQZ, and ZTGEVC
48 *>
49 *> ZGS (Generalized Nonsymmetric Schur form Driver):
50 *> Test ZGGES
51 *>
52 *> ZGV (Generalized Nonsymmetric Eigenvalue/eigenvector Driver):
53 *> Test ZGGEV
54 *>
55 *> ZGX (Generalized Nonsymmetric Schur form Expert Driver):
56 *> Test ZGGESX
57 *>
58 *> ZXV (Generalized Nonsymmetric Eigenvalue/eigenvector Expert Driver):
59 *> Test ZGGEVX
60 *>
61 *> ZSG (Hermitian Generalized Eigenvalue Problem):
62 *> Test ZHEGST, ZHEGV, ZHEGVD, ZHEGVX, ZHPGST, ZHPGV, ZHPGVD,
63 *> ZHPGVX, ZHBGST, ZHBGV, ZHBGVD, and ZHBGVX
64 *>
65 *> ZHB (Hermitian Band Eigenvalue Problem):
66 *> Test ZHBTRD
67 *>
68 *> ZBB (Band Singular Value Decomposition):
69 *> Test ZGBBRD
70 *>
71 *> ZEC (Eigencondition estimation):
72 *> Test ZTRSYL, ZTREXC, ZTRSNA, and ZTRSEN
73 *>
74 *> ZBL (Balancing a general matrix)
75 *> Test ZGEBAL
76 *>
77 *> ZBK (Back transformation on a balanced matrix)
78 *> Test ZGEBAK
79 *>
80 *> ZGL (Balancing a matrix pair)
81 *> Test ZGGBAL
82 *>
83 *> ZGK (Back transformation on a matrix pair)
84 *> Test ZGGBAK
85 *>
86 *> GLM (Generalized Linear Regression Model):
87 *> Tests ZGGGLM
88 *>
89 *> GQR (Generalized QR and RQ factorizations):
90 *> Tests ZGGQRF and ZGGRQF
91 *>
92 *> GSV (Generalized Singular Value Decomposition):
93 *> Tests ZGGSVD, ZGGSVP, ZTGSJA, ZLAGS2, ZLAPLL, and ZLAPMT
94 *>
95 *> CSD (CS decomposition):
96 *> Tests ZUNCSD
97 *>
98 *> LSE (Constrained Linear Least Squares):
99 *> Tests ZGGLSE
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 *> ZHS or NEP 21 ZCHKHS
114 *> ZST or SEP 21 ZCHKST (routines)
115 *> 18 ZDRVST (drivers)
116 *> ZBD or SVD 16 ZCHKBD (routines)
117 *> 5 ZDRVBD (drivers)
118 *> ZEV 21 ZDRVEV
119 *> ZES 21 ZDRVES
120 *> ZVX 21 ZDRVVX
121 *> ZSX 21 ZDRVSX
122 *> ZGG 26 ZCHKGG (routines)
123 *> ZGS 26 ZDRGES
124 *> ZGX 5 ZDRGSX
125 *> ZGV 26 ZDRGEV
126 *> ZXV 2 ZDRGVX
127 *> ZSG 21 ZDRVSG
128 *> ZHB 15 ZCHKHB
129 *> ZBB 15 ZCHKBB
130 *> ZEC - ZCHKEC
131 *> ZBL - ZCHKBL
132 *> ZBK - ZCHKBK
133 *> ZGL - ZCHKGL
134 *> ZGK - ZCHKGK
135 *> GLM 8 ZCKGLM
136 *> GQR 8 ZCKGQR
137 *> GSV 8 ZCKGSV
138 *> CSD 3 ZCKCSD
139 *> LSE 8 ZCKLSE
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 'ZHS' for the
213 *> nonsymmetric eigenvalue routines.
214 *>
215 *>-----------------------------------------------------------------------
216 *>
217 *> SEP or ZSG 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 'ZST' for the
266 *> Hermitian eigenvalue routines and driver routines, and
267 *> 'ZSG' 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 'ZBD' for both the
327 *> SVD routines and the SVD driver routines.
328 *>
329 *>-----------------------------------------------------------------------
330 *>
331 *> ZEV and ZES data files:
332 *>
333 *> line 1: 'ZEV' or 'ZES' 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 'ZEV' to test CGEEV, or
371 *> 'ZES' to test CGEES.
372 *>
373 *>-----------------------------------------------------------------------
374 *>
375 *> The ZVX data has two parts. The first part is identical to ZEV,
376 *> and the second part consists of test matrices with precomputed
377 *> solutions.
378 *>
379 *> line 1: 'ZVX' 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 'ZVX' 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 ZSX data is like ZVX. The first part is identical to ZEV, and the
422 *> second part consists of test matrices with precomputed solutions.
423 *>
424 *> line 1: 'ZSX' 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 'ZSX' 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 *> ZGG 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 'ZGG' for the generalized
526 *> eigenvalue problem routines and driver routines.
527 *>
528 *>-----------------------------------------------------------------------
529 *>
530 *> ZGS and ZGV input files:
531 *>
532 *> line 1: 'ZGS' or 'ZGV' 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 'ZGS' for the generalized
571 *> eigenvalue problem routines and driver routines.
572 *>
573 *>-----------------------------------------------------------------------
574 *>
575 *> ZGX input file:
576 *> line 1: 'ZGX' 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 *> ZXV input files:
632 *> line 1: 'ZXV' 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 *> ZHB 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 'ZHB'.
717 *>
718 *>-----------------------------------------------------------------------
719 *>
720 *> ZBB 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 'ZBB'.
762 *>
763 *>-----------------------------------------------------------------------
764 *>
765 *> ZEC 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 *> ZBL and ZBK input files:
781 *>
782 *> line 1: 'ZBL' in columns 1-3 to test CGEBAL, or 'ZBK' in
783 *> columns 1-3 to test CGEBAK.
784 *>
785 *> The remaining lines consist of specially constructed test cases.
786 *>
787 *>-----------------------------------------------------------------------
788 *>
789 *> ZGL and ZGK input files:
790 *>
791 *> line 1: 'ZGL' in columns 1-3 to test ZGGBAL, or 'ZGK' in
792 *> columns 1-3 to test ZGGBAK.
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 ZGG.
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 complex16_eig
1033 *
1034 * =====================================================================
1035  PROGRAM zchkee
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 ZBK, ZBL, ZES, ZEV, ZGK, ZGL, ZGS, ZGV, ZGX,
1064  $ zsx, zvx, zxv, csd, fatal, glm, gqr, gsv, lse,
1065  $ nep, sep, svd, tstchk, tstdif, tstdrv, tsterr,
1066  $ zbb, zgg, zhb
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  DOUBLE PRECISION 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  DOUBLE PRECISION ALPHA( nmax ), BETA( nmax ), DR( nmax, 12 ),
1087  $ result( 500 ), rwork( lwork ), s( nmax*nmax )
1088  COMPLEX*16 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  DOUBLE PRECISION DLAMCH, DSECND
1096  EXTERNAL lsamen, dlamch, dsecnd
1097 * ..
1098 * .. External Subroutines ..
1099  EXTERNAL alareq, xlaenv, zchkbb, zchkbd, zchkbk, zchkbl,
1105  $ zdrges3, zdrgev3
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  DOUBLE PRECISION SELWI( 20 ), SELWR( 20 )
1120 * ..
1121 * .. Common blocks ..
1122  COMMON / cenvir / nproc, nshift, maxb
1123  COMMON / infoc / infot, nunit, ok, lerr
1124  COMMON / srnamc / srnamt
1125  COMMON / sslct / selopt, seldim, selval, selwr, selwi
1126  COMMON / claenv / iparms
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 = dsecnd( )
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, 'ZHS' )
1151  sep = lsamen( 3, path, 'SEP' ) .OR. lsamen( 3, path, 'ZST' ) .OR.
1152  $ lsamen( 3, path, 'ZSG' )
1153  svd = lsamen( 3, path, 'SVD' ) .OR. lsamen( 3, path, 'ZBD' )
1154  zev = lsamen( 3, path, 'ZEV' )
1155  zes = lsamen( 3, path, 'ZES' )
1156  zvx = lsamen( 3, path, 'ZVX' )
1157  zsx = lsamen( 3, path, 'ZSX' )
1158  zgg = lsamen( 3, path, 'ZGG' )
1159  zgs = lsamen( 3, path, 'ZGS' )
1160  zgx = lsamen( 3, path, 'ZGX' )
1161  zgv = lsamen( 3, path, 'ZGV' )
1162  zxv = lsamen( 3, path, 'ZXV' )
1163  zhb = lsamen( 3, path, 'ZHB' )
1164  zbb = lsamen( 3, path, 'ZBB' )
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  zbl = lsamen( 3, path, 'ZBL' )
1171  zbk = lsamen( 3, path, 'ZBK' )
1172  zgl = lsamen( 3, path, 'ZGL' )
1173  zgk = lsamen( 3, path, 'ZGK' )
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( zev ) THEN
1186  WRITE( nout, fmt = 9979 )
1187  ELSE IF( zes ) THEN
1188  WRITE( nout, fmt = 9978 )
1189  ELSE IF( zvx ) THEN
1190  WRITE( nout, fmt = 9977 )
1191  ELSE IF( zsx ) THEN
1192  WRITE( nout, fmt = 9976 )
1193  ELSE IF( zgg ) THEN
1194  WRITE( nout, fmt = 9975 )
1195  ELSE IF( zgs ) THEN
1196  WRITE( nout, fmt = 9964 )
1197  ELSE IF( zgx ) THEN
1198  WRITE( nout, fmt = 9965 )
1199  ELSE IF( zgv ) THEN
1200  WRITE( nout, fmt = 9963 )
1201  ELSE IF( zxv ) THEN
1202  WRITE( nout, fmt = 9962 )
1203  ELSE IF( zhb ) THEN
1204  WRITE( nout, fmt = 9974 )
1205  ELSE IF( zbb ) 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( zbl ) THEN
1218 *
1219 * ZGEBAL: Balancing
1220 *
1221  CALL zchkbl( nin, nout )
1222  GO TO 380
1223  ELSE IF( zbk ) THEN
1224 *
1225 * ZGEBAK: Back transformation
1226 *
1227  CALL zchkbk( nin, nout )
1228  GO TO 380
1229  ELSE IF( zgl ) THEN
1230 *
1231 * ZGGBAL: Balancing
1232 *
1233  CALL zchkgl( nin, nout )
1234  GO TO 380
1235  ELSE IF( zgk ) THEN
1236 *
1237 * ZGGBAK: Back transformation
1238 *
1239  CALL zchkgk( nin, nout )
1240  GO TO 380
1241  ELSE IF( lsamen( 3, path, 'ZEC' ) ) THEN
1242 *
1243 * ZEC: Eigencondition estimation
1244 *
1245  READ( nin, fmt = * )thresh
1246  CALL xlaenv( 1, 1 )
1247  CALL xlaenv( 12, 1 )
1248  tsterr = .true.
1249  CALL zchkec( 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.( zgx .OR. zxv ) ) 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. zbb .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.( zgx .OR. zxv ) ) 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( zhb .OR. zbb ) 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( zev .OR. zes .OR. zvx .OR. zsx ) 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( zgs .OR. zgx .OR. zgv .OR. zxv ) 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.zhb .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.zbb ) 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. zgg ) 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 ZGG) or NRHS (if SVD
1510 * or ZBB).
1511 *
1512  IF( svd .OR. zbb .OR. zgg ) 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( zgg ) 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. zgg ) 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( zgg ) 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 = dlamch( 'Underflow threshold' )
1668  WRITE( nout, fmt = 9981 )'underflow', eps
1669  eps = dlamch( 'Overflow threshold' )
1670  WRITE( nout, fmt = 9981 )'overflow ', eps
1671  eps = dlamch( '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. zgg ) 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.( zgx .OR. zxv ) ) 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.( zev .OR. zes .OR. zvx .OR. zsx .OR. zgv .OR.
1765  $ zgs ) .AND. ntypes.LE.0 ) THEN
1766  WRITE( nout, fmt = 9990 )c3
1767  GO TO 200
1768  END IF
1769 *
1770  ELSE
1771  IF( zgx )
1772  $ c3 = 'ZGX'
1773  IF( zxv )
1774  $ c3 = 'ZXV'
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, 'ZHS' ) .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 zerrhs( 'ZHSEQR', 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 zchkhs( 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 )'ZCHKHS', info
1830  270 CONTINUE
1831 *
1832  ELSE IF( lsamen( 3, c3, 'ZST' ) .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 zerrst( 'ZST', 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 zchkst( 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 )'ZCHKST', info
1873  END IF
1874  IF( tstdrv ) THEN
1875  CALL zdrvst( 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 )'ZDRVST', info
1883  END IF
1884  290 CONTINUE
1885 *
1886  ELSE IF( lsamen( 3, c3, 'ZSG' ) ) THEN
1887 *
1888 * ----------------------------------------------
1889 * ZSG: 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 zdrvsg( 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 )'ZDRVSG', info
1921  END IF
1922  310 CONTINUE
1923 *
1924  ELSE IF( lsamen( 3, c3, 'ZBD' ) .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 zerrbd( 'ZBD', nout )
1945  IF( tsterr .AND. tstdrv )
1946  $ CALL zerred( 'ZBD', 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 zchkbd( 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 )'ZCHKBD', info
1969  END IF
1970  IF( tstdrv )
1971  $ CALL zdrvbd( 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, 'ZEV' ) ) THEN
1980 *
1981 * --------------------------------------------
1982 * ZEV: Nonsymmetric Eigenvalue Problem Driver
1983 * ZGEEV (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 zerred( c3, nout )
1993  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1994  CALL zdrvev( 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 )'ZGEEV', info
2001  END IF
2002  WRITE( nout, fmt = 9973 )
2003  GO TO 10
2004 *
2005  ELSE IF( lsamen( 3, c3, 'ZES' ) ) THEN
2006 *
2007 * --------------------------------------------
2008 * ZES: Nonsymmetric Eigenvalue Problem Driver
2009 * ZGEES (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 zerred( c3, nout )
2019  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2020  CALL zdrves( 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 )'ZGEES', info
2027  END IF
2028  WRITE( nout, fmt = 9973 )
2029  GO TO 10
2030 *
2031  ELSE IF( lsamen( 3, c3, 'ZVX' ) ) THEN
2032 *
2033 * --------------------------------------------------------------
2034 * ZVX: Nonsymmetric Eigenvalue Problem Expert Driver
2035 * ZGEEVX (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 zerred( c3, nout )
2045  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2046  CALL zdrvvx( 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 )'ZGEEVX', info
2055  END IF
2056  WRITE( nout, fmt = 9973 )
2057  GO TO 10
2058 *
2059  ELSE IF( lsamen( 3, c3, 'ZSX' ) ) THEN
2060 *
2061 * ---------------------------------------------------
2062 * ZSX: Nonsymmetric Eigenvalue Problem Expert Driver
2063 * ZGEESX (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 zerred( c3, nout )
2073  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2074  CALL zdrvsx( 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 )'ZGEESX', info
2081  END IF
2082  WRITE( nout, fmt = 9973 )
2083  GO TO 10
2084 *
2085  ELSE IF( lsamen( 3, c3, 'ZGG' ) ) THEN
2086 *
2087 * -------------------------------------------------
2088 * ZGG: 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 zerrgg( 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.d0
2120  IF( tstchk ) THEN
2121  CALL zchkgg( 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 )'ZCHKGG', info
2131  END IF
2132  350 CONTINUE
2133 *
2134  ELSE IF( lsamen( 3, c3, 'ZGS' ) ) THEN
2135 *
2136 * -------------------------------------------------
2137 * ZGS: Generalized Nonsymmetric Eigenvalue Problem
2138 * ZGGES (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 zerrgg( c3, nout )
2148  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2149  CALL zdrges( 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 )'ZDRGES', info
2157 *
2158 * Blocked version
2159 *
2160  CALL zdrges3( 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 )'ZDRGES3', info
2168  END IF
2169  WRITE( nout, fmt = 9973 )
2170  GO TO 10
2171 *
2172  ELSE IF( zgx ) THEN
2173 *
2174 * -------------------------------------------------
2175 * ZGX Generalized Nonsymmetric Eigenvalue Problem
2176 * ZGGESX (Schur form and condition numbers)
2177 * -------------------------------------------------
2178 *
2179  maxtyp = 5
2180  ntypes = maxtyp
2181  IF( nn.LT.0 ) THEN
2182  WRITE( nout, fmt = 9990 )c3
2183  ELSE
2184  IF( tsterr )
2185  $ CALL zerrgg( c3, nout )
2186  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2187  CALL xlaenv( 5, 2 )
2188  CALL zdrgsx( nn, ncmax, thresh, nin, nout, a( 1, 1 ), nmax,
2189  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2190  $ a( 1, 6 ), dc( 1, 1 ), dc( 1, 2 ), c,
2191  $ ncmax*ncmax, s, work, lwork, rwork, iwork,
2192  $ liwork, logwrk, info )
2193  IF( info.NE.0 )
2194  $ WRITE( nout, fmt = 9980 )'ZDRGSX', info
2195  END IF
2196  WRITE( nout, fmt = 9973 )
2197  GO TO 10
2198 *
2199  ELSE IF( lsamen( 3, c3, 'ZGV' ) ) THEN
2200 *
2201 * -------------------------------------------------
2202 * ZGV: Generalized Nonsymmetric Eigenvalue Problem
2203 * ZGGEV (Eigenvalue/vector form)
2204 * -------------------------------------------------
2205 *
2206  maxtyp = 26
2207  ntypes = min( maxtyp, ntypes )
2208  IF( ntypes.LE.0 ) THEN
2209  WRITE( nout, fmt = 9990 )c3
2210  ELSE
2211  IF( tsterr )
2212  $ CALL zerrgg( c3, nout )
2213  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2214  CALL zdrgev( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2215  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2216  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2217  $ a( 1, 9 ), nmax, dc( 1, 1 ), dc( 1, 2 ),
2218  $ dc( 1, 3 ), dc( 1, 4 ), work, lwork, rwork,
2219  $ result, info )
2220  IF( info.NE.0 )
2221  $ WRITE( nout, fmt = 9980 )'ZDRGEV', info
2222 *
2223 * Blocked version
2224 *
2225  CALL zdrgev3( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2226  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2227  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2228  $ a( 1, 9 ), nmax, dc( 1, 1 ), dc( 1, 2 ),
2229  $ dc( 1, 3 ), dc( 1, 4 ), work, lwork, rwork,
2230  $ result, info )
2231  IF( info.NE.0 )
2232  $ WRITE( nout, fmt = 9980 )'ZDRGEV3', info
2233  END IF
2234  WRITE( nout, fmt = 9973 )
2235  GO TO 10
2236 *
2237  ELSE IF( zxv ) THEN
2238 *
2239 * -------------------------------------------------
2240 * ZXV: Generalized Nonsymmetric Eigenvalue Problem
2241 * ZGGEVX (eigenvalue/vector with condition numbers)
2242 * -------------------------------------------------
2243 *
2244  maxtyp = 2
2245  ntypes = maxtyp
2246  IF( nn.LT.0 ) THEN
2247  WRITE( nout, fmt = 9990 )c3
2248  ELSE
2249  IF( tsterr )
2250  $ CALL zerrgg( c3, nout )
2251  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2252  CALL zdrgvx( nn, thresh, nin, nout, a( 1, 1 ), nmax,
2253  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), dc( 1, 1 ),
2254  $ dc( 1, 2 ), a( 1, 5 ), a( 1, 6 ), iwork( 1 ),
2255  $ iwork( 2 ), dr( 1, 1 ), dr( 1, 2 ), dr( 1, 3 ),
2256  $ dr( 1, 4 ), dr( 1, 5 ), dr( 1, 6 ), work,
2257  $ lwork, rwork, iwork( 3 ), liwork-2, result,
2258  $ logwrk, info )
2259 *
2260  IF( info.NE.0 )
2261  $ WRITE( nout, fmt = 9980 )'ZDRGVX', info
2262  END IF
2263  WRITE( nout, fmt = 9973 )
2264  GO TO 10
2265 *
2266  ELSE IF( lsamen( 3, c3, 'ZHB' ) ) THEN
2267 *
2268 * ------------------------------
2269 * ZHB: Hermitian Band Reduction
2270 * ------------------------------
2271 *
2272  maxtyp = 15
2273  ntypes = min( maxtyp, ntypes )
2274  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2275  IF( tsterr )
2276  $ CALL zerrst( 'ZHB', nout )
2277  CALL zchkhb( nn, nval, nk, kval, maxtyp, dotype, iseed, thresh,
2278  $ nout, a( 1, 1 ), nmax, dr( 1, 1 ), dr( 1, 2 ),
2279  $ a( 1, 2 ), nmax, work, lwork, rwork, result,
2280  $ info )
2281  IF( info.NE.0 )
2282  $ WRITE( nout, fmt = 9980 )'ZCHKHB', info
2283 *
2284  ELSE IF( lsamen( 3, c3, 'ZBB' ) ) THEN
2285 *
2286 * ------------------------------
2287 * ZBB: General Band Reduction
2288 * ------------------------------
2289 *
2290  maxtyp = 15
2291  ntypes = min( maxtyp, ntypes )
2292  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2293  DO 370 i = 1, nparms
2294  nrhs = nsval( i )
2295 *
2296  IF( newsd.EQ.0 ) THEN
2297  DO 360 k = 1, 4
2298  iseed( k ) = ioldsd( k )
2299  360 CONTINUE
2300  END IF
2301  WRITE( nout, fmt = 9966 )c3, nrhs
2302  CALL zchkbb( nn, mval, nval, nk, kval, maxtyp, dotype, nrhs,
2303  $ iseed, thresh, nout, a( 1, 1 ), nmax,
2304  $ a( 1, 2 ), 2*nmax, dr( 1, 1 ), dr( 1, 2 ),
2305  $ a( 1, 4 ), nmax, a( 1, 5 ), nmax, a( 1, 6 ),
2306  $ nmax, a( 1, 7 ), work, lwork, rwork, result,
2307  $ info )
2308  IF( info.NE.0 )
2309  $ WRITE( nout, fmt = 9980 )'ZCHKBB', info
2310  370 CONTINUE
2311 *
2312  ELSE IF( lsamen( 3, c3, 'GLM' ) ) THEN
2313 *
2314 * -----------------------------------------
2315 * GLM: Generalized Linear Regression Model
2316 * -----------------------------------------
2317 *
2318  CALL xlaenv( 1, 1 )
2319  IF( tsterr )
2320  $ CALL zerrgg( 'GLM', nout )
2321  CALL zckglm( nn, nval, mval, pval, ntypes, iseed, thresh, nmax,
2322  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2323  $ work, dr( 1, 1 ), nin, nout, info )
2324  IF( info.NE.0 )
2325  $ WRITE( nout, fmt = 9980 )'ZCKGLM', info
2326 *
2327  ELSE IF( lsamen( 3, c3, 'GQR' ) ) THEN
2328 *
2329 * ------------------------------------------
2330 * GQR: Generalized QR and RQ factorizations
2331 * ------------------------------------------
2332 *
2333  CALL xlaenv( 1, 1 )
2334  IF( tsterr )
2335  $ CALL zerrgg( 'GQR', nout )
2336  CALL zckgqr( nn, mval, nn, pval, nn, nval, ntypes, iseed,
2337  $ thresh, nmax, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
2338  $ a( 1, 4 ), taua, b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
2339  $ b( 1, 4 ), b( 1, 5 ), taub, work, dr( 1, 1 ), nin,
2340  $ nout, info )
2341  IF( info.NE.0 )
2342  $ WRITE( nout, fmt = 9980 )'ZCKGQR', info
2343 *
2344  ELSE IF( lsamen( 3, c3, 'GSV' ) ) THEN
2345 *
2346 * ----------------------------------------------
2347 * GSV: Generalized Singular Value Decomposition
2348 * ----------------------------------------------
2349 *
2350  IF( tsterr )
2351  $ CALL zerrgg( 'GSV', nout )
2352  CALL zckgsv( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2353  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
2354  $ a( 1, 3 ), b( 1, 3 ), a( 1, 4 ), alpha, beta,
2355  $ b( 1, 4 ), iwork, work, dr( 1, 1 ), nin, nout,
2356  $ info )
2357  IF( info.NE.0 )
2358  $ WRITE( nout, fmt = 9980 )'ZCKGSV', info
2359 *
2360  ELSE IF( lsamen( 3, c3, 'CSD' ) ) THEN
2361 *
2362 * ----------------------------------------------
2363 * CSD: CS Decomposition
2364 * ----------------------------------------------
2365 *
2366  CALL xlaenv(1,1)
2367  IF( tsterr )
2368  $ CALL zerrgg( 'CSD', nout )
2369  CALL zckcsd( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2370  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), a( 1, 4 ),
2371  $ a( 1, 5 ), a( 1, 6 ), rwork, iwork, work,
2372  $ dr( 1, 1 ), nin, nout, info )
2373  IF( info.NE.0 )
2374  $ WRITE( nout, fmt = 9980 )'ZCKCSD', info
2375 *
2376  ELSE IF( lsamen( 3, c3, 'LSE' ) ) THEN
2377 *
2378 * --------------------------------------
2379 * LSE: Constrained Linear Least Squares
2380 * --------------------------------------
2381 *
2382  CALL xlaenv( 1, 1 )
2383  IF( tsterr )
2384  $ CALL zerrgg( 'LSE', nout )
2385  CALL zcklse( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2386  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2387  $ work, dr( 1, 1 ), nin, nout, info )
2388  IF( info.NE.0 )
2389  $ WRITE( nout, fmt = 9980 )'ZCKLSE', info
2390  ELSE
2391  WRITE( nout, fmt = * )
2392  WRITE( nout, fmt = * )
2393  WRITE( nout, fmt = 9992 )c3
2394  END IF
2395  IF( .NOT.( zgx .OR. zxv ) )
2396  $ GO TO 190
2397  380 CONTINUE
2398  WRITE( nout, fmt = 9994 )
2399  s2 = dsecnd( )
2400  WRITE( nout, fmt = 9993 )s2 - s1
2401 *
2402  9999 FORMAT( / ' Execution not attempted due to input errors' )
2403  9997 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4 )
2404  9996 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NS =', i4,
2405  $ ', MAXB =', i4, ', IACC22 =', i4, ', NBCOL =', i4 )
2406  9995 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2407  $ ', NRHS =', i4 )
2408  9994 FORMAT( / / ' End of tests' )
2409  9993 FORMAT( ' Total time used = ', f12.2, ' seconds', / )
2410  9992 FORMAT( 1x, a3, ': Unrecognized path name' )
2411  9991 FORMAT( / / ' *** Invalid integer value in column ', i2,
2412  $ ' of input', ' line:', / a79 )
2413  9990 FORMAT( / / 1x, a3, ' routines were not tested' )
2414  9989 FORMAT( ' Invalid input value: ', a, '=', i6, '; must be >=',
2415  $ i6 )
2416  9988 FORMAT( ' Invalid input value: ', a, '=', i6, '; must be <=',
2417  $ i6 )
2418  9987 FORMAT( ' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2419  9986 FORMAT( ' Tests of the Hermitian Eigenvalue Problem routines' )
2420  9985 FORMAT( ' Tests of the Singular Value Decomposition routines' )
2421  9984 FORMAT( / ' The following parameter values will be used:' )
2422  9983 FORMAT( 4x, a, 10i6, / 10x, 10i6 )
2423  9982 FORMAT( / ' Routines pass computational tests if test ratio is ',
2424  $ 'less than', f8.2, / )
2425  9981 FORMAT( ' Relative machine ', a, ' is taken to be', d16.6 )
2426  9980 FORMAT( ' *** Error code from ', a, ' = ', i4 )
2427  9979 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2428  $ / ' ZGEEV (eigenvalues and eigevectors)' )
2429  9978 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2430  $ / ' ZGEES (Schur form)' )
2431  9977 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2432  $ ' Driver', / ' ZGEEVX (eigenvalues, eigenvectors and',
2433  $ ' condition numbers)' )
2434  9976 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2435  $ ' Driver', / ' ZGEESX (Schur form and condition',
2436  $ ' numbers)' )
2437  9975 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2438  $ 'Problem routines' )
2439  9974 FORMAT( ' Tests of ZHBTRD', / ' (reduction of a Hermitian band ',
2440  $ 'matrix to real tridiagonal form)' )
2441  9973 FORMAT( / 1x, 71( '-' ) )
2442  9972 FORMAT( / ' LAPACK VERSION ', i1, '.', i1, '.', i1 )
2443  9971 FORMAT( / ' Tests of the Generalized Linear Regression Model ',
2444  $ 'routines' )
2445  9970 FORMAT( / ' Tests of the Generalized QR and RQ routines' )
2446  9969 FORMAT( / ' Tests of the Generalized Singular Value',
2447  $ ' Decomposition routines' )
2448  9968 FORMAT( / ' Tests of the Linear Least Squares routines' )
2449  9967 FORMAT( ' Tests of ZGBBRD', / ' (reduction of a general band ',
2450  $ 'matrix to real bidiagonal form)' )
2451  9966 FORMAT( / / 1x, a3, ': NRHS =', i4 )
2452  9965 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2453  $ 'Problem Expert Driver ZGGESX' )
2454  9964 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2455  $ 'Problem Driver ZGGES' )
2456  9963 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2457  $ 'Problem Driver ZGGEV' )
2458  9962 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2459  $ 'Problem Expert Driver ZGGEVX' )
2460  9961 FORMAT( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2461  $ ', INMIN=', i4,
2462  $ ', INWIN =', i4, ', INIBL =', i4, ', ISHFTS =', i4,
2463  $ ', IACC22 =', i4)
2464  9960 FORMAT( / ' Tests of the CS Decomposition routines' )
2465 *
2466 * End of ZCHKEE
2467 *
2468  END
subroutine zckcsd(NM, MVAL, PVAL, QVAL, NMATS, ISEED, THRESH, MMAX, X, XF, U1, U2, V1T, V2T, THETA, IWORK, WORK, RWORK, NIN, NOUT, INFO)
ZCKCSD
Definition: zckcsd.f:186
subroutine zckgsv(NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, U, V, Q, ALPHA, BETA, R, IWORK, WORK, RWORK, NIN, NOUT, INFO)
ZCKGSV
Definition: zckgsv.f:200
subroutine zchkgg(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)
ZCHKGG
Definition: zchkgg.f:505
subroutine zchkbl(NIN, NOUT)
ZCHKBL
Definition: zchkbl.f:56
subroutine zchkbk(NIN, NOUT)
ZCHKBK
Definition: zchkbk.f:57
subroutine zdrvsg(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)
ZDRVSG
Definition: zdrvsg.f:372
subroutine zchkec(THRESH, TSTERR, NIN, NOUT)
ZCHKEC
Definition: zchkec.f:77
subroutine zdrges3(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHA, BETA, WORK, LWORK, RWORK, RESULT, BWORK, INFO)
ZDRGES3
Definition: zdrges3.f:384
subroutine zerrgg(PATH, NUNIT)
ZERRGG
Definition: zerrgg.f:59
subroutine zdrvbd(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)
ZDRVBD
Definition: zdrvbd.f:391
subroutine zdrvsx(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NIUNIT, NOUNIT, A, LDA, H, HT, W, WT, WTMP, VS, LDVS, VS1, RESULT, WORK, LWORK, RWORK, BWORK, INFO)
ZDRVSX
Definition: zdrvsx.f:437
subroutine zdrges(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHA, BETA, WORK, LWORK, RWORK, RESULT, BWORK, INFO)
ZDRGES
Definition: zdrges.f:383
subroutine zchkhb(NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, SD, SE, U, LDU, WORK, LWORK, RWORK, RESULT, INFO)
ZCHKHB
Definition: zchkhb.f:300
subroutine zchkhs(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)
ZCHKHS
Definition: zchkhs.f:414
subroutine zchkst(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)
ZCHKST
Definition: zchkst.f:606
subroutine zerrst(PATH, NUNIT)
ZERRST
Definition: zerrst.f:59
logical function lse(RI, RJ, LR)
Definition: sblat2.f:2945
subroutine zdrgvx(NSIZE, THRESH, NIN, NOUT, A, LDA, B, AI, BI, ALPHA, BETA, VL, VR, ILO, IHI, LSCALE, RSCALE, S, DTRU, DIF, DIFTRU, WORK, LWORK, RWORK, IWORK, LIWORK, RESULT, BWORK, INFO)
ZDRGVX
Definition: zdrgvx.f:299
subroutine zckglm(NN, NVAL, MVAL, PVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
ZCKGLM
Definition: zckglm.f:170
subroutine zckgqr(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)
ZCKGQR
Definition: zckgqr.f:213
subroutine zcklse(NN, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
ZCKLSE
Definition: zcklse.f:170
subroutine zerrhs(PATH, NUNIT)
ZERRHS
Definition: zerrhs.f:57
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:92
subroutine zdrvev(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, W, W1, VL, LDVL, VR, LDVR, LRE, LDLRE, RESULT, WORK, NWORK, RWORK, IWORK, INFO)
ZDRVEV
Definition: zdrvev.f:393
subroutine zdrgev(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)
ZDRGEV
Definition: zdrgev.f:401
subroutine zerred(PATH, NUNIT)
ZERRED
Definition: zerred.f:70
subroutine zdrvst(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)
ZDRVST
Definition: zdrvst.f:340
subroutine zchkgl(NIN, NOUT)
ZCHKGL
Definition: zchkgl.f:55
subroutine zerrbd(PATH, NUNIT)
ZERRBD
Definition: zerrbd.f:56
subroutine zdrvvx(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)
ZDRVVX
Definition: zdrvvx.f:498
program zchkee
ZCHKEE
Definition: zchkee.f:1035
subroutine zdrgev3(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)
ZDRGEV3
Definition: zdrgev3.f:401
subroutine zchkbd(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)
ZCHKBD
Definition: zchkbd.f:417
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
Definition: xlaenv.f:83
subroutine zchkgk(NIN, NOUT)
ZCHKGK
Definition: zchkgk.f:56
subroutine zdrgsx(NSIZE, NCMAX, THRESH, NIN, NOUT, A, LDA, B, AI, BI, Z, Q, ALPHA, BETA, C, LDC, S, WORK, LWORK, RWORK, IWORK, LIWORK, BWORK, INFO)
ZDRGSX
Definition: zdrgsx.f:351
subroutine zchkbb(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)
ZCHKBB
Definition: zchkbb.f:363
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:50
subroutine zdrves(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, HT, W, WT, VS, LDVS, RESULT, WORK, NWORK, RWORK, IWORK, BWORK, INFO)
ZDRVES
Definition: zdrves.f:380