1*> \brief \b SERRVX
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*  Definition:
9*  ===========
10*
11*       SUBROUTINE SERRVX( PATH, NUNIT )
12*
13*       .. Scalar Arguments ..
14*       CHARACTER*3        PATH
15*       INTEGER            NUNIT
16*       ..
17*
18*
19*> \par Purpose:
20*  =============
21*>
22*> \verbatim
23*>
24*> SERRVX tests the error exits for the REAL driver routines
25*> for solving linear systems of equations.
26*> \endverbatim
27*
28*  Arguments:
29*  ==========
30*
31*> \param[in] PATH
32*> \verbatim
33*>          PATH is CHARACTER*3
34*>          The LAPACK path name for the routines to be tested.
35*> \endverbatim
36*>
37*> \param[in] NUNIT
38*> \verbatim
39*>          NUNIT is INTEGER
40*>          The unit number for output.
41*> \endverbatim
42*
43*  Authors:
44*  ========
45*
46*> \author Univ. of Tennessee
47*> \author Univ. of California Berkeley
48*> \author Univ. of Colorado Denver
49*> \author NAG Ltd.
50*
51*> \date November 2017
52*
53*> \ingroup single_lin
54*
55*  =====================================================================
56      SUBROUTINE SERRVX( PATH, NUNIT )
57*
58*  -- LAPACK test routine (version 3.8.0) --
59*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
60*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
61*     November 2017
62*
63*     .. Scalar Arguments ..
64      CHARACTER*3        PATH
65      INTEGER            NUNIT
66*     ..
67*
68*  =====================================================================
69*
70*     .. Parameters ..
71      INTEGER            NMAX
72      PARAMETER          ( NMAX = 4 )
73*     ..
74*     .. Local Scalars ..
75      CHARACTER          EQ
76      CHARACTER*2        C2
77      INTEGER            I, INFO, J
78      REAL               RCOND
79*     ..
80*     .. Local Arrays ..
81      INTEGER            IP( NMAX ), IW( NMAX )
82      REAL               A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
83     $                   C( NMAX ), E( NMAX ), R( NMAX ), R1( NMAX ),
84     $                   R2( NMAX ), W( 2*NMAX ), X( NMAX )
85*     ..
86*     .. External Functions ..
87      LOGICAL            LSAMEN
88      EXTERNAL           LSAMEN
89*     ..
90*     .. External Subroutines ..
91      EXTERNAL           CHKXER, SGBSV, SGBSVX, SGESV, SGESVX, SGTSV,
92     $                   SGTSVX, SPBSV, SPBSVX, SPOSV, SPOSVX, SPPSV,
93     $                   SPPSVX, SPTSV, SPTSVX, SSPSV, SSPSVX, SSYSV,
94     $                   SSYSV_AA, SSYSV_RK, SSYSV_ROOK, SSYSVX,
95     $                   SSYSV_AA_2STAGE
96*     ..
97*     .. Scalars in Common ..
98      LOGICAL            LERR, OK
99      CHARACTER*32       SRNAMT
100      INTEGER            INFOT, NOUT
101*     ..
102*     .. Common blocks ..
103      COMMON             / INFOC / INFOT, NOUT, OK, LERR
104      COMMON             / SRNAMC / SRNAMT
105*     ..
106*     .. Intrinsic Functions ..
107      INTRINSIC          REAL
108*     ..
109*     .. Executable Statements ..
110*
111      NOUT = NUNIT
112      WRITE( NOUT, FMT = * )
113      C2 = PATH( 2: 3 )
114*
115*     Set the variables to innocuous values.
116*
117      DO 20 J = 1, NMAX
118         DO 10 I = 1, NMAX
119            A( I, J ) = 1. / REAL( I+J )
120            AF( I, J ) = 1. / REAL( I+J )
121   10    CONTINUE
122         B( J ) = 0.E+0
123         E( J ) = 0.E+0
124         R1( J ) = 0.E+0
125         R2( J ) = 0.E+0
126         W( J ) = 0.E+0
127         X( J ) = 0.E+0
128         C( J ) = 0.E+0
129         R( J ) = 0.E+0
130         IP( J ) = J
131   20 CONTINUE
132      EQ = ' '
133      OK = .TRUE.
134*
135      IF( LSAMEN( 2, C2, 'GE' ) ) THEN
136*
137*        SGESV
138*
139         SRNAMT = 'SGESV '
140         INFOT = 1
141         CALL SGESV( -1, 0, A, 1, IP, B, 1, INFO )
142         CALL CHKXER( 'SGESV ', INFOT, NOUT, LERR, OK )
143         INFOT = 2
144         CALL SGESV( 0, -1, A, 1, IP, B, 1, INFO )
145         CALL CHKXER( 'SGESV ', INFOT, NOUT, LERR, OK )
146         INFOT = 4
147         CALL SGESV( 2, 1, A, 1, IP, B, 2, INFO )
148         CALL CHKXER( 'SGESV ', INFOT, NOUT, LERR, OK )
149         INFOT = 7
150         CALL SGESV( 2, 1, A, 2, IP, B, 1, INFO )
151         CALL CHKXER( 'SGESV ', INFOT, NOUT, LERR, OK )
152*
153*        SGESVX
154*
155         SRNAMT = 'SGESVX'
156         INFOT = 1
157         CALL SGESVX( '/', 'N', 0, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
158     $                X, 1, RCOND, R1, R2, W, IW, INFO )
159         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
160         INFOT = 2
161         CALL SGESVX( 'N', '/', 0, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
162     $                X, 1, RCOND, R1, R2, W, IW, INFO )
163         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
164         INFOT = 3
165         CALL SGESVX( 'N', 'N', -1, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
166     $                X, 1, RCOND, R1, R2, W, IW, INFO )
167         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
168         INFOT = 4
169         CALL SGESVX( 'N', 'N', 0, -1, A, 1, AF, 1, IP, EQ, R, C, B, 1,
170     $                X, 1, RCOND, R1, R2, W, IW, INFO )
171         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
172         INFOT = 6
173         CALL SGESVX( 'N', 'N', 2, 1, A, 1, AF, 2, IP, EQ, R, C, B, 2,
174     $                X, 2, RCOND, R1, R2, W, IW, INFO )
175         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
176         INFOT = 8
177         CALL SGESVX( 'N', 'N', 2, 1, A, 2, AF, 1, IP, EQ, R, C, B, 2,
178     $                X, 2, RCOND, R1, R2, W, IW, INFO )
179         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
180         INFOT = 10
181         EQ = '/'
182         CALL SGESVX( 'F', 'N', 0, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
183     $                X, 1, RCOND, R1, R2, W, IW, INFO )
184         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
185         INFOT = 11
186         EQ = 'R'
187         CALL SGESVX( 'F', 'N', 1, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
188     $                X, 1, RCOND, R1, R2, W, IW, INFO )
189         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
190         INFOT = 12
191         EQ = 'C'
192         CALL SGESVX( 'F', 'N', 1, 0, A, 1, AF, 1, IP, EQ, R, C, B, 1,
193     $                X, 1, RCOND, R1, R2, W, IW, INFO )
194         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
195         INFOT = 14
196         CALL SGESVX( 'N', 'N', 2, 1, A, 2, AF, 2, IP, EQ, R, C, B, 1,
197     $                X, 2, RCOND, R1, R2, W, IW, INFO )
198         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
199         INFOT = 16
200         CALL SGESVX( 'N', 'N', 2, 1, A, 2, AF, 2, IP, EQ, R, C, B, 2,
201     $                X, 1, RCOND, R1, R2, W, IW, INFO )
202         CALL CHKXER( 'SGESVX', INFOT, NOUT, LERR, OK )
203*
204      ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
205*
206*        SGBSV
207*
208         SRNAMT = 'SGBSV '
209         INFOT = 1
210         CALL SGBSV( -1, 0, 0, 0, A, 1, IP, B, 1, INFO )
211         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
212         INFOT = 2
213         CALL SGBSV( 1, -1, 0, 0, A, 1, IP, B, 1, INFO )
214         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
215         INFOT = 3
216         CALL SGBSV( 1, 0, -1, 0, A, 1, IP, B, 1, INFO )
217         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
218         INFOT = 4
219         CALL SGBSV( 0, 0, 0, -1, A, 1, IP, B, 1, INFO )
220         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
221         INFOT = 6
222         CALL SGBSV( 1, 1, 1, 0, A, 3, IP, B, 1, INFO )
223         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
224         INFOT = 9
225         CALL SGBSV( 2, 0, 0, 0, A, 1, IP, B, 1, INFO )
226         CALL CHKXER( 'SGBSV ', INFOT, NOUT, LERR, OK )
227*
228*        SGBSVX
229*
230         SRNAMT = 'SGBSVX'
231         INFOT = 1
232         CALL SGBSVX( '/', 'N', 0, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
233     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
234         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
235         INFOT = 2
236         CALL SGBSVX( 'N', '/', 0, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
237     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
238         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
239         INFOT = 3
240         CALL SGBSVX( 'N', 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
241     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
242         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
243         INFOT = 4
244         CALL SGBSVX( 'N', 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
245     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
246         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
247         INFOT = 5
248         CALL SGBSVX( 'N', 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, EQ, R, C,
249     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
250         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
251         INFOT = 6
252         CALL SGBSVX( 'N', 'N', 0, 0, 0, -1, A, 1, AF, 1, IP, EQ, R, C,
253     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
254         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
255         INFOT = 8
256         CALL SGBSVX( 'N', 'N', 1, 1, 1, 0, A, 2, AF, 4, IP, EQ, R, C,
257     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
258         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
259         INFOT = 10
260         CALL SGBSVX( 'N', 'N', 1, 1, 1, 0, A, 3, AF, 3, IP, EQ, R, C,
261     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
262         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
263         INFOT = 12
264         EQ = '/'
265         CALL SGBSVX( 'F', 'N', 0, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
266     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
267         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
268         INFOT = 13
269         EQ = 'R'
270         CALL SGBSVX( 'F', 'N', 1, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
271     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
272         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
273         INFOT = 14
274         EQ = 'C'
275         CALL SGBSVX( 'F', 'N', 1, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
276     $                B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
277         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
278         INFOT = 16
279         CALL SGBSVX( 'N', 'N', 2, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
280     $                B, 1, X, 2, RCOND, R1, R2, W, IW, INFO )
281         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
282         INFOT = 18
283         CALL SGBSVX( 'N', 'N', 2, 0, 0, 0, A, 1, AF, 1, IP, EQ, R, C,
284     $                B, 2, X, 1, RCOND, R1, R2, W, IW, INFO )
285         CALL CHKXER( 'SGBSVX', INFOT, NOUT, LERR, OK )
286*
287      ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
288*
289*        SGTSV
290*
291         SRNAMT = 'SGTSV '
292         INFOT = 1
293         CALL SGTSV( -1, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B, 1,
294     $               INFO )
295         CALL CHKXER( 'SGTSV ', INFOT, NOUT, LERR, OK )
296         INFOT = 2
297         CALL SGTSV( 0, -1, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B, 1,
298     $               INFO )
299         CALL CHKXER( 'SGTSV ', INFOT, NOUT, LERR, OK )
300         INFOT = 7
301         CALL SGTSV( 2, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B, 1, INFO )
302         CALL CHKXER( 'SGTSV ', INFOT, NOUT, LERR, OK )
303*
304*        SGTSVX
305*
306         SRNAMT = 'SGTSVX'
307         INFOT = 1
308         CALL SGTSVX( '/', 'N', 0, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
309     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
310     $                IP, B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
311         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
312         INFOT = 2
313         CALL SGTSVX( 'N', '/', 0, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
314     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
315     $                IP, B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
316         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
317         INFOT = 3
318         CALL SGTSVX( 'N', 'N', -1, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
319     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
320     $                IP, B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
321         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
322         INFOT = 4
323         CALL SGTSVX( 'N', 'N', 0, -1, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
324     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
325     $                IP, B, 1, X, 1, RCOND, R1, R2, W, IW, INFO )
326         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
327         INFOT = 14
328         CALL SGTSVX( 'N', 'N', 2, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
329     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
330     $                IP, B, 1, X, 2, RCOND, R1, R2, W, IW, INFO )
331         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
332         INFOT = 16
333         CALL SGTSVX( 'N', 'N', 2, 0, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
334     $                AF( 1, 1 ), AF( 1, 2 ), AF( 1, 3 ), AF( 1, 4 ),
335     $                IP, B, 2, X, 1, RCOND, R1, R2, W, IW, INFO )
336         CALL CHKXER( 'SGTSVX', INFOT, NOUT, LERR, OK )
337*
338      ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
339*
340*        SPOSV
341*
342         SRNAMT = 'SPOSV '
343         INFOT = 1
344         CALL SPOSV( '/', 0, 0, A, 1, B, 1, INFO )
345         CALL CHKXER( 'SPOSV ', INFOT, NOUT, LERR, OK )
346         INFOT = 2
347         CALL SPOSV( 'U', -1, 0, A, 1, B, 1, INFO )
348         CALL CHKXER( 'SPOSV ', INFOT, NOUT, LERR, OK )
349         INFOT = 3
350         CALL SPOSV( 'U', 0, -1, A, 1, B, 1, INFO )
351         CALL CHKXER( 'SPOSV ', INFOT, NOUT, LERR, OK )
352         INFOT = 5
353         CALL SPOSV( 'U', 2, 0, A, 1, B, 2, INFO )
354         CALL CHKXER( 'SPOSV ', INFOT, NOUT, LERR, OK )
355         INFOT = 7
356         CALL SPOSV( 'U', 2, 0, A, 2, B, 1, INFO )
357         CALL CHKXER( 'SPOSV ', INFOT, NOUT, LERR, OK )
358*
359*        SPOSVX
360*
361         SRNAMT = 'SPOSVX'
362         INFOT = 1
363         CALL SPOSVX( '/', 'U', 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
364     $                RCOND, R1, R2, W, IW, INFO )
365         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
366         INFOT = 2
367         CALL SPOSVX( 'N', '/', 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
368     $                RCOND, R1, R2, W, IW, INFO )
369         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
370         INFOT = 3
371         CALL SPOSVX( 'N', 'U', -1, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
372     $                RCOND, R1, R2, W, IW, INFO )
373         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
374         INFOT = 4
375         CALL SPOSVX( 'N', 'U', 0, -1, A, 1, AF, 1, EQ, C, B, 1, X, 1,
376     $                RCOND, R1, R2, W, IW, INFO )
377         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
378         INFOT = 6
379         CALL SPOSVX( 'N', 'U', 2, 0, A, 1, AF, 2, EQ, C, B, 2, X, 2,
380     $                RCOND, R1, R2, W, IW, INFO )
381         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
382         INFOT = 8
383         CALL SPOSVX( 'N', 'U', 2, 0, A, 2, AF, 1, EQ, C, B, 2, X, 2,
384     $                RCOND, R1, R2, W, IW, INFO )
385         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
386         INFOT = 9
387         EQ = '/'
388         CALL SPOSVX( 'F', 'U', 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
389     $                RCOND, R1, R2, W, IW, INFO )
390         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
391         INFOT = 10
392         EQ = 'Y'
393         CALL SPOSVX( 'F', 'U', 1, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
394     $                RCOND, R1, R2, W, IW, INFO )
395         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
396         INFOT = 12
397         CALL SPOSVX( 'N', 'U', 2, 0, A, 2, AF, 2, EQ, C, B, 1, X, 2,
398     $                RCOND, R1, R2, W, IW, INFO )
399         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
400         INFOT = 14
401         CALL SPOSVX( 'N', 'U', 2, 0, A, 2, AF, 2, EQ, C, B, 2, X, 1,
402     $                RCOND, R1, R2, W, IW, INFO )
403         CALL CHKXER( 'SPOSVX', INFOT, NOUT, LERR, OK )
404*
405      ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
406*
407*        SPPSV
408*
409         SRNAMT = 'SPPSV '
410         INFOT = 1
411         CALL SPPSV( '/', 0, 0, A, B, 1, INFO )
412         CALL CHKXER( 'SPPSV ', INFOT, NOUT, LERR, OK )
413         INFOT = 2
414         CALL SPPSV( 'U', -1, 0, A, B, 1, INFO )
415         CALL CHKXER( 'SPPSV ', INFOT, NOUT, LERR, OK )
416         INFOT = 3
417         CALL SPPSV( 'U', 0, -1, A, B, 1, INFO )
418         CALL CHKXER( 'SPPSV ', INFOT, NOUT, LERR, OK )
419         INFOT = 6
420         CALL SPPSV( 'U', 2, 0, A, B, 1, INFO )
421         CALL CHKXER( 'SPPSV ', INFOT, NOUT, LERR, OK )
422*
423*        SPPSVX
424*
425         SRNAMT = 'SPPSVX'
426         INFOT = 1
427         CALL SPPSVX( '/', 'U', 0, 0, A, AF, EQ, C, B, 1, X, 1, RCOND,
428     $                R1, R2, W, IW, INFO )
429         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
430         INFOT = 2
431         CALL SPPSVX( 'N', '/', 0, 0, A, AF, EQ, C, B, 1, X, 1, RCOND,
432     $                R1, R2, W, IW, INFO )
433         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
434         INFOT = 3
435         CALL SPPSVX( 'N', 'U', -1, 0, A, AF, EQ, C, B, 1, X, 1, RCOND,
436     $                R1, R2, W, IW, INFO )
437         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
438         INFOT = 4
439         CALL SPPSVX( 'N', 'U', 0, -1, A, AF, EQ, C, B, 1, X, 1, RCOND,
440     $                R1, R2, W, IW, INFO )
441         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
442         INFOT = 7
443         EQ = '/'
444         CALL SPPSVX( 'F', 'U', 0, 0, A, AF, EQ, C, B, 1, X, 1, RCOND,
445     $                R1, R2, W, IW, INFO )
446         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
447         INFOT = 8
448         EQ = 'Y'
449         CALL SPPSVX( 'F', 'U', 1, 0, A, AF, EQ, C, B, 1, X, 1, RCOND,
450     $                R1, R2, W, IW, INFO )
451         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
452         INFOT = 10
453         CALL SPPSVX( 'N', 'U', 2, 0, A, AF, EQ, C, B, 1, X, 2, RCOND,
454     $                R1, R2, W, IW, INFO )
455         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
456         INFOT = 12
457         CALL SPPSVX( 'N', 'U', 2, 0, A, AF, EQ, C, B, 2, X, 1, RCOND,
458     $                R1, R2, W, IW, INFO )
459         CALL CHKXER( 'SPPSVX', INFOT, NOUT, LERR, OK )
460*
461      ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
462*
463*        SPBSV
464*
465         SRNAMT = 'SPBSV '
466         INFOT = 1
467         CALL SPBSV( '/', 0, 0, 0, A, 1, B, 1, INFO )
468         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
469         INFOT = 2
470         CALL SPBSV( 'U', -1, 0, 0, A, 1, B, 1, INFO )
471         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
472         INFOT = 3
473         CALL SPBSV( 'U', 1, -1, 0, A, 1, B, 1, INFO )
474         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
475         INFOT = 4
476         CALL SPBSV( 'U', 0, 0, -1, A, 1, B, 1, INFO )
477         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
478         INFOT = 6
479         CALL SPBSV( 'U', 1, 1, 0, A, 1, B, 2, INFO )
480         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
481         INFOT = 8
482         CALL SPBSV( 'U', 2, 0, 0, A, 1, B, 1, INFO )
483         CALL CHKXER( 'SPBSV ', INFOT, NOUT, LERR, OK )
484*
485*        SPBSVX
486*
487         SRNAMT = 'SPBSVX'
488         INFOT = 1
489         CALL SPBSVX( '/', 'U', 0, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
490     $                RCOND, R1, R2, W, IW, INFO )
491         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
492         INFOT = 2
493         CALL SPBSVX( 'N', '/', 0, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
494     $                RCOND, R1, R2, W, IW, INFO )
495         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
496         INFOT = 3
497         CALL SPBSVX( 'N', 'U', -1, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X,
498     $                1, RCOND, R1, R2, W, IW, INFO )
499         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
500         INFOT = 4
501         CALL SPBSVX( 'N', 'U', 1, -1, 0, A, 1, AF, 1, EQ, C, B, 1, X,
502     $                1, RCOND, R1, R2, W, IW, INFO )
503         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
504         INFOT = 5
505         CALL SPBSVX( 'N', 'U', 0, 0, -1, A, 1, AF, 1, EQ, C, B, 1, X,
506     $                1, RCOND, R1, R2, W, IW, INFO )
507         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
508         INFOT = 7
509         CALL SPBSVX( 'N', 'U', 1, 1, 0, A, 1, AF, 2, EQ, C, B, 2, X, 2,
510     $                RCOND, R1, R2, W, IW, INFO )
511         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
512         INFOT = 9
513         CALL SPBSVX( 'N', 'U', 1, 1, 0, A, 2, AF, 1, EQ, C, B, 2, X, 2,
514     $                RCOND, R1, R2, W, IW, INFO )
515         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
516         INFOT = 10
517         EQ = '/'
518         CALL SPBSVX( 'F', 'U', 0, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
519     $                RCOND, R1, R2, W, IW, INFO )
520         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
521         INFOT = 11
522         EQ = 'Y'
523         CALL SPBSVX( 'F', 'U', 1, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 1,
524     $                RCOND, R1, R2, W, IW, INFO )
525         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
526         INFOT = 13
527         CALL SPBSVX( 'N', 'U', 2, 0, 0, A, 1, AF, 1, EQ, C, B, 1, X, 2,
528     $                RCOND, R1, R2, W, IW, INFO )
529         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
530         INFOT = 15
531         CALL SPBSVX( 'N', 'U', 2, 0, 0, A, 1, AF, 1, EQ, C, B, 2, X, 1,
532     $                RCOND, R1, R2, W, IW, INFO )
533         CALL CHKXER( 'SPBSVX', INFOT, NOUT, LERR, OK )
534*
535      ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
536*
537*        SPTSV
538*
539         SRNAMT = 'SPTSV '
540         INFOT = 1
541         CALL SPTSV( -1, 0, A( 1, 1 ), A( 1, 2 ), B, 1, INFO )
542         CALL CHKXER( 'SPTSV ', INFOT, NOUT, LERR, OK )
543         INFOT = 2
544         CALL SPTSV( 0, -1, A( 1, 1 ), A( 1, 2 ), B, 1, INFO )
545         CALL CHKXER( 'SPTSV ', INFOT, NOUT, LERR, OK )
546         INFOT = 6
547         CALL SPTSV( 2, 0, A( 1, 1 ), A( 1, 2 ), B, 1, INFO )
548         CALL CHKXER( 'SPTSV ', INFOT, NOUT, LERR, OK )
549*
550*        SPTSVX
551*
552         SRNAMT = 'SPTSVX'
553         INFOT = 1
554         CALL SPTSVX( '/', 0, 0, A( 1, 1 ), A( 1, 2 ), AF( 1, 1 ),
555     $                AF( 1, 2 ), B, 1, X, 1, RCOND, R1, R2, W, INFO )
556         CALL CHKXER( 'SPTSVX', INFOT, NOUT, LERR, OK )
557         INFOT = 2
558         CALL SPTSVX( 'N', -1, 0, A( 1, 1 ), A( 1, 2 ), AF( 1, 1 ),
559     $                AF( 1, 2 ), B, 1, X, 1, RCOND, R1, R2, W, INFO )
560         CALL CHKXER( 'SPTSVX', INFOT, NOUT, LERR, OK )
561         INFOT = 3
562         CALL SPTSVX( 'N', 0, -1, A( 1, 1 ), A( 1, 2 ), AF( 1, 1 ),
563     $                AF( 1, 2 ), B, 1, X, 1, RCOND, R1, R2, W, INFO )
564         CALL CHKXER( 'SPTSVX', INFOT, NOUT, LERR, OK )
565         INFOT = 9
566         CALL SPTSVX( 'N', 2, 0, A( 1, 1 ), A( 1, 2 ), AF( 1, 1 ),
567     $                AF( 1, 2 ), B, 1, X, 2, RCOND, R1, R2, W, INFO )
568         CALL CHKXER( 'SPTSVX', INFOT, NOUT, LERR, OK )
569         INFOT = 11
570         CALL SPTSVX( 'N', 2, 0, A( 1, 1 ), A( 1, 2 ), AF( 1, 1 ),
571     $                AF( 1, 2 ), B, 2, X, 1, RCOND, R1, R2, W, INFO )
572         CALL CHKXER( 'SPTSVX', INFOT, NOUT, LERR, OK )
573*
574      ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
575*
576*        SSYSV
577*
578         SRNAMT = 'SSYSV '
579         INFOT = 1
580         CALL SSYSV( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
581         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
582         INFOT = 2
583         CALL SSYSV( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
584         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
585         INFOT = 3
586         CALL SSYSV( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO )
587         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
588         INFOT = 8
589         CALL SSYSV( 'U', 2, 0, A, 2, IP, B, 1, W, 1, INFO )
590         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
591         INFOT = 10
592         CALL SSYSV( 'U', 0, 0, A, 1, IP, B, 1, W, 0, INFO )
593         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
594         INFOT = 10
595         CALL SSYSV( 'U', 0, 0, A, 1, IP, B, 1, W, -2, INFO )
596         CALL CHKXER( 'SSYSV ', INFOT, NOUT, LERR, OK )
597*
598*        SSYSVX
599*
600         SRNAMT = 'SSYSVX'
601         INFOT = 1
602         CALL SSYSVX( '/', 'U', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1,
603     $                RCOND, R1, R2, W, 1, IW, INFO )
604         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
605         INFOT = 2
606         CALL SSYSVX( 'N', '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1,
607     $                RCOND, R1, R2, W, 1, IW, INFO )
608         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
609         INFOT = 3
610         CALL SSYSVX( 'N', 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1,
611     $                RCOND, R1, R2, W, 1, IW, INFO )
612         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
613         INFOT = 4
614         CALL SSYSVX( 'N', 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1,
615     $                RCOND, R1, R2, W, 1, IW, INFO )
616         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
617         INFOT = 6
618         CALL SSYSVX( 'N', 'U', 2, 0, A, 1, AF, 2, IP, B, 2, X, 2,
619     $                RCOND, R1, R2, W, 4, IW, INFO )
620         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
621         INFOT = 8
622         CALL SSYSVX( 'N', 'U', 2, 0, A, 2, AF, 1, IP, B, 2, X, 2,
623     $                RCOND, R1, R2, W, 4, IW, INFO )
624         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
625         INFOT = 11
626         CALL SSYSVX( 'N', 'U', 2, 0, A, 2, AF, 2, IP, B, 1, X, 2,
627     $                RCOND, R1, R2, W, 4, IW, INFO )
628         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
629         INFOT = 13
630         CALL SSYSVX( 'N', 'U', 2, 0, A, 2, AF, 2, IP, B, 2, X, 1,
631     $                RCOND, R1, R2, W, 4, IW, INFO )
632         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
633         INFOT = 18
634         CALL SSYSVX( 'N', 'U', 2, 0, A, 2, AF, 2, IP, B, 2, X, 2,
635     $                RCOND, R1, R2, W, 3, IW, INFO )
636         CALL CHKXER( 'SSYSVX', INFOT, NOUT, LERR, OK )
637*
638*
639      ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
640*
641*        SSYSV_ROOK
642*
643         SRNAMT = 'SSYSV_ROOK'
644         INFOT = 1
645         CALL SSYSV_ROOK( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
646         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
647         INFOT = 2
648         CALL SSYSV_ROOK( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
649         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
650         INFOT = 3
651         CALL SSYSV_ROOK( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO )
652         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
653         INFOT = 8
654         CALL SSYSV_ROOK( 'U', 2, 0, A, 2, IP, B, 1, W, 1, INFO )
655         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
656         INFOT = 10
657         CALL SSYSV_ROOK( 'U', 0, 0, A, 1, IP, B, 1, W, 0, INFO )
658         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
659         INFOT = 10
660         CALL SSYSV_ROOK( 'U', 0, 0, A, 1, IP, B, 1, W, -2, INFO )
661         CALL CHKXER( 'SSYSV_ROOK', INFOT, NOUT, LERR, OK )
662*
663      ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
664*
665*        SSYSV_RK
666*
667*        Test error exits of the driver that uses factorization
668*        of a symmetric indefinite matrix with rook
669*        (bounded Bunch-Kaufman) pivoting with the new storage
670*        format for factors L ( or U) and D.
671*
672*        L (or U) is stored in A, diagonal of D is stored on the
673*        diagonal of A, subdiagonal of D is stored in a separate array E.
674*
675         SRNAMT = 'SSYSV_RK'
676         INFOT = 1
677         CALL SSYSV_RK( '/', 0, 0, A, 1, E, IP, B, 1, W, 1, INFO )
678         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
679         INFOT = 2
680         CALL SSYSV_RK( 'U', -1, 0, A, 1, E, IP, B, 1, W, 1, INFO )
681         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
682         INFOT = 3
683         CALL SSYSV_RK( 'U', 0, -1, A, 1, E, IP, B, 1, W, 1, INFO )
684         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
685         INFOT = 5
686         CALL SSYSV_RK( 'U', 2, 0, A, 1, E, IP, B, 2, W, 1, INFO )
687         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
688         INFOT = 9
689         CALL SSYSV_RK( 'U', 2, 0, A, 2, E, IP, B, 1, W, 1, INFO )
690         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
691         INFOT = 11
692         CALL SSYSV_RK( 'U', 0, 0, A, 1, E, IP, B, 1, W, 0, INFO )
693         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
694         INFOT = 11
695         CALL SSYSV_RK( 'U', 0, 0, A, 1, E, IP, B, 1, W, -2, INFO )
696         CALL CHKXER( 'SSYSV_RK', INFOT, NOUT, LERR, OK )
697*
698      ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN
699*
700*        SSYSV_AA
701*
702         SRNAMT = 'SSYSV_AA'
703         INFOT = 1
704         CALL SSYSV_AA( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
705         CALL CHKXER( 'SSYSV_AA', INFOT, NOUT, LERR, OK )
706         INFOT = 2
707         CALL SSYSV_AA( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
708         CALL CHKXER( 'SSYSV_AA', INFOT, NOUT, LERR, OK )
709         INFOT = 3
710         CALL SSYSV_AA( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO )
711         CALL CHKXER( 'SSYSV_AA', INFOT, NOUT, LERR, OK )
712         INFOT = 8
713         CALL SSYSV_AA( 'U', 2, 0, A, 2, IP, B, 1, W, 1, INFO )
714         CALL CHKXER( 'SSYSV_AA', INFOT, NOUT, LERR, OK )
715*
716      ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN
717*
718*        DSYSV_AASEN_2STAGE
719*
720         SRNAMT = 'SSYSV_AA_2STAGE'
721         INFOT = 1
722         CALL SSYSV_AA_2STAGE( '/', 0, 0, A, 1, A, 1, IP, IP, B, 1,
723     $                         W, 1, INFO )
724         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
725         INFOT = 2
726         CALL SSYSV_AA_2STAGE( 'U', -1, 0, A, 1, A, 1, IP, IP, B, 1,
727     $                         W, 1, INFO )
728         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
729         INFOT = 3
730         CALL SSYSV_AA_2STAGE( 'U', 0, -1, A, 1, A, 1, IP, IP, B, 1,
731     $                         W, 1, INFO )
732         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
733         INFOT = 5
734         CALL SSYSV_AA_2STAGE( 'U', 2, 1, A, 1, A, 1, IP, IP, B, 1,
735     $                         W, 1, INFO )
736         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
737         INFOT = 11
738         CALL SSYSV_AA_2STAGE( 'U', 2, 1, A, 2, A, 8, IP, IP, B, 1,
739     $                         W, 1, INFO )
740         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
741         INFOT = 7
742         CALL SSYSV_AA_2STAGE( 'U', 2, 1, A, 2, A, 1, IP, IP, B, 2,
743     $                         W, 1, INFO )
744         CALL CHKXER( 'SSYSV_AA_2STAGE', INFOT, NOUT, LERR, OK )
745*
746      ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
747*
748*        SSPSV
749*
750         SRNAMT = 'SSPSV '
751         INFOT = 1
752         CALL SSPSV( '/', 0, 0, A, IP, B, 1, INFO )
753         CALL CHKXER( 'SSPSV ', INFOT, NOUT, LERR, OK )
754         INFOT = 2
755         CALL SSPSV( 'U', -1, 0, A, IP, B, 1, INFO )
756         CALL CHKXER( 'SSPSV ', INFOT, NOUT, LERR, OK )
757         INFOT = 3
758         CALL SSPSV( 'U', 0, -1, A, IP, B, 1, INFO )
759         CALL CHKXER( 'SSPSV ', INFOT, NOUT, LERR, OK )
760         INFOT = 7
761         CALL SSPSV( 'U', 2, 0, A, IP, B, 1, INFO )
762         CALL CHKXER( 'SSPSV ', INFOT, NOUT, LERR, OK )
763*
764*        SSPSVX
765*
766         SRNAMT = 'SSPSVX'
767         INFOT = 1
768         CALL SSPSVX( '/', 'U', 0, 0, A, AF, IP, B, 1, X, 1, RCOND, R1,
769     $                R2, W, IW, INFO )
770         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
771         INFOT = 2
772         CALL SSPSVX( 'N', '/', 0, 0, A, AF, IP, B, 1, X, 1, RCOND, R1,
773     $                R2, W, IW, INFO )
774         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
775         INFOT = 3
776         CALL SSPSVX( 'N', 'U', -1, 0, A, AF, IP, B, 1, X, 1, RCOND, R1,
777     $                R2, W, IW, INFO )
778         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
779         INFOT = 4
780         CALL SSPSVX( 'N', 'U', 0, -1, A, AF, IP, B, 1, X, 1, RCOND, R1,
781     $                R2, W, IW, INFO )
782         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
783         INFOT = 9
784         CALL SSPSVX( 'N', 'U', 2, 0, A, AF, IP, B, 1, X, 2, RCOND, R1,
785     $                R2, W, IW, INFO )
786         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
787         INFOT = 11
788         CALL SSPSVX( 'N', 'U', 2, 0, A, AF, IP, B, 2, X, 1, RCOND, R1,
789     $                R2, W, IW, INFO )
790         CALL CHKXER( 'SSPSVX', INFOT, NOUT, LERR, OK )
791      END IF
792*
793*     Print a summary line.
794*
795      IF( OK ) THEN
796         WRITE( NOUT, FMT = 9999 )PATH
797      ELSE
798         WRITE( NOUT, FMT = 9998 )PATH
799      END IF
800*
801 9999 FORMAT( 1X, A3, ' drivers passed the tests of the error exits' )
802 9998 FORMAT( ' *** ', A3, ' drivers failed the tests of the error ',
803     $      'exits ***' )
804*
805      RETURN
806*
807*     End of SERRVX
808*
809      END
810