1*> \brief \b SCHKAA
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 SCHKAA
12*
13*
14*> \par Purpose:
15*  =============
16*>
17*> \verbatim
18*>
19*> SCHKAA is the main test program for the REAL LAPACK
20*> linear equation 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 40 lines:
28*> Data file for testing REAL LAPACK linear eqn. 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*> 20.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*> SGE   11               List types on next line if 0 < NTYPES < 11
45*> SGB    8               List types on next line if 0 < NTYPES <  8
46*> SGT   12               List types on next line if 0 < NTYPES < 12
47*> SPO    9               List types on next line if 0 < NTYPES <  9
48*> SPS    9               List types on next line if 0 < NTYPES <  9
49*> SPP    9               List types on next line if 0 < NTYPES <  9
50*> SPB    8               List types on next line if 0 < NTYPES <  8
51*> SPT   12               List types on next line if 0 < NTYPES < 12
52*> SSY   10               List types on next line if 0 < NTYPES < 10
53*> SSR   10               List types on next line if 0 < NTYPES < 10
54*> SSK   10               List types on next line if 0 < NTYPES < 10
55*> SSA   10               List types on next line if 0 < NTYPES < 10
56*> SS2   10               List types on next line if 0 < NTYPES < 10
57*> SSP   10               List types on next line if 0 < NTYPES < 10
58*> STR   18               List types on next line if 0 < NTYPES < 18
59*> STP   18               List types on next line if 0 < NTYPES < 18
60*> STB   17               List types on next line if 0 < NTYPES < 17
61*> SQR    8               List types on next line if 0 < NTYPES <  8
62*> SRQ    8               List types on next line if 0 < NTYPES <  8
63*> SLQ    8               List types on next line if 0 < NTYPES <  8
64*> SQL    8               List types on next line if 0 < NTYPES <  8
65*> SQP    6               List types on next line if 0 < NTYPES <  6
66*> STZ    3               List types on next line if 0 < NTYPES <  3
67*> SLS    6               List types on next line if 0 < NTYPES <  6
68*> SEQ
69*> SQT
70*> SQX
71*> STS
72*> SHH
73*> \endverbatim
74*
75*  Parameters:
76*  ==========
77*
78*> \verbatim
79*>  NMAX    INTEGER
80*>          The maximum allowable value for M and N.
81*>
82*>  MAXIN   INTEGER
83*>          The number of different values that can be used for each of
84*>          M, N, NRHS, NB, NX and RANK
85*>
86*>  MAXRHS  INTEGER
87*>          The maximum number of right hand sides
88*>
89*>  MATMAX  INTEGER
90*>          The maximum number of matrix types to use for testing
91*>
92*>  NIN     INTEGER
93*>          The unit number for input
94*>
95*>  NOUT    INTEGER
96*>          The unit number for output
97*> \endverbatim
98*
99*  Authors:
100*  ========
101*
102*> \author Univ. of Tennessee
103*> \author Univ. of California Berkeley
104*> \author Univ. of Colorado Denver
105*> \author NAG Ltd.
106*
107*> \ingroup single_lin
108*
109*  =====================================================================
110      PROGRAM SCHKAA
111*
112*  -- LAPACK test routine --
113*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
114*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
115*
116*  =====================================================================
117*
118*     .. Parameters ..
119      INTEGER            NMAX
120      PARAMETER          ( NMAX = 132 )
121      INTEGER            MAXIN
122      PARAMETER          ( MAXIN = 12 )
123      INTEGER            MAXRHS
124      PARAMETER          ( MAXRHS = 16 )
125      INTEGER            MATMAX
126      PARAMETER          ( MATMAX = 30 )
127      INTEGER            NIN, NOUT
128      PARAMETER          ( NIN = 5, NOUT = 6 )
129      INTEGER            KDMAX
130      PARAMETER          ( KDMAX = NMAX+( NMAX+1 ) / 4 )
131*     ..
132*     .. Local Scalars ..
133      LOGICAL            FATAL, TSTCHK, TSTDRV, TSTERR
134      CHARACTER          C1
135      CHARACTER*2        C2
136      CHARACTER*3        PATH
137      CHARACTER*10       INTSTR
138      CHARACTER*72       ALINE
139      INTEGER            I, IC, J, K, LA, LAFAC, LDA, NB, NM, NMATS, NN,
140     $                   NNB, NNB2, NNS, NRHS, NTYPES, NRANK,
141     $                   VERS_MAJOR, VERS_MINOR, VERS_PATCH
142      REAL               EPS, S1, S2, THREQ, THRESH
143*     ..
144*     .. Local Arrays ..
145      LOGICAL            DOTYPE( MATMAX )
146      INTEGER            IWORK( 25*NMAX ), MVAL( MAXIN ),
147     $                   NBVAL( MAXIN ), NBVAL2( MAXIN ),
148     $                   NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
149     $                   RANKVAL( MAXIN ), PIV( NMAX )
150      REAL               E( NMAX ), S( 2*NMAX )
151*     ..
152*     .. Allocatable Arrays ..
153      INTEGER AllocateStatus
154      REAL, DIMENSION(:), ALLOCATABLE :: RWORK
155      REAL, DIMENSION(:,:), ALLOCATABLE :: A, B, WORK
156*     ..
157*     .. External Functions ..
158      LOGICAL            LSAME, LSAMEN
159      REAL               SECOND, SLAMCH
160      EXTERNAL           LSAME, LSAMEN, SECOND, SLAMCH
161*     ..
162*     .. External Subroutines ..
163      EXTERNAL           ALAREQ, SCHKEQ, SCHKGB, SCHKGE, SCHKGT, SCHKLQ,
164     $                   SCHKORHR_COL, SCHKPB, SCHKPO, SCHKPS, SCHKPP,
165     $                   SCHKPT, SCHKQ3, SCHKQL, SCHKQR, SCHKRQ, SCHKSP,
166     $                   SCHKSY, SCHKSY_ROOK, SCHKSY_RK, SCHKSY_AA,
167     $                   SCHKTB, SCHKTP, SCHKTR, SCHKTZ, SDRVGB, SDRVGE,
168     $                   SDRVGT, SDRVLS, SDRVPB, SDRVPO, SDRVPP, SDRVPT,
169     $                   SDRVSP, SDRVSY, SDRVSY_ROOK, SDRVSY_RK,
170     $                   SDRVSY_AA, ILAVER, SCHKLQTP, SCHKQRT, SCHKQRTP,
171     $                   SCHKLQT, SCHKTSQR
172*     ..
173*     .. Scalars in Common ..
174      LOGICAL            LERR, OK
175      CHARACTER*32       SRNAMT
176      INTEGER            INFOT, NUNIT
177*     ..
178*     .. Arrays in Common ..
179      INTEGER            IPARMS( 100 )
180*     ..
181*     .. Common blocks ..
182      COMMON             / CLAENV / IPARMS
183      COMMON             / INFOC / INFOT, NUNIT, OK, LERR
184      COMMON             / SRNAMC / SRNAMT
185*     ..
186*     .. Data statements ..
187      DATA               THREQ / 2.0E0 / , INTSTR / '0123456789' /
188*     ..
189*     .. Allocate memory dynamically ..
190*
191      ALLOCATE (A( ( KDMAX+1 )*NMAX, 7 ), STAT = AllocateStatus )
192      IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
193      ALLOCATE (B( NMAX*MAXRHS, 4 ), STAT = AllocateStatus )
194      IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
195      ALLOCATE (WORK( NMAX, NMAX+MAXRHS+30 ) , STAT = AllocateStatus )
196      IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
197      ALLOCATE (RWORK( 5*NMAX+2*MAXRHS ), STAT = AllocateStatus )
198      IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
199*     ..
200*     .. Executable Statements ..
201*
202      S1 = SECOND( )
203      LDA = NMAX
204      FATAL = .FALSE.
205*
206*     Read a dummy line.
207*
208      READ( NIN, FMT = * )
209*
210*     Report values of parameters.
211*
212      CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
213      WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
214*
215*     Read the values of M
216*
217      READ( NIN, FMT = * )NM
218      IF( NM.LT.1 ) THEN
219         WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
220         NM = 0
221         FATAL = .TRUE.
222      ELSE IF( NM.GT.MAXIN ) THEN
223         WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
224         NM = 0
225         FATAL = .TRUE.
226      END IF
227      READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
228      DO 10 I = 1, NM
229         IF( MVAL( I ).LT.0 ) THEN
230            WRITE( NOUT, FMT = 9996 )' M  ', MVAL( I ), 0
231            FATAL = .TRUE.
232         ELSE IF( MVAL( I ).GT.NMAX ) THEN
233            WRITE( NOUT, FMT = 9995 )' M  ', MVAL( I ), NMAX
234            FATAL = .TRUE.
235         END IF
236   10 CONTINUE
237      IF( NM.GT.0 )
238     $   WRITE( NOUT, FMT = 9993 )'M   ', ( MVAL( I ), I = 1, NM )
239*
240*     Read the values of N
241*
242      READ( NIN, FMT = * )NN
243      IF( NN.LT.1 ) THEN
244         WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
245         NN = 0
246         FATAL = .TRUE.
247      ELSE IF( NN.GT.MAXIN ) THEN
248         WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
249         NN = 0
250         FATAL = .TRUE.
251      END IF
252      READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
253      DO 20 I = 1, NN
254         IF( NVAL( I ).LT.0 ) THEN
255            WRITE( NOUT, FMT = 9996 )' N  ', NVAL( I ), 0
256            FATAL = .TRUE.
257         ELSE IF( NVAL( I ).GT.NMAX ) THEN
258            WRITE( NOUT, FMT = 9995 )' N  ', NVAL( I ), NMAX
259            FATAL = .TRUE.
260         END IF
261   20 CONTINUE
262      IF( NN.GT.0 )
263     $   WRITE( NOUT, FMT = 9993 )'N   ', ( NVAL( I ), I = 1, NN )
264*
265*     Read the values of NRHS
266*
267      READ( NIN, FMT = * )NNS
268      IF( NNS.LT.1 ) THEN
269         WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
270         NNS = 0
271         FATAL = .TRUE.
272      ELSE IF( NNS.GT.MAXIN ) THEN
273         WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
274         NNS = 0
275         FATAL = .TRUE.
276      END IF
277      READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
278      DO 30 I = 1, NNS
279         IF( NSVAL( I ).LT.0 ) THEN
280            WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
281            FATAL = .TRUE.
282         ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
283            WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
284            FATAL = .TRUE.
285         END IF
286   30 CONTINUE
287      IF( NNS.GT.0 )
288     $   WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
289*
290*     Read the values of NB
291*
292      READ( NIN, FMT = * )NNB
293      IF( NNB.LT.1 ) THEN
294         WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
295         NNB = 0
296         FATAL = .TRUE.
297      ELSE IF( NNB.GT.MAXIN ) THEN
298         WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
299         NNB = 0
300         FATAL = .TRUE.
301      END IF
302      READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
303      DO 40 I = 1, NNB
304         IF( NBVAL( I ).LT.0 ) THEN
305            WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
306            FATAL = .TRUE.
307         END IF
308   40 CONTINUE
309      IF( NNB.GT.0 )
310     $   WRITE( NOUT, FMT = 9993 )'NB  ', ( NBVAL( I ), I = 1, NNB )
311*
312*     Set NBVAL2 to be the set of unique values of NB
313*
314      NNB2 = 0
315      DO 60 I = 1, NNB
316         NB = NBVAL( I )
317         DO 50 J = 1, NNB2
318            IF( NB.EQ.NBVAL2( J ) )
319     $         GO TO 60
320   50    CONTINUE
321         NNB2 = NNB2 + 1
322         NBVAL2( NNB2 ) = NB
323   60 CONTINUE
324*
325*     Read the values of NX
326*
327      READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
328      DO 70 I = 1, NNB
329         IF( NXVAL( I ).LT.0 ) THEN
330            WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
331            FATAL = .TRUE.
332         END IF
333   70 CONTINUE
334      IF( NNB.GT.0 )
335     $   WRITE( NOUT, FMT = 9993 )'NX  ', ( NXVAL( I ), I = 1, NNB )
336*
337*     Read the values of RANKVAL
338*
339      READ( NIN, FMT = * )NRANK
340      IF( NN.LT.1 ) THEN
341         WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
342         NRANK = 0
343         FATAL = .TRUE.
344      ELSE IF( NN.GT.MAXIN ) THEN
345         WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
346         NRANK = 0
347         FATAL = .TRUE.
348      END IF
349      READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
350      DO I = 1, NRANK
351         IF( RANKVAL( I ).LT.0 ) THEN
352            WRITE( NOUT, FMT = 9996 )' RANK  ', RANKVAL( I ), 0
353            FATAL = .TRUE.
354         ELSE IF( RANKVAL( I ).GT.100 ) THEN
355            WRITE( NOUT, FMT = 9995 )' RANK  ', RANKVAL( I ), 100
356            FATAL = .TRUE.
357         END IF
358      END DO
359      IF( NRANK.GT.0 )
360     $   WRITE( NOUT, FMT = 9993 )'RANK % OF N',
361     $   ( RANKVAL( I ), I = 1, NRANK )
362*
363*     Read the threshold value for the test ratios.
364*
365      READ( NIN, FMT = * )THRESH
366      WRITE( NOUT, FMT = 9992 )THRESH
367*
368*     Read the flag that indicates whether to test the LAPACK routines.
369*
370      READ( NIN, FMT = * )TSTCHK
371*
372*     Read the flag that indicates whether to test the driver routines.
373*
374      READ( NIN, FMT = * )TSTDRV
375*
376*     Read the flag that indicates whether to test the error exits.
377*
378      READ( NIN, FMT = * )TSTERR
379*
380      IF( FATAL ) THEN
381         WRITE( NOUT, FMT = 9999 )
382         STOP
383      END IF
384*
385*     Calculate and print the machine dependent constants.
386*
387      EPS = SLAMCH( 'Underflow threshold' )
388      WRITE( NOUT, FMT = 9991 )'underflow', EPS
389      EPS = SLAMCH( 'Overflow threshold' )
390      WRITE( NOUT, FMT = 9991 )'overflow ', EPS
391      EPS = SLAMCH( 'Epsilon' )
392      WRITE( NOUT, FMT = 9991 )'precision', EPS
393      WRITE( NOUT, FMT = * )
394*
395   80 CONTINUE
396*
397*     Read a test path and the number of matrix types to use.
398*
399      READ( NIN, FMT = '(A72)', END = 140 )ALINE
400      PATH = ALINE( 1: 3 )
401      NMATS = MATMAX
402      I = 3
403   90 CONTINUE
404      I = I + 1
405      IF( I.GT.72 ) THEN
406         NMATS = MATMAX
407         GO TO 130
408      END IF
409      IF( ALINE( I: I ).EQ.' ' )
410     $   GO TO 90
411      NMATS = 0
412  100 CONTINUE
413      C1 = ALINE( I: I )
414      DO 110 K = 1, 10
415         IF( C1.EQ.INTSTR( K: K ) ) THEN
416            IC = K - 1
417            GO TO 120
418         END IF
419  110 CONTINUE
420      GO TO 130
421  120 CONTINUE
422      NMATS = NMATS*10 + IC
423      I = I + 1
424      IF( I.GT.72 )
425     $   GO TO 130
426      GO TO 100
427  130 CONTINUE
428      C1 = PATH( 1: 1 )
429      C2 = PATH( 2: 3 )
430      NRHS = NSVAL( 1 )
431*
432*     Check first character for correct precision.
433*
434      IF( .NOT.LSAME( C1, 'Single precision' ) ) THEN
435         WRITE( NOUT, FMT = 9990 )PATH
436*
437      ELSE IF( NMATS.LE.0 ) THEN
438*
439*        Check for a positive number of tests requested.
440*
441         WRITE( NOUT, FMT = 9989 )PATH
442*
443      ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
444*
445*        GE:  general matrices
446*
447         NTYPES = 11
448         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
449*
450         IF( TSTCHK ) THEN
451            CALL SCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
452     $                   NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
453     $                   A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
454     $                   B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
455         ELSE
456            WRITE( NOUT, FMT = 9989 )PATH
457         END IF
458*
459         IF( TSTDRV ) THEN
460            CALL SDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
461     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
462     $                   B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
463     $                   RWORK, IWORK, NOUT )
464         ELSE
465            WRITE( NOUT, FMT = 9988 )PATH
466         END IF
467*
468      ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
469*
470*        GB:  general banded matrices
471*
472         LA = ( 2*KDMAX+1 )*NMAX
473         LAFAC = ( 3*KDMAX+1 )*NMAX
474         NTYPES = 8
475         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
476*
477         IF( TSTCHK ) THEN
478            CALL SCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
479     $                   NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
480     $                   A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
481     $                   B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
482         ELSE
483            WRITE( NOUT, FMT = 9989 )PATH
484         END IF
485*
486         IF( TSTDRV ) THEN
487            CALL SDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
488     $                   A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
489     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
490     $                   WORK, RWORK, IWORK, NOUT )
491         ELSE
492            WRITE( NOUT, FMT = 9988 )PATH
493         END IF
494*
495      ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
496*
497*        GT:  general tridiagonal matrices
498*
499         NTYPES = 12
500         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
501*
502         IF( TSTCHK ) THEN
503            CALL SCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
504     $                   A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
505     $                   B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
506         ELSE
507            WRITE( NOUT, FMT = 9989 )PATH
508         END IF
509*
510         IF( TSTDRV ) THEN
511            CALL SDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
512     $                   A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
513     $                   B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
514         ELSE
515            WRITE( NOUT, FMT = 9988 )PATH
516         END IF
517*
518      ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
519*
520*        PO:  positive definite matrices
521*
522         NTYPES = 9
523         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
524*
525         IF( TSTCHK ) THEN
526            CALL SCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
527     $                   THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
528     $                   A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
529     $                   WORK, RWORK, IWORK, NOUT )
530         ELSE
531            WRITE( NOUT, FMT = 9989 )PATH
532         END IF
533*
534         IF( TSTDRV ) THEN
535            CALL SDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
536     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
537     $                   B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
538     $                   RWORK, IWORK, NOUT )
539         ELSE
540            WRITE( NOUT, FMT = 9988 )PATH
541         END IF
542*
543      ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
544*
545*        PS:  positive semi-definite matrices
546*
547         NTYPES = 9
548*
549         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
550*
551         IF( TSTCHK ) THEN
552            CALL SCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
553     $                   RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
554     $                   A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
555     $                   NOUT )
556         ELSE
557            WRITE( NOUT, FMT = 9989 )PATH
558         END IF
559*
560      ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
561*
562*        PP:  positive definite packed matrices
563*
564         NTYPES = 9
565         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
566*
567         IF( TSTCHK ) THEN
568            CALL SCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
569     $                   LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
570     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
571     $                   IWORK, NOUT )
572         ELSE
573            WRITE( NOUT, FMT = 9989 )PATH
574         END IF
575*
576         IF( TSTDRV ) THEN
577            CALL SDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
578     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
579     $                   B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
580     $                   RWORK, IWORK, NOUT )
581         ELSE
582            WRITE( NOUT, FMT = 9988 )PATH
583         END IF
584*
585      ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
586*
587*        PB:  positive definite banded matrices
588*
589         NTYPES = 8
590         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
591*
592         IF( TSTCHK ) THEN
593            CALL SCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
594     $                   THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
595     $                   A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
596     $                   WORK, RWORK, IWORK, NOUT )
597         ELSE
598            WRITE( NOUT, FMT = 9989 )PATH
599         END IF
600*
601         IF( TSTDRV ) THEN
602            CALL SDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
603     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
604     $                   B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
605     $                   RWORK, IWORK, NOUT )
606         ELSE
607            WRITE( NOUT, FMT = 9988 )PATH
608         END IF
609*
610      ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
611*
612*        PT:  positive definite tridiagonal matrices
613*
614         NTYPES = 12
615         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
616*
617         IF( TSTCHK ) THEN
618            CALL SCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
619     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
620     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
621         ELSE
622            WRITE( NOUT, FMT = 9989 )PATH
623         END IF
624*
625         IF( TSTDRV ) THEN
626            CALL SDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
627     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
628     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
629         ELSE
630            WRITE( NOUT, FMT = 9988 )PATH
631         END IF
632*
633      ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
634*
635*        SY:  symmetric indefinite matrices,
636*             with partial (Bunch-Kaufman) pivoting algorithm
637*
638         NTYPES = 10
639         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
640*
641         IF( TSTCHK ) THEN
642            CALL SCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
643     $                   THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
644     $                   A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
645     $                   WORK, RWORK, IWORK, NOUT )
646         ELSE
647            WRITE( NOUT, FMT = 9989 )PATH
648         END IF
649*
650         IF( TSTDRV ) THEN
651            CALL SDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
652     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
653     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
654     $                   NOUT )
655         ELSE
656            WRITE( NOUT, FMT = 9988 )PATH
657         END IF
658*
659      ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
660*
661*        SR:  symmetric indefinite matrices,
662*             with bounded Bunch-Kaufman (rook) pivoting algorithm
663*
664         NTYPES = 10
665         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
666*
667         IF( TSTCHK ) THEN
668            CALL SCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
669     $                       THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
670     $                       A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
671     $                       WORK, RWORK, IWORK, NOUT )
672         ELSE
673            WRITE( NOUT, FMT = 9989 )PATH
674         END IF
675*
676         IF( TSTDRV ) THEN
677            CALL SDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
678     $                        LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
679     $                        B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
680     $                        WORK, RWORK, IWORK, NOUT )
681         ELSE
682            WRITE( NOUT, FMT = 9988 )PATH
683         END IF
684*
685      ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
686*
687*        SK:  symmetric indefinite matrices,
688*             with bounded Bunch-Kaufman (rook) pivoting algorithm,
689*             different matrix storage format than SR path version.
690*
691         NTYPES = 10
692         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
693*
694         IF( TSTCHK ) THEN
695            CALL SCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
696     $                      THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
697     $                      E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
698     $                      B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
699         ELSE
700            WRITE( NOUT, FMT = 9989 )PATH
701         END IF
702*
703         IF( TSTDRV ) THEN
704            CALL SDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
705     $                      LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ),
706     $                      B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
707     $                      WORK, RWORK, IWORK, NOUT )
708         ELSE
709            WRITE( NOUT, FMT = 9988 )PATH
710         END IF
711*
712      ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN
713*
714*        SA:  symmetric indefinite matrices,
715*             with partial (Aasen's) pivoting algorithm
716*
717         NTYPES = 10
718         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
719*
720         IF( TSTCHK ) THEN
721            CALL SCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS,
722     $                         NSVAL, THRESH, TSTERR, LDA,
723     $                         A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
724     $                         B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
725     $                         WORK, RWORK, IWORK, NOUT )
726         ELSE
727            WRITE( NOUT, FMT = 9989 )PATH
728         END IF
729*
730         IF( TSTDRV ) THEN
731            CALL SDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
732     $                         LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
733     $                         B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
734     $                         WORK, RWORK, IWORK, NOUT )
735        ELSE
736           WRITE( NOUT, FMT = 9988 )PATH
737        END IF
738*
739      ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN
740*
741*        SA:  symmetric indefinite matrices,
742*             with partial (Aasen's) pivoting algorithm
743*
744         NTYPES = 10
745         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
746*
747         IF( TSTCHK ) THEN
748            CALL SCHKSY_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2,
749     $                         NNS, NSVAL, THRESH, TSTERR, LDA,
750     $                         A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
751     $                         B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
752     $                         WORK, RWORK, IWORK, NOUT )
753         ELSE
754            WRITE( NOUT, FMT = 9989 )PATH
755         END IF
756*
757         IF( TSTDRV ) THEN
758            CALL SDRVSY_AA_2STAGE(
759     $                         DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
760     $                         LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
761     $                         B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
762     $                         WORK, RWORK, IWORK, NOUT )
763        ELSE
764           WRITE( NOUT, FMT = 9988 )PATH
765        END IF
766*
767      ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
768*
769*        SP:  symmetric indefinite packed matrices,
770*             with partial (Bunch-Kaufman) pivoting algorithm
771*
772         NTYPES = 10
773         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
774*
775         IF( TSTCHK ) THEN
776            CALL SCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
777     $                   LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
778     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
779     $                   IWORK, NOUT )
780         ELSE
781            WRITE( NOUT, FMT = 9989 )PATH
782         END IF
783*
784         IF( TSTDRV ) THEN
785            CALL SDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
786     $                   A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
787     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
788     $                   NOUT )
789         ELSE
790            WRITE( NOUT, FMT = 9988 )PATH
791         END IF
792*
793      ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN
794*
795*        TR:  triangular matrices
796*
797         NTYPES = 18
798         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
799*
800         IF( TSTCHK ) THEN
801            CALL SCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
802     $                   THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
803     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
804     $                   IWORK, NOUT )
805         ELSE
806            WRITE( NOUT, FMT = 9989 )PATH
807         END IF
808*
809      ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN
810*
811*        TP:  triangular packed matrices
812*
813         NTYPES = 18
814         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
815*
816         IF( TSTCHK ) THEN
817            CALL SCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
818     $                   LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
819     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
820     $                   NOUT )
821         ELSE
822            WRITE( NOUT, FMT = 9989 )PATH
823         END IF
824*
825      ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN
826*
827*        TB:  triangular banded matrices
828*
829         NTYPES = 17
830         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
831*
832         IF( TSTCHK ) THEN
833            CALL SCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
834     $                   LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
835     $                   B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
836     $                   NOUT )
837         ELSE
838            WRITE( NOUT, FMT = 9989 )PATH
839         END IF
840*
841      ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN
842*
843*        QR:  QR factorization
844*
845         NTYPES = 8
846         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
847*
848         IF( TSTCHK ) THEN
849            CALL SCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
850     $                   NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
851     $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
852     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
853     $                   WORK, RWORK, IWORK, NOUT )
854         ELSE
855            WRITE( NOUT, FMT = 9989 )PATH
856         END IF
857*
858      ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN
859*
860*        LQ:  LQ factorization
861*
862         NTYPES = 8
863         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
864*
865         IF( TSTCHK ) THEN
866            CALL SCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
867     $                   NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
868     $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
869     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
870     $                   WORK, RWORK, NOUT )
871         ELSE
872            WRITE( NOUT, FMT = 9989 )PATH
873         END IF
874*
875      ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN
876*
877*        QL:  QL factorization
878*
879         NTYPES = 8
880         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
881*
882         IF( TSTCHK ) THEN
883            CALL SCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
884     $                   NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
885     $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
886     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
887     $                   WORK, RWORK, NOUT )
888         ELSE
889            WRITE( NOUT, FMT = 9989 )PATH
890         END IF
891*
892      ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN
893*
894*        RQ:  RQ factorization
895*
896         NTYPES = 8
897         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
898*
899         IF( TSTCHK ) THEN
900            CALL SCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
901     $                   NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
902     $                   A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
903     $                   B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
904     $                   WORK, RWORK, IWORK, NOUT )
905         ELSE
906            WRITE( NOUT, FMT = 9989 )PATH
907         END IF
908*
909      ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN
910*
911*        QP:  QR factorization with pivoting
912*
913         NTYPES = 6
914         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
915*
916         IF( TSTCHK ) THEN
917            CALL SCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
918     $                   THRESH, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
919     $                   B( 1, 3 ), WORK, IWORK, NOUT )
920         ELSE
921            WRITE( NOUT, FMT = 9989 )PATH
922         END IF
923*
924      ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN
925*
926*        TZ:  Trapezoidal matrix
927*
928         NTYPES = 3
929         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
930*
931         IF( TSTCHK ) THEN
932            CALL SCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
933     $                   A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
934     $                   B( 1, 3 ), WORK, NOUT )
935         ELSE
936            WRITE( NOUT, FMT = 9989 )PATH
937         END IF
938*
939      ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
940*
941*        LS:  Least squares drivers
942*
943         NTYPES = 6
944         CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
945*
946         IF( TSTDRV ) THEN
947            CALL SDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
948     $                   NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
949     $                   A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
950     $                   RWORK, RWORK( NMAX+1 ), NOUT )
951         ELSE
952            WRITE( NOUT, FMT = 9988 )PATH
953         END IF
954*
955      ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN
956*
957*        EQ:  Equilibration routines for general and positive definite
958*             matrices (THREQ should be between 2 and 10)
959*
960         IF( TSTCHK ) THEN
961            CALL SCHKEQ( THREQ, NOUT )
962         ELSE
963            WRITE( NOUT, FMT = 9989 )PATH
964         END IF
965*
966      ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
967*
968*        QT:  QRT routines for general matrices
969*
970         IF( TSTCHK ) THEN
971            CALL SCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
972     $                    NBVAL, NOUT )
973         ELSE
974            WRITE( NOUT, FMT = 9989 )PATH
975         END IF
976*
977      ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
978*
979*        QX:  QRT routines for triangular-pentagonal matrices
980*
981         IF( TSTCHK ) THEN
982            CALL SCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
983     $                     NBVAL, NOUT )
984         ELSE
985            WRITE( NOUT, FMT = 9989 )PATH
986         END IF
987*
988      ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN
989*
990*        TQ:  LQT routines for general matrices
991*
992         IF( TSTCHK ) THEN
993            CALL SCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
994     $                    NBVAL, NOUT )
995         ELSE
996            WRITE( NOUT, FMT = 9989 )PATH
997         END IF
998*
999      ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN
1000*
1001*        XQ:  LQT routines for triangular-pentagonal matrices
1002*
1003         IF( TSTCHK ) THEN
1004            CALL SCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1005     $                     NBVAL, NOUT )
1006         ELSE
1007            WRITE( NOUT, FMT = 9989 )PATH
1008         END IF
1009*
1010      ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN
1011*
1012*        TS:  QR routines for tall-skinny matrices
1013*
1014         IF( TSTCHK ) THEN
1015            CALL SCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1016     $                     NBVAL, NOUT )
1017         ELSE
1018            WRITE( NOUT, FMT = 9989 )PATH
1019         END IF
1020*
1021      ELSE IF( LSAMEN( 2, C2, 'HH' ) ) THEN
1022*
1023*        HH:  Householder reconstruction for tall-skinny matrices
1024*
1025         IF( TSTCHK ) THEN
1026            CALL SCHKORHR_COL( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1027     $                         NBVAL, NOUT )
1028         ELSE
1029            WRITE( NOUT, FMT = 9989 ) PATH
1030         END IF
1031*
1032      ELSE
1033*
1034         WRITE( NOUT, FMT = 9990 )PATH
1035      END IF
1036*
1037*     Go back to get another input line.
1038*
1039      GO TO 80
1040*
1041*     Branch to this line when the last record is read.
1042*
1043  140 CONTINUE
1044      CLOSE ( NIN )
1045      S2 = SECOND( )
1046      WRITE( NOUT, FMT = 9998 )
1047      WRITE( NOUT, FMT = 9997 )S2 - S1
1048*
1049      DEALLOCATE (A, STAT = AllocateStatus)
1050      DEALLOCATE (B, STAT = AllocateStatus)
1051      DEALLOCATE (WORK, STAT = AllocateStatus)
1052      DEALLOCATE (RWORK,  STAT = AllocateStatus)
1053*
1054 9999 FORMAT( / ' Execution not attempted due to input errors' )
1055 9998 FORMAT( / ' End of tests' )
1056 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
1057 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
1058     $      I6 )
1059 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
1060     $      I6 )
1061 9994 FORMAT( ' Tests of the REAL LAPACK routines ',
1062     $      / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
1063     $      / / ' The following parameter values will be used:' )
1064 9993 FORMAT( 4X, A4, ':  ', 10I6, / 11X, 10I6 )
1065 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
1066     $      'less than', F8.2, / )
1067 9991 FORMAT( ' Relative machine ', A, ' is taken to be', E16.6 )
1068 9990 FORMAT( / 1X, A3, ':  Unrecognized path name' )
1069 9989 FORMAT( / 1X, A3, ' routines were not tested' )
1070 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )
1071*
1072*     End of SCHKAA
1073*
1074      END
1075