LAPACK  3.5.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 ZGGHRD, ZGGBAL, ZGGBAK, ZHGEQZ, and ZTGEVC
48 *> and the driver routines ZGEGS and ZGEGV
49 *>
50 *> ZGS (Generalized Nonsymmetric Schur form Driver):
51 *> Test ZGGES
52 *>
53 *> ZGV (Generalized Nonsymmetric Eigenvalue/eigenvector Driver):
54 *> Test ZGGEV
55 *>
56 *> ZGX (Generalized Nonsymmetric Schur form Expert Driver):
57 *> Test ZGGESX
58 *>
59 *> ZXV (Generalized Nonsymmetric Eigenvalue/eigenvector Expert Driver):
60 *> Test ZGGEVX
61 *>
62 *> ZSG (Hermitian Generalized Eigenvalue Problem):
63 *> Test ZHEGST, ZHEGV, ZHEGVD, ZHEGVX, ZHPGST, ZHPGV, ZHPGVD,
64 *> ZHPGVX, ZHBGST, ZHBGV, ZHBGVD, and ZHBGVX
65 *>
66 *> ZHB (Hermitian Band Eigenvalue Problem):
67 *> Test ZHBTRD
68 *>
69 *> ZBB (Band Singular Value Decomposition):
70 *> Test ZGBBRD
71 *>
72 *> ZEC (Eigencondition estimation):
73 *> Test ZTRSYL, ZTREXC, ZTRSNA, and ZTRSEN
74 *>
75 *> ZBL (Balancing a general matrix)
76 *> Test ZGEBAL
77 *>
78 *> ZBK (Back transformation on a balanced matrix)
79 *> Test ZGEBAK
80 *>
81 *> ZGL (Balancing a matrix pair)
82 *> Test ZGGBAL
83 *>
84 *> ZGK (Back transformation on a matrix pair)
85 *> Test ZGGBAK
86 *>
87 *> GLM (Generalized Linear Regression Model):
88 *> Tests ZGGGLM
89 *>
90 *> GQR (Generalized QR and RQ factorizations):
91 *> Tests ZGGQRF and ZGGRQF
92 *>
93 *> GSV (Generalized Singular Value Decomposition):
94 *> Tests ZGGSVD, ZGGSVP, ZTGSJA, ZLAGS2, ZLAPLL, and ZLAPMT
95 *>
96 *> CSD (CS decomposition):
97 *> Tests ZUNCSD
98 *>
99 *> LSE (Constrained Linear Least Squares):
100 *> Tests ZGGLSE
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 *> ZHS or NEP 21 ZCHKHS
115 *> ZST or SEP 21 ZCHKST (routines)
116 *> 18 ZDRVST (drivers)
117 *> ZBD or SVD 16 ZCHKBD (routines)
118 *> 5 ZDRVBD (drivers)
119 *> ZEV 21 ZDRVEV
120 *> ZES 21 ZDRVES
121 *> ZVX 21 ZDRVVX
122 *> ZSX 21 ZDRVSX
123 *> ZGG 26 ZCHKGG (routines)
124 *> 26 ZDRVGG (drivers)
125 *> ZGS 26 ZDRGES
126 *> ZGX 5 ZDRGSX
127 *> ZGV 26 ZDRGEV
128 *> ZXV 2 ZDRGVX
129 *> ZSG 21 ZDRVSG
130 *> ZHB 15 ZCHKHB
131 *> ZBB 15 ZCHKBB
132 *> ZEC - ZCHKEC
133 *> ZBL - ZCHKBL
134 *> ZBK - ZCHKBK
135 *> ZGL - ZCHKGL
136 *> ZGK - ZCHKGK
137 *> GLM 8 ZCKGLM
138 *> GQR 8 ZCKGQR
139 *> GSV 8 ZCKGSV
140 *> CSD 3 ZCKCSD
141 *> LSE 8 ZCKLSE
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 'ZHS' for the
215 *> nonsymmetric eigenvalue routines.
216 *>
217 *>-----------------------------------------------------------------------
218 *>
219 *> SEP or ZSG 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 'ZST' for the
268 *> Hermitian eigenvalue routines and driver routines, and
269 *> 'ZSG' 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 'ZBD' for both the
329 *> SVD routines and the SVD driver routines.
330 *>
331 *>-----------------------------------------------------------------------
332 *>
333 *> ZEV and ZES data files:
334 *>
335 *> line 1: 'ZEV' or 'ZES' 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 'ZEV' to test CGEEV, or
373 *> 'ZES' to test CGEES.
374 *>
375 *>-----------------------------------------------------------------------
376 *>
377 *> The ZVX data has two parts. The first part is identical to ZEV,
378 *> and the second part consists of test matrices with precomputed
379 *> solutions.
380 *>
381 *> line 1: 'ZVX' 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 'ZVX' 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 ZSX data is like ZVX. The first part is identical to ZEV, and the
424 *> second part consists of test matrices with precomputed solutions.
425 *>
426 *> line 1: 'ZSX' 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 'ZSX' 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 *> ZGG 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 'ZGG' for the generalized
525 *> eigenvalue problem routines and driver routines.
526 *>
527 *>-----------------------------------------------------------------------
528 *>
529 *> ZGS and ZGV input files:
530 *>
531 *> line 1: 'ZGS' or 'ZGV' 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 'ZGS' for the generalized
570 *> eigenvalue problem routines and driver routines.
571 *>
572 *>-----------------------------------------------------------------------
573 *>
574 *> ZGX input file:
575 *> line 1: 'ZGX' 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 *> ZXV input files:
631 *> line 1: 'ZXV' 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 *> ZHB 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 'ZHB'.
716 *>
717 *>-----------------------------------------------------------------------
718 *>
719 *> ZBB 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 'ZBB'.
761 *>
762 *>-----------------------------------------------------------------------
763 *>
764 *> ZEC 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 *> ZBL and ZBK input files:
780 *>
781 *> line 1: 'ZBL' in columns 1-3 to test CGEBAL, or 'ZBK' in
782 *> columns 1-3 to test CGEBAK.
783 *>
784 *> The remaining lines consist of specially constructed test cases.
785 *>
786 *>-----------------------------------------------------------------------
787 *>
788 *> ZGL and ZGK input files:
789 *>
790 *> line 1: 'ZGL' in columns 1-3 to test ZGGBAL, or 'ZGK' in
791 *> columns 1-3 to test ZGGBAK.
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 ZGG.
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 complex16_eig
1032 *
1033 * =====================================================================
1034  PROGRAM zchkee
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 ZBK, ZBL, ZES, ZEV, ZGK, ZGL, ZGS, ZGV, ZGX,
1063  $ zsx, zvx, zxv, csd, fatal, glm, gqr, gsv, lse,
1064  $ nep, sep, svd, tstchk, tstdif, tstdrv, tsterr,
1065  $ zbb, zgg, zhb
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  DOUBLE PRECISION 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  DOUBLE PRECISION ALPHA( nmax ), BETA( nmax ), DR( nmax, 12 ),
1086  $ result( 500 ), rwork( lwork ), s( nmax*nmax )
1087  COMPLEX*16 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  DOUBLE PRECISION DLAMCH, DSECND
1095  EXTERNAL lsamen, dlamch, dsecnd
1096 * ..
1097 * .. External Subroutines ..
1098  EXTERNAL alareq, xlaenv, zchkbb, zchkbd, zchkbk, zchkbl,
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  DOUBLE PRECISION SELWI( 20 ), SELWR( 20 )
1118 * ..
1119 * .. Common blocks ..
1120  COMMON / cenvir / nproc, nshift, maxb
1121  COMMON / infoc / infot, nunit, ok, lerr
1122  COMMON / srnamc / srnamt
1123  COMMON / sslct / selopt, seldim, selval, selwr, selwi
1124  COMMON / claenv / iparms
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 = dsecnd( )
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, 'ZHS' )
1149  sep = lsamen( 3, path, 'SEP' ) .OR. lsamen( 3, path, 'ZST' ) .OR.
1150  $ lsamen( 3, path, 'ZSG' )
1151  svd = lsamen( 3, path, 'SVD' ) .OR. lsamen( 3, path, 'ZBD' )
1152  zev = lsamen( 3, path, 'ZEV' )
1153  zes = lsamen( 3, path, 'ZES' )
1154  zvx = lsamen( 3, path, 'ZVX' )
1155  zsx = lsamen( 3, path, 'ZSX' )
1156  zgg = lsamen( 3, path, 'ZGG' )
1157  zgs = lsamen( 3, path, 'ZGS' )
1158  zgx = lsamen( 3, path, 'ZGX' )
1159  zgv = lsamen( 3, path, 'ZGV' )
1160  zxv = lsamen( 3, path, 'ZXV' )
1161  zhb = lsamen( 3, path, 'ZHB' )
1162  zbb = lsamen( 3, path, 'ZBB' )
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  zbl = lsamen( 3, path, 'ZBL' )
1169  zbk = lsamen( 3, path, 'ZBK' )
1170  zgl = lsamen( 3, path, 'ZGL' )
1171  zgk = lsamen( 3, path, 'ZGK' )
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( zev ) THEN
1184  WRITE( nout, fmt = 9979 )
1185  ELSE IF( zes ) THEN
1186  WRITE( nout, fmt = 9978 )
1187  ELSE IF( zvx ) THEN
1188  WRITE( nout, fmt = 9977 )
1189  ELSE IF( zsx ) THEN
1190  WRITE( nout, fmt = 9976 )
1191  ELSE IF( zgg ) THEN
1192  WRITE( nout, fmt = 9975 )
1193  ELSE IF( zgs ) THEN
1194  WRITE( nout, fmt = 9964 )
1195  ELSE IF( zgx ) THEN
1196  WRITE( nout, fmt = 9965 )
1197  ELSE IF( zgv ) THEN
1198  WRITE( nout, fmt = 9963 )
1199  ELSE IF( zxv ) THEN
1200  WRITE( nout, fmt = 9962 )
1201  ELSE IF( zhb ) THEN
1202  WRITE( nout, fmt = 9974 )
1203  ELSE IF( zbb ) 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( zbl ) THEN
1216 *
1217 * ZGEBAL: Balancing
1218 *
1219  CALL zchkbl( nin, nout )
1220  GO TO 380
1221  ELSE IF( zbk ) THEN
1222 *
1223 * ZGEBAK: Back transformation
1224 *
1225  CALL zchkbk( nin, nout )
1226  GO TO 380
1227  ELSE IF( zgl ) THEN
1228 *
1229 * ZGGBAL: Balancing
1230 *
1231  CALL zchkgl( nin, nout )
1232  GO TO 380
1233  ELSE IF( zgk ) THEN
1234 *
1235 * ZGGBAK: Back transformation
1236 *
1237  CALL zchkgk( nin, nout )
1238  GO TO 380
1239  ELSE IF( lsamen( 3, path, 'ZEC' ) ) THEN
1240 *
1241 * ZEC: Eigencondition estimation
1242 *
1243  READ( nin, fmt = * )thresh
1244  CALL xlaenv( 1, 1 )
1245  CALL xlaenv( 12, 1 )
1246  tsterr = .true.
1247  CALL zchkec( 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.( zgx .OR. zxv ) ) 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. zbb .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.( zgx .OR. zxv ) ) 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( zhb .OR. zbb ) 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( zev .OR. zes .OR. zvx .OR. zsx ) 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( zgs .OR. zgx .OR. zgv .OR. zxv ) 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.zhb .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.zbb ) 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. zgg ) 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 ZGG) or NRHS (if SVD
1508 * or ZBB).
1509 *
1510  IF( svd .OR. zbb .OR. zgg ) 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( zgg ) 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( zgg ) 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 = dlamch( 'Underflow threshold' )
1666  WRITE( nout, fmt = 9981 )'underflow', eps
1667  eps = dlamch( 'Overflow threshold' )
1668  WRITE( nout, fmt = 9981 )'overflow ', eps
1669  eps = dlamch( '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. zgg ) 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.( zgx .OR. zxv ) ) 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.( zev .OR. zes .OR. zvx .OR. zsx .OR. zgv .OR.
1763  $ zgs ) .AND. ntypes.LE.0 ) THEN
1764  WRITE( nout, fmt = 9990 )c3
1765  GO TO 200
1766  END IF
1767 *
1768  ELSE
1769  IF( zgx )
1770  $ c3 = 'ZGX'
1771  IF( zxv )
1772  $ c3 = 'ZXV'
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, 'ZHS' ) .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 zerrhs( 'ZHSEQR', 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 zchkhs( 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 )'ZCHKHS', info
1828  270 CONTINUE
1829 *
1830  ELSE IF( lsamen( 3, c3, 'ZST' ) .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 zerrst( 'ZST', 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 zchkst( 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 )'ZCHKST', info
1871  END IF
1872  IF( tstdrv ) THEN
1873  CALL zdrvst( 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 )'ZDRVST', info
1881  END IF
1882  290 CONTINUE
1883 *
1884  ELSE IF( lsamen( 3, c3, 'ZSG' ) ) THEN
1885 *
1886 * ----------------------------------------------
1887 * ZSG: 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 zdrvsg( 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 )'ZDRVSG', info
1919  END IF
1920  310 CONTINUE
1921 *
1922  ELSE IF( lsamen( 3, c3, 'ZBD' ) .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 zerrbd( 'ZBD', nout )
1943  IF( tsterr .AND. tstdrv )
1944  $ CALL zerred( 'ZBD', 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 zchkbd( 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 )'ZCHKBD', info
1967  END IF
1968  IF( tstdrv )
1969  $ CALL zdrvbd( 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, 'ZEV' ) ) THEN
1978 *
1979 * --------------------------------------------
1980 * ZEV: Nonsymmetric Eigenvalue Problem Driver
1981 * ZGEEV (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 zerred( c3, nout )
1991  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1992  CALL zdrvev( 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 )'ZGEEV', info
1999  END IF
2000  WRITE( nout, fmt = 9973 )
2001  GO TO 10
2002 *
2003  ELSE IF( lsamen( 3, c3, 'ZES' ) ) THEN
2004 *
2005 * --------------------------------------------
2006 * ZES: Nonsymmetric Eigenvalue Problem Driver
2007 * ZGEES (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 zerred( c3, nout )
2017  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2018  CALL zdrves( 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 )'ZGEES', info
2025  END IF
2026  WRITE( nout, fmt = 9973 )
2027  GO TO 10
2028 *
2029  ELSE IF( lsamen( 3, c3, 'ZVX' ) ) THEN
2030 *
2031 * --------------------------------------------------------------
2032 * ZVX: Nonsymmetric Eigenvalue Problem Expert Driver
2033 * ZGEEVX (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 zerred( c3, nout )
2043  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2044  CALL zdrvvx( 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 )'ZGEEVX', info
2053  END IF
2054  WRITE( nout, fmt = 9973 )
2055  GO TO 10
2056 *
2057  ELSE IF( lsamen( 3, c3, 'ZSX' ) ) THEN
2058 *
2059 * ---------------------------------------------------
2060 * ZSX: Nonsymmetric Eigenvalue Problem Expert Driver
2061 * ZGEESX (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 zerred( c3, nout )
2071  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2072  CALL zdrvsx( 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 )'ZGEESX', info
2079  END IF
2080  WRITE( nout, fmt = 9973 )
2081  GO TO 10
2082 *
2083  ELSE IF( lsamen( 3, c3, 'ZGG' ) ) THEN
2084 *
2085 * -------------------------------------------------
2086 * ZGG: 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 zerrgg( 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.d0
2116  IF( tstchk ) THEN
2117  CALL zchkgg( 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 )'ZCHKGG', info
2127  END IF
2128  CALL xlaenv( 1, 1 )
2129  IF( tstdrv ) THEN
2130  CALL zdrvgg( 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 )'ZDRVGG', info
2139  END IF
2140  350 CONTINUE
2141 *
2142  ELSE IF( lsamen( 3, c3, 'ZGS' ) ) THEN
2143 *
2144 * -------------------------------------------------
2145 * ZGS: Generalized Nonsymmetric Eigenvalue Problem
2146 * ZGGES (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 zerrgg( c3, nout )
2156  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2157  CALL zdrges( 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 )'ZDRGES', info
2165  END IF
2166  WRITE( nout, fmt = 9973 )
2167  GO TO 10
2168 *
2169  ELSE IF( zgx ) THEN
2170 *
2171 * -------------------------------------------------
2172 * ZGX Generalized Nonsymmetric Eigenvalue Problem
2173 * ZGGESX (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 zerrgg( c3, nout )
2183  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2184  CALL xlaenv( 5, 2 )
2185  CALL zdrgsx( 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 )'ZDRGSX', info
2192  END IF
2193  WRITE( nout, fmt = 9973 )
2194  GO TO 10
2195 *
2196  ELSE IF( lsamen( 3, c3, 'ZGV' ) ) THEN
2197 *
2198 * -------------------------------------------------
2199 * ZGV: Generalized Nonsymmetric Eigenvalue Problem
2200 * ZGGEV (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 zerrgg( c3, nout )
2210  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2211  CALL zdrgev( 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 )'ZDRGEV', info
2219  END IF
2220  WRITE( nout, fmt = 9973 )
2221  GO TO 10
2222 *
2223  ELSE IF( zxv ) THEN
2224 *
2225 * -------------------------------------------------
2226 * ZXV: Generalized Nonsymmetric Eigenvalue Problem
2227 * ZGGEVX (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 zerrgg( c3, nout )
2237  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2238  CALL zdrgvx( 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 )'ZDRGVX', info
2248  END IF
2249  WRITE( nout, fmt = 9973 )
2250  GO TO 10
2251 *
2252  ELSE IF( lsamen( 3, c3, 'ZHB' ) ) THEN
2253 *
2254 * ------------------------------
2255 * ZHB: 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 zerrst( 'ZHB', nout )
2263  CALL zchkhb( 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 )'ZCHKHB', info
2269 *
2270  ELSE IF( lsamen( 3, c3, 'ZBB' ) ) THEN
2271 *
2272 * ------------------------------
2273 * ZBB: 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 zchkbb( 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 )'ZCHKBB', 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 zerrgg( 'GLM', nout )
2307  CALL zckglm( 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 )'ZCKGLM', 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 zerrgg( 'GQR', nout )
2322  CALL zckgqr( 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 )'ZCKGQR', 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 zerrgg( 'GSV', nout )
2338  CALL zckgsv( 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 )'ZCKGSV', 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 zerrgg( 'CSD', nout )
2355  CALL zckcsd( 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 )'ZCKCSD', 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 zerrgg( 'LSE', nout )
2371  CALL zcklse( 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 )'ZCKLSE', info
2376  ELSE
2377  WRITE( nout, fmt = * )
2378  WRITE( nout, fmt = * )
2379  WRITE( nout, fmt = 9992 )c3
2380  END IF
2381  IF( .NOT.( zgx .OR. zxv ) )
2382  $ GO TO 190
2383  380 CONTINUE
2384  WRITE( nout, fmt = 9994 )
2385  s2 = dsecnd( )
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', d16.6 )
2412  9980 FORMAT( ' *** Error code from ', a, ' = ', i4 )
2413  9979 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2414  $ / ' ZGEEV (eigenvalues and eigevectors)' )
2415  9978 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2416  $ / ' ZGEES (Schur form)' )
2417  9977 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2418  $ ' Driver', / ' ZGEEVX (eigenvalues, eigenvectors and',
2419  $ ' condition numbers)' )
2420  9976 FORMAT( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2421  $ ' Driver', / ' ZGEESX (Schur form and condition',
2422  $ ' numbers)' )
2423  9975 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2424  $ 'Problem routines' )
2425  9974 FORMAT( ' Tests of ZHBTRD', / ' (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 ZGBBRD', / ' (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 ZGGESX' )
2440  9964 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2441  $ 'Problem Driver ZGGES' )
2442  9963 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2443  $ 'Problem Driver ZGGEV' )
2444  9962 FORMAT( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2445  $ 'Problem Expert Driver ZGGEVX' )
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 ZCHKEE
2453 *
2454  END
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 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 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
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 ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:50
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:333
subroutine zchkec(THRESH, TSTERR, NIN, NOUT)
ZCHKEC
Definition: zchkec.f:77
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 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 zchkgk(NIN, NOUT)
ZCHKGK
Definition: zchkgk.f:56
program zchkee
ZCHKEE
Definition: zchkee.f:1034
subroutine zerrst(PATH, NUNIT)
ZERRST
Definition: zerrst.f:59
subroutine zchkbl(NIN, NOUT)
ZCHKBL
Definition: zchkbl.f:56
subroutine zdrvgg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, THRSHN, NOUNIT, A, LDA, B, S, T, S2, T2, Q, LDQ, Z, ALPHA1, BETA1, ALPHA2, BETA2, VL, VR, WORK, LWORK, RWORK, RESULT, INFO)
ZDRVGG
Definition: zdrvgg.f:424
subroutine zerrgg(PATH, NUNIT)
ZERRGG
Definition: zerrgg.f:58
logical function lse(RI, RJ, LR)
Definition: sblat2.f:2945
subroutine zerrhs(PATH, NUNIT)
ZERRHS
Definition: zerrhs.f:57
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 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 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 zerrbd(PATH, NUNIT)
ZERRBD
Definition: zerrbd.f:56
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
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 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 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 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 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 alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:92
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
Definition: xlaenv.f:83
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 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 zchkgl(NIN, NOUT)
ZCHKGL
Definition: zchkgl.f:55
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 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 zerred(PATH, NUNIT)
ZERRED
Definition: zerred.f:67
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 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 zchkbk(NIN, NOUT)
ZCHKBK
Definition: zchkbk.f:57