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