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