1*> \brief \b CERRGEX
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 CERRGE( 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*> CERRGE tests the error exits for the COMPLEX routines
25*> for general matrices.
26*>
27*> Note that this file is used only when the XBLAS are available,
28*> otherwise cerrge.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 CERRGE( 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, CCOND, RCOND, BERR
82*     ..
83*     .. Local Arrays ..
84      INTEGER            IP( NMAX )
85      REAL               R( NMAX ), R1( NMAX ), R2( NMAX ), CS( NMAX ),
86     $                   RS( NMAX )
87      COMPLEX            A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
88     $                   W( 2*NMAX ), X( NMAX ), ERR_BNDS_N( NMAX, 3 ),
89     $                   ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
90*     ..
91*     .. External Functions ..
92      LOGICAL            LSAMEN
93      EXTERNAL           LSAMEN
94*     ..
95*     .. External Subroutines ..
96      EXTERNAL           ALAESM, CGBCON, CGBEQU, CGBRFS, CGBTF2, CGBTRF,
97     $                   CGBTRS, CGECON, CGEEQU, CGERFS, CGETF2, CGETRF,
98     $                   CGETRI, CGETRS, CHKXER, CGEEQUB, CGERFSX,
99     $                   CGBEQUB, CGBRFSX
100*     ..
101*     .. Scalars in Common ..
102      LOGICAL            LERR, OK
103      CHARACTER*32       SRNAMT
104      INTEGER            INFOT, NOUT
105*     ..
106*     .. Common blocks ..
107      COMMON             / INFOC / INFOT, NOUT, OK, LERR
108      COMMON             / SRNAMC / SRNAMT
109*     ..
110*     .. Intrinsic Functions ..
111      INTRINSIC          CMPLX, REAL
112*     ..
113*     .. Executable Statements ..
114*
115      NOUT = NUNIT
116      WRITE( NOUT, FMT = * )
117      C2 = PATH( 2: 3 )
118*
119*     Set the variables to innocuous values.
120*
121      DO 20 J = 1, NMAX
122         DO 10 I = 1, NMAX
123            A( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
124            AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
125   10    CONTINUE
126         B( J ) = 0.
127         R1( J ) = 0.
128         R2( J ) = 0.
129         W( J ) = 0.
130         X( J ) = 0.
131         CS( J ) = 0.
132         RS( J ) = 0.
133         IP( J ) = J
134   20 CONTINUE
135      OK = .TRUE.
136*
137*     Test error exits of the routines that use the LU decomposition
138*     of a general matrix.
139*
140      IF( LSAMEN( 2, C2, 'GE' ) ) THEN
141*
142*        CGETRF
143*
144         SRNAMT = 'CGETRF'
145         INFOT = 1
146         CALL CGETRF( -1, 0, A, 1, IP, INFO )
147         CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
148         INFOT = 2
149         CALL CGETRF( 0, -1, A, 1, IP, INFO )
150         CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
151         INFOT = 4
152         CALL CGETRF( 2, 1, A, 1, IP, INFO )
153         CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
154*
155*        CGETF2
156*
157         SRNAMT = 'CGETF2'
158         INFOT = 1
159         CALL CGETF2( -1, 0, A, 1, IP, INFO )
160         CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
161         INFOT = 2
162         CALL CGETF2( 0, -1, A, 1, IP, INFO )
163         CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
164         INFOT = 4
165         CALL CGETF2( 2, 1, A, 1, IP, INFO )
166         CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
167*
168*        CGETRI
169*
170         SRNAMT = 'CGETRI'
171         INFOT = 1
172         CALL CGETRI( -1, A, 1, IP, W, 1, INFO )
173         CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
174         INFOT = 3
175         CALL CGETRI( 2, A, 1, IP, W, 2, INFO )
176         CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
177         INFOT = 6
178         CALL CGETRI( 2, A, 2, IP, W, 1, INFO )
179         CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
180*
181*        CGETRS
182*
183         SRNAMT = 'CGETRS'
184         INFOT = 1
185         CALL CGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
186         CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
187         INFOT = 2
188         CALL CGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
189         CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
190         INFOT = 3
191         CALL CGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
192         CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
193         INFOT = 5
194         CALL CGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
195         CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
196         INFOT = 8
197         CALL CGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
198         CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
199*
200*        CGERFS
201*
202         SRNAMT = 'CGERFS'
203         INFOT = 1
204         CALL CGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
205     $                R, INFO )
206         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
207         INFOT = 2
208         CALL CGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
209     $                W, R, INFO )
210         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
211         INFOT = 3
212         CALL CGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
213     $                W, R, INFO )
214         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
215         INFOT = 5
216         CALL CGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
217     $                R, INFO )
218         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
219         INFOT = 7
220         CALL CGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
221     $                R, INFO )
222         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
223         INFOT = 10
224         CALL CGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
225     $                R, INFO )
226         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
227         INFOT = 12
228         CALL CGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
229     $                R, INFO )
230         CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
231*
232*        CGERFSX
233*
234         N_ERR_BNDS = 3
235         NPARAMS = 0
236         SRNAMT = 'CGERFSX'
237         INFOT = 1
238         CALL CGERFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
239     $                1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
240     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
241         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
242         INFOT = 2
243         EQ = '/'
244         CALL CGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
245     $                2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
246     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
247         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
248         INFOT = 3
249         EQ = 'R'
250         CALL CGERFSX( 'N', EQ, -1, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
251     $                1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
252     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
253         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
254         INFOT = 4
255         CALL CGERFSX( 'N', EQ, 0, -1, A, 1, AF, 1, IP, RS, CS, B, 1, X,
256     $                1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
257     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
258         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
259         INFOT = 6
260         CALL CGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
261     $                2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
262     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
263         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
264         INFOT = 8
265         CALL CGERFSX( 'N', EQ, 2, 1, A, 2, AF, 1, IP, RS, CS, B, 2, X,
266     $                2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
267     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
268         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
269         INFOT = 13
270         EQ = 'C'
271         CALL CGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 1, X,
272     $                2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
273     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
274         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
275         INFOT = 15
276         CALL CGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 2, X,
277     $                1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
278     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
279         CALL CHKXER( 'CGERFSX', INFOT, NOUT, LERR, OK )
280*
281*        CGECON
282*
283         SRNAMT = 'CGECON'
284         INFOT = 1
285         CALL CGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
286         CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
287         INFOT = 2
288         CALL CGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO )
289         CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
290         INFOT = 4
291         CALL CGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO )
292         CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
293*
294*        CGEEQU
295*
296         SRNAMT = 'CGEEQU'
297         INFOT = 1
298         CALL CGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
299         CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
300         INFOT = 2
301         CALL CGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
302         CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
303         INFOT = 4
304         CALL CGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
305         CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
306*
307*        CGEEQUB
308*
309         SRNAMT = 'CGEEQUB'
310         INFOT = 1
311         CALL CGEEQUB( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
312         CALL CHKXER( 'CGEEQUB', INFOT, NOUT, LERR, OK )
313         INFOT = 2
314         CALL CGEEQUB( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
315         CALL CHKXER( 'CGEEQUB', INFOT, NOUT, LERR, OK )
316         INFOT = 4
317         CALL CGEEQUB( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
318         CALL CHKXER( 'CGEEQUB', INFOT, NOUT, LERR, OK )
319*
320*     Test error exits of the routines that use the LU decomposition
321*     of a general band matrix.
322*
323      ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
324*
325*        CGBTRF
326*
327         SRNAMT = 'CGBTRF'
328         INFOT = 1
329         CALL CGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
330         CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
331         INFOT = 2
332         CALL CGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
333         CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
334         INFOT = 3
335         CALL CGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
336         CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
337         INFOT = 4
338         CALL CGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
339         CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
340         INFOT = 6
341         CALL CGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
342         CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
343*
344*        CGBTF2
345*
346         SRNAMT = 'CGBTF2'
347         INFOT = 1
348         CALL CGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
349         CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
350         INFOT = 2
351         CALL CGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
352         CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
353         INFOT = 3
354         CALL CGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
355         CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
356         INFOT = 4
357         CALL CGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
358         CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
359         INFOT = 6
360         CALL CGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
361         CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
362*
363*        CGBTRS
364*
365         SRNAMT = 'CGBTRS'
366         INFOT = 1
367         CALL CGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
368         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
369         INFOT = 2
370         CALL CGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
371         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
372         INFOT = 3
373         CALL CGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
374         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
375         INFOT = 4
376         CALL CGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
377         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
378         INFOT = 5
379         CALL CGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
380         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
381         INFOT = 7
382         CALL CGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
383         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
384         INFOT = 10
385         CALL CGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
386         CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
387*
388*        CGBRFS
389*
390         SRNAMT = 'CGBRFS'
391         INFOT = 1
392         CALL CGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
393     $                R2, W, R, INFO )
394         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
395         INFOT = 2
396         CALL CGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
397     $                R2, W, R, INFO )
398         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
399         INFOT = 3
400         CALL CGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
401     $                R2, W, R, INFO )
402         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
403         INFOT = 4
404         CALL CGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
405     $                R2, W, R, INFO )
406         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
407         INFOT = 5
408         CALL CGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
409     $                R2, W, R, INFO )
410         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
411         INFOT = 7
412         CALL CGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
413     $                R2, W, R, INFO )
414         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
415         INFOT = 9
416         CALL CGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
417     $                R2, W, R, INFO )
418         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
419         INFOT = 12
420         CALL CGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
421     $                R2, W, R, INFO )
422         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
423         INFOT = 14
424         CALL CGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
425     $                R2, W, R, INFO )
426         CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
427*
428*        CGBRFSX
429*
430         N_ERR_BNDS = 3
431         NPARAMS = 0
432         SRNAMT = 'CGBRFSX'
433         INFOT = 1
434         CALL CGBRFSX( '/', EQ, 0, 0, 0, 0, A, 1, AF, 1, IP, RS, CS, B,
435     $                1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
436     $                ERR_BNDS_C, NPARAMS, PARAMS,  W, R, INFO )
437         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
438         INFOT = 2
439         EQ = '/'
440         CALL CGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
441     $                2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
442     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
443         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
444         INFOT = 3
445         EQ = 'R'
446         CALL CGBRFSX( 'N', EQ, -1, 1, 1, 0, A, 1, AF, 1, IP, RS, CS, B,
447     $                1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
448     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
449         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
450         INFOT = 4
451         EQ = 'R'
452         CALL CGBRFSX( 'N', EQ, 2, -1, 1, 1, A, 3, AF, 4, IP, RS, CS, B,
453     $                1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
454     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
455         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
456         INFOT = 5
457         EQ = 'R'
458         CALL CGBRFSX( 'N', EQ, 2, 1, -1, 1, A, 3, AF, 4, IP, RS, CS, B,
459     $                1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
460     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
461         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
462         INFOT = 6
463         CALL CGBRFSX( 'N', EQ, 0, 0, 0, -1, A, 1, AF, 1, IP, RS, CS, B,
464     $                1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
465     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
466         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
467         INFOT = 8
468         CALL CGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
469     $                2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
470     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
471         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
472         INFOT = 10
473         CALL CGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 3, IP, RS, CS, B,
474     $                2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
475     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
476         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
477         INFOT = 13
478         EQ = 'C'
479         CALL CGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
480     $                1, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
481     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
482         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
483         INFOT = 15
484         CALL CGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
485     $                2, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
486     $                ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
487         CALL CHKXER( 'CGBRFSX', INFOT, NOUT, LERR, OK )
488*
489*        CGBCON
490*
491         SRNAMT = 'CGBCON'
492         INFOT = 1
493         CALL CGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
494         CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
495         INFOT = 2
496         CALL CGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
497         CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
498         INFOT = 3
499         CALL CGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
500         CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
501         INFOT = 4
502         CALL CGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO )
503         CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
504         INFOT = 6
505         CALL CGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO )
506         CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
507*
508*        CGBEQU
509*
510         SRNAMT = 'CGBEQU'
511         INFOT = 1
512         CALL CGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
513     $                INFO )
514         CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
515         INFOT = 2
516         CALL CGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
517     $                INFO )
518         CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
519         INFOT = 3
520         CALL CGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
521     $                INFO )
522         CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
523         INFOT = 4
524         CALL CGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
525     $                INFO )
526         CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
527         INFOT = 6
528         CALL CGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
529     $                INFO )
530         CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
531*
532*        CGBEQUB
533*
534         SRNAMT = 'CGBEQUB'
535         INFOT = 1
536         CALL CGBEQUB( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
537     $                INFO )
538         CALL CHKXER( 'CGBEQUB', INFOT, NOUT, LERR, OK )
539         INFOT = 2
540         CALL CGBEQUB( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
541     $                INFO )
542         CALL CHKXER( 'CGBEQUB', INFOT, NOUT, LERR, OK )
543         INFOT = 3
544         CALL CGBEQUB( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
545     $                INFO )
546         CALL CHKXER( 'CGBEQUB', INFOT, NOUT, LERR, OK )
547         INFOT = 4
548         CALL CGBEQUB( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
549     $                INFO )
550         CALL CHKXER( 'CGBEQUB', INFOT, NOUT, LERR, OK )
551         INFOT = 6
552         CALL CGBEQUB( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
553     $                INFO )
554         CALL CHKXER( 'CGBEQUB', INFOT, NOUT, LERR, OK )
555      END IF
556*
557*     Print a summary line.
558*
559      CALL ALAESM( PATH, OK, NOUT )
560*
561      RETURN
562*
563*     End of CERRGE
564*
565      END
566