LAPACK  3.8.0
LAPACK: Linear Algebra PACKage
zchkaa.f
Go to the documentation of this file.
1 *> \brief \b ZCHKAA
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 ZCHKAA
12 *
13 *
14 *> \par Purpose:
15 * =============
16 *>
17 *> \verbatim
18 *>
19 *> ZCHKAA is the main test program for the COMPLEX*16 linear equation
20 *> routines.
21 *>
22 *> The program must be driven by a short data file. The first 15 records
23 *> (not including the first comment line) specify problem dimensions
24 *> and program options using list-directed input. The remaining lines
25 *> specify the LAPACK test paths and the number of matrix types to use
26 *> in testing. An annotated example of a data file can be obtained by
27 *> deleting the first 3 characters from the following 42 lines:
28 *> Data file for testing COMPLEX*16 LAPACK linear equation routines
29 *> 7 Number of values of M
30 *> 0 1 2 3 5 10 16 Values of M (row dimension)
31 *> 7 Number of values of N
32 *> 0 1 2 3 5 10 16 Values of N (column dimension)
33 *> 1 Number of values of NRHS
34 *> 2 Values of NRHS (number of right hand sides)
35 *> 5 Number of values of NB
36 *> 1 3 3 3 20 Values of NB (the blocksize)
37 *> 1 0 5 9 1 Values of NX (crossover point)
38 *> 3 Number of values of RANK
39 *> 30 50 90 Values of rank (as a % of N)
40 *> 30.0 Threshold value of test ratio
41 *> T Put T to test the LAPACK routines
42 *> T Put T to test the driver routines
43 *> T Put T to test the error exits
44 *> ZGE 11 List types on next line if 0 < NTYPES < 11
45 *> ZGB 8 List types on next line if 0 < NTYPES < 8
46 *> ZGT 12 List types on next line if 0 < NTYPES < 12
47 *> ZPO 9 List types on next line if 0 < NTYPES < 9
48 *> ZPS 9 List types on next line if 0 < NTYPES < 9
49 *> ZPP 9 List types on next line if 0 < NTYPES < 9
50 *> ZPB 8 List types on next line if 0 < NTYPES < 8
51 *> ZPT 12 List types on next line if 0 < NTYPES < 12
52 *> ZHE 10 List types on next line if 0 < NTYPES < 10
53 *> ZHR 10 List types on next line if 0 < NTYPES < 10
54 *> ZHK 10 List types on next line if 0 < NTYPES < 10
55 *> ZHA 10 List types on next line if 0 < NTYPES < 10
56 *> ZH2 10 List types on next line if 0 < NTYPES < 10
57 *> ZSA 11 List types on next line if 0 < NTYPES < 10
58 *> ZS2 11 List types on next line if 0 < NTYPES < 10
59 *> ZHP 10 List types on next line if 0 < NTYPES < 10
60 *> ZSY 11 List types on next line if 0 < NTYPES < 11
61 *> ZSR 11 List types on next line if 0 < NTYPES < 11
62 *> ZSK 11 List types on next line if 0 < NTYPES < 11
63 *> ZSP 11 List types on next line if 0 < NTYPES < 11
64 *> ZTR 18 List types on next line if 0 < NTYPES < 18
65 *> ZTP 18 List types on next line if 0 < NTYPES < 18
66 *> ZTB 17 List types on next line if 0 < NTYPES < 17
67 *> ZQR 8 List types on next line if 0 < NTYPES < 8
68 *> ZRQ 8 List types on next line if 0 < NTYPES < 8
69 *> ZLQ 8 List types on next line if 0 < NTYPES < 8
70 *> ZQL 8 List types on next line if 0 < NTYPES < 8
71 *> ZQP 6 List types on next line if 0 < NTYPES < 6
72 *> ZTZ 3 List types on next line if 0 < NTYPES < 3
73 *> ZLS 6 List types on next line if 0 < NTYPES < 6
74 *> ZEQ
75 *> ZQT
76 *> ZQX
77 *> \endverbatim
78 *
79 * Parameters:
80 * ==========
81 *
82 *> \verbatim
83 *> NMAX INTEGER
84 *> The maximum allowable value for M and N.
85 *>
86 *> MAXIN INTEGER
87 *> The number of different values that can be used for each of
88 *> M, N, NRHS, NB, NX and RANK
89 *>
90 *> MAXRHS INTEGER
91 *> The maximum number of right hand sides
92 *>
93 *> MATMAX INTEGER
94 *> The maximum number of matrix types to use for testing
95 *>
96 *> NIN INTEGER
97 *> The unit number for input
98 *>
99 *> NOUT INTEGER
100 *> The unit number for output
101 *> \endverbatim
102 *
103 * Authors:
104 * ========
105 *
106 *> \author Univ. of Tennessee
107 *> \author Univ. of California Berkeley
108 *> \author Univ. of Colorado Denver
109 *> \author NAG Ltd.
110 *
111 *> \date November 2017
112 *
113 *> \ingroup complex16_lin
114 *
115 * =====================================================================
116  PROGRAM zchkaa
117 *
118 * -- LAPACK test routine (version 3.8.0) --
119 * -- LAPACK is a software package provided by Univ. of Tennessee, --
120 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
121 * November 2017
122 *
123 * =====================================================================
124 *
125 * .. Parameters ..
126  INTEGER NMAX
127  parameter( nmax = 132 )
128  INTEGER MAXIN
129  parameter( maxin = 12 )
130  INTEGER MAXRHS
131  parameter( maxrhs = 16 )
132  INTEGER MATMAX
133  parameter( matmax = 30 )
134  INTEGER NIN, NOUT
135  parameter( nin = 5, nout = 6 )
136  INTEGER KDMAX
137  parameter( kdmax = nmax+( nmax+1 ) / 4 )
138 * ..
139 * .. Local Scalars ..
140  LOGICAL FATAL, TSTCHK, TSTDRV, TSTERR
141  CHARACTER C1
142  CHARACTER*2 C2
143  CHARACTER*3 PATH
144  CHARACTER*10 INTSTR
145  CHARACTER*72 ALINE
146  INTEGER I, IC, J, K, LA, LAFAC, LDA, NB, NM, NMATS, NN,
147  $ nnb, nnb2, nns, nrhs, ntypes, nrank,
148  $ vers_major, vers_minor, vers_patch
149  DOUBLE PRECISION EPS, S1, S2, THREQ, THRESH
150 * ..
151 * .. Local Arrays ..
152  LOGICAL DOTYPE( matmax )
153  INTEGER IWORK( 25*nmax ), MVAL( maxin ),
154  $ nbval( maxin ), nbval2( maxin ),
155  $ nsval( maxin ), nval( maxin ), nxval( maxin ),
156  $ rankval( maxin ), piv( nmax )
157  DOUBLE PRECISION RWORK( 150*nmax+2*maxrhs ), S( 2*nmax )
158  COMPLEX*16 A( ( kdmax+1 )*nmax, 7 ), B( nmax*maxrhs, 4 ),
159  $ e( nmax ), work( nmax, nmax+maxrhs+10 )
160 * ..
161 * .. External Functions ..
162  LOGICAL LSAME, LSAMEN
163  DOUBLE PRECISION DLAMCH, DSECND
164  EXTERNAL lsame, lsamen, dlamch, dsecnd
165 * ..
166 * .. External Subroutines ..
167  EXTERNAL alareq, zchkeq, zchkgb, zchkge, zchkgt, zchkhe,
179 * ..
180 * .. Scalars in Common ..
181  LOGICAL LERR, OK
182  CHARACTER*32 SRNAMT
183  INTEGER INFOT, NUNIT
184 * ..
185 * .. Arrays in Common ..
186  INTEGER IPARMS( 100 )
187 * ..
188 * .. Common blocks ..
189  COMMON / infoc / infot, nunit, ok, lerr
190  COMMON / srnamc / srnamt
191  COMMON / claenv / iparms
192 * ..
193 * .. Data statements ..
194  DATA threq / 2.0d0 / , intstr / '0123456789' /
195 * ..
196 * .. Executable Statements ..
197 *
198  s1 = dsecnd( )
199  lda = nmax
200  fatal = .false.
201 *
202 * Read a dummy line.
203 *
204  READ( nin, fmt = * )
205 *
206 * Report values of parameters.
207 *
208  CALL ilaver( vers_major, vers_minor, vers_patch )
209  WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
210 *
211 * Read the values of M
212 *
213  READ( nin, fmt = * )nm
214  IF( nm.LT.1 ) THEN
215  WRITE( nout, fmt = 9996 )' NM ', nm, 1
216  nm = 0
217  fatal = .true.
218  ELSE IF( nm.GT.maxin ) THEN
219  WRITE( nout, fmt = 9995 )' NM ', nm, maxin
220  nm = 0
221  fatal = .true.
222  END IF
223  READ( nin, fmt = * )( mval( i ), i = 1, nm )
224  DO 10 i = 1, nm
225  IF( mval( i ).LT.0 ) THEN
226  WRITE( nout, fmt = 9996 )' M ', mval( i ), 0
227  fatal = .true.
228  ELSE IF( mval( i ).GT.nmax ) THEN
229  WRITE( nout, fmt = 9995 )' M ', mval( i ), nmax
230  fatal = .true.
231  END IF
232  10 CONTINUE
233  IF( nm.GT.0 )
234  $ WRITE( nout, fmt = 9993 )'M ', ( mval( i ), i = 1, nm )
235 *
236 * Read the values of N
237 *
238  READ( nin, fmt = * )nn
239  IF( nn.LT.1 ) THEN
240  WRITE( nout, fmt = 9996 )' NN ', nn, 1
241  nn = 0
242  fatal = .true.
243  ELSE IF( nn.GT.maxin ) THEN
244  WRITE( nout, fmt = 9995 )' NN ', nn, maxin
245  nn = 0
246  fatal = .true.
247  END IF
248  READ( nin, fmt = * )( nval( i ), i = 1, nn )
249  DO 20 i = 1, nn
250  IF( nval( i ).LT.0 ) THEN
251  WRITE( nout, fmt = 9996 )' N ', nval( i ), 0
252  fatal = .true.
253  ELSE IF( nval( i ).GT.nmax ) THEN
254  WRITE( nout, fmt = 9995 )' N ', nval( i ), nmax
255  fatal = .true.
256  END IF
257  20 CONTINUE
258  IF( nn.GT.0 )
259  $ WRITE( nout, fmt = 9993 )'N ', ( nval( i ), i = 1, nn )
260 *
261 * Read the values of NRHS
262 *
263  READ( nin, fmt = * )nns
264  IF( nns.LT.1 ) THEN
265  WRITE( nout, fmt = 9996 )' NNS', nns, 1
266  nns = 0
267  fatal = .true.
268  ELSE IF( nns.GT.maxin ) THEN
269  WRITE( nout, fmt = 9995 )' NNS', nns, maxin
270  nns = 0
271  fatal = .true.
272  END IF
273  READ( nin, fmt = * )( nsval( i ), i = 1, nns )
274  DO 30 i = 1, nns
275  IF( nsval( i ).LT.0 ) THEN
276  WRITE( nout, fmt = 9996 )'NRHS', nsval( i ), 0
277  fatal = .true.
278  ELSE IF( nsval( i ).GT.maxrhs ) THEN
279  WRITE( nout, fmt = 9995 )'NRHS', nsval( i ), maxrhs
280  fatal = .true.
281  END IF
282  30 CONTINUE
283  IF( nns.GT.0 )
284  $ WRITE( nout, fmt = 9993 )'NRHS', ( nsval( i ), i = 1, nns )
285 *
286 * Read the values of NB
287 *
288  READ( nin, fmt = * )nnb
289  IF( nnb.LT.1 ) THEN
290  WRITE( nout, fmt = 9996 )'NNB ', nnb, 1
291  nnb = 0
292  fatal = .true.
293  ELSE IF( nnb.GT.maxin ) THEN
294  WRITE( nout, fmt = 9995 )'NNB ', nnb, maxin
295  nnb = 0
296  fatal = .true.
297  END IF
298  READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
299  DO 40 i = 1, nnb
300  IF( nbval( i ).LT.0 ) THEN
301  WRITE( nout, fmt = 9996 )' NB ', nbval( i ), 0
302  fatal = .true.
303  END IF
304  40 CONTINUE
305  IF( nnb.GT.0 )
306  $ WRITE( nout, fmt = 9993 )'NB ', ( nbval( i ), i = 1, nnb )
307 *
308 * Set NBVAL2 to be the set of unique values of NB
309 *
310  nnb2 = 0
311  DO 60 i = 1, nnb
312  nb = nbval( i )
313  DO 50 j = 1, nnb2
314  IF( nb.EQ.nbval2( j ) )
315  $ GO TO 60
316  50 CONTINUE
317  nnb2 = nnb2 + 1
318  nbval2( nnb2 ) = nb
319  60 CONTINUE
320 *
321 * Read the values of NX
322 *
323  READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
324  DO 70 i = 1, nnb
325  IF( nxval( i ).LT.0 ) THEN
326  WRITE( nout, fmt = 9996 )' NX ', nxval( i ), 0
327  fatal = .true.
328  END IF
329  70 CONTINUE
330  IF( nnb.GT.0 )
331  $ WRITE( nout, fmt = 9993 )'NX ', ( nxval( i ), i = 1, nnb )
332 *
333 * Read the values of RANKVAL
334 *
335  READ( nin, fmt = * )nrank
336  IF( nn.LT.1 ) THEN
337  WRITE( nout, fmt = 9996 )' NRANK ', nrank, 1
338  nrank = 0
339  fatal = .true.
340  ELSE IF( nn.GT.maxin ) THEN
341  WRITE( nout, fmt = 9995 )' NRANK ', nrank, maxin
342  nrank = 0
343  fatal = .true.
344  END IF
345  READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
346  DO i = 1, nrank
347  IF( rankval( i ).LT.0 ) THEN
348  WRITE( nout, fmt = 9996 )' RANK ', rankval( i ), 0
349  fatal = .true.
350  ELSE IF( rankval( i ).GT.100 ) THEN
351  WRITE( nout, fmt = 9995 )' RANK ', rankval( i ), 100
352  fatal = .true.
353  END IF
354  END DO
355  IF( nrank.GT.0 )
356  $ WRITE( nout, fmt = 9993 )'RANK % OF N',
357  $ ( rankval( i ), i = 1, nrank )
358 *
359 * Read the threshold value for the test ratios.
360 *
361  READ( nin, fmt = * )thresh
362  WRITE( nout, fmt = 9992 )thresh
363 *
364 * Read the flag that indicates whether to test the LAPACK routines.
365 *
366  READ( nin, fmt = * )tstchk
367 *
368 * Read the flag that indicates whether to test the driver routines.
369 *
370  READ( nin, fmt = * )tstdrv
371 *
372 * Read the flag that indicates whether to test the error exits.
373 *
374  READ( nin, fmt = * )tsterr
375 *
376  IF( fatal ) THEN
377  WRITE( nout, fmt = 9999 )
378  stop
379  END IF
380 *
381 * Calculate and print the machine dependent constants.
382 *
383  eps = dlamch( 'Underflow threshold' )
384  WRITE( nout, fmt = 9991 )'underflow', eps
385  eps = dlamch( 'Overflow threshold' )
386  WRITE( nout, fmt = 9991 )'overflow ', eps
387  eps = dlamch( 'Epsilon' )
388  WRITE( nout, fmt = 9991 )'precision', eps
389  WRITE( nout, fmt = * )
390  nrhs = nsval( 1 )
391 *
392  80 CONTINUE
393 *
394 * Read a test path and the number of matrix types to use.
395 *
396  READ( nin, fmt = '(A72)', end = 140 )aline
397  path = aline( 1: 3 )
398  nmats = matmax
399  i = 3
400  90 CONTINUE
401  i = i + 1
402  IF( i.GT.72 )
403  $ GO TO 130
404  IF( aline( i: i ).EQ.' ' )
405  $ GO TO 90
406  nmats = 0
407  100 CONTINUE
408  c1 = aline( i: i )
409  DO 110 k = 1, 10
410  IF( c1.EQ.intstr( k: k ) ) THEN
411  ic = k - 1
412  GO TO 120
413  END IF
414  110 CONTINUE
415  GO TO 130
416  120 CONTINUE
417  nmats = nmats*10 + ic
418  i = i + 1
419  IF( i.GT.72 )
420  $ GO TO 130
421  GO TO 100
422  130 CONTINUE
423  c1 = path( 1: 1 )
424  c2 = path( 2: 3 )
425 *
426 * Check first character for correct precision.
427 *
428  IF( .NOT.lsame( c1, 'Zomplex precision' ) ) THEN
429  WRITE( nout, fmt = 9990 )path
430 *
431  ELSE IF( nmats.LE.0 ) THEN
432 *
433 * Check for a positive number of tests requested.
434 *
435  WRITE( nout, fmt = 9989 )path
436 *
437  ELSE IF( lsamen( 2, c2, 'GE' ) ) THEN
438 *
439 * GE: general matrices
440 *
441  ntypes = 11
442  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
443 *
444  IF( tstchk ) THEN
445  CALL zchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
446  $ nsval, thresh, tsterr, lda, a( 1, 1 ),
447  $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
448  $ b( 1, 3 ), work, rwork, iwork, nout )
449  ELSE
450  WRITE( nout, fmt = 9989 )path
451  END IF
452 *
453  IF( tstdrv ) THEN
454  CALL zdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
455  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
456  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
457  $ rwork, iwork, nout )
458  ELSE
459  WRITE( nout, fmt = 9988 )path
460  END IF
461 *
462  ELSE IF( lsamen( 2, c2, 'GB' ) ) THEN
463 *
464 * GB: general banded matrices
465 *
466  la = ( 2*kdmax+1 )*nmax
467  lafac = ( 3*kdmax+1 )*nmax
468  ntypes = 8
469  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
470 *
471  IF( tstchk ) THEN
472  CALL zchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
473  $ nsval, thresh, tsterr, a( 1, 1 ), la,
474  $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
475  $ b( 1, 3 ), work, rwork, iwork, nout )
476  ELSE
477  WRITE( nout, fmt = 9989 )path
478  END IF
479 *
480  IF( tstdrv ) THEN
481  CALL zdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
482  $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
483  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
484  $ work, rwork, iwork, nout )
485  ELSE
486  WRITE( nout, fmt = 9988 )path
487  END IF
488 *
489  ELSE IF( lsamen( 2, c2, 'GT' ) ) THEN
490 *
491 * GT: general tridiagonal matrices
492 *
493  ntypes = 12
494  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
495 *
496  IF( tstchk ) THEN
497  CALL zchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
498  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
499  $ b( 1, 3 ), work, rwork, iwork, nout )
500  ELSE
501  WRITE( nout, fmt = 9989 )path
502  END IF
503 *
504  IF( tstdrv ) THEN
505  CALL zdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
506  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
507  $ b( 1, 3 ), work, rwork, iwork, nout )
508  ELSE
509  WRITE( nout, fmt = 9988 )path
510  END IF
511 *
512  ELSE IF( lsamen( 2, c2, 'PO' ) ) THEN
513 *
514 * PO: positive definite matrices
515 *
516  ntypes = 9
517  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
518 *
519  IF( tstchk ) THEN
520  CALL zchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
521  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
522  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
523  $ work, rwork, nout )
524  ELSE
525  WRITE( nout, fmt = 9989 )path
526  END IF
527 *
528  IF( tstdrv ) THEN
529  CALL zdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
530  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
531  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
532  $ rwork, nout )
533  ELSE
534  WRITE( nout, fmt = 9988 )path
535  END IF
536 *
537  ELSE IF( lsamen( 2, c2, 'PS' ) ) THEN
538 *
539 * PS: positive semi-definite matrices
540 *
541  ntypes = 9
542 *
543  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
544 *
545  IF( tstchk ) THEN
546  CALL zchkps( dotype, nn, nval, nnb2, nbval2, nrank,
547  $ rankval, thresh, tsterr, lda, a( 1, 1 ),
548  $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
549  $ nout )
550  ELSE
551  WRITE( nout, fmt = 9989 )path
552  END IF
553 *
554  ELSE IF( lsamen( 2, c2, 'PP' ) ) THEN
555 *
556 * PP: positive definite packed matrices
557 *
558  ntypes = 9
559  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
560 *
561  IF( tstchk ) THEN
562  CALL zchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
563  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
564  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
565  $ nout )
566  ELSE
567  WRITE( nout, fmt = 9989 )path
568  END IF
569 *
570  IF( tstdrv ) THEN
571  CALL zdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
572  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
573  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
574  $ rwork, nout )
575  ELSE
576  WRITE( nout, fmt = 9988 )path
577  END IF
578 *
579  ELSE IF( lsamen( 2, c2, 'PB' ) ) THEN
580 *
581 * PB: positive definite banded matrices
582 *
583  ntypes = 8
584  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
585 *
586  IF( tstchk ) THEN
587  CALL zchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
588  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
589  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
590  $ work, rwork, nout )
591  ELSE
592  WRITE( nout, fmt = 9989 )path
593  END IF
594 *
595  IF( tstdrv ) THEN
596  CALL zdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
597  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
598  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
599  $ rwork, nout )
600  ELSE
601  WRITE( nout, fmt = 9988 )path
602  END IF
603 *
604  ELSE IF( lsamen( 2, c2, 'PT' ) ) THEN
605 *
606 * PT: positive definite tridiagonal matrices
607 *
608  ntypes = 12
609  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
610 *
611  IF( tstchk ) THEN
612  CALL zchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
613  $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
614  $ b( 1, 3 ), work, rwork, nout )
615  ELSE
616  WRITE( nout, fmt = 9989 )path
617  END IF
618 *
619  IF( tstdrv ) THEN
620  CALL zdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
621  $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
622  $ b( 1, 3 ), work, rwork, nout )
623  ELSE
624  WRITE( nout, fmt = 9988 )path
625  END IF
626 *
627  ELSE IF( lsamen( 2, c2, 'HE' ) ) THEN
628 *
629 * HE: Hermitian indefinite matrices
630 *
631  ntypes = 10
632  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
633 *
634  IF( tstchk ) THEN
635  CALL zchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
636  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
637  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
638  $ work, rwork, iwork, nout )
639  ELSE
640  WRITE( nout, fmt = 9989 )path
641  END IF
642 *
643  IF( tstdrv ) THEN
644  CALL zdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
645  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
646  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
647  $ nout )
648  ELSE
649  WRITE( nout, fmt = 9988 )path
650  END IF
651 
652  ELSE IF( lsamen( 2, c2, 'HR' ) ) THEN
653 *
654 * HR: Hermitian indefinite matrices,
655 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
656 *
657  ntypes = 10
658  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
659 *
660  IF( tstchk ) THEN
661  CALL zchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
662  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
663  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
664  $ work, rwork, iwork, nout )
665  ELSE
666  WRITE( nout, fmt = 9989 )path
667  END IF
668 *
669  IF( tstdrv ) THEN
670  CALL zdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
671  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
672  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
673  $ rwork, iwork, nout )
674  ELSE
675  WRITE( nout, fmt = 9988 )path
676  END IF
677 *
678  ELSE IF( lsamen( 2, c2, 'HK' ) ) THEN
679 *
680 * HK: Hermitian indefinite matrices,
681 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
682 * differnet matrix storage format than HR path version.
683 *
684  ntypes = 10
685  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
686 *
687  IF( tstchk ) THEN
688  CALL zchkhe_rk ( dotype, nn, nval, nnb2, nbval2, nns, nsval,
689  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
690  $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
691  $ b( 1, 3 ), work, rwork, iwork, nout )
692  ELSE
693  WRITE( nout, fmt = 9989 )path
694  END IF
695 *
696  IF( tstdrv ) THEN
697  CALL zdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
698  $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
699  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
700  $ rwork, iwork, nout )
701  ELSE
702  WRITE( nout, fmt = 9988 )path
703  END IF
704 *
705  ELSE IF( lsamen( 2, c2, 'HA' ) ) THEN
706 *
707 * HA: Hermitian matrices,
708 * Aasen Algorithm
709 *
710  ntypes = 10
711  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
712 *
713  IF( tstchk ) THEN
714  CALL zchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
715  $ nsval, thresh, tsterr, lda,
716  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
717  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
718  $ work, rwork, iwork, nout )
719  ELSE
720  WRITE( nout, fmt = 9989 )path
721  END IF
722 *
723  IF( tstdrv ) THEN
724  CALL zdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
725  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
726  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
727  $ work, rwork, iwork, nout )
728  ELSE
729  WRITE( nout, fmt = 9988 )path
730  END IF
731 *
732  ELSE IF( lsamen( 2, c2, 'H2' ) ) THEN
733 *
734 * H2: Hermitian matrices,
735 * with partial (Aasen's) pivoting algorithm
736 *
737  ntypes = 10
738  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
739 *
740  IF( tstchk ) THEN
741  CALL zchkhe_aa_2stage( dotype, nn, nval, nnb2, nbval2,
742  $ nns, nsval, thresh, tsterr, lda,
743  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
744  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
745  $ work, rwork, iwork, nout )
746  ELSE
747  WRITE( nout, fmt = 9989 )path
748  END IF
749 *
750  IF( tstdrv ) THEN
751  CALL zdrvhe_aa_2stage(
752  $ dotype, nn, nval, nrhs, thresh, tsterr,
753  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
754  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
755  $ work, rwork, iwork, nout )
756  ELSE
757  WRITE( nout, fmt = 9988 )path
758  END IF
759 *
760 *
761  ELSE IF( lsamen( 2, c2, 'HP' ) ) THEN
762 *
763 * HP: Hermitian indefinite packed matrices
764 *
765  ntypes = 10
766  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
767 *
768  IF( tstchk ) THEN
769  CALL zchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
770  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
771  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
772  $ iwork, nout )
773  ELSE
774  WRITE( nout, fmt = 9989 )path
775  END IF
776 *
777  IF( tstdrv ) THEN
778  CALL zdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
779  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
780  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
781  $ nout )
782  ELSE
783  WRITE( nout, fmt = 9988 )path
784  END IF
785 *
786  ELSE IF( lsamen( 2, c2, 'SY' ) ) THEN
787 *
788 * SY: symmetric indefinite matrices,
789 * with partial (Bunch-Kaufman) pivoting algorithm
790 *
791  ntypes = 11
792  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
793 *
794  IF( tstchk ) THEN
795  CALL zchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
796  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
797  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
798  $ work, rwork, iwork, nout )
799  ELSE
800  WRITE( nout, fmt = 9989 )path
801  END IF
802 *
803  IF( tstdrv ) THEN
804  CALL zdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
805  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
806  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
807  $ nout )
808  ELSE
809  WRITE( nout, fmt = 9988 )path
810  END IF
811 *
812  ELSE IF( lsamen( 2, c2, 'SR' ) ) THEN
813 *
814 * SR: symmetric indefinite matrices,
815 * with bounded Bunch-Kaufman (rook) pivoting algorithm
816 *
817  ntypes = 11
818  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
819 *
820  IF( tstchk ) THEN
821  CALL zchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
822  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
823  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
824  $ work, rwork, iwork, nout )
825  ELSE
826  WRITE( nout, fmt = 9989 )path
827  END IF
828 *
829  IF( tstdrv ) THEN
830  CALL zdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
831  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
832  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
833  $ rwork, iwork, nout )
834  ELSE
835  WRITE( nout, fmt = 9988 )path
836  END IF
837 *
838  ELSE IF( lsamen( 2, c2, 'SK' ) ) THEN
839 *
840 * SK: symmetric indefinite matrices,
841 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
842 * differnet matrix storage format than SR path version.
843 *
844  ntypes = 11
845  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
846 *
847  IF( tstchk ) THEN
848  CALL zchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
849  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
850  $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
851  $ b( 1, 3 ), work, rwork, iwork, nout )
852  ELSE
853  WRITE( nout, fmt = 9989 )path
854  END IF
855 *
856  IF( tstdrv ) THEN
857  CALL zdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
858  $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
859  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
860  $ rwork, iwork, nout )
861  ELSE
862  WRITE( nout, fmt = 9988 )path
863  END IF
864 *
865  ELSE IF( lsamen( 2, c2, 'SA' ) ) THEN
866 *
867 * SA: symmetric indefinite matrices with Aasen's algorithm,
868 *
869  ntypes = 11
870  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
871 *
872  IF( tstchk ) THEN
873  CALL zchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
874  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
875  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
876  $ b( 1, 3 ), work, rwork, iwork, nout )
877  ELSE
878  WRITE( nout, fmt = 9989 )path
879  END IF
880 *
881  IF( tstdrv ) THEN
882  CALL zdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
883  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
884  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
885  $ rwork, iwork, nout )
886  ELSE
887  WRITE( nout, fmt = 9988 )path
888  END IF
889 *
890  ELSE IF( lsamen( 2, c2, 'S2' ) ) THEN
891 *
892 * S2: symmetric indefinite matrices with Aasen's algorithm
893 * 2 stage
894 *
895  ntypes = 11
896  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
897 *
898  IF( tstchk ) THEN
899  CALL zchksy_aa_2stage( dotype, nn, nval, nnb2, nbval2, nns,
900  $ nsval, thresh, tsterr, lda,
901  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
902  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
903  $ work, rwork, iwork, nout )
904  ELSE
905  WRITE( nout, fmt = 9989 )path
906  END IF
907 *
908  IF( tstdrv ) THEN
909  CALL zdrvsy_aa_2stage(
910  $ dotype, nn, nval, nrhs, thresh, tsterr,
911  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
912  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
913  $ rwork, iwork, nout )
914  ELSE
915  WRITE( nout, fmt = 9988 )path
916  END IF
917 *
918  ELSE IF( lsamen( 2, c2, 'SP' ) ) THEN
919 *
920 * SP: symmetric indefinite packed matrices,
921 * with partial (Bunch-Kaufman) pivoting algorithm
922 *
923  ntypes = 11
924  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
925 *
926  IF( tstchk ) THEN
927  CALL zchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
928  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
929  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
930  $ iwork, nout )
931  ELSE
932  WRITE( nout, fmt = 9989 )path
933  END IF
934 *
935  IF( tstdrv ) THEN
936  CALL zdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
937  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
938  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
939  $ nout )
940  ELSE
941  WRITE( nout, fmt = 9988 )path
942  END IF
943 *
944  ELSE IF( lsamen( 2, c2, 'TR' ) ) THEN
945 *
946 * TR: triangular matrices
947 *
948  ntypes = 18
949  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
950 *
951  IF( tstchk ) THEN
952  CALL zchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
953  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
954  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
955  $ nout )
956  ELSE
957  WRITE( nout, fmt = 9989 )path
958  END IF
959 *
960  ELSE IF( lsamen( 2, c2, 'TP' ) ) THEN
961 *
962 * TP: triangular packed matrices
963 *
964  ntypes = 18
965  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
966 *
967  IF( tstchk ) THEN
968  CALL zchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
969  $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
970  $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
971  ELSE
972  WRITE( nout, fmt = 9989 )path
973  END IF
974 *
975  ELSE IF( lsamen( 2, c2, 'TB' ) ) THEN
976 *
977 * TB: triangular banded matrices
978 *
979  ntypes = 17
980  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
981 *
982  IF( tstchk ) THEN
983  CALL zchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
984  $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
985  $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
986  ELSE
987  WRITE( nout, fmt = 9989 )path
988  END IF
989 *
990  ELSE IF( lsamen( 2, c2, 'QR' ) ) THEN
991 *
992 * QR: QR factorization
993 *
994  ntypes = 8
995  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
996 *
997  IF( tstchk ) THEN
998  CALL zchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
999  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1000  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1001  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1002  $ work, rwork, iwork, nout )
1003  ELSE
1004  WRITE( nout, fmt = 9989 )path
1005  END IF
1006 *
1007  ELSE IF( lsamen( 2, c2, 'LQ' ) ) THEN
1008 *
1009 * LQ: LQ factorization
1010 *
1011  ntypes = 8
1012  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1013 *
1014  IF( tstchk ) THEN
1015  CALL zchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1016  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1017  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1018  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1019  $ work, rwork, nout )
1020  ELSE
1021  WRITE( nout, fmt = 9989 )path
1022  END IF
1023 *
1024  ELSE IF( lsamen( 2, c2, 'QL' ) ) THEN
1025 *
1026 * QL: QL factorization
1027 *
1028  ntypes = 8
1029  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1030 *
1031  IF( tstchk ) THEN
1032  CALL zchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1033  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1034  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1035  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1036  $ work, rwork, nout )
1037  ELSE
1038  WRITE( nout, fmt = 9989 )path
1039  END IF
1040 *
1041  ELSE IF( lsamen( 2, c2, 'RQ' ) ) THEN
1042 *
1043 * RQ: RQ factorization
1044 *
1045  ntypes = 8
1046  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1047 *
1048  IF( tstchk ) THEN
1049  CALL zchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1050  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1051  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1052  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1053  $ work, rwork, iwork, nout )
1054  ELSE
1055  WRITE( nout, fmt = 9989 )path
1056  END IF
1057 *
1058  ELSE IF( lsamen( 2, c2, 'EQ' ) ) THEN
1059 *
1060 * EQ: Equilibration routines for general and positive definite
1061 * matrices (THREQ should be between 2 and 10)
1062 *
1063  IF( tstchk ) THEN
1064  CALL zchkeq( threq, nout )
1065  ELSE
1066  WRITE( nout, fmt = 9989 )path
1067  END IF
1068 *
1069  ELSE IF( lsamen( 2, c2, 'TZ' ) ) THEN
1070 *
1071 * TZ: Trapezoidal matrix
1072 *
1073  ntypes = 3
1074  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1075 *
1076  IF( tstchk ) THEN
1077  CALL zchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1078  $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1079  $ b( 1, 1 ), work, rwork, nout )
1080  ELSE
1081  WRITE( nout, fmt = 9989 )path
1082  END IF
1083 *
1084  ELSE IF( lsamen( 2, c2, 'QP' ) ) THEN
1085 *
1086 * QP: QR factorization with pivoting
1087 *
1088  ntypes = 6
1089  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1090 *
1091  IF( tstchk ) THEN
1092  CALL zchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1093  $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1094  $ b( 1, 1 ), work, rwork, iwork,
1095  $ nout )
1096  ELSE
1097  WRITE( nout, fmt = 9989 )path
1098  END IF
1099 *
1100  ELSE IF( lsamen( 2, c2, 'LS' ) ) THEN
1101 *
1102 * LS: Least squares drivers
1103 *
1104  ntypes = 6
1105  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1106 *
1107  IF( tstdrv ) THEN
1108  CALL zdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1109  $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1110  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1111  $ s( 1 ), s( nmax+1 ), nout )
1112  ELSE
1113  WRITE( nout, fmt = 9989 )path
1114  END IF
1115 *
1116 *
1117  ELSE IF( lsamen( 2, c2, 'QT' ) ) THEN
1118 *
1119 * QT: QRT routines for general matrices
1120 *
1121  IF( tstchk ) THEN
1122  CALL zchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1123  $ nbval, nout )
1124  ELSE
1125  WRITE( nout, fmt = 9989 )path
1126  END IF
1127 *
1128  ELSE IF( lsamen( 2, c2, 'QX' ) ) THEN
1129 *
1130 * QX: QRT routines for triangular-pentagonal matrices
1131 *
1132  IF( tstchk ) THEN
1133  CALL zchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1134  $ nbval, nout )
1135  ELSE
1136  WRITE( nout, fmt = 9989 )path
1137  END IF
1138 *
1139  ELSE IF( lsamen( 2, c2, 'TQ' ) ) THEN
1140 *
1141 * TQ: LQT routines for general matrices
1142 *
1143  IF( tstchk ) THEN
1144  CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1145  $ nbval, nout )
1146  ELSE
1147  WRITE( nout, fmt = 9989 )path
1148  END IF
1149 *
1150  ELSE IF( lsamen( 2, c2, 'XQ' ) ) THEN
1151 *
1152 * XQ: LQT routines for triangular-pentagonal matrices
1153 *
1154  IF( tstchk ) THEN
1155  CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1156  $ nbval, nout )
1157  ELSE
1158  WRITE( nout, fmt = 9989 )path
1159  END IF
1160 *
1161  ELSE IF( lsamen( 2, c2, 'TS' ) ) THEN
1162 *
1163 * TS: QR routines for tall-skinny matrices
1164 *
1165  IF( tstchk ) THEN
1166  CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1167  $ nbval, nout )
1168  ELSE
1169  WRITE( nout, fmt = 9989 )path
1170  END IF
1171 *
1172  ELSE IF( lsamen( 2, c2, 'TQ' ) ) THEN
1173 *
1174 * TQ: LQT routines for general matrices
1175 *
1176  IF( tstchk ) THEN
1177  CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1178  $ nbval, nout )
1179  ELSE
1180  WRITE( nout, fmt = 9989 )path
1181  END IF
1182 *
1183  ELSE IF( lsamen( 2, c2, 'XQ' ) ) THEN
1184 *
1185 * XQ: LQT routines for triangular-pentagonal matrices
1186 *
1187  IF( tstchk ) THEN
1188  CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1189  $ nbval, nout )
1190  ELSE
1191  WRITE( nout, fmt = 9989 )path
1192  END IF
1193 *
1194  ELSE IF( lsamen( 2, c2, 'TS' ) ) THEN
1195 *
1196 * TS: QR routines for tall-skinny matrices
1197 *
1198  IF( tstchk ) THEN
1199  CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1200  $ nbval, nout )
1201  ELSE
1202  WRITE( nout, fmt = 9989 )path
1203  END IF
1204 *
1205  ELSE
1206 *
1207  WRITE( nout, fmt = 9990 )path
1208  END IF
1209 *
1210 * Go back to get another input line.
1211 *
1212  GO TO 80
1213 *
1214 * Branch to this line when the last record is read.
1215 *
1216  140 CONTINUE
1217  CLOSE ( nin )
1218  s2 = dsecnd( )
1219  WRITE( nout, fmt = 9998 )
1220  WRITE( nout, fmt = 9997 )s2 - s1
1221 *
1222  9999 FORMAT( / ' Execution not attempted due to input errors' )
1223  9998 FORMAT( / ' End of tests' )
1224  9997 FORMAT( ' Total time used = ', f12.2, ' seconds', / )
1225  9996 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be >=',
1226  $ i6 )
1227  9995 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be <=',
1228  $ i6 )
1229  9994 FORMAT( ' Tests of the COMPLEX*16 LAPACK routines ',
1230  $ / ' LAPACK VERSION ', i1, '.', i1, '.', i1,
1231  $ / / ' The following parameter values will be used:' )
1232  9993 FORMAT( 4x, a4, ': ', 10i6, / 11x, 10i6 )
1233  9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
1234  $ 'less than', f8.2, / )
1235  9991 FORMAT( ' Relative machine ', a, ' is taken to be', d16.6 )
1236  9990 FORMAT( / 1x, a3, ': Unrecognized path name' )
1237  9989 FORMAT( / 1x, a3, ' routines were not tested' )
1238  9988 FORMAT( / 1x, a3, ' driver routines were not tested' )
1239 *
1240 * End of ZCHKAA
1241 *
1242  END
subroutine zchkeq(THRESH, NOUT)
ZCHKEQ
Definition: zchkeq.f:56
subroutine zdrvpb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPB
Definition: zdrvpb.f:161
subroutine zdrvsy_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_RK
Definition: zdrvsy_rk.f:160
subroutine zchkhe_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_AA
Definition: zchkhe_aa.f:174
subroutine zchksy_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_AA
Definition: zchksy_aa.f:173
subroutine zchkpb(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPB
Definition: zchkpb.f:170
subroutine zdrvsy_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_ROOK
Definition: zdrvsy_rook.f:155
subroutine zchktsqr(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRT
Definition: zchktsqr.f:104
subroutine zdrvhe_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA_2STAGE
subroutine zchkhe_rook(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_ROOK
Definition: zchkhe_rook.f:174
subroutine zdrvhe(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE
Definition: zdrvhe.f:155
subroutine zchkhe_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_AA_2STAGE
subroutine zdrvhe_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_ROOK
Definition: zdrvhe_rook.f:155
subroutine zchkhe_rk(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_RK
Definition: zchkhe_rk.f:179
subroutine zchkhp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHP
Definition: zchkhp.f:166
subroutine zchkgb(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, A, LA, AFAC, LAFAC, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGB
Definition: zchkgb.f:193
subroutine zchktb(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AB, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTB
Definition: zchktb.f:151
subroutine zchksy(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY
Definition: zchksy.f:173
subroutine zchkpp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPP
Definition: zchkpp.f:161
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:92
subroutine zchkql(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
ZCHKQL
Definition: zchkql.f:198
subroutine zdrvsy_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_AA
Definition: zdrvsy_aa.f:155
subroutine zdrvsp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSP
Definition: zdrvsp.f:159
subroutine zchksp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSP
Definition: zchksp.f:166
subroutine zdrvpo(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPO
Definition: zdrvpo.f:161
subroutine zdrvpt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZDRVPT
Definition: zdrvpt.f:142
subroutine zchksy_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_AA_2STAGE
subroutine zchkqr(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AR, AC, B, X, XACT, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKQR
Definition: zchkqr.f:203
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:50
subroutine zdrvhe_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_RK
Definition: zdrvhe_rk.f:159
subroutine zchkhe(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE
Definition: zchkhe.f:173
subroutine zchklqtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKLQTP
Definition: zchklqtp.f:104
subroutine zdrvsy(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY
Definition: zdrvsy.f:155
subroutine zchkpo(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPO
Definition: zchkpo.f:170
program zchkaa
ZCHKAA
Definition: zchkaa.f:116
subroutine zchktr(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTR
Definition: zchktr.f:165
subroutine zchkpt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPT
Definition: zchkpt.f:149
subroutine zchksy_rook(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_ROOK
Definition: zchksy_rook.f:174
subroutine zchkqrtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRTP
Definition: zchkqrtp.f:104
subroutine zchkrq(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AR, AC, B, X, XACT, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKRQ
Definition: zchkrq.f:203
subroutine zchksy_rk(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_RK
Definition: zchksy_rk.f:179
subroutine zchktp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AP, AINVP, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTP
Definition: zchktp.f:153
subroutine zchklqt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKLQT
Definition: zchklqt.f:104
subroutine zchkq3(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, THRESH, A, COPYA, S, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKQ3
Definition: zchkq3.f:160
subroutine zdrvge(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGE
Definition: zdrvge.f:166
subroutine zdrvpp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPP
Definition: zdrvpp.f:161
subroutine zchkqrt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRT
Definition: zchkqrt.f:103
subroutine zdrvhe_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA
Definition: zdrvhe_aa.f:155
subroutine zdrvls(DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB, NBVAL, NXVAL, THRESH, TSTERR, A, COPYA, B, COPYB, C, S, COPYS, NOUT)
ZDRVLS
Definition: zdrvls.f:194
subroutine zdrvgt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVGT
Definition: zdrvgt.f:141
subroutine zchktz(DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A, COPYA, S, TAU, WORK, RWORK, NOUT)
ZCHKTZ
Definition: zchktz.f:139
subroutine zchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
ZCHKPS
Definition: zchkps.f:156
subroutine zchkgt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGT
Definition: zchkgt.f:149
subroutine zdrvhp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHP
Definition: zdrvhp.f:159
subroutine zchkge(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGE
Definition: zchkge.f:188
subroutine zdrvgb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, LA, AFB, LAFB, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGB
Definition: zdrvgb.f:174
subroutine zchklq(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
ZCHKLQ
Definition: zchklq.f:198
subroutine zdrvsy_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_AA_2STAGE