1*> \brief \b SERRSYX
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 SERRSY( 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*> SERRSY tests the error exits for the REAL routines
25*> for symmetric indefinite matrices.
26*>
27*> Note that this file is used only when the XBLAS are available,
28*> otherwise serrsy.f defines this subroutine.
29*> \endverbatim
30*
31*  Arguments:
32*  ==========
33*
34*> \param[in] PATH
35*> \verbatim
36*>          PATH is CHARACTER*3
37*>          The LAPACK path name for the routines to be tested.
38*> \endverbatim
39*>
40*> \param[in] NUNIT
41*> \verbatim
42*>          NUNIT is INTEGER
43*>          The unit number for output.
44*> \endverbatim
45*
46*  Authors:
47*  ========
48*
49*> \author Univ. of Tennessee
50*> \author Univ. of California Berkeley
51*> \author Univ. of Colorado Denver
52*> \author NAG Ltd.
53*
54*> \date December 2016
55*
56*> \ingroup single_lin
57*
58*  =====================================================================
59      SUBROUTINE SERRSY( PATH, NUNIT )
60*
61*  -- LAPACK test routine (version 3.7.0) --
62*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
63*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
64*     December 2016
65*
66*     .. Scalar Arguments ..
67      CHARACTER*3        PATH
68      INTEGER            NUNIT
69*     ..
70*
71*  =====================================================================
72*
73*     .. Parameters ..
74      INTEGER            NMAX
75      PARAMETER          ( NMAX = 4 )
76*     ..
77*     .. Local Scalars ..
78      CHARACTER          EQ
79      CHARACTER*2        C2
80      INTEGER            I, INFO, J, N_ERR_BNDS, NPARAMS
81      REAL               ANRM, RCOND, BERR
82*     ..
83*     .. Local Arrays ..
84      INTEGER            IP( NMAX ), IW( NMAX )
85      REAL               A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
86     $                   E( NMAX ), R1( NMAX ), R2( NMAX ), W( 3*NMAX ),
87     $                   X( NMAX ), S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
88     $                   ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
89*     ..
90*     .. External Functions ..
91      LOGICAL            LSAMEN
92      EXTERNAL           LSAMEN
93*     ..
94*     .. External Subroutines ..
95      EXTERNAL           ALAESM, CHKXER, SSPCON, SSPRFS, SSPTRF, SSPTRI,
96     $                   SSPTRS, SSYCON, SSYCON_3, SSYCON_ROOK, SSYRFS,
97     $                   SSYTF2, SSYTF2_RK, SSYTF2_ROOK, SSYTRF,
98     $                   SSYTRF_RK, SSYTRF_ROOK, SSYTRI, SSYTRI_3,
99     $                   SSYTRI_3X, SSYTRI_ROOK, SSYTRI2, SSYTRI2X,
100     $                   SSYTRS, SSYTRS_3, SSYTRS_ROOK, SSYRFSX
101*     ..
102*     .. Scalars in Common ..
103      LOGICAL            LERR, OK
104      CHARACTER*32       SRNAMT
105      INTEGER            INFOT, NOUT
106*     ..
107*     .. Common blocks ..
108      COMMON             / INFOC / INFOT, NOUT, OK, LERR
109      COMMON             / SRNAMC / SRNAMT
110*     ..
111*     .. Intrinsic Functions ..
112      INTRINSIC          REAL
113*     ..
114*     .. Executable Statements ..
115*
116      NOUT = NUNIT
117      WRITE( NOUT, FMT = * )
118      C2 = PATH( 2: 3 )
119*
120*     Set the variables to innocuous values.
121*
122      DO 20 J = 1, NMAX
123         DO 10 I = 1, NMAX
124            A( I, J ) = 1. / REAL( I+J )
125            AF( I, J ) = 1. / REAL( I+J )
126   10    CONTINUE
127         B( J ) = 0.E+0
128         E( J ) = 0.E+0
129         R1( J ) = 0.E+0
130         R2( J ) = 0.E+0
131         W( J ) = 0.E+0
132         X( J ) = 0.E+0
133         IP( J ) = J
134         IW( J ) = J
135   20 CONTINUE
136      ANRM = 1.0
137      RCOND = 1.0
138      OK = .TRUE.
139*
140      IF( LSAMEN( 2, C2, 'SY' ) ) THEN
141*
142*        Test error exits of the routines that use factorization
143*        of a symmetric indefinite matrix with patrial
144*        (Bunch-Kaufman) pivoting.
145*
146*        SSYTRF
147*
148         SRNAMT = 'SSYTRF'
149         INFOT = 1
150         CALL SSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
151         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
152         INFOT = 2
153         CALL SSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
154         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
155         INFOT = 4
156         CALL SSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
157         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
158         INFOT = 7
159         CALL SSYTRF( 'U', 0, A, 1, IP, W, 0, INFO )
160         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
161         INFOT = 7
162         CALL SSYTRF( 'U', 0, A, 1, IP, W, -2, INFO )
163         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
164*
165*        SSYTF2
166*
167         SRNAMT = 'SSYTF2'
168         INFOT = 1
169         CALL SSYTF2( '/', 0, A, 1, IP, INFO )
170         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
171         INFOT = 2
172         CALL SSYTF2( 'U', -1, A, 1, IP, INFO )
173         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
174         INFOT = 4
175         CALL SSYTF2( 'U', 2, A, 1, IP, INFO )
176         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
177*
178*        SSYTRI
179*
180         SRNAMT = 'SSYTRI'
181         INFOT = 1
182         CALL SSYTRI( '/', 0, A, 1, IP, W, INFO )
183         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
184         INFOT = 2
185         CALL SSYTRI( 'U', -1, A, 1, IP, W, INFO )
186         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
187         INFOT = 4
188         CALL SSYTRI( 'U', 2, A, 1, IP, W, INFO )
189         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
190*
191*        SSYTRI2
192*
193         SRNAMT = 'SSYTRI2'
194         INFOT = 1
195         CALL SSYTRI2( '/', 0, A, 1, IP, W, IW, INFO )
196         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
197         INFOT = 2
198         CALL SSYTRI2( 'U', -1, A, 1, IP, W, IW, INFO )
199         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
200         INFOT = 4
201         CALL SSYTRI2( 'U', 2, A, 1, IP, W, IW, INFO )
202         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
203*
204*        SSYTRI2X
205*
206         SRNAMT = 'SSYTRI2X'
207         INFOT = 1
208         CALL SSYTRI2X( '/', 0, A, 1, IP, W, 1, INFO )
209         CALL CHKXER( 'SSYTRI2X', INFOT, NOUT, LERR, OK )
210         INFOT = 2
211         CALL SSYTRI2X( 'U', -1, A, 1, IP, W, 1, INFO )
212         CALL CHKXER( 'SSYTRI2X', INFOT, NOUT, LERR, OK )
213         INFOT = 4
214         CALL SSYTRI2X( 'U', 2, A, 1, IP, W, 1, INFO )
215         CALL CHKXER( 'SSYTRI2X', INFOT, NOUT, LERR, OK )
216*
217*        SSYTRS
218*
219         SRNAMT = 'SSYTRS'
220         INFOT = 1
221         CALL SSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
222         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
223         INFOT = 2
224         CALL SSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
225         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
226         INFOT = 3
227         CALL SSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
228         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
229         INFOT = 5
230         CALL SSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
231         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
232         INFOT = 8
233         CALL SSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
234         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
235*
236*        SSYRFS
237*
238         SRNAMT = 'SSYRFS'
239         INFOT = 1
240         CALL SSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
241     $                IW, INFO )
242         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
243         INFOT = 2
244         CALL SSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
245     $                W, IW, INFO )
246         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
247         INFOT = 3
248         CALL SSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
249     $                W, IW, INFO )
250         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
251         INFOT = 5
252         CALL SSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
253     $                IW, INFO )
254         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
255         INFOT = 7
256         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
257     $                IW, INFO )
258         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
259         INFOT = 10
260         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
261     $                IW, INFO )
262         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
263         INFOT = 12
264         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
265     $                IW, INFO )
266         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
267*
268*        SSYRFSX
269*
270         N_ERR_BNDS = 3
271         NPARAMS = 0
272         SRNAMT = 'SSYRFSX'
273         INFOT = 1
274         CALL SSYRFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
275     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
276     $        PARAMS, W, IW, INFO )
277         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
278         INFOT = 2
279         CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
280     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
281     $        PARAMS, W, IW, INFO )
282         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
283         EQ = 'N'
284         INFOT = 3
285         CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
286     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
287     $        PARAMS, W, IW, INFO )
288         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
289         INFOT = 4
290         CALL SSYRFSX( 'U', EQ, 0, -1, A, 1, AF, 1, IP, S, B, 1, X, 1,
291     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
292     $        PARAMS, W, IW, INFO )
293         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
294         INFOT = 6
295         CALL SSYRFSX( 'U', EQ, 2, 1, A, 1, AF, 2, IP, S, B, 2, X, 2,
296     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
297     $        PARAMS, W, IW, INFO )
298         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
299         INFOT = 8
300         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 1, IP, S, B, 2, X, 2,
301     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
302     $        PARAMS, W, IW, INFO )
303         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
304         INFOT = 12
305         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 1, X, 2,
306     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
307     $        PARAMS, W, IW, INFO )
308         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
309         INFOT = 14
310         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 2, X, 1,
311     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
312     $        PARAMS, W, IW, INFO )
313         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
314*
315*        SSYCON
316*
317         SRNAMT = 'SSYCON'
318         INFOT = 1
319         CALL SSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
320         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
321         INFOT = 2
322         CALL SSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
323         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
324         INFOT = 4
325         CALL SSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
326         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
327         INFOT = 6
328         CALL SSYCON( 'U', 1, A, 1, IP, -1.0, RCOND, W, IW, INFO )
329         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
330*
331      ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
332*
333*        Test error exits of the routines that use factorization
334*        of a symmetric indefinite matrix with rook
335*        (bounded Bunch-Kaufman) pivoting.
336*
337*        SSYTRF_ROOK
338*
339         SRNAMT = 'SSYTRF_ROOK'
340         INFOT = 1
341         CALL SSYTRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO )
342         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
343         INFOT = 2
344         CALL SSYTRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO )
345         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
346         INFOT = 4
347         CALL SSYTRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO )
348         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
349         INFOT = 7
350         CALL SSYTRF_ROOK( 'U', 0, A, 1, IP, W, 0, INFO )
351         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
352         INFOT = 7
353         CALL SSYTRF_ROOK( 'U', 0, A, 1, IP, W, -2, INFO )
354         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
355*
356*        SSYTF2_ROOK
357*
358         SRNAMT = 'SSYTF2_ROOK'
359         INFOT = 1
360         CALL SSYTF2_ROOK( '/', 0, A, 1, IP, INFO )
361         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
362         INFOT = 2
363         CALL SSYTF2_ROOK( 'U', -1, A, 1, IP, INFO )
364         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
365         INFOT = 4
366         CALL SSYTF2_ROOK( 'U', 2, A, 1, IP, INFO )
367         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
368*
369*        SSYTRI_ROOK
370*
371         SRNAMT = 'SSYTRI_ROOK'
372         INFOT = 1
373         CALL SSYTRI_ROOK( '/', 0, A, 1, IP, W, INFO )
374         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
375         INFOT = 2
376         CALL SSYTRI_ROOK( 'U', -1, A, 1, IP, W, INFO )
377         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
378         INFOT = 4
379         CALL SSYTRI_ROOK( 'U', 2, A, 1, IP, W, INFO )
380         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
381*
382*        SSYTRS_ROOK
383*
384         SRNAMT = 'SSYTRS_ROOK'
385         INFOT = 1
386         CALL SSYTRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO )
387         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
388         INFOT = 2
389         CALL SSYTRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO )
390         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
391         INFOT = 3
392         CALL SSYTRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO )
393         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
394         INFOT = 5
395         CALL SSYTRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO )
396         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
397         INFOT = 8
398         CALL SSYTRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO )
399         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
400*
401*        SSYCON_ROOK
402*
403         SRNAMT = 'SSYCON_ROOK'
404         INFOT = 1
405         CALL SSYCON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
406         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
407         INFOT = 2
408         CALL SSYCON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
409         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
410         INFOT = 4
411         CALL SSYCON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
412         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
413         INFOT = 6
414         CALL SSYCON_ROOK( 'U', 1, A, 1, IP, -1.0, RCOND, W, IW, INFO )
415         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
416*
417      ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
418*
419*        Test error exits of the routines that use factorization
420*        of a symmetric indefinite matrix with rook
421*        (bounded Bunch-Kaufman) pivoting with the new storage
422*        format for factors L ( or U) and D.
423*
424*        L (or U) is stored in A, diagonal of D is stored on the
425*        diagonal of A, subdiagonal of D is stored in a separate array E.
426*
427*        SSYTRF_RK
428*
429         SRNAMT = 'SSYTRF_RK'
430         INFOT = 1
431         CALL SSYTRF_RK( '/', 0, A, 1, E, IP, W, 1, INFO )
432         CALL CHKXER( 'SSYTRF_RK', INFOT, NOUT, LERR, OK )
433         INFOT = 2
434         CALL SSYTRF_RK( 'U', -1, A, 1, E, IP, W, 1, INFO )
435         CALL CHKXER( 'SSYTRF_RK', INFOT, NOUT, LERR, OK )
436         INFOT = 4
437         CALL SSYTRF_RK( 'U', 2, A, 1, E, IP, W, 4, INFO )
438         CALL CHKXER( 'SSYTRF_RK', INFOT, NOUT, LERR, OK )
439         INFOT = 8
440         CALL SSYTRF_RK( 'U', 0, A, 1, E, IP, W, 0, INFO )
441         CALL CHKXER( 'SSYTRF_RK', INFOT, NOUT, LERR, OK )
442         INFOT = 8
443         CALL SSYTRF_RK( 'U', 0, A, 1, E, IP, W, -2, INFO )
444         CALL CHKXER( 'SSYTRF_RK', INFOT, NOUT, LERR, OK )
445*
446*        SSYTF2_RK
447*
448         SRNAMT = 'SSYTF2_RK'
449         INFOT = 1
450         CALL SSYTF2_RK( '/', 0, A, 1, E, IP, INFO )
451         CALL CHKXER( 'SSYTF2_RK', INFOT, NOUT, LERR, OK )
452         INFOT = 2
453         CALL SSYTF2_RK( 'U', -1, A, 1, E, IP, INFO )
454         CALL CHKXER( 'SSYTF2_RK', INFOT, NOUT, LERR, OK )
455         INFOT = 4
456         CALL SSYTF2_RK( 'U', 2, A, 1, E, IP, INFO )
457         CALL CHKXER( 'SSYTF2_RK', INFOT, NOUT, LERR, OK )
458*
459*        SSYTRI_3
460*
461         SRNAMT = 'SSYTRI_3'
462         INFOT = 1
463         CALL SSYTRI_3( '/', 0, A, 1, E, IP, W, 1, INFO )
464         CALL CHKXER( 'SSYTRI_3', INFOT, NOUT, LERR, OK )
465         INFOT = 2
466         CALL SSYTRI_3( 'U', -1, A, 1, E, IP, W, 1, INFO )
467         CALL CHKXER( 'SSYTRI_3', INFOT, NOUT, LERR, OK )
468         INFOT = 4
469         CALL SSYTRI_3( 'U', 2, A, 1, E, IP, W, 1, INFO )
470         CALL CHKXER( 'SSYTRI_3', INFOT, NOUT, LERR, OK )
471         INFOT = 8
472         CALL SSYTRI_3( 'U', 0, A, 1, E, IP, W, 0, INFO )
473         CALL CHKXER( 'SSYTRI_3', INFOT, NOUT, LERR, OK )
474         INFOT = 8
475         CALL SSYTRI_3( 'U', 0, A, 1, E, IP, W, -2, INFO )
476         CALL CHKXER( 'SSYTRI_3', INFOT, NOUT, LERR, OK )
477*
478*        SSYTRI_3X
479*
480         SRNAMT = 'SSYTRI_3X'
481         INFOT = 1
482         CALL SSYTRI_3X( '/', 0, A, 1, E, IP, W, 1, INFO )
483         CALL CHKXER( 'SSYTRI_3X', INFOT, NOUT, LERR, OK )
484         INFOT = 2
485         CALL SSYTRI_3X( 'U', -1, A, 1, E, IP, W, 1, INFO )
486         CALL CHKXER( 'SSYTRI_3X', INFOT, NOUT, LERR, OK )
487         INFOT = 4
488         CALL SSYTRI_3X( 'U', 2, A, 1, E, IP, W, 1, INFO )
489         CALL CHKXER( 'SSYTRI_3X', INFOT, NOUT, LERR, OK )
490*
491*        SSYTRS_3
492*
493         SRNAMT = 'SSYTRS_3'
494         INFOT = 1
495         CALL SSYTRS_3( '/', 0, 0, A, 1, E, IP, B, 1, INFO )
496         CALL CHKXER( 'SSYTRS_3', INFOT, NOUT, LERR, OK )
497         INFOT = 2
498         CALL SSYTRS_3( 'U', -1, 0, A, 1, E, IP, B, 1, INFO )
499         CALL CHKXER( 'SSYTRS_3', INFOT, NOUT, LERR, OK )
500         INFOT = 3
501         CALL SSYTRS_3( 'U', 0, -1, A, 1, E, IP, B, 1, INFO )
502         CALL CHKXER( 'SSYTRS_3', INFOT, NOUT, LERR, OK )
503         INFOT = 5
504         CALL SSYTRS_3( 'U', 2, 1, A, 1, E, IP, B, 2, INFO )
505         CALL CHKXER( 'SSYTRS_3', INFOT, NOUT, LERR, OK )
506         INFOT = 9
507         CALL SSYTRS_3( 'U', 2, 1, A, 2, E, IP, B, 1, INFO )
508         CALL CHKXER( 'SSYTRS_3', INFOT, NOUT, LERR, OK )
509*
510*        SSYCON_3
511*
512         SRNAMT = 'SSYCON_3'
513         INFOT = 1
514         CALL SSYCON_3( '/', 0, A, 1,  E, IP, ANRM, RCOND, W, IW,
515     $                   INFO )
516         CALL CHKXER( 'SSYCON_3', INFOT, NOUT, LERR, OK )
517         INFOT = 2
518         CALL SSYCON_3( 'U', -1, A, 1, E, IP, ANRM, RCOND, W, IW,
519     $                   INFO )
520         CALL CHKXER( 'SSYCON_3', INFOT, NOUT, LERR, OK )
521         INFOT = 4
522         CALL SSYCON_3( 'U', 2, A, 1, E, IP, ANRM, RCOND, W, IW,
523     $                   INFO )
524         CALL CHKXER( 'SSYCON_3', INFOT, NOUT, LERR, OK )
525         INFOT = 7
526         CALL SSYCON_3( 'U', 1, A, 1, E, IP, -1.0E0, RCOND, W, IW,
527     $                   INFO)
528         CALL CHKXER( 'SSYCON_3', INFOT, NOUT, LERR, OK )
529*
530      ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
531*
532*        Test error exits of the routines that use factorization
533*        of a symmetric indefinite packed matrix with patrial
534*        (Bunch-Kaufman) pivoting.
535*
536*        SSPTRF
537*
538         SRNAMT = 'SSPTRF'
539         INFOT = 1
540         CALL SSPTRF( '/', 0, A, IP, INFO )
541         CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
542         INFOT = 2
543         CALL SSPTRF( 'U', -1, A, IP, INFO )
544         CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
545*
546*        SSPTRI
547*
548         SRNAMT = 'SSPTRI'
549         INFOT = 1
550         CALL SSPTRI( '/', 0, A, IP, W, INFO )
551         CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
552         INFOT = 2
553         CALL SSPTRI( 'U', -1, A, IP, W, INFO )
554         CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
555*
556*        SSPTRS
557*
558         SRNAMT = 'SSPTRS'
559         INFOT = 1
560         CALL SSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
561         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
562         INFOT = 2
563         CALL SSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
564         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
565         INFOT = 3
566         CALL SSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
567         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
568         INFOT = 7
569         CALL SSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
570         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
571*
572*        SSPRFS
573*
574         SRNAMT = 'SSPRFS'
575         INFOT = 1
576         CALL SSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
577     $                INFO )
578         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
579         INFOT = 2
580         CALL SSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
581     $                INFO )
582         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
583         INFOT = 3
584         CALL SSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
585     $                INFO )
586         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
587         INFOT = 8
588         CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, IW,
589     $                INFO )
590         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
591         INFOT = 10
592         CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, IW,
593     $                INFO )
594         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
595*
596*        SSPCON
597*
598         SRNAMT = 'SSPCON'
599         INFOT = 1
600         CALL SSPCON( '/', 0, A, IP, ANRM, RCOND, W, IW, INFO )
601         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
602         INFOT = 2
603         CALL SSPCON( 'U', -1, A, IP, ANRM, RCOND, W, IW, INFO )
604         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
605         INFOT = 5
606         CALL SSPCON( 'U', 1, A, IP, -1.0, RCOND, W, IW, INFO )
607         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
608      END IF
609*
610*     Print a summary line.
611*
612      CALL ALAESM( PATH, OK, NOUT )
613*
614      RETURN
615*
616*     End of SERRSY
617*
618      END
619