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