1*> \brief \b CERRSYX
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 CERRSY( 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*> CERRSY tests the error exits for the COMPLEX routines
25*> for symmetric indefinite matrices.
26*>
27*> Note that this file is used only when the XBLAS are available,
28*> otherwise cerrsy.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 complex_lin
57*
58*  =====================================================================
59      SUBROUTINE CERRSY( 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 )
85      REAL               R( NMAX ), R1( NMAX ), R2( NMAX ),
86     $                   S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
87     $                   ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
88      COMPLEX            A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
89     $                   E( NMAX), W( 2*NMAX ), X( NMAX )
90*     ..
91*     .. External Functions ..
92      LOGICAL            LSAMEN
93      EXTERNAL           LSAMEN
94*     ..
95*     .. External Subroutines ..
96      EXTERNAL           ALAESM, CHKXER, CSPCON, CSPRFS, CSPTRF, CSPTRI,
97     $                   CSPTRS, CSYCON, CSYRFS, CSYTF2, CSYTRF, CSYTRI,
98     $                   CSYTRI2, CSYTRS, CSYRFSX, CSYCON_ROOK,
99     $                   CSYTF2_ROOK, CSYTRF_ROOK, CSYTRI_ROOK,
100     $                   CSYTRS_ROOK
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          CMPLX, 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 ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
125            AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
126   10    CONTINUE
127         B( J ) = 0.E0
128         E( J ) = 0.E0
129         R1( J ) = 0.E0
130         R2( J ) = 0.E0
131         W( J ) = 0.E0
132         X( J ) = 0.E0
133         IP( J ) = J
134   20 CONTINUE
135      ANRM = 1.0
136      OK = .TRUE.
137
138      IF( LSAMEN( 2, C2, 'SY' ) ) THEN
139*
140*        Test error exits of the routines that use factorization
141*        of a symmetric indefinite matrix with patrial
142*        (Bunch-Kaufman) diagonal pivoting method.
143*
144*        CSYTRF
145*
146         SRNAMT = 'CSYTRF'
147         INFOT = 1
148         CALL CSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
149         CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
150         INFOT = 2
151         CALL CSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
152         CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
153         INFOT = 4
154         CALL CSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
155         CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
156         INFOT = 7
157         CALL CSYTRF( 'U', 0, A, 1, IP, W, 0, INFO )
158         CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
159         INFOT = 7
160         CALL CSYTRF( 'U', 0, A, 1, IP, W, -2, INFO )
161         CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
162*
163*        CSYTF2
164*
165         SRNAMT = 'CSYTF2'
166         INFOT = 1
167         CALL CSYTF2( '/', 0, A, 1, IP, INFO )
168         CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
169         INFOT = 2
170         CALL CSYTF2( 'U', -1, A, 1, IP, INFO )
171         CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
172         INFOT = 4
173         CALL CSYTF2( 'U', 2, A, 1, IP, INFO )
174         CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
175*
176*        CSYTRI
177*
178         SRNAMT = 'CSYTRI'
179         INFOT = 1
180         CALL CSYTRI( '/', 0, A, 1, IP, W, INFO )
181         CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
182         INFOT = 2
183         CALL CSYTRI( 'U', -1, A, 1, IP, W, INFO )
184         CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
185         INFOT = 4
186         CALL CSYTRI( 'U', 2, A, 1, IP, W, INFO )
187         CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
188*
189*        CSYTRI2
190*
191         SRNAMT = 'CSYTRI2'
192         INFOT = 1
193         CALL CSYTRI2( '/', 0, A, 1, IP, W, 1, INFO )
194         CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
195         INFOT = 2
196         CALL CSYTRI2( 'U', -1, A, 1, IP, W, 1, INFO )
197         CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
198         INFOT = 4
199         CALL CSYTRI2( 'U', 2, A, 1, IP, W, 1, INFO )
200         CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
201*
202*        CSYTRI2X
203*
204         SRNAMT = 'CSYTRI2X'
205         INFOT = 1
206         CALL CSYTRI2X( '/', 0, A, 1, IP, W, 1, INFO )
207         CALL CHKXER( 'CSYTRI2X', INFOT, NOUT, LERR, OK )
208         INFOT = 2
209         CALL CSYTRI2X( 'U', -1, A, 1, IP, W, 1, INFO )
210         CALL CHKXER( 'CSYTRI2X', INFOT, NOUT, LERR, OK )
211         INFOT = 4
212         CALL CSYTRI2X( 'U', 2, A, 1, IP, W, 1, INFO )
213         CALL CHKXER( 'CSYTRI2X', INFOT, NOUT, LERR, OK )
214*
215*        CSYTRS
216*
217         SRNAMT = 'CSYTRS'
218         INFOT = 1
219         CALL CSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
220         CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
221         INFOT = 2
222         CALL CSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
223         CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
224         INFOT = 3
225         CALL CSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
226         CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
227         INFOT = 5
228         CALL CSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
229         CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
230         INFOT = 8
231         CALL CSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
232         CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
233*
234*        CSYRFS
235*
236         SRNAMT = 'CSYRFS'
237         INFOT = 1
238         CALL CSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
239     $                R, INFO )
240         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
241         INFOT = 2
242         CALL CSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
243     $                W, R, INFO )
244         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
245         INFOT = 3
246         CALL CSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
247     $                W, R, INFO )
248         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
249         INFOT = 5
250         CALL CSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
251     $                R, INFO )
252         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
253         INFOT = 7
254         CALL CSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
255     $                R, INFO )
256         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
257         INFOT = 10
258         CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
259     $                R, INFO )
260         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
261         INFOT = 12
262         CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
263     $                R, INFO )
264         CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
265*
266*        CSYRFSX
267*
268         N_ERR_BNDS = 3
269         NPARAMS = 0
270         SRNAMT = 'CSYRFSX'
271         INFOT = 1
272         CALL CSYRFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
273     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
274     $        PARAMS, W, R, INFO )
275         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
276         INFOT = 2
277         CALL CSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
278     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
279     $        PARAMS, W, R, INFO )
280         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
281         EQ = 'N'
282         INFOT = 3
283         CALL CSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
284     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
285     $        PARAMS, W, R, INFO )
286         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
287         INFOT = 4
288         CALL CSYRFSX( 'U', EQ, 0, -1, A, 1, AF, 1, IP, S, B, 1, X, 1,
289     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
290     $        PARAMS, W, R, INFO )
291         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
292         INFOT = 6
293         CALL CSYRFSX( 'U', EQ, 2, 1, A, 1, AF, 2, IP, S, B, 2, X, 2,
294     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
295     $        PARAMS, W, R, INFO )
296         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
297         INFOT = 8
298         CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 1, IP, S, B, 2, X, 2,
299     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
300     $        PARAMS, W, R, INFO )
301         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
302         INFOT = 12
303         CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 1, X, 2,
304     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
305     $        PARAMS, W, R, INFO )
306         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
307         INFOT = 14
308         CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 2, X, 1,
309     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
310     $        PARAMS, W, R, INFO )
311         CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
312*
313*        CSYCON
314*
315         SRNAMT = 'CSYCON'
316         INFOT = 1
317         CALL CSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
318         CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
319         INFOT = 2
320         CALL CSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
321         CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
322         INFOT = 4
323         CALL CSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
324         CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
325         INFOT = 6
326         CALL CSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
327         CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
328*
329      ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
330*
331*        Test error exits of the routines that use factorization
332*        of a symmetric indefinite matrix with rook
333*        (bounded Bunch-Kaufman) diagonal pivoting method.
334*
335*        CSYTRF_ROOK
336*
337         SRNAMT = 'CSYTRF_ROOK'
338         INFOT = 1
339         CALL CSYTRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO )
340         CALL CHKXER( 'CSYTRF_ROOK', INFOT, NOUT, LERR, OK )
341         INFOT = 2
342         CALL CSYTRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO )
343         CALL CHKXER( 'CSYTRF_ROOK', INFOT, NOUT, LERR, OK )
344         INFOT = 4
345         CALL CSYTRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO )
346         CALL CHKXER( 'CSYTRF_ROOK', INFOT, NOUT, LERR, OK )
347         INFOT = 7
348         CALL CSYTRF_ROOK( 'U', 0, A, 1, IP, W, 0, INFO )
349         CALL CHKXER( 'CSYTRF_ROOK', INFOT, NOUT, LERR, OK )
350         INFOT = 7
351         CALL CSYTRF_ROOK( 'U', 0, A, 1, IP, W, -2, INFO )
352         CALL CHKXER( 'CSYTRF_ROOK', INFOT, NOUT, LERR, OK )
353*
354*        CSYTF2_ROOK
355*
356         SRNAMT = 'CSYTF2_ROOK'
357         INFOT = 1
358         CALL CSYTF2_ROOK( '/', 0, A, 1, IP, INFO )
359         CALL CHKXER( 'CSYTF2_ROOK', INFOT, NOUT, LERR, OK )
360         INFOT = 2
361         CALL CSYTF2_ROOK( 'U', -1, A, 1, IP, INFO )
362         CALL CHKXER( 'CSYTF2_ROOK', INFOT, NOUT, LERR, OK )
363         INFOT = 4
364         CALL CSYTF2_ROOK( 'U', 2, A, 1, IP, INFO )
365         CALL CHKXER( 'CSYTF2_ROOK', INFOT, NOUT, LERR, OK )
366*
367*        CSYTRI_ROOK
368*
369         SRNAMT = 'CSYTRI_ROOK'
370         INFOT = 1
371         CALL CSYTRI_ROOK( '/', 0, A, 1, IP, W, INFO )
372         CALL CHKXER( 'CSYTRI_ROOK', INFOT, NOUT, LERR, OK )
373         INFOT = 2
374         CALL CSYTRI_ROOK( 'U', -1, A, 1, IP, W, INFO )
375         CALL CHKXER( 'CSYTRI_ROOK', INFOT, NOUT, LERR, OK )
376         INFOT = 4
377         CALL CSYTRI_ROOK( 'U', 2, A, 1, IP, W, INFO )
378         CALL CHKXER( 'CSYTRI_ROOK', INFOT, NOUT, LERR, OK )
379*
380*        CSYTRS_ROOK
381*
382         SRNAMT = 'CSYTRS_ROOK'
383         INFOT = 1
384         CALL CSYTRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO )
385         CALL CHKXER( 'CSYTRS_ROOK', INFOT, NOUT, LERR, OK )
386         INFOT = 2
387         CALL CSYTRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO )
388         CALL CHKXER( 'CSYTRS_ROOK', INFOT, NOUT, LERR, OK )
389         INFOT = 3
390         CALL CSYTRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO )
391         CALL CHKXER( 'CSYTRS_ROOK', INFOT, NOUT, LERR, OK )
392         INFOT = 5
393         CALL CSYTRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO )
394         CALL CHKXER( 'CSYTRS_ROOK', INFOT, NOUT, LERR, OK )
395         INFOT = 8
396         CALL CSYTRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO )
397         CALL CHKXER( 'CSYTRS_ROOK', INFOT, NOUT, LERR, OK )
398*
399*        CSYCON_ROOK
400*
401         SRNAMT = 'CSYCON_ROOK'
402         INFOT = 1
403         CALL CSYCON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
404         CALL CHKXER( 'CSYCON_ROOK', INFOT, NOUT, LERR, OK )
405         INFOT = 2
406         CALL CSYCON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
407         CALL CHKXER( 'CSYCON_ROOK', INFOT, NOUT, LERR, OK )
408         INFOT = 4
409         CALL CSYCON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
410         CALL CHKXER( 'CSYCON_ROOK', INFOT, NOUT, LERR, OK )
411         INFOT = 6
412         CALL CSYCON_ROOK( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
413         CALL CHKXER( 'CSYCON_ROOK', INFOT, NOUT, LERR, OK )
414*
415      ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
416*
417*        Test error exits of the routines that use factorization
418*        of a symmetric indefinite matrix with rook
419*        (bounded Bunch-Kaufman) pivoting with the new storage
420*        format for factors L ( or U) and D.
421*
422*        L (or U) is stored in A, diagonal of D is stored on the
423*        diagonal of A, subdiagonal of D is stored in a separate array E.
424*
425*        CSYTRF_RK
426*
427         SRNAMT = 'CSYTRF_RK'
428         INFOT = 1
429         CALL CSYTRF_RK( '/', 0, A, 1, E, IP, W, 1, INFO )
430         CALL CHKXER( 'CSYTRF_RK', INFOT, NOUT, LERR, OK )
431         INFOT = 2
432         CALL CSYTRF_RK( 'U', -1, A, 1, E, IP, W, 1, INFO )
433         CALL CHKXER( 'CSYTRF_RK', INFOT, NOUT, LERR, OK )
434         INFOT = 4
435         CALL CSYTRF_RK( 'U', 2, A, 1, E, IP, W, 4, INFO )
436         CALL CHKXER( 'CSYTRF_RK', INFOT, NOUT, LERR, OK )
437         INFOT = 8
438         CALL CSYTRF_RK( 'U', 0, A, 1, E, IP, W, 0, INFO )
439         CALL CHKXER( 'CSYTRF_RK', INFOT, NOUT, LERR, OK )
440         INFOT = 8
441         CALL CSYTRF_RK( 'U', 0, A, 1, E, IP, W, -2, INFO )
442         CALL CHKXER( 'CSYTRF_RK', INFOT, NOUT, LERR, OK )
443*
444*        CSYTF2_RK
445*
446         SRNAMT = 'CSYTF2_RK'
447         INFOT = 1
448         CALL CSYTF2_RK( '/', 0, A, 1, E, IP, INFO )
449         CALL CHKXER( 'CSYTF2_RK', INFOT, NOUT, LERR, OK )
450         INFOT = 2
451         CALL CSYTF2_RK( 'U', -1, A, 1, E, IP, INFO )
452         CALL CHKXER( 'CSYTF2_RK', INFOT, NOUT, LERR, OK )
453         INFOT = 4
454         CALL CSYTF2_RK( 'U', 2, A, 1, E, IP, INFO )
455         CALL CHKXER( 'CSYTF2_RK', INFOT, NOUT, LERR, OK )
456*
457*        CSYTRI_3
458*
459         SRNAMT = 'CSYTRI_3'
460         INFOT = 1
461         CALL CSYTRI_3( '/', 0, A, 1, E, IP, W, 1, INFO )
462         CALL CHKXER( 'CSYTRI_3', INFOT, NOUT, LERR, OK )
463         INFOT = 2
464         CALL CSYTRI_3( 'U', -1, A, 1, E, IP, W, 1, INFO )
465         CALL CHKXER( 'CSYTRI_3', INFOT, NOUT, LERR, OK )
466         INFOT = 4
467         CALL CSYTRI_3( 'U', 2, A, 1, E, IP, W, 1, INFO )
468         CALL CHKXER( 'CSYTRI_3', INFOT, NOUT, LERR, OK )
469         INFOT = 8
470         CALL CSYTRI_3( 'U', 0, A, 1, E, IP, W, 0, INFO )
471         CALL CHKXER( 'CSYTRI_3', INFOT, NOUT, LERR, OK )
472         INFOT = 8
473         CALL CSYTRI_3( 'U', 0, A, 1, E, IP, W, -2, INFO )
474         CALL CHKXER( 'CSYTRI_3', INFOT, NOUT, LERR, OK )
475*
476*        CSYTRI_3X
477*
478         SRNAMT = 'CSYTRI_3X'
479         INFOT = 1
480         CALL CSYTRI_3X( '/', 0, A, 1, E, IP, W, 1, INFO )
481         CALL CHKXER( 'CSYTRI_3X', INFOT, NOUT, LERR, OK )
482         INFOT = 2
483         CALL CSYTRI_3X( 'U', -1, A, 1, E, IP, W, 1, INFO )
484         CALL CHKXER( 'CSYTRI_3X', INFOT, NOUT, LERR, OK )
485         INFOT = 4
486         CALL CSYTRI_3X( 'U', 2, A, 1, E, IP, W, 1, INFO )
487         CALL CHKXER( 'CSYTRI_3X', INFOT, NOUT, LERR, OK )
488*
489*        CSYTRS_3
490*
491         SRNAMT = 'CSYTRS_3'
492         INFOT = 1
493         CALL CSYTRS_3( '/', 0, 0, A, 1, E, IP, B, 1, INFO )
494         CALL CHKXER( 'CSYTRS_3', INFOT, NOUT, LERR, OK )
495         INFOT = 2
496         CALL CSYTRS_3( 'U', -1, 0, A, 1, E, IP, B, 1, INFO )
497         CALL CHKXER( 'CSYTRS_3', INFOT, NOUT, LERR, OK )
498         INFOT = 3
499         CALL CSYTRS_3( 'U', 0, -1, A, 1, E, IP, B, 1, INFO )
500         CALL CHKXER( 'CSYTRS_3', INFOT, NOUT, LERR, OK )
501         INFOT = 5
502         CALL CSYTRS_3( 'U', 2, 1, A, 1, E, IP, B, 2, INFO )
503         CALL CHKXER( 'CSYTRS_3', INFOT, NOUT, LERR, OK )
504         INFOT = 9
505         CALL CSYTRS_3( 'U', 2, 1, A, 2, E, IP, B, 1, INFO )
506         CALL CHKXER( 'CSYTRS_3', INFOT, NOUT, LERR, OK )
507*
508*        CSYCON_3
509*
510         SRNAMT = 'CSYCON_3'
511         INFOT = 1
512         CALL CSYCON_3( '/', 0, A, 1,  E, IP, ANRM, RCOND, W, INFO )
513         CALL CHKXER( 'CSYCON_3', INFOT, NOUT, LERR, OK )
514         INFOT = 2
515         CALL CSYCON_3( 'U', -1, A, 1, E, IP, ANRM, RCOND, W, INFO )
516         CALL CHKXER( 'CSYCON_3', INFOT, NOUT, LERR, OK )
517         INFOT = 4
518         CALL CSYCON_3( 'U', 2, A, 1, E, IP, ANRM, RCOND, W, INFO )
519         CALL CHKXER( 'CSYCON_3', INFOT, NOUT, LERR, OK )
520         INFOT = 7
521         CALL CSYCON_3( 'U', 1, A, 1, E, IP, -1.0E0, RCOND, W, INFO)
522         CALL CHKXER( 'CSYCON_3', INFOT, NOUT, LERR, OK )
523*
524      ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
525*
526*        Test error exits of the routines that use factorization
527*        of a symmetric indefinite packed matrix with patrial
528*        (Bunch-Kaufman) diagonal pivoting method.
529*
530*        CSPTRF
531*
532         SRNAMT = 'CSPTRF'
533         INFOT = 1
534         CALL CSPTRF( '/', 0, A, IP, INFO )
535         CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
536         INFOT = 2
537         CALL CSPTRF( 'U', -1, A, IP, INFO )
538         CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
539*
540*        CSPTRI
541*
542         SRNAMT = 'CSPTRI'
543         INFOT = 1
544         CALL CSPTRI( '/', 0, A, IP, W, INFO )
545         CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
546         INFOT = 2
547         CALL CSPTRI( 'U', -1, A, IP, W, INFO )
548         CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
549*
550*        CSPTRS
551*
552         SRNAMT = 'CSPTRS'
553         INFOT = 1
554         CALL CSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
555         CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
556         INFOT = 2
557         CALL CSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
558         CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
559         INFOT = 3
560         CALL CSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
561         CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
562         INFOT = 7
563         CALL CSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
564         CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
565*
566*        CSPRFS
567*
568         SRNAMT = 'CSPRFS'
569         INFOT = 1
570         CALL CSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
571     $                INFO )
572         CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
573         INFOT = 2
574         CALL CSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
575     $                INFO )
576         CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
577         INFOT = 3
578         CALL CSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
579     $                INFO )
580         CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
581         INFOT = 8
582         CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
583     $                INFO )
584         CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
585         INFOT = 10
586         CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
587     $                INFO )
588         CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
589*
590*        CSPCON
591*
592         SRNAMT = 'CSPCON'
593         INFOT = 1
594         CALL CSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
595         CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
596         INFOT = 2
597         CALL CSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
598         CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
599         INFOT = 5
600         CALL CSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
601         CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
602      END IF
603*
604*     Print a summary line.
605*
606      CALL ALAESM( PATH, OK, NOUT )
607*
608      RETURN
609*
610*     End of CERRSY
611*
612      END
613