1 SUBROUTINE ZERRGE( PATH, NUNIT )
2 *
3 * -- LAPACK test routine (version 3.2.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * April 2009
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRGE tests the error exits for the COMPLEX*16 routines
16 * for general matrices.
17 *
18 * Note that this file is used only when the XBLAS are available,
19 * otherwise zerrge.f defines this subroutine.
20 *
21 * Arguments
22 * =========
23 *
24 * PATH (input) CHARACTER*3
25 * The LAPACK path name for the routines to be tested.
26 *
27 * NUNIT (input) INTEGER
28 * The unit number for output.
29 *
30 * =====================================================================
31 *
32 * .. Parameters ..
33 INTEGER NMAX
34 PARAMETER ( NMAX = 4 )
35 * ..
36 * .. Local Scalars ..
37 CHARACTER EQ
38 CHARACTER*2 C2
39 INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
40 DOUBLE PRECISION ANRM, CCOND, RCOND, BERR
41 * ..
42 * .. Local Arrays ..
43 INTEGER IP( NMAX )
44 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX ), CS( NMAX ),
45 $ RS( NMAX )
46 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
47 $ W( 2*NMAX ), X( NMAX ), ERR_BNDS_N( NMAX, 3 ),
48 $ ERR_BNDS_C( NMAX, 3 ), PARAMS
49 * ..
50 * .. External Functions ..
51 LOGICAL LSAMEN
52 EXTERNAL LSAMEN
53 * ..
54 * .. External Subroutines ..
55 EXTERNAL ALAESM, CHKXER, ZGBCON, ZGBEQU, ZGBRFS, ZGBTF2,
56 $ ZGBTRF, ZGBTRS, ZGECON, ZGEEQU, ZGERFS, ZGETF2,
57 $ ZGETRF, ZGETRI, ZGETRS, ZGEEQUB, ZGERFSX,
58 $ ZGBEQUB, ZGBRFSX
59 * ..
60 * .. Scalars in Common ..
61 LOGICAL LERR, OK
62 CHARACTER*32 SRNAMT
63 INTEGER INFOT, NOUT
64 * ..
65 * .. Common blocks ..
66 COMMON / INFOC / INFOT, NOUT, OK, LERR
67 COMMON / SRNAMC / SRNAMT
68 * ..
69 * .. Intrinsic Functions ..
70 INTRINSIC DBLE, DCMPLX
71 * ..
72 * .. Executable Statements ..
73 *
74 NOUT = NUNIT
75 WRITE( NOUT, FMT = * )
76 C2 = PATH( 2: 3 )
77 *
78 * Set the variables to innocuous values.
79 *
80 DO 20 J = 1, NMAX
81 DO 10 I = 1, NMAX
82 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
83 $ -1.D0 / DBLE( I+J ) )
84 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
85 $ -1.D0 / DBLE( I+J ) )
86 10 CONTINUE
87 B( J ) = 0.D0
88 R1( J ) = 0.D0
89 R2( J ) = 0.D0
90 W( J ) = 0.D0
91 X( J ) = 0.D0
92 CS( J ) = 0.D0
93 RS( J ) = 0.D0
94 IP( J ) = J
95 20 CONTINUE
96 OK = .TRUE.
97 *
98 * Test error exits of the routines that use the LU decomposition
99 * of a general matrix.
100 *
101 IF( LSAMEN( 2, C2, 'GE' ) ) THEN
102 *
103 * ZGETRF
104 *
105 SRNAMT = 'ZGETRF'
106 INFOT = 1
107 CALL ZGETRF( -1, 0, A, 1, IP, INFO )
108 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
109 INFOT = 2
110 CALL ZGETRF( 0, -1, A, 1, IP, INFO )
111 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
112 INFOT = 4
113 CALL ZGETRF( 2, 1, A, 1, IP, INFO )
114 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
115 *
116 * ZGETF2
117 *
118 SRNAMT = 'ZGETF2'
119 INFOT = 1
120 CALL ZGETF2( -1, 0, A, 1, IP, INFO )
121 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
122 INFOT = 2
123 CALL ZGETF2( 0, -1, A, 1, IP, INFO )
124 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
125 INFOT = 4
126 CALL ZGETF2( 2, 1, A, 1, IP, INFO )
127 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
128 *
129 * ZGETRI
130 *
131 SRNAMT = 'ZGETRI'
132 INFOT = 1
133 CALL ZGETRI( -1, A, 1, IP, W, 1, INFO )
134 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
135 INFOT = 3
136 CALL ZGETRI( 2, A, 1, IP, W, 2, INFO )
137 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
138 INFOT = 6
139 CALL ZGETRI( 2, A, 2, IP, W, 1, INFO )
140 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
141 *
142 * ZGETRS
143 *
144 SRNAMT = 'ZGETRS'
145 INFOT = 1
146 CALL ZGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
147 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
148 INFOT = 2
149 CALL ZGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
150 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
151 INFOT = 3
152 CALL ZGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
153 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
154 INFOT = 5
155 CALL ZGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
156 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
157 INFOT = 8
158 CALL ZGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
159 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
160 *
161 * ZGERFS
162 *
163 SRNAMT = 'ZGERFS'
164 INFOT = 1
165 CALL ZGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
166 $ R, INFO )
167 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
168 INFOT = 2
169 CALL ZGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
170 $ W, R, INFO )
171 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
172 INFOT = 3
173 CALL ZGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
174 $ W, R, INFO )
175 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
176 INFOT = 5
177 CALL ZGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
178 $ R, INFO )
179 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
180 INFOT = 7
181 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
182 $ R, INFO )
183 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
184 INFOT = 10
185 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
186 $ R, INFO )
187 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
188 INFOT = 12
189 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
190 $ R, INFO )
191 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
192 *
193 * ZGERFSX
194 *
195 N_ERR_BNDS = 3
196 NPARAMS = 0
197 SRNAMT = 'ZGERFSX'
198 INFOT = 1
199 CALL ZGERFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
200 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
201 $ NPARAMS, PARAMS, W, R, INFO )
202 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
203 INFOT = 2
204 EQ = '/'
205 CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
206 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
207 $ NPARAMS, PARAMS, W, R, INFO )
208 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
209 INFOT = 3
210 EQ = 'R'
211 CALL ZGERFSX( 'N', EQ, -1, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
212 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
213 $ NPARAMS, PARAMS, W, R, INFO )
214 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
215 INFOT = 4
216 CALL ZGERFSX( 'N', EQ, 0, -1, A, 1, AF, 1, IP, RS, CS, B, 1, X,
217 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
218 $ NPARAMS, PARAMS, W, R, INFO )
219 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
220 INFOT = 6
221 CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
222 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
223 $ NPARAMS, PARAMS, W, R, INFO )
224 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
225 INFOT = 8
226 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 1, IP, RS, CS, B, 2, X,
227 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
228 $ NPARAMS, PARAMS, W, R, INFO )
229 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
230 INFOT = 13
231 EQ = 'C'
232 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 1, X,
233 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
234 $ NPARAMS, PARAMS, W, R, INFO )
235 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
236 INFOT = 15
237 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 2, X,
238 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
239 $ NPARAMS, PARAMS, W, R, INFO )
240 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
241 *
242 * ZGECON
243 *
244 SRNAMT = 'ZGECON'
245 INFOT = 1
246 CALL ZGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
247 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
248 INFOT = 2
249 CALL ZGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO )
250 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
251 INFOT = 4
252 CALL ZGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO )
253 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
254 *
255 * ZGEEQU
256 *
257 SRNAMT = 'ZGEEQU'
258 INFOT = 1
259 CALL ZGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
260 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
261 INFOT = 2
262 CALL ZGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
263 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
264 INFOT = 4
265 CALL ZGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
266 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
267 *
268 * ZGEEQUB
269 *
270 SRNAMT = 'ZGEEQUB'
271 INFOT = 1
272 CALL ZGEEQUB( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
273 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
274 INFOT = 2
275 CALL ZGEEQUB( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
276 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
277 INFOT = 4
278 CALL ZGEEQUB( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
279 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
280 *
281 * Test error exits of the routines that use the LU decomposition
282 * of a general band matrix.
283 *
284 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
285 *
286 * ZGBTRF
287 *
288 SRNAMT = 'ZGBTRF'
289 INFOT = 1
290 CALL ZGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
291 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
292 INFOT = 2
293 CALL ZGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
294 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
295 INFOT = 3
296 CALL ZGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
297 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
298 INFOT = 4
299 CALL ZGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
300 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
301 INFOT = 6
302 CALL ZGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
303 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
304 *
305 * ZGBTF2
306 *
307 SRNAMT = 'ZGBTF2'
308 INFOT = 1
309 CALL ZGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
310 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
311 INFOT = 2
312 CALL ZGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
313 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
314 INFOT = 3
315 CALL ZGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
316 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
317 INFOT = 4
318 CALL ZGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
319 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
320 INFOT = 6
321 CALL ZGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
322 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
323 *
324 * ZGBTRS
325 *
326 SRNAMT = 'ZGBTRS'
327 INFOT = 1
328 CALL ZGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
329 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
330 INFOT = 2
331 CALL ZGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
332 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
333 INFOT = 3
334 CALL ZGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
335 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
336 INFOT = 4
337 CALL ZGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
338 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
339 INFOT = 5
340 CALL ZGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
341 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
342 INFOT = 7
343 CALL ZGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
344 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
345 INFOT = 10
346 CALL ZGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
347 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
348 *
349 * ZGBRFS
350 *
351 SRNAMT = 'ZGBRFS'
352 INFOT = 1
353 CALL ZGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
354 $ R2, W, R, INFO )
355 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
356 INFOT = 2
357 CALL ZGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
358 $ R2, W, R, INFO )
359 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
360 INFOT = 3
361 CALL ZGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
362 $ R2, W, R, INFO )
363 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
364 INFOT = 4
365 CALL ZGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
366 $ R2, W, R, INFO )
367 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
368 INFOT = 5
369 CALL ZGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
370 $ R2, W, R, INFO )
371 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
372 INFOT = 7
373 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
374 $ R2, W, R, INFO )
375 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
376 INFOT = 9
377 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
378 $ R2, W, R, INFO )
379 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
380 INFOT = 12
381 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
382 $ R2, W, R, INFO )
383 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
384 INFOT = 14
385 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
386 $ R2, W, R, INFO )
387 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
388 *
389 * ZGBRFSX
390 *
391 N_ERR_BNDS = 3
392 NPARAMS = 0
393 SRNAMT = 'ZGBRFSX'
394 INFOT = 1
395 CALL ZGBRFSX( '/', EQ, 0, 0, 0, 0, A, 1, AF, 1, IP, RS, CS, B,
396 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
397 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
398 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
399 INFOT = 2
400 EQ = '/'
401 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
402 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
403 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
404 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
405 INFOT = 3
406 EQ = 'R'
407 CALL ZGBRFSX( 'N', EQ, -1, 1, 1, 0, A, 1, AF, 1, IP, RS, CS, B,
408 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
409 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
410 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
411 INFOT = 4
412 EQ = 'R'
413 CALL ZGBRFSX( 'N', EQ, 2, -1, 1, 1, A, 3, AF, 4, IP, RS, CS, B,
414 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
415 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
416 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
417 INFOT = 5
418 EQ = 'R'
419 CALL ZGBRFSX( 'N', EQ, 2, 1, -1, 1, A, 3, AF, 4, IP, RS, CS, B,
420 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
421 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
422 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
423 INFOT = 6
424 CALL ZGBRFSX( 'N', EQ, 0, 0, 0, -1, A, 1, AF, 1, IP, RS, CS, B,
425 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
426 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
427 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
428 INFOT = 8
429 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
430 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
431 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
432 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
433 INFOT = 10
434 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 3, IP, RS, CS, B,
435 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
436 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
437 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
438 INFOT = 13
439 EQ = 'C'
440 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
441 $ 1, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
442 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
443 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
444 INFOT = 15
445 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
446 $ 2, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
447 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
448 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
449 *
450 * ZGBCON
451 *
452 SRNAMT = 'ZGBCON'
453 INFOT = 1
454 CALL ZGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
455 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
456 INFOT = 2
457 CALL ZGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
458 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
459 INFOT = 3
460 CALL ZGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
461 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
462 INFOT = 4
463 CALL ZGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO )
464 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
465 INFOT = 6
466 CALL ZGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO )
467 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
468 *
469 * ZGBEQU
470 *
471 SRNAMT = 'ZGBEQU'
472 INFOT = 1
473 CALL ZGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
474 $ INFO )
475 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
476 INFOT = 2
477 CALL ZGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
478 $ INFO )
479 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
480 INFOT = 3
481 CALL ZGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
482 $ INFO )
483 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
484 INFOT = 4
485 CALL ZGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
486 $ INFO )
487 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
488 INFOT = 6
489 CALL ZGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
490 $ INFO )
491 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
492 *
493 * ZGBEQUB
494 *
495 SRNAMT = 'ZGBEQUB'
496 INFOT = 1
497 CALL ZGBEQUB( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
498 $ INFO )
499 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
500 INFOT = 2
501 CALL ZGBEQUB( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
502 $ INFO )
503 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
504 INFOT = 3
505 CALL ZGBEQUB( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
506 $ INFO )
507 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
508 INFOT = 4
509 CALL ZGBEQUB( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
510 $ INFO )
511 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
512 INFOT = 6
513 CALL ZGBEQUB( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
514 $ INFO )
515 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
516 END IF
517 *
518 * Print a summary line.
519 *
520 CALL ALAESM( PATH, OK, NOUT )
521 *
522 RETURN
523 *
524 * End of ZERRGE
525 *
526 END
2 *
3 * -- LAPACK test routine (version 3.2.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * April 2009
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRGE tests the error exits for the COMPLEX*16 routines
16 * for general matrices.
17 *
18 * Note that this file is used only when the XBLAS are available,
19 * otherwise zerrge.f defines this subroutine.
20 *
21 * Arguments
22 * =========
23 *
24 * PATH (input) CHARACTER*3
25 * The LAPACK path name for the routines to be tested.
26 *
27 * NUNIT (input) INTEGER
28 * The unit number for output.
29 *
30 * =====================================================================
31 *
32 * .. Parameters ..
33 INTEGER NMAX
34 PARAMETER ( NMAX = 4 )
35 * ..
36 * .. Local Scalars ..
37 CHARACTER EQ
38 CHARACTER*2 C2
39 INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
40 DOUBLE PRECISION ANRM, CCOND, RCOND, BERR
41 * ..
42 * .. Local Arrays ..
43 INTEGER IP( NMAX )
44 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX ), CS( NMAX ),
45 $ RS( NMAX )
46 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
47 $ W( 2*NMAX ), X( NMAX ), ERR_BNDS_N( NMAX, 3 ),
48 $ ERR_BNDS_C( NMAX, 3 ), PARAMS
49 * ..
50 * .. External Functions ..
51 LOGICAL LSAMEN
52 EXTERNAL LSAMEN
53 * ..
54 * .. External Subroutines ..
55 EXTERNAL ALAESM, CHKXER, ZGBCON, ZGBEQU, ZGBRFS, ZGBTF2,
56 $ ZGBTRF, ZGBTRS, ZGECON, ZGEEQU, ZGERFS, ZGETF2,
57 $ ZGETRF, ZGETRI, ZGETRS, ZGEEQUB, ZGERFSX,
58 $ ZGBEQUB, ZGBRFSX
59 * ..
60 * .. Scalars in Common ..
61 LOGICAL LERR, OK
62 CHARACTER*32 SRNAMT
63 INTEGER INFOT, NOUT
64 * ..
65 * .. Common blocks ..
66 COMMON / INFOC / INFOT, NOUT, OK, LERR
67 COMMON / SRNAMC / SRNAMT
68 * ..
69 * .. Intrinsic Functions ..
70 INTRINSIC DBLE, DCMPLX
71 * ..
72 * .. Executable Statements ..
73 *
74 NOUT = NUNIT
75 WRITE( NOUT, FMT = * )
76 C2 = PATH( 2: 3 )
77 *
78 * Set the variables to innocuous values.
79 *
80 DO 20 J = 1, NMAX
81 DO 10 I = 1, NMAX
82 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
83 $ -1.D0 / DBLE( I+J ) )
84 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
85 $ -1.D0 / DBLE( I+J ) )
86 10 CONTINUE
87 B( J ) = 0.D0
88 R1( J ) = 0.D0
89 R2( J ) = 0.D0
90 W( J ) = 0.D0
91 X( J ) = 0.D0
92 CS( J ) = 0.D0
93 RS( J ) = 0.D0
94 IP( J ) = J
95 20 CONTINUE
96 OK = .TRUE.
97 *
98 * Test error exits of the routines that use the LU decomposition
99 * of a general matrix.
100 *
101 IF( LSAMEN( 2, C2, 'GE' ) ) THEN
102 *
103 * ZGETRF
104 *
105 SRNAMT = 'ZGETRF'
106 INFOT = 1
107 CALL ZGETRF( -1, 0, A, 1, IP, INFO )
108 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
109 INFOT = 2
110 CALL ZGETRF( 0, -1, A, 1, IP, INFO )
111 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
112 INFOT = 4
113 CALL ZGETRF( 2, 1, A, 1, IP, INFO )
114 CALL CHKXER( 'ZGETRF', INFOT, NOUT, LERR, OK )
115 *
116 * ZGETF2
117 *
118 SRNAMT = 'ZGETF2'
119 INFOT = 1
120 CALL ZGETF2( -1, 0, A, 1, IP, INFO )
121 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
122 INFOT = 2
123 CALL ZGETF2( 0, -1, A, 1, IP, INFO )
124 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
125 INFOT = 4
126 CALL ZGETF2( 2, 1, A, 1, IP, INFO )
127 CALL CHKXER( 'ZGETF2', INFOT, NOUT, LERR, OK )
128 *
129 * ZGETRI
130 *
131 SRNAMT = 'ZGETRI'
132 INFOT = 1
133 CALL ZGETRI( -1, A, 1, IP, W, 1, INFO )
134 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
135 INFOT = 3
136 CALL ZGETRI( 2, A, 1, IP, W, 2, INFO )
137 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
138 INFOT = 6
139 CALL ZGETRI( 2, A, 2, IP, W, 1, INFO )
140 CALL CHKXER( 'ZGETRI', INFOT, NOUT, LERR, OK )
141 *
142 * ZGETRS
143 *
144 SRNAMT = 'ZGETRS'
145 INFOT = 1
146 CALL ZGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
147 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
148 INFOT = 2
149 CALL ZGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
150 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
151 INFOT = 3
152 CALL ZGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
153 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
154 INFOT = 5
155 CALL ZGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
156 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
157 INFOT = 8
158 CALL ZGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
159 CALL CHKXER( 'ZGETRS', INFOT, NOUT, LERR, OK )
160 *
161 * ZGERFS
162 *
163 SRNAMT = 'ZGERFS'
164 INFOT = 1
165 CALL ZGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
166 $ R, INFO )
167 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
168 INFOT = 2
169 CALL ZGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
170 $ W, R, INFO )
171 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
172 INFOT = 3
173 CALL ZGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
174 $ W, R, INFO )
175 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
176 INFOT = 5
177 CALL ZGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
178 $ R, INFO )
179 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
180 INFOT = 7
181 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
182 $ R, INFO )
183 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
184 INFOT = 10
185 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
186 $ R, INFO )
187 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
188 INFOT = 12
189 CALL ZGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
190 $ R, INFO )
191 CALL CHKXER( 'ZGERFS', INFOT, NOUT, LERR, OK )
192 *
193 * ZGERFSX
194 *
195 N_ERR_BNDS = 3
196 NPARAMS = 0
197 SRNAMT = 'ZGERFSX'
198 INFOT = 1
199 CALL ZGERFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
200 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
201 $ NPARAMS, PARAMS, W, R, INFO )
202 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
203 INFOT = 2
204 EQ = '/'
205 CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
206 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
207 $ NPARAMS, PARAMS, W, R, INFO )
208 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
209 INFOT = 3
210 EQ = 'R'
211 CALL ZGERFSX( 'N', EQ, -1, 0, A, 1, AF, 1, IP, RS, CS, B, 1, X,
212 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
213 $ NPARAMS, PARAMS, W, R, INFO )
214 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
215 INFOT = 4
216 CALL ZGERFSX( 'N', EQ, 0, -1, A, 1, AF, 1, IP, RS, CS, B, 1, X,
217 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
218 $ NPARAMS, PARAMS, W, R, INFO )
219 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
220 INFOT = 6
221 CALL ZGERFSX( 'N', EQ, 2, 1, A, 1, AF, 2, IP, RS, CS, B, 2, X,
222 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
223 $ NPARAMS, PARAMS, W, R, INFO )
224 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
225 INFOT = 8
226 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 1, IP, RS, CS, B, 2, X,
227 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
228 $ NPARAMS, PARAMS, W, R, INFO )
229 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
230 INFOT = 13
231 EQ = 'C'
232 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 1, X,
233 $ 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
234 $ NPARAMS, PARAMS, W, R, INFO )
235 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
236 INFOT = 15
237 CALL ZGERFSX( 'N', EQ, 2, 1, A, 2, AF, 2, IP, RS, CS, B, 2, X,
238 $ 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C,
239 $ NPARAMS, PARAMS, W, R, INFO )
240 CALL CHKXER( 'ZGERFSX', INFOT, NOUT, LERR, OK )
241 *
242 * ZGECON
243 *
244 SRNAMT = 'ZGECON'
245 INFOT = 1
246 CALL ZGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
247 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
248 INFOT = 2
249 CALL ZGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO )
250 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
251 INFOT = 4
252 CALL ZGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO )
253 CALL CHKXER( 'ZGECON', INFOT, NOUT, LERR, OK )
254 *
255 * ZGEEQU
256 *
257 SRNAMT = 'ZGEEQU'
258 INFOT = 1
259 CALL ZGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
260 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
261 INFOT = 2
262 CALL ZGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
263 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
264 INFOT = 4
265 CALL ZGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
266 CALL CHKXER( 'ZGEEQU', INFOT, NOUT, LERR, OK )
267 *
268 * ZGEEQUB
269 *
270 SRNAMT = 'ZGEEQUB'
271 INFOT = 1
272 CALL ZGEEQUB( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
273 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
274 INFOT = 2
275 CALL ZGEEQUB( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
276 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
277 INFOT = 4
278 CALL ZGEEQUB( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
279 CALL CHKXER( 'ZGEEQUB', INFOT, NOUT, LERR, OK )
280 *
281 * Test error exits of the routines that use the LU decomposition
282 * of a general band matrix.
283 *
284 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
285 *
286 * ZGBTRF
287 *
288 SRNAMT = 'ZGBTRF'
289 INFOT = 1
290 CALL ZGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
291 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
292 INFOT = 2
293 CALL ZGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
294 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
295 INFOT = 3
296 CALL ZGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
297 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
298 INFOT = 4
299 CALL ZGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
300 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
301 INFOT = 6
302 CALL ZGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
303 CALL CHKXER( 'ZGBTRF', INFOT, NOUT, LERR, OK )
304 *
305 * ZGBTF2
306 *
307 SRNAMT = 'ZGBTF2'
308 INFOT = 1
309 CALL ZGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
310 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
311 INFOT = 2
312 CALL ZGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
313 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
314 INFOT = 3
315 CALL ZGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
316 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
317 INFOT = 4
318 CALL ZGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
319 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
320 INFOT = 6
321 CALL ZGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
322 CALL CHKXER( 'ZGBTF2', INFOT, NOUT, LERR, OK )
323 *
324 * ZGBTRS
325 *
326 SRNAMT = 'ZGBTRS'
327 INFOT = 1
328 CALL ZGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
329 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
330 INFOT = 2
331 CALL ZGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
332 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
333 INFOT = 3
334 CALL ZGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
335 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
336 INFOT = 4
337 CALL ZGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
338 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
339 INFOT = 5
340 CALL ZGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
341 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
342 INFOT = 7
343 CALL ZGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
344 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
345 INFOT = 10
346 CALL ZGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
347 CALL CHKXER( 'ZGBTRS', INFOT, NOUT, LERR, OK )
348 *
349 * ZGBRFS
350 *
351 SRNAMT = 'ZGBRFS'
352 INFOT = 1
353 CALL ZGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
354 $ R2, W, R, INFO )
355 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
356 INFOT = 2
357 CALL ZGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
358 $ R2, W, R, INFO )
359 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
360 INFOT = 3
361 CALL ZGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
362 $ R2, W, R, INFO )
363 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
364 INFOT = 4
365 CALL ZGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
366 $ R2, W, R, INFO )
367 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
368 INFOT = 5
369 CALL ZGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
370 $ R2, W, R, INFO )
371 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
372 INFOT = 7
373 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
374 $ R2, W, R, INFO )
375 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
376 INFOT = 9
377 CALL ZGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
378 $ R2, W, R, INFO )
379 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
380 INFOT = 12
381 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
382 $ R2, W, R, INFO )
383 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
384 INFOT = 14
385 CALL ZGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
386 $ R2, W, R, INFO )
387 CALL CHKXER( 'ZGBRFS', INFOT, NOUT, LERR, OK )
388 *
389 * ZGBRFSX
390 *
391 N_ERR_BNDS = 3
392 NPARAMS = 0
393 SRNAMT = 'ZGBRFSX'
394 INFOT = 1
395 CALL ZGBRFSX( '/', EQ, 0, 0, 0, 0, A, 1, AF, 1, IP, RS, CS, B,
396 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
397 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
398 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
399 INFOT = 2
400 EQ = '/'
401 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
402 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
403 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
404 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
405 INFOT = 3
406 EQ = 'R'
407 CALL ZGBRFSX( 'N', EQ, -1, 1, 1, 0, A, 1, AF, 1, IP, RS, CS, B,
408 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
409 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
410 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
411 INFOT = 4
412 EQ = 'R'
413 CALL ZGBRFSX( 'N', EQ, 2, -1, 1, 1, A, 3, AF, 4, IP, RS, CS, B,
414 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
415 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
416 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
417 INFOT = 5
418 EQ = 'R'
419 CALL ZGBRFSX( 'N', EQ, 2, 1, -1, 1, A, 3, AF, 4, IP, RS, CS, B,
420 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
421 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
422 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
423 INFOT = 6
424 CALL ZGBRFSX( 'N', EQ, 0, 0, 0, -1, A, 1, AF, 1, IP, RS, CS, B,
425 $ 1, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
426 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
427 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
428 INFOT = 8
429 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 1, AF, 2, IP, RS, CS, B,
430 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
431 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
432 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
433 INFOT = 10
434 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 3, IP, RS, CS, B,
435 $ 2, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
436 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
437 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
438 INFOT = 13
439 EQ = 'C'
440 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
441 $ 1, X, 2, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
442 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
443 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
444 INFOT = 15
445 CALL ZGBRFSX( 'N', EQ, 2, 1, 1, 1, A, 3, AF, 5, IP, RS, CS, B,
446 $ 2, X, 1, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N,
447 $ ERR_BNDS_C, NPARAMS, PARAMS, W, R, INFO )
448 CALL CHKXER( 'ZGBRFSX', INFOT, NOUT, LERR, OK )
449 *
450 * ZGBCON
451 *
452 SRNAMT = 'ZGBCON'
453 INFOT = 1
454 CALL ZGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
455 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
456 INFOT = 2
457 CALL ZGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
458 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
459 INFOT = 3
460 CALL ZGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
461 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
462 INFOT = 4
463 CALL ZGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO )
464 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
465 INFOT = 6
466 CALL ZGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO )
467 CALL CHKXER( 'ZGBCON', INFOT, NOUT, LERR, OK )
468 *
469 * ZGBEQU
470 *
471 SRNAMT = 'ZGBEQU'
472 INFOT = 1
473 CALL ZGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
474 $ INFO )
475 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
476 INFOT = 2
477 CALL ZGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
478 $ INFO )
479 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
480 INFOT = 3
481 CALL ZGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
482 $ INFO )
483 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
484 INFOT = 4
485 CALL ZGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
486 $ INFO )
487 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
488 INFOT = 6
489 CALL ZGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
490 $ INFO )
491 CALL CHKXER( 'ZGBEQU', INFOT, NOUT, LERR, OK )
492 *
493 * ZGBEQUB
494 *
495 SRNAMT = 'ZGBEQUB'
496 INFOT = 1
497 CALL ZGBEQUB( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
498 $ INFO )
499 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
500 INFOT = 2
501 CALL ZGBEQUB( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
502 $ INFO )
503 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
504 INFOT = 3
505 CALL ZGBEQUB( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
506 $ INFO )
507 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
508 INFOT = 4
509 CALL ZGBEQUB( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
510 $ INFO )
511 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
512 INFOT = 6
513 CALL ZGBEQUB( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
514 $ INFO )
515 CALL CHKXER( 'ZGBEQUB', INFOT, NOUT, LERR, OK )
516 END IF
517 *
518 * Print a summary line.
519 *
520 CALL ALAESM( PATH, OK, NOUT )
521 *
522 RETURN
523 *
524 * End of ZERRGE
525 *
526 END