LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
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 April 2012
1030 *
1031 *> \ingroup complex16_eig
1032 *
1033 * =====================================================================
1034  PROGRAM zchkee
1035 *
1036 * -- LAPACK test routine (version 3.4.1) --
1037 * -- LAPACK is a software package provided by Univ. of Tennessee, --
1038 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1039 * April 2012
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  s1 = dsecnd( )
1133  fatal = .false.
1134  nunit = nout
1135 *
1136 * Return to here to read multiple sets of data
1137 *
1138  10 continue
1139 *
1140 * Read the first line and set the 3-character test path
1141 *
1142  READ( nin, fmt = '(A80)', END = 380 )line
1143  path = line( 1: 3 )
1144  nep = lsamen( 3, path, 'NEP' ) .OR. lsamen( 3, path, 'ZHS' )
1145  sep = lsamen( 3, path, 'SEP' ) .OR. lsamen( 3, path, 'ZST' ) .OR.
1146  $ lsamen( 3, path, 'ZSG' )
1147  svd = lsamen( 3, path, 'SVD' ) .OR. lsamen( 3, path, 'ZBD' )
1148  zev = lsamen( 3, path, 'ZEV' )
1149  zes = lsamen( 3, path, 'ZES' )
1150  zvx = lsamen( 3, path, 'ZVX' )
1151  zsx = lsamen( 3, path, 'ZSX' )
1152  zgg = lsamen( 3, path, 'ZGG' )
1153  zgs = lsamen( 3, path, 'ZGS' )
1154  zgx = lsamen( 3, path, 'ZGX' )
1155  zgv = lsamen( 3, path, 'ZGV' )
1156  zxv = lsamen( 3, path, 'ZXV' )
1157  zhb = lsamen( 3, path, 'ZHB' )
1158  zbb = lsamen( 3, path, 'ZBB' )
1159  glm = lsamen( 3, path, 'GLM' )
1160  gqr = lsamen( 3, path, 'GQR' ) .OR. lsamen( 3, path, 'GRQ' )
1161  gsv = lsamen( 3, path, 'GSV' )
1162  csd = lsamen( 3, path, 'CSD' )
1163  lse = lsamen( 3, path, 'LSE' )
1164  zbl = lsamen( 3, path, 'ZBL' )
1165  zbk = lsamen( 3, path, 'ZBK' )
1166  zgl = lsamen( 3, path, 'ZGL' )
1167  zgk = lsamen( 3, path, 'ZGK' )
1168 *
1169 * Report values of parameters.
1170 *
1171  IF( path.EQ.' ' ) THEN
1172  go to 10
1173  ELSE IF( nep ) THEN
1174  WRITE( nout, fmt = 9987 )
1175  ELSE IF( sep ) THEN
1176  WRITE( nout, fmt = 9986 )
1177  ELSE IF( svd ) THEN
1178  WRITE( nout, fmt = 9985 )
1179  ELSE IF( zev ) THEN
1180  WRITE( nout, fmt = 9979 )
1181  ELSE IF( zes ) THEN
1182  WRITE( nout, fmt = 9978 )
1183  ELSE IF( zvx ) THEN
1184  WRITE( nout, fmt = 9977 )
1185  ELSE IF( zsx ) THEN
1186  WRITE( nout, fmt = 9976 )
1187  ELSE IF( zgg ) THEN
1188  WRITE( nout, fmt = 9975 )
1189  ELSE IF( zgs ) THEN
1190  WRITE( nout, fmt = 9964 )
1191  ELSE IF( zgx ) THEN
1192  WRITE( nout, fmt = 9965 )
1193  ELSE IF( zgv ) THEN
1194  WRITE( nout, fmt = 9963 )
1195  ELSE IF( zxv ) THEN
1196  WRITE( nout, fmt = 9962 )
1197  ELSE IF( zhb ) THEN
1198  WRITE( nout, fmt = 9974 )
1199  ELSE IF( zbb ) THEN
1200  WRITE( nout, fmt = 9967 )
1201  ELSE IF( glm ) THEN
1202  WRITE( nout, fmt = 9971 )
1203  ELSE IF( gqr ) THEN
1204  WRITE( nout, fmt = 9970 )
1205  ELSE IF( gsv ) THEN
1206  WRITE( nout, fmt = 9969 )
1207  ELSE IF( csd ) THEN
1208  WRITE( nout, fmt = 9960 )
1209  ELSE IF( lse ) THEN
1210  WRITE( nout, fmt = 9968 )
1211  ELSE IF( zbl ) THEN
1212 *
1213 * ZGEBAL: Balancing
1214 *
1215  CALL zchkbl( nin, nout )
1216  go to 380
1217  ELSE IF( zbk ) THEN
1218 *
1219 * ZGEBAK: Back transformation
1220 *
1221  CALL zchkbk( nin, nout )
1222  go to 380
1223  ELSE IF( zgl ) THEN
1224 *
1225 * ZGGBAL: Balancing
1226 *
1227  CALL zchkgl( nin, nout )
1228  go to 380
1229  ELSE IF( zgk ) THEN
1230 *
1231 * ZGGBAK: Back transformation
1232 *
1233  CALL zchkgk( nin, nout )
1234  go to 380
1235  ELSE IF( lsamen( 3, path, 'ZEC' ) ) THEN
1236 *
1237 * ZEC: Eigencondition estimation
1238 *
1239  READ( nin, fmt = * )thresh
1240  CALL xlaenv( 1, 1 )
1241  CALL xlaenv( 12, 1 )
1242  tsterr = .true.
1243  CALL zchkec( thresh, tsterr, nin, nout )
1244  go to 380
1245  ELSE
1246  WRITE( nout, fmt = 9992 )path
1247  go to 380
1248  END IF
1249  CALL ilaver( vers_major, vers_minor, vers_patch )
1250  WRITE( nout, fmt = 9972 ) vers_major, vers_minor, vers_patch
1251  WRITE( nout, fmt = 9984 )
1252 *
1253 * Read the number of values of M, P, and N.
1254 *
1255  READ( nin, fmt = * )nn
1256  IF( nn.LT.0 ) THEN
1257  WRITE( nout, fmt = 9989 )' NN ', nn, 1
1258  nn = 0
1259  fatal = .true.
1260  ELSE IF( nn.GT.maxin ) THEN
1261  WRITE( nout, fmt = 9988 )' NN ', nn, maxin
1262  nn = 0
1263  fatal = .true.
1264  END IF
1265 *
1266 * Read the values of M
1267 *
1268  IF( .NOT.( zgx .OR. zxv ) ) THEN
1269  READ( nin, fmt = * )( mval( i ), i = 1, nn )
1270  IF( svd ) THEN
1271  vname = ' M '
1272  ELSE
1273  vname = ' N '
1274  END IF
1275  DO 20 i = 1, nn
1276  IF( mval( i ).LT.0 ) THEN
1277  WRITE( nout, fmt = 9989 )vname, mval( i ), 0
1278  fatal = .true.
1279  ELSE IF( mval( i ).GT.nmax ) THEN
1280  WRITE( nout, fmt = 9988 )vname, mval( i ), nmax
1281  fatal = .true.
1282  END IF
1283  20 continue
1284  WRITE( nout, fmt = 9983 )'M: ', ( mval( i ), i = 1, nn )
1285  END IF
1286 *
1287 * Read the values of P
1288 *
1289  IF( glm .OR. gqr .OR. gsv .OR. csd .OR. lse ) THEN
1290  READ( nin, fmt = * )( pval( i ), i = 1, nn )
1291  DO 30 i = 1, nn
1292  IF( pval( i ).LT.0 ) THEN
1293  WRITE( nout, fmt = 9989 )' P ', pval( i ), 0
1294  fatal = .true.
1295  ELSE IF( pval( i ).GT.nmax ) THEN
1296  WRITE( nout, fmt = 9988 )' P ', pval( i ), nmax
1297  fatal = .true.
1298  END IF
1299  30 continue
1300  WRITE( nout, fmt = 9983 )'P: ', ( pval( i ), i = 1, nn )
1301  END IF
1302 *
1303 * Read the values of N
1304 *
1305  IF( svd .OR. zbb .OR. glm .OR. gqr .OR. gsv .OR. csd .OR.
1306  $ lse ) THEN
1307  READ( nin, fmt = * )( nval( i ), i = 1, nn )
1308  DO 40 i = 1, nn
1309  IF( nval( i ).LT.0 ) THEN
1310  WRITE( nout, fmt = 9989 )' N ', nval( i ), 0
1311  fatal = .true.
1312  ELSE IF( nval( i ).GT.nmax ) THEN
1313  WRITE( nout, fmt = 9988 )' N ', nval( i ), nmax
1314  fatal = .true.
1315  END IF
1316  40 continue
1317  ELSE
1318  DO 50 i = 1, nn
1319  nval( i ) = mval( i )
1320  50 continue
1321  END IF
1322  IF( .NOT.( zgx .OR. zxv ) ) THEN
1323  WRITE( nout, fmt = 9983 )'N: ', ( nval( i ), i = 1, nn )
1324  ELSE
1325  WRITE( nout, fmt = 9983 )'N: ', nn
1326  END IF
1327 *
1328 * Read the number of values of K, followed by the values of K
1329 *
1330  IF( zhb .OR. zbb ) THEN
1331  READ( nin, fmt = * )nk
1332  READ( nin, fmt = * )( kval( i ), i = 1, nk )
1333  DO 60 i = 1, nk
1334  IF( kval( i ).LT.0 ) THEN
1335  WRITE( nout, fmt = 9989 )' K ', kval( i ), 0
1336  fatal = .true.
1337  ELSE IF( kval( i ).GT.nmax ) THEN
1338  WRITE( nout, fmt = 9988 )' K ', kval( i ), nmax
1339  fatal = .true.
1340  END IF
1341  60 continue
1342  WRITE( nout, fmt = 9983 )'K: ', ( kval( i ), i = 1, nk )
1343  END IF
1344 *
1345  IF( zev .OR. zes .OR. zvx .OR. zsx ) THEN
1346 *
1347 * For the nonsymmetric QR driver routines, only one set of
1348 * parameters is allowed.
1349 *
1350  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1351  $ inmin( 1 ), inwin( 1 ), inibl(1), ishfts(1), iacc22(1)
1352  IF( nbval( 1 ).LT.1 ) THEN
1353  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1354  fatal = .true.
1355  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1356  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1357  fatal = .true.
1358  ELSE IF( nxval( 1 ).LT.1 ) THEN
1359  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1360  fatal = .true.
1361  ELSE IF( inmin( 1 ).LT.1 ) THEN
1362  WRITE( nout, fmt = 9989 )' INMIN ', inmin( 1 ), 1
1363  fatal = .true.
1364  ELSE IF( inwin( 1 ).LT.1 ) THEN
1365  WRITE( nout, fmt = 9989 )' INWIN ', inwin( 1 ), 1
1366  fatal = .true.
1367  ELSE IF( inibl( 1 ).LT.1 ) THEN
1368  WRITE( nout, fmt = 9989 )' INIBL ', inibl( 1 ), 1
1369  fatal = .true.
1370  ELSE IF( ishfts( 1 ).LT.1 ) THEN
1371  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( 1 ), 1
1372  fatal = .true.
1373  ELSE IF( iacc22( 1 ).LT.0 ) THEN
1374  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( 1 ), 0
1375  fatal = .true.
1376  END IF
1377  CALL xlaenv( 1, nbval( 1 ) )
1378  CALL xlaenv( 2, nbmin( 1 ) )
1379  CALL xlaenv( 3, nxval( 1 ) )
1380  CALL xlaenv(12, max( 11, inmin( 1 ) ) )
1381  CALL xlaenv(13, inwin( 1 ) )
1382  CALL xlaenv(14, inibl( 1 ) )
1383  CALL xlaenv(15, ishfts( 1 ) )
1384  CALL xlaenv(16, iacc22( 1 ) )
1385  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1386  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1387  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1388  WRITE( nout, fmt = 9983 )'INMIN: ', inmin( 1 )
1389  WRITE( nout, fmt = 9983 )'INWIN: ', inwin( 1 )
1390  WRITE( nout, fmt = 9983 )'INIBL: ', inibl( 1 )
1391  WRITE( nout, fmt = 9983 )'ISHFTS: ', ishfts( 1 )
1392  WRITE( nout, fmt = 9983 )'IACC22: ', iacc22( 1 )
1393 *
1394  ELSE IF( zgs .OR. zgx .OR. zgv .OR. zxv ) THEN
1395 *
1396 * For the nonsymmetric generalized driver routines, only one set of
1397 * parameters is allowed.
1398 *
1399  READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1400  $ nsval( 1 ), mxbval( 1 )
1401  IF( nbval( 1 ).LT.1 ) THEN
1402  WRITE( nout, fmt = 9989 )' NB ', nbval( 1 ), 1
1403  fatal = .true.
1404  ELSE IF( nbmin( 1 ).LT.1 ) THEN
1405  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( 1 ), 1
1406  fatal = .true.
1407  ELSE IF( nxval( 1 ).LT.1 ) THEN
1408  WRITE( nout, fmt = 9989 )' NX ', nxval( 1 ), 1
1409  fatal = .true.
1410  ELSE IF( nsval( 1 ).LT.2 ) THEN
1411  WRITE( nout, fmt = 9989 )' NS ', nsval( 1 ), 2
1412  fatal = .true.
1413  ELSE IF( mxbval( 1 ).LT.1 ) THEN
1414  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( 1 ), 1
1415  fatal = .true.
1416  END IF
1417  CALL xlaenv( 1, nbval( 1 ) )
1418  CALL xlaenv( 2, nbmin( 1 ) )
1419  CALL xlaenv( 3, nxval( 1 ) )
1420  CALL xlaenv( 4, nsval( 1 ) )
1421  CALL xlaenv( 8, mxbval( 1 ) )
1422  WRITE( nout, fmt = 9983 )'NB: ', nbval( 1 )
1423  WRITE( nout, fmt = 9983 )'NBMIN:', nbmin( 1 )
1424  WRITE( nout, fmt = 9983 )'NX: ', nxval( 1 )
1425  WRITE( nout, fmt = 9983 )'NS: ', nsval( 1 )
1426  WRITE( nout, fmt = 9983 )'MAXB: ', mxbval( 1 )
1427  ELSE IF( .NOT.zhb .AND. .NOT.glm .AND. .NOT.gqr .AND. .NOT.
1428  $ gsv .AND. .NOT.csd .AND. .NOT.lse ) THEN
1429 *
1430 * For the other paths, the number of parameters can be varied
1431 * from the input file. Read the number of parameter values.
1432 *
1433  READ( nin, fmt = * )nparms
1434  IF( nparms.LT.1 ) THEN
1435  WRITE( nout, fmt = 9989 )'NPARMS', nparms, 1
1436  nparms = 0
1437  fatal = .true.
1438  ELSE IF( nparms.GT.maxin ) THEN
1439  WRITE( nout, fmt = 9988 )'NPARMS', nparms, maxin
1440  nparms = 0
1441  fatal = .true.
1442  END IF
1443 *
1444 * Read the values of NB
1445 *
1446  IF( .NOT.zbb ) THEN
1447  READ( nin, fmt = * )( nbval( i ), i = 1, nparms )
1448  DO 70 i = 1, nparms
1449  IF( nbval( i ).LT.0 ) THEN
1450  WRITE( nout, fmt = 9989 )' NB ', nbval( i ), 0
1451  fatal = .true.
1452  ELSE IF( nbval( i ).GT.nmax ) THEN
1453  WRITE( nout, fmt = 9988 )' NB ', nbval( i ), nmax
1454  fatal = .true.
1455  END IF
1456  70 continue
1457  WRITE( nout, fmt = 9983 )'NB: ',
1458  $ ( nbval( i ), i = 1, nparms )
1459  END IF
1460 *
1461 * Read the values of NBMIN
1462 *
1463  IF( nep .OR. sep .OR. svd .OR. zgg ) THEN
1464  READ( nin, fmt = * )( nbmin( i ), i = 1, nparms )
1465  DO 80 i = 1, nparms
1466  IF( nbmin( i ).LT.0 ) THEN
1467  WRITE( nout, fmt = 9989 )'NBMIN ', nbmin( i ), 0
1468  fatal = .true.
1469  ELSE IF( nbmin( i ).GT.nmax ) THEN
1470  WRITE( nout, fmt = 9988 )'NBMIN ', nbmin( i ), nmax
1471  fatal = .true.
1472  END IF
1473  80 continue
1474  WRITE( nout, fmt = 9983 )'NBMIN:',
1475  $ ( nbmin( i ), i = 1, nparms )
1476  ELSE
1477  DO 90 i = 1, nparms
1478  nbmin( i ) = 1
1479  90 continue
1480  END IF
1481 *
1482 * Read the values of NX
1483 *
1484  IF( nep .OR. sep .OR. svd ) THEN
1485  READ( nin, fmt = * )( nxval( i ), i = 1, nparms )
1486  DO 100 i = 1, nparms
1487  IF( nxval( i ).LT.0 ) THEN
1488  WRITE( nout, fmt = 9989 )' NX ', nxval( i ), 0
1489  fatal = .true.
1490  ELSE IF( nxval( i ).GT.nmax ) THEN
1491  WRITE( nout, fmt = 9988 )' NX ', nxval( i ), nmax
1492  fatal = .true.
1493  END IF
1494  100 continue
1495  WRITE( nout, fmt = 9983 )'NX: ',
1496  $ ( nxval( i ), i = 1, nparms )
1497  ELSE
1498  DO 110 i = 1, nparms
1499  nxval( i ) = 1
1500  110 continue
1501  END IF
1502 *
1503 * Read the values of NSHIFT (if ZGG) or NRHS (if SVD
1504 * or ZBB).
1505 *
1506  IF( svd .OR. zbb .OR. zgg ) THEN
1507  READ( nin, fmt = * )( nsval( i ), i = 1, nparms )
1508  DO 120 i = 1, nparms
1509  IF( nsval( i ).LT.0 ) THEN
1510  WRITE( nout, fmt = 9989 )' NS ', nsval( i ), 0
1511  fatal = .true.
1512  ELSE IF( nsval( i ).GT.nmax ) THEN
1513  WRITE( nout, fmt = 9988 )' NS ', nsval( i ), nmax
1514  fatal = .true.
1515  END IF
1516  120 continue
1517  WRITE( nout, fmt = 9983 )'NS: ',
1518  $ ( nsval( i ), i = 1, nparms )
1519  ELSE
1520  DO 130 i = 1, nparms
1521  nsval( i ) = 1
1522  130 continue
1523  END IF
1524 *
1525 * Read the values for MAXB.
1526 *
1527  IF( zgg ) THEN
1528  READ( nin, fmt = * )( mxbval( i ), i = 1, nparms )
1529  DO 140 i = 1, nparms
1530  IF( mxbval( i ).LT.0 ) THEN
1531  WRITE( nout, fmt = 9989 )' MAXB ', mxbval( i ), 0
1532  fatal = .true.
1533  ELSE IF( mxbval( i ).GT.nmax ) THEN
1534  WRITE( nout, fmt = 9988 )' MAXB ', mxbval( i ), nmax
1535  fatal = .true.
1536  END IF
1537  140 continue
1538  WRITE( nout, fmt = 9983 )'MAXB: ',
1539  $ ( mxbval( i ), i = 1, nparms )
1540  ELSE
1541  DO 150 i = 1, nparms
1542  mxbval( i ) = 1
1543  150 continue
1544  END IF
1545 *
1546 * Read the values for INMIN.
1547 *
1548  IF( nep ) THEN
1549  READ( nin, fmt = * )( inmin( i ), i = 1, nparms )
1550  DO 540 i = 1, nparms
1551  IF( inmin( i ).LT.0 ) THEN
1552  WRITE( nout, fmt = 9989 )' INMIN ', inmin( i ), 0
1553  fatal = .true.
1554  END IF
1555  540 continue
1556  WRITE( nout, fmt = 9983 )'INMIN: ',
1557  $ ( inmin( i ), i = 1, nparms )
1558  ELSE
1559  DO 550 i = 1, nparms
1560  inmin( i ) = 1
1561  550 continue
1562  END IF
1563 *
1564 * Read the values for INWIN.
1565 *
1566  IF( nep ) THEN
1567  READ( nin, fmt = * )( inwin( i ), i = 1, nparms )
1568  DO 560 i = 1, nparms
1569  IF( inwin( i ).LT.0 ) THEN
1570  WRITE( nout, fmt = 9989 )' INWIN ', inwin( i ), 0
1571  fatal = .true.
1572  END IF
1573  560 continue
1574  WRITE( nout, fmt = 9983 )'INWIN: ',
1575  $ ( inwin( i ), i = 1, nparms )
1576  ELSE
1577  DO 570 i = 1, nparms
1578  inwin( i ) = 1
1579  570 continue
1580  END IF
1581 *
1582 * Read the values for INIBL.
1583 *
1584  IF( nep ) THEN
1585  READ( nin, fmt = * )( inibl( i ), i = 1, nparms )
1586  DO 580 i = 1, nparms
1587  IF( inibl( i ).LT.0 ) THEN
1588  WRITE( nout, fmt = 9989 )' INIBL ', inibl( i ), 0
1589  fatal = .true.
1590  END IF
1591  580 continue
1592  WRITE( nout, fmt = 9983 )'INIBL: ',
1593  $ ( inibl( i ), i = 1, nparms )
1594  ELSE
1595  DO 590 i = 1, nparms
1596  inibl( i ) = 1
1597  590 continue
1598  END IF
1599 *
1600 * Read the values for ISHFTS.
1601 *
1602  IF( nep ) THEN
1603  READ( nin, fmt = * )( ishfts( i ), i = 1, nparms )
1604  DO 600 i = 1, nparms
1605  IF( ishfts( i ).LT.0 ) THEN
1606  WRITE( nout, fmt = 9989 )' ISHFTS ', ishfts( i ), 0
1607  fatal = .true.
1608  END IF
1609  600 continue
1610  WRITE( nout, fmt = 9983 )'ISHFTS: ',
1611  $ ( ishfts( i ), i = 1, nparms )
1612  ELSE
1613  DO 610 i = 1, nparms
1614  ishfts( i ) = 1
1615  610 continue
1616  END IF
1617 *
1618 * Read the values for IACC22.
1619 *
1620  IF( nep ) THEN
1621  READ( nin, fmt = * )( iacc22( i ), i = 1, nparms )
1622  DO 620 i = 1, nparms
1623  IF( iacc22( i ).LT.0 ) THEN
1624  WRITE( nout, fmt = 9989 )' IACC22 ', iacc22( i ), 0
1625  fatal = .true.
1626  END IF
1627  620 continue
1628  WRITE( nout, fmt = 9983 )'IACC22: ',
1629  $ ( iacc22( i ), i = 1, nparms )
1630  ELSE
1631  DO 630 i = 1, nparms
1632  iacc22( i ) = 1
1633  630 continue
1634  END IF
1635 *
1636 * Read the values for NBCOL.
1637 *
1638  IF( zgg ) THEN
1639  READ( nin, fmt = * )( nbcol( i ), i = 1, nparms )
1640  DO 160 i = 1, nparms
1641  IF( nbcol( i ).LT.0 ) THEN
1642  WRITE( nout, fmt = 9989 )'NBCOL ', nbcol( i ), 0
1643  fatal = .true.
1644  ELSE IF( nbcol( i ).GT.nmax ) THEN
1645  WRITE( nout, fmt = 9988 )'NBCOL ', nbcol( i ), nmax
1646  fatal = .true.
1647  END IF
1648  160 continue
1649  WRITE( nout, fmt = 9983 )'NBCOL:',
1650  $ ( nbcol( i ), i = 1, nparms )
1651  ELSE
1652  DO 170 i = 1, nparms
1653  nbcol( i ) = 1
1654  170 continue
1655  END IF
1656  END IF
1657 *
1658 * Calculate and print the machine dependent constants.
1659 *
1660  WRITE( nout, fmt = * )
1661  eps = dlamch( 'Underflow threshold' )
1662  WRITE( nout, fmt = 9981 )'underflow', eps
1663  eps = dlamch( 'Overflow threshold' )
1664  WRITE( nout, fmt = 9981 )'overflow ', eps
1665  eps = dlamch( 'Epsilon' )
1666  WRITE( nout, fmt = 9981 )'precision', eps
1667 *
1668 * Read the threshold value for the test ratios.
1669 *
1670  READ( nin, fmt = * )thresh
1671  WRITE( nout, fmt = 9982 )thresh
1672  IF( sep .OR. svd .OR. zgg ) THEN
1673 *
1674 * Read the flag that indicates whether to test LAPACK routines.
1675 *
1676  READ( nin, fmt = * )tstchk
1677 *
1678 * Read the flag that indicates whether to test driver routines.
1679 *
1680  READ( nin, fmt = * )tstdrv
1681  END IF
1682 *
1683 * Read the flag that indicates whether to test the error exits.
1684 *
1685  READ( nin, fmt = * )tsterr
1686 *
1687 * Read the code describing how to set the random number seed.
1688 *
1689  READ( nin, fmt = * )newsd
1690 *
1691 * If NEWSD = 2, read another line with 4 integers for the seed.
1692 *
1693  IF( newsd.EQ.2 )
1694  $ READ( nin, fmt = * )( ioldsd( i ), i = 1, 4 )
1695 *
1696  DO 180 i = 1, 4
1697  iseed( i ) = ioldsd( i )
1698  180 continue
1699 *
1700  IF( fatal ) THEN
1701  WRITE( nout, fmt = 9999 )
1702  stop
1703  END IF
1704 *
1705 * Read the input lines indicating the test path and its parameters.
1706 * The first three characters indicate the test path, and the number
1707 * of test matrix types must be the first nonblank item in columns
1708 * 4-80.
1709 *
1710  190 continue
1711 *
1712  IF( .NOT.( zgx .OR. zxv ) ) THEN
1713 *
1714  200 continue
1715  READ( nin, fmt = '(A80)', END = 380 )line
1716  c3 = line( 1: 3 )
1717  lenp = len( line )
1718  i = 3
1719  itmp = 0
1720  i1 = 0
1721  210 continue
1722  i = i + 1
1723  IF( i.GT.lenp ) THEN
1724  IF( i1.GT.0 ) THEN
1725  go to 240
1726  ELSE
1727  ntypes = maxt
1728  go to 240
1729  END IF
1730  END IF
1731  IF( line( i: i ).NE.' ' .AND. line( i: i ).NE.',' ) THEN
1732  i1 = i
1733  c1 = line( i1: i1 )
1734 *
1735 * Check that a valid integer was read
1736 *
1737  DO 220 k = 1, 10
1738  IF( c1.EQ.intstr( k: k ) ) THEN
1739  ic = k - 1
1740  go to 230
1741  END IF
1742  220 continue
1743  WRITE( nout, fmt = 9991 )i, line
1744  go to 200
1745  230 continue
1746  itmp = 10*itmp + ic
1747  go to 210
1748  ELSE IF( i1.GT.0 ) THEN
1749  go to 240
1750  ELSE
1751  go to 210
1752  END IF
1753  240 continue
1754  ntypes = itmp
1755 *
1756 * Skip the tests if NTYPES is <= 0.
1757 *
1758  IF( .NOT.( zev .OR. zes .OR. zvx .OR. zsx .OR. zgv .OR.
1759  $ zgs ) .AND. ntypes.LE.0 ) THEN
1760  WRITE( nout, fmt = 9990 )c3
1761  go to 200
1762  END IF
1763 *
1764  ELSE
1765  IF( zgx )
1766  $ c3 = 'ZGX'
1767  IF( zxv )
1768  $ c3 = 'ZXV'
1769  END IF
1770 *
1771 * Reset the random number seed.
1772 *
1773  IF( newsd.EQ.0 ) THEN
1774  DO 250 k = 1, 4
1775  iseed( k ) = ioldsd( k )
1776  250 continue
1777  END IF
1778 *
1779  IF( lsamen( 3, c3, 'ZHS' ) .OR. lsamen( 3, c3, 'NEP' ) ) THEN
1780 *
1781 * -------------------------------------
1782 * NEP: Nonsymmetric Eigenvalue Problem
1783 * -------------------------------------
1784 * Vary the parameters
1785 * NB = block size
1786 * NBMIN = minimum block size
1787 * NX = crossover point
1788 * NS = number of shifts
1789 * MAXB = minimum submatrix size
1790 *
1791  maxtyp = 21
1792  ntypes = min( maxtyp, ntypes )
1793  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1794  CALL xlaenv( 1, 1 )
1795  IF( tsterr )
1796  $ CALL zerrhs( 'ZHSEQR', nout )
1797  DO 270 i = 1, nparms
1798  CALL xlaenv( 1, nbval( i ) )
1799  CALL xlaenv( 2, nbmin( i ) )
1800  CALL xlaenv( 3, nxval( i ) )
1801  CALL xlaenv(12, max( 11, inmin( i ) ) )
1802  CALL xlaenv(13, inwin( i ) )
1803  CALL xlaenv(14, inibl( i ) )
1804  CALL xlaenv(15, ishfts( i ) )
1805  CALL xlaenv(16, iacc22( i ) )
1806 *
1807  IF( newsd.EQ.0 ) THEN
1808  DO 260 k = 1, 4
1809  iseed( k ) = ioldsd( k )
1810  260 continue
1811  END IF
1812  WRITE( nout, fmt = 9961 )c3, nbval( i ), nbmin( i ),
1813  $ nxval( i ), max( 11, inmin(i)),
1814  $ inwin( i ), inibl( i ), ishfts( i ), iacc22( i )
1815  CALL zchkhs( nn, nval, maxtyp, dotype, iseed, thresh, nout,
1816  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
1817  $ a( 1, 4 ), a( 1, 5 ), nmax, a( 1, 6 ),
1818  $ a( 1, 7 ), dc( 1, 1 ), dc( 1, 2 ), a( 1, 8 ),
1819  $ a( 1, 9 ), a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
1820  $ dc( 1, 3 ), work, lwork, rwork, iwork, logwrk,
1821  $ result, info )
1822  IF( info.NE.0 )
1823  $ WRITE( nout, fmt = 9980 )'ZCHKHS', info
1824  270 continue
1825 *
1826  ELSE IF( lsamen( 3, c3, 'ZST' ) .OR. lsamen( 3, c3, 'SEP' ) ) THEN
1827 *
1828 * ----------------------------------
1829 * SEP: Symmetric Eigenvalue Problem
1830 * ----------------------------------
1831 * Vary the parameters
1832 * NB = block size
1833 * NBMIN = minimum block size
1834 * NX = crossover point
1835 *
1836  maxtyp = 21
1837  ntypes = min( maxtyp, ntypes )
1838  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1839  CALL xlaenv( 1, 1 )
1840  CALL xlaenv( 9, 25 )
1841  IF( tsterr )
1842  $ CALL zerrst( 'ZST', nout )
1843  DO 290 i = 1, nparms
1844  CALL xlaenv( 1, nbval( i ) )
1845  CALL xlaenv( 2, nbmin( i ) )
1846  CALL xlaenv( 3, nxval( i ) )
1847 *
1848  IF( newsd.EQ.0 ) THEN
1849  DO 280 k = 1, 4
1850  iseed( k ) = ioldsd( k )
1851  280 continue
1852  END IF
1853  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1854  $ nxval( i )
1855  IF( tstchk ) THEN
1856  CALL zchkst( nn, nval, maxtyp, dotype, iseed, thresh,
1857  $ nout, a( 1, 1 ), nmax, a( 1, 2 ),
1858  $ dr( 1, 1 ), dr( 1, 2 ), dr( 1, 3 ),
1859  $ dr( 1, 4 ), dr( 1, 5 ), dr( 1, 6 ),
1860  $ dr( 1, 7 ), dr( 1, 8 ), dr( 1, 9 ),
1861  $ dr( 1, 10 ), dr( 1, 11 ), a( 1, 3 ), nmax,
1862  $ a( 1, 4 ), a( 1, 5 ), dc( 1, 1 ), a( 1, 6 ),
1863  $ work, lwork, rwork, lwork, iwork, liwork,
1864  $ result, info )
1865  IF( info.NE.0 )
1866  $ WRITE( nout, fmt = 9980 )'ZCHKST', info
1867  END IF
1868  IF( tstdrv ) THEN
1869  CALL zdrvst( nn, nval, 18, dotype, iseed, thresh, nout,
1870  $ a( 1, 1 ), nmax, dr( 1, 3 ), dr( 1, 4 ),
1871  $ dr( 1, 5 ), dr( 1, 8 ), dr( 1, 9 ),
1872  $ dr( 1, 10 ), a( 1, 2 ), nmax, a( 1, 3 ),
1873  $ dc( 1, 1 ), a( 1, 4 ), work, lwork, rwork,
1874  $ lwork, iwork, liwork, result, info )
1875  IF( info.NE.0 )
1876  $ WRITE( nout, fmt = 9980 )'ZDRVST', info
1877  END IF
1878  290 continue
1879 *
1880  ELSE IF( lsamen( 3, c3, 'ZSG' ) ) THEN
1881 *
1882 * ----------------------------------------------
1883 * ZSG: Hermitian Generalized Eigenvalue Problem
1884 * ----------------------------------------------
1885 * Vary the parameters
1886 * NB = block size
1887 * NBMIN = minimum block size
1888 * NX = crossover point
1889 *
1890  maxtyp = 21
1891  ntypes = min( maxtyp, ntypes )
1892  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1893  CALL xlaenv( 9, 25 )
1894  DO 310 i = 1, nparms
1895  CALL xlaenv( 1, nbval( i ) )
1896  CALL xlaenv( 2, nbmin( i ) )
1897  CALL xlaenv( 3, nxval( i ) )
1898 *
1899  IF( newsd.EQ.0 ) THEN
1900  DO 300 k = 1, 4
1901  iseed( k ) = ioldsd( k )
1902  300 continue
1903  END IF
1904  WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1905  $ nxval( i )
1906  IF( tstchk ) THEN
1907  CALL zdrvsg( nn, nval, maxtyp, dotype, iseed, thresh,
1908  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1909  $ dr( 1, 3 ), a( 1, 3 ), nmax, a( 1, 4 ),
1910  $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), work,
1911  $ lwork, rwork, lwork, iwork, liwork, result,
1912  $ info )
1913  IF( info.NE.0 )
1914  $ WRITE( nout, fmt = 9980 )'ZDRVSG', info
1915  END IF
1916  310 continue
1917 *
1918  ELSE IF( lsamen( 3, c3, 'ZBD' ) .OR. lsamen( 3, c3, 'SVD' ) ) THEN
1919 *
1920 * ----------------------------------
1921 * SVD: Singular Value Decomposition
1922 * ----------------------------------
1923 * Vary the parameters
1924 * NB = block size
1925 * NBMIN = minimum block size
1926 * NX = crossover point
1927 * NRHS = number of right hand sides
1928 *
1929  maxtyp = 16
1930  ntypes = min( maxtyp, ntypes )
1931  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1932  CALL xlaenv( 9, 25 )
1933 *
1934 * Test the error exits
1935 *
1936  CALL xlaenv( 1, 1 )
1937  IF( tsterr .AND. tstchk )
1938  $ CALL zerrbd( 'ZBD', nout )
1939  IF( tsterr .AND. tstdrv )
1940  $ CALL zerred( 'ZBD', nout )
1941 *
1942  DO 330 i = 1, nparms
1943  nrhs = nsval( i )
1944  CALL xlaenv( 1, nbval( i ) )
1945  CALL xlaenv( 2, nbmin( i ) )
1946  CALL xlaenv( 3, nxval( i ) )
1947  IF( newsd.EQ.0 ) THEN
1948  DO 320 k = 1, 4
1949  iseed( k ) = ioldsd( k )
1950  320 continue
1951  END IF
1952  WRITE( nout, fmt = 9995 )c3, nbval( i ), nbmin( i ),
1953  $ nxval( i ), nrhs
1954  IF( tstchk ) THEN
1955  CALL zchkbd( nn, mval, nval, maxtyp, dotype, nrhs, iseed,
1956  $ thresh, a( 1, 1 ), nmax, dr( 1, 1 ),
1957  $ dr( 1, 2 ), dr( 1, 3 ), dr( 1, 4 ),
1958  $ a( 1, 2 ), nmax, a( 1, 3 ), a( 1, 4 ),
1959  $ a( 1, 5 ), nmax, a( 1, 6 ), nmax, a( 1, 7 ),
1960  $ a( 1, 8 ), work, lwork, rwork, nout, info )
1961  IF( info.NE.0 )
1962  $ WRITE( nout, fmt = 9980 )'ZCHKBD', info
1963  END IF
1964  IF( tstdrv )
1965  $ CALL zdrvbd( nn, mval, nval, maxtyp, dotype, iseed,
1966  $ thresh, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1967  $ a( 1, 3 ), nmax, a( 1, 4 ), a( 1, 5 ),
1968  $ a( 1, 6 ), dr( 1, 1 ), dr( 1, 2 ),
1969  $ dr( 1, 3 ), work, lwork, rwork, iwork, nout,
1970  $ info )
1971  330 continue
1972 *
1973  ELSE IF( lsamen( 3, c3, 'ZEV' ) ) THEN
1974 *
1975 * --------------------------------------------
1976 * ZEV: Nonsymmetric Eigenvalue Problem Driver
1977 * ZGEEV (eigenvalues and eigenvectors)
1978 * --------------------------------------------
1979 *
1980  maxtyp = 21
1981  ntypes = min( maxtyp, ntypes )
1982  IF( ntypes.LE.0 ) THEN
1983  WRITE( nout, fmt = 9990 )c3
1984  ELSE
1985  IF( tsterr )
1986  $ CALL zerred( c3, nout )
1987  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1988  CALL zdrvev( nn, nval, ntypes, dotype, iseed, thresh, nout,
1989  $ a( 1, 1 ), nmax, a( 1, 2 ), dc( 1, 1 ),
1990  $ dc( 1, 2 ), a( 1, 3 ), nmax, a( 1, 4 ), nmax,
1991  $ a( 1, 5 ), nmax, result, work, lwork, rwork,
1992  $ iwork, info )
1993  IF( info.NE.0 )
1994  $ WRITE( nout, fmt = 9980 )'ZGEEV', info
1995  END IF
1996  WRITE( nout, fmt = 9973 )
1997  go to 10
1998 *
1999  ELSE IF( lsamen( 3, c3, 'ZES' ) ) THEN
2000 *
2001 * --------------------------------------------
2002 * ZES: Nonsymmetric Eigenvalue Problem Driver
2003 * ZGEES (Schur form)
2004 * --------------------------------------------
2005 *
2006  maxtyp = 21
2007  ntypes = min( maxtyp, ntypes )
2008  IF( ntypes.LE.0 ) THEN
2009  WRITE( nout, fmt = 9990 )c3
2010  ELSE
2011  IF( tsterr )
2012  $ CALL zerred( c3, nout )
2013  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2014  CALL zdrves( nn, nval, ntypes, dotype, iseed, thresh, nout,
2015  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2016  $ dc( 1, 1 ), dc( 1, 2 ), a( 1, 4 ), nmax,
2017  $ result, work, lwork, rwork, iwork, logwrk,
2018  $ info )
2019  IF( info.NE.0 )
2020  $ WRITE( nout, fmt = 9980 )'ZGEES', info
2021  END IF
2022  WRITE( nout, fmt = 9973 )
2023  go to 10
2024 *
2025  ELSE IF( lsamen( 3, c3, 'ZVX' ) ) THEN
2026 *
2027 * --------------------------------------------------------------
2028 * ZVX: Nonsymmetric Eigenvalue Problem Expert Driver
2029 * ZGEEVX (eigenvalues, eigenvectors and condition numbers)
2030 * --------------------------------------------------------------
2031 *
2032  maxtyp = 21
2033  ntypes = min( maxtyp, ntypes )
2034  IF( ntypes.LT.0 ) THEN
2035  WRITE( nout, fmt = 9990 )c3
2036  ELSE
2037  IF( tsterr )
2038  $ CALL zerred( c3, nout )
2039  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2040  CALL zdrvvx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2041  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), dc( 1, 1 ),
2042  $ dc( 1, 2 ), a( 1, 3 ), nmax, a( 1, 4 ), nmax,
2043  $ a( 1, 5 ), nmax, dr( 1, 1 ), dr( 1, 2 ),
2044  $ dr( 1, 3 ), dr( 1, 4 ), dr( 1, 5 ), dr( 1, 6 ),
2045  $ dr( 1, 7 ), dr( 1, 8 ), result, work, lwork,
2046  $ rwork, info )
2047  IF( info.NE.0 )
2048  $ WRITE( nout, fmt = 9980 )'ZGEEVX', info
2049  END IF
2050  WRITE( nout, fmt = 9973 )
2051  go to 10
2052 *
2053  ELSE IF( lsamen( 3, c3, 'ZSX' ) ) THEN
2054 *
2055 * ---------------------------------------------------
2056 * ZSX: Nonsymmetric Eigenvalue Problem Expert Driver
2057 * ZGEESX (Schur form and condition numbers)
2058 * ---------------------------------------------------
2059 *
2060  maxtyp = 21
2061  ntypes = min( maxtyp, ntypes )
2062  IF( ntypes.LT.0 ) THEN
2063  WRITE( nout, fmt = 9990 )c3
2064  ELSE
2065  IF( tsterr )
2066  $ CALL zerred( c3, nout )
2067  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2068  CALL zdrvsx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2069  $ nout, a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2070  $ dc( 1, 1 ), dc( 1, 2 ), dc( 1, 3 ), a( 1, 4 ),
2071  $ nmax, a( 1, 5 ), result, work, lwork, rwork,
2072  $ logwrk, info )
2073  IF( info.NE.0 )
2074  $ WRITE( nout, fmt = 9980 )'ZGEESX', info
2075  END IF
2076  WRITE( nout, fmt = 9973 )
2077  go to 10
2078 *
2079  ELSE IF( lsamen( 3, c3, 'ZGG' ) ) THEN
2080 *
2081 * -------------------------------------------------
2082 * ZGG: Generalized Nonsymmetric Eigenvalue Problem
2083 * -------------------------------------------------
2084 * Vary the parameters
2085 * NB = block size
2086 * NBMIN = minimum block size
2087 * NS = number of shifts
2088 * MAXB = minimum submatrix size
2089 * NBCOL = minimum column dimension for blocks
2090 *
2091  maxtyp = 26
2092  ntypes = min( maxtyp, ntypes )
2093  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2094  IF( tstchk .AND. tsterr )
2095  $ CALL zerrgg( c3, nout )
2096  DO 350 i = 1, nparms
2097  CALL xlaenv( 1, nbval( i ) )
2098  CALL xlaenv( 2, nbmin( i ) )
2099  CALL xlaenv( 4, nsval( i ) )
2100  CALL xlaenv( 8, mxbval( i ) )
2101  CALL xlaenv( 5, nbcol( i ) )
2102 *
2103  IF( newsd.EQ.0 ) THEN
2104  DO 340 k = 1, 4
2105  iseed( k ) = ioldsd( k )
2106  340 continue
2107  END IF
2108  WRITE( nout, fmt = 9996 )c3, nbval( i ), nbmin( i ),
2109  $ nsval( i ), mxbval( i ), nbcol( i )
2110  tstdif = .false.
2111  thrshn = 10.d0
2112  IF( tstchk ) THEN
2113  CALL zchkgg( nn, nval, maxtyp, dotype, iseed, thresh,
2114  $ tstdif, thrshn, nout, a( 1, 1 ), nmax,
2115  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2116  $ a( 1, 6 ), a( 1, 7 ), a( 1, 8 ), a( 1, 9 ),
2117  $ nmax, a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
2118  $ dc( 1, 1 ), dc( 1, 2 ), dc( 1, 3 ),
2119  $ dc( 1, 4 ), a( 1, 13 ), a( 1, 14 ), work,
2120  $ lwork, rwork, logwrk, result, info )
2121  IF( info.NE.0 )
2122  $ WRITE( nout, fmt = 9980 )'ZCHKGG', info
2123  END IF
2124  CALL xlaenv( 1, 1 )
2125  IF( tstdrv ) THEN
2126  CALL zdrvgg( nn, nval, maxtyp, dotype, iseed, thresh,
2127  $ thrshn, nout, a( 1, 1 ), nmax, a( 1, 2 ),
2128  $ a( 1, 3 ), a( 1, 4 ), a( 1, 5 ), a( 1, 6 ),
2129  $ a( 1, 7 ), nmax, a( 1, 8 ), dc( 1, 1 ),
2130  $ dc( 1, 2 ), dc( 1, 3 ), dc( 1, 4 ),
2131  $ a( 1, 8 ), a( 1, 9 ), work, lwork, rwork,
2132  $ result, info )
2133  IF( info.NE.0 )
2134  $ WRITE( nout, fmt = 9980 )'ZDRVGG', info
2135  END IF
2136  350 continue
2137 *
2138  ELSE IF( lsamen( 3, c3, 'ZGS' ) ) THEN
2139 *
2140 * -------------------------------------------------
2141 * ZGS: Generalized Nonsymmetric Eigenvalue Problem
2142 * ZGGES (Schur form)
2143 * -------------------------------------------------
2144 *
2145  maxtyp = 26
2146  ntypes = min( maxtyp, ntypes )
2147  IF( ntypes.LE.0 ) THEN
2148  WRITE( nout, fmt = 9990 )c3
2149  ELSE
2150  IF( tsterr )
2151  $ CALL zerrgg( c3, nout )
2152  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2153  CALL zdrges( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2154  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2155  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2156  $ dc( 1, 1 ), dc( 1, 2 ), work, lwork, rwork,
2157  $ result, logwrk, info )
2158 *
2159  IF( info.NE.0 )
2160  $ WRITE( nout, fmt = 9980 )'ZDRGES', info
2161  END IF
2162  WRITE( nout, fmt = 9973 )
2163  go to 10
2164 *
2165  ELSE IF( zgx ) THEN
2166 *
2167 * -------------------------------------------------
2168 * ZGX Generalized Nonsymmetric Eigenvalue Problem
2169 * ZGGESX (Schur form and condition numbers)
2170 * -------------------------------------------------
2171 *
2172  maxtyp = 5
2173  ntypes = maxtyp
2174  IF( nn.LT.0 ) THEN
2175  WRITE( nout, fmt = 9990 )c3
2176  ELSE
2177  IF( tsterr )
2178  $ CALL zerrgg( c3, nout )
2179  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2180  CALL xlaenv( 5, 2 )
2181  CALL zdrgsx( nn, ncmax, thresh, nin, nout, a( 1, 1 ), nmax,
2182  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2183  $ a( 1, 6 ), dc( 1, 1 ), dc( 1, 2 ), c,
2184  $ ncmax*ncmax, s, work, lwork, rwork, iwork,
2185  $ liwork, logwrk, info )
2186  IF( info.NE.0 )
2187  $ WRITE( nout, fmt = 9980 )'ZDRGSX', info
2188  END IF
2189  WRITE( nout, fmt = 9973 )
2190  go to 10
2191 *
2192  ELSE IF( lsamen( 3, c3, 'ZGV' ) ) THEN
2193 *
2194 * -------------------------------------------------
2195 * ZGV: Generalized Nonsymmetric Eigenvalue Problem
2196 * ZGGEV (Eigenvalue/vector form)
2197 * -------------------------------------------------
2198 *
2199  maxtyp = 26
2200  ntypes = min( maxtyp, ntypes )
2201  IF( ntypes.LE.0 ) THEN
2202  WRITE( nout, fmt = 9990 )c3
2203  ELSE
2204  IF( tsterr )
2205  $ CALL zerrgg( c3, nout )
2206  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2207  CALL zdrgev( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2208  $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2209  $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2210  $ a( 1, 9 ), nmax, dc( 1, 1 ), dc( 1, 2 ),
2211  $ dc( 1, 3 ), dc( 1, 4 ), work, lwork, rwork,
2212  $ result, info )
2213  IF( info.NE.0 )
2214  $ WRITE( nout, fmt = 9980 )'ZDRGEV', info
2215  END IF
2216  WRITE( nout, fmt = 9973 )
2217  go to 10
2218 *
2219  ELSE IF( zxv ) THEN
2220 *
2221 * -------------------------------------------------
2222 * ZXV: Generalized Nonsymmetric Eigenvalue Problem
2223 * ZGGEVX (eigenvalue/vector with condition numbers)
2224 * -------------------------------------------------
2225 *
2226  maxtyp = 2
2227  ntypes = maxtyp
2228  IF( nn.LT.0 ) THEN
2229  WRITE( nout, fmt = 9990 )c3
2230  ELSE
2231  IF( tsterr )
2232  $ CALL zerrgg( c3, nout )
2233  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2234  CALL zdrgvx( nn, thresh, nin, nout, a( 1, 1 ), nmax,
2235  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), dc( 1, 1 ),
2236  $ dc( 1, 2 ), a( 1, 5 ), a( 1, 6 ), iwork( 1 ),
2237  $ iwork( 2 ), dr( 1, 1 ), dr( 1, 2 ), dr( 1, 3 ),
2238  $ dr( 1, 4 ), dr( 1, 5 ), dr( 1, 6 ), work,
2239  $ lwork, rwork, iwork( 3 ), liwork-2, result,
2240  $ logwrk, info )
2241 *
2242  IF( info.NE.0 )
2243  $ WRITE( nout, fmt = 9980 )'ZDRGVX', info
2244  END IF
2245  WRITE( nout, fmt = 9973 )
2246  go to 10
2247 *
2248  ELSE IF( lsamen( 3, c3, 'ZHB' ) ) THEN
2249 *
2250 * ------------------------------
2251 * ZHB: Hermitian Band Reduction
2252 * ------------------------------
2253 *
2254  maxtyp = 15
2255  ntypes = min( maxtyp, ntypes )
2256  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2257  IF( tsterr )
2258  $ CALL zerrst( 'ZHB', nout )
2259  CALL zchkhb( nn, nval, nk, kval, maxtyp, dotype, iseed, thresh,
2260  $ nout, a( 1, 1 ), nmax, dr( 1, 1 ), dr( 1, 2 ),
2261  $ a( 1, 2 ), nmax, work, lwork, rwork, result,
2262  $ info )
2263  IF( info.NE.0 )
2264  $ WRITE( nout, fmt = 9980 )'ZCHKHB', info
2265 *
2266  ELSE IF( lsamen( 3, c3, 'ZBB' ) ) THEN
2267 *
2268 * ------------------------------
2269 * ZBB: General Band Reduction
2270 * ------------------------------
2271 *
2272  maxtyp = 15
2273  ntypes = min( maxtyp, ntypes )
2274  CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2275  DO 370 i = 1, nparms
2276  nrhs = nsval( i )
2277 *
2278  IF( newsd.EQ.0 ) THEN
2279  DO 360 k = 1, 4
2280  iseed( k ) = ioldsd( k )
2281  360 continue
2282  END IF
2283  WRITE( nout, fmt = 9966 )c3, nrhs
2284  CALL zchkbb( nn, mval, nval, nk, kval, maxtyp, dotype, nrhs,
2285  $ iseed, thresh, nout, a( 1, 1 ), nmax,
2286  $ a( 1, 2 ), 2*nmax, dr( 1, 1 ), dr( 1, 2 ),
2287  $ a( 1, 4 ), nmax, a( 1, 5 ), nmax, a( 1, 6 ),
2288  $ nmax, a( 1, 7 ), work, lwork, rwork, result,
2289  $ info )
2290  IF( info.NE.0 )
2291  $ WRITE( nout, fmt = 9980 )'ZCHKBB', info
2292  370 continue
2293 *
2294  ELSE IF( lsamen( 3, c3, 'GLM' ) ) THEN
2295 *
2296 * -----------------------------------------
2297 * GLM: Generalized Linear Regression Model
2298 * -----------------------------------------
2299 *
2300  CALL xlaenv( 1, 1 )
2301  IF( tsterr )
2302  $ CALL zerrgg( 'GLM', nout )
2303  CALL zckglm( nn, nval, mval, pval, ntypes, iseed, thresh, nmax,
2304  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2305  $ work, dr( 1, 1 ), nin, nout, info )
2306  IF( info.NE.0 )
2307  $ WRITE( nout, fmt = 9980 )'ZCKGLM', info
2308 *
2309  ELSE IF( lsamen( 3, c3, 'GQR' ) ) THEN
2310 *
2311 * ------------------------------------------
2312 * GQR: Generalized QR and RQ factorizations
2313 * ------------------------------------------
2314 *
2315  CALL xlaenv( 1, 1 )
2316  IF( tsterr )
2317  $ CALL zerrgg( 'GQR', nout )
2318  CALL zckgqr( nn, mval, nn, pval, nn, nval, ntypes, iseed,
2319  $ thresh, nmax, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
2320  $ a( 1, 4 ), taua, b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
2321  $ b( 1, 4 ), b( 1, 5 ), taub, work, dr( 1, 1 ), nin,
2322  $ nout, info )
2323  IF( info.NE.0 )
2324  $ WRITE( nout, fmt = 9980 )'ZCKGQR', info
2325 *
2326  ELSE IF( lsamen( 3, c3, 'GSV' ) ) THEN
2327 *
2328 * ----------------------------------------------
2329 * GSV: Generalized Singular Value Decomposition
2330 * ----------------------------------------------
2331 *
2332  IF( tsterr )
2333  $ CALL zerrgg( 'GSV', nout )
2334  CALL zckgsv( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2335  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
2336  $ a( 1, 3 ), b( 1, 3 ), a( 1, 4 ), alpha, beta,
2337  $ b( 1, 4 ), iwork, work, dr( 1, 1 ), nin, nout,
2338  $ info )
2339  IF( info.NE.0 )
2340  $ WRITE( nout, fmt = 9980 )'ZCKGSV', info
2341 *
2342  ELSE IF( lsamen( 3, c3, 'CSD' ) ) THEN
2343 *
2344 * ----------------------------------------------
2345 * CSD: CS Decomposition
2346 * ----------------------------------------------
2347 *
2348  CALL xlaenv(1,1)
2349  IF( tsterr )
2350  $ CALL zerrgg( 'CSD', nout )
2351  CALL zckcsd( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2352  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), a( 1, 4 ),
2353  $ a( 1, 5 ), a( 1, 6 ), rwork, iwork, work,
2354  $ dr( 1, 1 ), nin, nout, info )
2355  IF( info.NE.0 )
2356  $ WRITE( nout, fmt = 9980 )'ZCKCSD', info
2357 *
2358  ELSE IF( lsamen( 3, c3, 'LSE' ) ) THEN
2359 *
2360 * --------------------------------------
2361 * LSE: Constrained Linear Least Squares
2362 * --------------------------------------
2363 *
2364  CALL xlaenv( 1, 1 )
2365  IF( tsterr )
2366  $ CALL zerrgg( 'LSE', nout )
2367  CALL zcklse( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2368  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2369  $ work, dr( 1, 1 ), nin, nout, info )
2370  IF( info.NE.0 )
2371  $ WRITE( nout, fmt = 9980 )'ZCKLSE', info
2372  ELSE
2373  WRITE( nout, fmt = * )
2374  WRITE( nout, fmt = * )
2375  WRITE( nout, fmt = 9992 )c3
2376  END IF
2377  IF( .NOT.( zgx .OR. zxv ) )
2378  $ go to 190
2379  380 continue
2380  WRITE( nout, fmt = 9994 )
2381  s2 = dsecnd( )
2382  WRITE( nout, fmt = 9993 )s2 - s1
2383 *
2384  9999 format( / ' Execution not attempted due to input errors' )
2385  9997 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4 )
2386  9996 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NS =', i4,
2387  $ ', MAXB =', i4, ', NBCOL =', i4 )
2388  9995 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2389  $ ', NRHS =', i4 )
2390  9994 format( / / ' End of tests' )
2391  9993 format( ' Total time used = ', f12.2, ' seconds', / )
2392  9992 format( 1x, a3, ': Unrecognized path name' )
2393  9991 format( / / ' *** Invalid integer value in column ', i2,
2394  $ ' of input', ' line:', / a79 )
2395  9990 format( / / 1x, a3, ' routines were not tested' )
2396  9989 format( ' Invalid input value: ', a, '=', i6, '; must be >=',
2397  $ i6 )
2398  9988 format( ' Invalid input value: ', a, '=', i6, '; must be <=',
2399  $ i6 )
2400  9987 format( ' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2401  9986 format( ' Tests of the Hermitian Eigenvalue Problem routines' )
2402  9985 format( ' Tests of the Singular Value Decomposition routines' )
2403  9984 format( / ' The following parameter values will be used:' )
2404  9983 format( 4x, a, 10i6, / 10x, 10i6 )
2405  9982 format( / ' Routines pass computational tests if test ratio is ',
2406  $ 'less than', f8.2, / )
2407  9981 format( ' Relative machine ', a, ' is taken to be', d16.6 )
2408  9980 format( ' *** Error code from ', a, ' = ', i4 )
2409  9979 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2410  $ / ' ZGEEV (eigenvalues and eigevectors)' )
2411  9978 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2412  $ / ' ZGEES (Schur form)' )
2413  9977 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2414  $ ' Driver', / ' ZGEEVX (eigenvalues, eigenvectors and',
2415  $ ' condition numbers)' )
2416  9976 format( / ' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2417  $ ' Driver', / ' ZGEESX (Schur form and condition',
2418  $ ' numbers)' )
2419  9975 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2420  $ 'Problem routines' )
2421  9974 format( ' Tests of ZHBTRD', / ' (reduction of a Hermitian band ',
2422  $ 'matrix to real tridiagonal form)' )
2423  9973 format( / 1x, 71( '-' ) )
2424  9972 format( / ' LAPACK VERSION ', i1, '.', i1, '.', i1 )
2425  9971 format( / ' Tests of the Generalized Linear Regression Model ',
2426  $ 'routines' )
2427  9970 format( / ' Tests of the Generalized QR and RQ routines' )
2428  9969 format( / ' Tests of the Generalized Singular Value',
2429  $ ' Decomposition routines' )
2430  9968 format( / ' Tests of the Linear Least Squares routines' )
2431  9967 format( ' Tests of ZGBBRD', / ' (reduction of a general band ',
2432  $ 'matrix to real bidiagonal form)' )
2433  9966 format( / / 1x, a3, ': NRHS =', i4 )
2434  9965 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2435  $ 'Problem Expert Driver ZGGESX' )
2436  9964 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2437  $ 'Problem Driver ZGGES' )
2438  9963 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2439  $ 'Problem Driver ZGGEV' )
2440  9962 format( / ' Tests of the Generalized Nonsymmetric Eigenvalue ',
2441  $ 'Problem Expert Driver ZGGEVX' )
2442  9961 format( / / 1x, a3, ': NB =', i4, ', NBMIN =', i4, ', NX =', i4,
2443  $ ', INMIN=', i4,
2444  $ ', INWIN =', i4, ', INIBL =', i4, ', ISHFTS =', i4,
2445  $ ', IACC22 =', i4)
2446  9960 format( / ' Tests of the CS Decomposition routines' )
2447 *
2448 * End of ZCHKEE
2449 *
2450  END