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