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