1*> \brief \b CERRHE
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 CERRHE( 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*> CERRHE tests the error exits for the COMPLEX routines
25*> for Hermitian indefinite matrices.
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 complex_lin
52*
53*  =====================================================================
54      SUBROUTINE CERRHE( 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*
68*     .. Parameters ..
69      INTEGER            NMAX
70      PARAMETER          ( NMAX = 4 )
71*     ..
72*     .. Local Scalars ..
73      CHARACTER*2        C2
74      INTEGER            I, INFO, J
75      REAL               ANRM, RCOND
76*     ..
77*     .. Local Arrays ..
78      INTEGER            IP( NMAX )
79      REAL               R( NMAX ), R1( NMAX ), R2( NMAX )
80      COMPLEX            A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
81     $                   E( NMAX ), W( 2*NMAX ), X( NMAX )
82*     ..
83*     .. External Functions ..
84      LOGICAL            LSAMEN
85      EXTERNAL           LSAMEN
86*     ..
87*     .. External Subroutines ..
88      EXTERNAL           ALAESM, CHECON, CSYCON_3, CHECON_ROOK, CHERFS,
89     $                   CHETF2, CHETF2_RK, CHETF2_ROOK, CHETRF_AA,
90     $                   CHETRF, CHETRF_RK, CHETRF_ROOK, CHETRI,
91     $                   CHETRI_3, CHETRI_3X, CHETRI_ROOK, CHETRI2,
92     $                   CHETRI2X, CHETRS, CHETRS_3, CHETRS_ROOK,
93     $                   CHETRS_AA, CHKXER, CHPCON, CHPRFS, CHPTRF,
94     $                   CHETRF_AA_2STAGE, CHETRS_AA_2STAGE,
95     $                   CHPTRI, CHPTRS
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          CMPLX, 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 ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
120            AF( I, J ) = CMPLX( 1. / REAL( 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         IP( J ) = J
129   20 CONTINUE
130      ANRM = 1.0
131      OK = .TRUE.
132*
133      IF( LSAMEN( 2, C2, 'HE' ) ) THEN
134*
135*        Test error exits of the routines that use factorization
136*        of a Hermitian indefinite matrix with patrial
137*        (Bunch-Kaufman) diagonal pivoting method.
138*
139*        CHETRF
140*
141         SRNAMT = 'CHETRF'
142         INFOT = 1
143         CALL CHETRF( '/', 0, A, 1, IP, W, 1, INFO )
144         CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK )
145         INFOT = 2
146         CALL CHETRF( 'U', -1, A, 1, IP, W, 1, INFO )
147         CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK )
148         INFOT = 4
149         CALL CHETRF( 'U', 2, A, 1, IP, W, 4, INFO )
150         CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK )
151         INFOT = 7
152         CALL CHETRF( 'U', 0, A, 1, IP, W, 0, INFO )
153         CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK )
154         INFOT = 7
155         CALL CHETRF( 'U', 0, A, 1, IP, W, -2, INFO )
156         CALL CHKXER( 'CHETRF', INFOT, NOUT, LERR, OK )
157*
158*        CHETF2
159*
160         SRNAMT = 'CHETF2'
161         INFOT = 1
162         CALL CHETF2( '/', 0, A, 1, IP, INFO )
163         CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK )
164         INFOT = 2
165         CALL CHETF2( 'U', -1, A, 1, IP, INFO )
166         CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK )
167         INFOT = 4
168         CALL CHETF2( 'U', 2, A, 1, IP, INFO )
169         CALL CHKXER( 'CHETF2', INFOT, NOUT, LERR, OK )
170*
171*        CHETRI
172*
173         SRNAMT = 'CHETRI'
174         INFOT = 1
175         CALL CHETRI( '/', 0, A, 1, IP, W, INFO )
176         CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK )
177         INFOT = 2
178         CALL CHETRI( 'U', -1, A, 1, IP, W, INFO )
179         CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK )
180         INFOT = 4
181         CALL CHETRI( 'U', 2, A, 1, IP, W, INFO )
182         CALL CHKXER( 'CHETRI', INFOT, NOUT, LERR, OK )
183*
184*        CHETRI2
185*
186         SRNAMT = 'CHETRI2'
187         INFOT = 1
188         CALL CHETRI2( '/', 0, A, 1, IP, W, 1, INFO )
189         CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK )
190         INFOT = 2
191         CALL CHETRI2( 'U', -1, A, 1, IP, W, 1, INFO )
192         CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK )
193         INFOT = 4
194         CALL CHETRI2( 'U', 2, A, 1, IP, W, 1, INFO )
195         CALL CHKXER( 'CHETRI2', INFOT, NOUT, LERR, OK )
196*
197*        CHETRI2X
198*
199         SRNAMT = 'CHETRI2X'
200         INFOT = 1
201         CALL CHETRI2X( '/', 0, A, 1, IP, W, 1, INFO )
202         CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK )
203         INFOT = 2
204         CALL CHETRI2X( 'U', -1, A, 1, IP, W, 1, INFO )
205         CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK )
206         INFOT = 4
207         CALL CHETRI2X( 'U', 2, A, 1, IP, W, 1, INFO )
208         CALL CHKXER( 'CHETRI2X', INFOT, NOUT, LERR, OK )
209*
210*        CHETRS
211*
212         SRNAMT = 'CHETRS'
213         INFOT = 1
214         CALL CHETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
215         CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK )
216         INFOT = 2
217         CALL CHETRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
218         CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK )
219         INFOT = 3
220         CALL CHETRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
221         CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK )
222         INFOT = 5
223         CALL CHETRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
224         CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK )
225         INFOT = 8
226         CALL CHETRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
227         CALL CHKXER( 'CHETRS', INFOT, NOUT, LERR, OK )
228*
229*        CHERFS
230*
231         SRNAMT = 'CHERFS'
232         INFOT = 1
233         CALL CHERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
234     $                R, INFO )
235         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
236         INFOT = 2
237         CALL CHERFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
238     $                W, R, INFO )
239         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
240         INFOT = 3
241         CALL CHERFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
242     $                W, R, INFO )
243         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
244         INFOT = 5
245         CALL CHERFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
246     $                R, INFO )
247         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
248         INFOT = 7
249         CALL CHERFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
250     $                R, INFO )
251         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
252         INFOT = 10
253         CALL CHERFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
254     $                R, INFO )
255         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
256         INFOT = 12
257         CALL CHERFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
258     $                R, INFO )
259         CALL CHKXER( 'CHERFS', INFOT, NOUT, LERR, OK )
260*
261*        CHECON
262*
263         SRNAMT = 'CHECON'
264         INFOT = 1
265         CALL CHECON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
266         CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK )
267         INFOT = 2
268         CALL CHECON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
269         CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK )
270         INFOT = 4
271         CALL CHECON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
272         CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK )
273         INFOT = 6
274         CALL CHECON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
275         CALL CHKXER( 'CHECON', INFOT, NOUT, LERR, OK )
276*
277      ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN
278*
279*        Test error exits of the routines that use factorization
280*        of a Hermitian indefinite matrix with rook
281*        (bounded Bunch-Kaufman) diagonal pivoting method.
282*
283*        CHETRF_ROOK
284*
285         SRNAMT = 'CHETRF_ROOK'
286         INFOT = 1
287         CALL CHETRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO )
288         CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK )
289         INFOT = 2
290         CALL CHETRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO )
291         CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK )
292         INFOT = 4
293         CALL CHETRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO )
294         CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK )
295         INFOT = 7
296         CALL CHETRF_ROOK( 'U', 0, A, 1, IP, W, 0, INFO )
297         CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK )
298         INFOT = 7
299         CALL CHETRF_ROOK( 'U', 0, A, 1, IP, W, -2, INFO )
300         CALL CHKXER( 'CHETRF_ROOK', INFOT, NOUT, LERR, OK )
301*
302*        CHETF2_ROOK
303*
304         SRNAMT = 'CHETF2_ROOK'
305         INFOT = 1
306         CALL CHETF2_ROOK( '/', 0, A, 1, IP, INFO )
307         CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK )
308         INFOT = 2
309         CALL CHETF2_ROOK( 'U', -1, A, 1, IP, INFO )
310         CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK )
311         INFOT = 4
312         CALL CHETF2_ROOK( 'U', 2, A, 1, IP, INFO )
313         CALL CHKXER( 'CHETF2_ROOK', INFOT, NOUT, LERR, OK )
314*
315*        CHETRI_ROOK
316*
317         SRNAMT = 'CHETRI_ROOK'
318         INFOT = 1
319         CALL CHETRI_ROOK( '/', 0, A, 1, IP, W, INFO )
320         CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK )
321         INFOT = 2
322         CALL CHETRI_ROOK( 'U', -1, A, 1, IP, W, INFO )
323         CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK )
324         INFOT = 4
325         CALL CHETRI_ROOK( 'U', 2, A, 1, IP, W, INFO )
326         CALL CHKXER( 'CHETRI_ROOK', INFOT, NOUT, LERR, OK )
327*
328*        CHETRS_ROOK
329*
330         SRNAMT = 'CHETRS_ROOK'
331         INFOT = 1
332         CALL CHETRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO )
333         CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK )
334         INFOT = 2
335         CALL CHETRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO )
336         CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK )
337         INFOT = 3
338         CALL CHETRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO )
339         CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK )
340         INFOT = 5
341         CALL CHETRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO )
342         CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK )
343         INFOT = 8
344         CALL CHETRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO )
345         CALL CHKXER( 'CHETRS_ROOK', INFOT, NOUT, LERR, OK )
346*
347*        CHECON_ROOK
348*
349         SRNAMT = 'CHECON_ROOK'
350         INFOT = 1
351         CALL CHECON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
352         CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK )
353         INFOT = 2
354         CALL CHECON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
355         CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK )
356         INFOT = 4
357         CALL CHECON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
358         CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK )
359         INFOT = 6
360         CALL CHECON_ROOK( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
361         CALL CHKXER( 'CHECON_ROOK', INFOT, NOUT, LERR, OK )
362*
363      ELSE IF( LSAMEN( 2, C2, 'HK' ) ) THEN
364*
365*        Test error exits of the routines that use factorization
366*        of a Hermitian indefinite matrix with rook
367*        (bounded Bunch-Kaufman) pivoting with the new storage
368*        format for factors L ( or U) and D.
369*
370*        L (or U) is stored in A, diagonal of D is stored on the
371*        diagonal of A, subdiagonal of D is stored in a separate array E.
372*
373*        CHETRF_RK
374*
375         SRNAMT = 'CHETRF_RK'
376         INFOT = 1
377         CALL CHETRF_RK( '/', 0, A, 1, E, IP, W, 1, INFO )
378         CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK )
379         INFOT = 2
380         CALL CHETRF_RK( 'U', -1, A, 1, E, IP, W, 1, INFO )
381         CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK )
382         INFOT = 4
383         CALL CHETRF_RK( 'U', 2, A, 1, E, IP, W, 4, INFO )
384         CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK )
385         INFOT = 8
386         CALL CHETRF_RK( 'U', 0, A, 1, E, IP, W, 0, INFO )
387         CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK )
388         INFOT = 8
389         CALL CHETRF_RK( 'U', 0, A, 1, E, IP, W, -2, INFO )
390         CALL CHKXER( 'CHETRF_RK', INFOT, NOUT, LERR, OK )
391*
392*        CHETF2_RK
393*
394         SRNAMT = 'CHETF2_RK'
395         INFOT = 1
396         CALL CHETF2_RK( '/', 0, A, 1, E, IP, INFO )
397         CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK )
398         INFOT = 2
399         CALL CHETF2_RK( 'U', -1, A, 1, E, IP, INFO )
400         CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK )
401         INFOT = 4
402         CALL CHETF2_RK( 'U', 2, A, 1, E, IP, INFO )
403         CALL CHKXER( 'CHETF2_RK', INFOT, NOUT, LERR, OK )
404*
405*        CHETRI_3
406*
407         SRNAMT = 'CHETRI_3'
408         INFOT = 1
409         CALL CHETRI_3( '/', 0, A, 1, E, IP, W, 1, INFO )
410         CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK )
411         INFOT = 2
412         CALL CHETRI_3( 'U', -1, A, 1, E, IP, W, 1, INFO )
413         CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK )
414         INFOT = 4
415         CALL CHETRI_3( 'U', 2, A, 1, E, IP, W, 1, INFO )
416         CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK )
417         INFOT = 8
418         CALL CHETRI_3( 'U', 0, A, 1, E, IP, W, 0, INFO )
419         CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK )
420         INFOT = 8
421         CALL CHETRI_3( 'U', 0, A, 1, E, IP, W, -2, INFO )
422         CALL CHKXER( 'CHETRI_3', INFOT, NOUT, LERR, OK )
423*
424*        CHETRI_3X
425*
426         SRNAMT = 'CHETRI_3X'
427         INFOT = 1
428         CALL CHETRI_3X( '/', 0, A, 1, E, IP, W, 1, INFO )
429         CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK )
430         INFOT = 2
431         CALL CHETRI_3X( 'U', -1, A, 1, E, IP, W, 1, INFO )
432         CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK )
433         INFOT = 4
434         CALL CHETRI_3X( 'U', 2, A, 1, E, IP, W, 1, INFO )
435         CALL CHKXER( 'CHETRI_3X', INFOT, NOUT, LERR, OK )
436*
437*        CHETRS_3
438*
439         SRNAMT = 'CHETRS_3'
440         INFOT = 1
441         CALL CHETRS_3( '/', 0, 0, A, 1, E, IP, B, 1, INFO )
442         CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK )
443         INFOT = 2
444         CALL CHETRS_3( 'U', -1, 0, A, 1, E, IP, B, 1, INFO )
445         CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK )
446         INFOT = 3
447         CALL CHETRS_3( 'U', 0, -1, A, 1, E, IP, B, 1, INFO )
448         CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK )
449         INFOT = 5
450         CALL CHETRS_3( 'U', 2, 1, A, 1, E, IP, B, 2, INFO )
451         CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK )
452         INFOT = 9
453         CALL CHETRS_3( 'U', 2, 1, A, 2, E, IP, B, 1, INFO )
454         CALL CHKXER( 'CHETRS_3', INFOT, NOUT, LERR, OK )
455*
456*        CHECON_3
457*
458         SRNAMT = 'CHECON_3'
459         INFOT = 1
460         CALL CHECON_3( '/', 0, A, 1,  E, IP, ANRM, RCOND, W, INFO )
461         CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK )
462         INFOT = 2
463         CALL CHECON_3( 'U', -1, A, 1, E, IP, ANRM, RCOND, W, INFO )
464         CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK )
465         INFOT = 4
466         CALL CHECON_3( 'U', 2, A, 1, E, IP, ANRM, RCOND, W, INFO )
467         CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK )
468         INFOT = 7
469         CALL CHECON_3( 'U', 1, A, 1, E, IP, -1.0E0, RCOND, W, INFO)
470         CALL CHKXER( 'CHECON_3', INFOT, NOUT, LERR, OK )
471*
472      ELSE IF( LSAMEN( 2, C2, 'HA' ) ) THEN
473*
474*        Test error exits of the routines that use factorization
475*        of a Hermitian indefinite matrix with Aasen's algorithm.
476*
477*        CHETRF_AA
478*
479         SRNAMT = 'CHETRF_AA'
480         INFOT = 1
481         CALL CHETRF_AA( '/', 0, A, 1, IP, W, 1, INFO )
482         CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK )
483         INFOT = 2
484         CALL CHETRF_AA( 'U', -1, A, 1, IP, W, 1, INFO )
485         CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK )
486         INFOT = 4
487         CALL CHETRF_AA( 'U', 2, A, 1, IP, W, 4, INFO )
488         CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK )
489         INFOT = 7
490         CALL CHETRF_AA( 'U', 2, A, 2, IP, W, 0, INFO )
491         CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK )
492         INFOT = 7
493         CALL CHETRF_AA( 'U', 2, A, 2, IP, W, -2, INFO )
494         CALL CHKXER( 'CHETRF_AA', INFOT, NOUT, LERR, OK )
495*
496*        CHETRS_AA
497*
498         SRNAMT = 'CHETRS_AA'
499         INFOT = 1
500         CALL CHETRS_AA( '/', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
501         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
502         INFOT = 2
503         CALL CHETRS_AA( 'U', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
504         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
505         INFOT = 3
506         CALL CHETRS_AA( 'U', 0, -1, A, 1, IP, B, 1, W, 1, INFO )
507         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
508         INFOT = 5
509         CALL CHETRS_AA( 'U', 2, 1, A, 1, IP, B, 2, W, 1, INFO )
510         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
511         INFOT = 8
512         CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 1, W, 1, INFO )
513         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
514         INFOT = 10
515         CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 2, W, 0, INFO )
516         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
517         INFOT = 10
518         CALL CHETRS_AA( 'U', 2, 1, A, 2, IP, B, 2, W, -2, INFO )
519         CALL CHKXER( 'CHETRS_AA', INFOT, NOUT, LERR, OK )
520*
521      ELSE IF( LSAMEN( 2, C2, 'H2' ) ) THEN
522*
523*        Test error exits of the routines that use factorization
524*        of a symmetric indefinite matrix with Aasen's algorithm.
525*
526*        CHETRF_AA_2STAGE
527*
528         SRNAMT = 'CHETRF_AA_2STAGE'
529         INFOT = 1
530         CALL CHETRF_AA_2STAGE( '/', 0, A, 1, A, 1, IP, IP, W, 1,
531     $                          INFO )
532         CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK )
533         INFOT = 2
534         CALL CHETRF_AA_2STAGE( 'U', -1, A, 1, A, 1, IP, IP, W, 1,
535     $                           INFO )
536         CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK )
537         INFOT = 4
538         CALL CHETRF_AA_2STAGE( 'U', 2, A, 1, A, 2, IP, IP, W, 1,
539     $                           INFO )
540         CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK )
541         INFOT = 6
542         CALL CHETRF_AA_2STAGE( 'U', 2, A, 2, A, 1, IP, IP, W, 1,
543     $                           INFO )
544         CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK )
545         INFOT = 10
546         CALL CHETRF_AA_2STAGE( 'U', 2, A, 2, A, 8, IP, IP, W, 0,
547     $                           INFO )
548         CALL CHKXER( 'CHETRF_AA_2STAGE', INFOT, NOUT, LERR, OK )
549*
550*        CHETRS_AA_2STAGE
551*
552         SRNAMT = 'CHETRS_AA_2STAGE'
553         INFOT = 1
554         CALL CHETRS_AA_2STAGE( '/', 0, 0, A, 1, A, 1, IP, IP,
555     $                          B, 1, INFO )
556         CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK )
557         INFOT = 2
558         CALL CHETRS_AA_2STAGE( 'U', -1, 0, A, 1, A, 1, IP, IP,
559     $                          B, 1, INFO )
560         CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK )
561         INFOT = 3
562         CALL CHETRS_AA_2STAGE( 'U', 0, -1, A, 1, A, 1, IP, IP,
563     $                          B, 1, INFO )
564         CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK )
565         INFOT = 5
566         CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 1, A, 1, IP, IP,
567     $                          B, 1, INFO )
568         CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK )
569         INFOT = 7
570         CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 2, A, 1, IP, IP,
571     $                          B, 1, INFO )
572         CALL CHKXER( 'CHETRS_AA_2STAGE', INFOT, NOUT, LERR, OK )
573         INFOT = 11
574         CALL CHETRS_AA_2STAGE( 'U', 2, 1, A, 2, A, 8, IP, IP,
575     $                          B, 1, INFO )
576         CALL CHKXER( 'CHETRS_AA_STAGE', INFOT, NOUT, LERR, OK )
577*
578*        Test error exits of the routines that use factorization
579*        of a Hermitian indefinite packed matrix with patrial
580*        (Bunch-Kaufman) diagonal pivoting method.
581*
582      ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN
583*
584*        CHPTRF
585*
586         SRNAMT = 'CHPTRF'
587         INFOT = 1
588         CALL CHPTRF( '/', 0, A, IP, INFO )
589         CALL CHKXER( 'CHPTRF', INFOT, NOUT, LERR, OK )
590         INFOT = 2
591         CALL CHPTRF( 'U', -1, A, IP, INFO )
592         CALL CHKXER( 'CHPTRF', INFOT, NOUT, LERR, OK )
593*
594*        CHPTRI
595*
596         SRNAMT = 'CHPTRI'
597         INFOT = 1
598         CALL CHPTRI( '/', 0, A, IP, W, INFO )
599         CALL CHKXER( 'CHPTRI', INFOT, NOUT, LERR, OK )
600         INFOT = 2
601         CALL CHPTRI( 'U', -1, A, IP, W, INFO )
602         CALL CHKXER( 'CHPTRI', INFOT, NOUT, LERR, OK )
603*
604*        CHPTRS
605*
606         SRNAMT = 'CHPTRS'
607         INFOT = 1
608         CALL CHPTRS( '/', 0, 0, A, IP, B, 1, INFO )
609         CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK )
610         INFOT = 2
611         CALL CHPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
612         CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK )
613         INFOT = 3
614         CALL CHPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
615         CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK )
616         INFOT = 7
617         CALL CHPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
618         CALL CHKXER( 'CHPTRS', INFOT, NOUT, LERR, OK )
619*
620*        CHPRFS
621*
622         SRNAMT = 'CHPRFS'
623         INFOT = 1
624         CALL CHPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
625     $                INFO )
626         CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK )
627         INFOT = 2
628         CALL CHPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
629     $                INFO )
630         CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK )
631         INFOT = 3
632         CALL CHPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
633     $                INFO )
634         CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK )
635         INFOT = 8
636         CALL CHPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
637     $                INFO )
638         CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK )
639         INFOT = 10
640         CALL CHPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
641     $                INFO )
642         CALL CHKXER( 'CHPRFS', INFOT, NOUT, LERR, OK )
643*
644*        CHPCON
645*
646         SRNAMT = 'CHPCON'
647         INFOT = 1
648         CALL CHPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
649         CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK )
650         INFOT = 2
651         CALL CHPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
652         CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK )
653         INFOT = 5
654         CALL CHPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
655         CALL CHKXER( 'CHPCON', INFOT, NOUT, LERR, OK )
656      END IF
657*
658*     Print a summary line.
659*
660      CALL ALAESM( PATH, OK, NOUT )
661*
662      RETURN
663*
664*     End of CERRHE
665*
666      END
667