1 SUBROUTINE SERRPO( 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 * SERRPO tests the error exits for the REAL routines
16 * for symmetric positive definite matrices.
17 *
18 * Note that this file is used only when the XBLAS are available,
19 * otherwise serrpo.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, RCOND, BERR
41 * ..
42 * .. Local Arrays ..
43 INTEGER IW( NMAX )
44 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
45 $ R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
46 $ S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
47 $ ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
48 * ..
49 * .. External Functions ..
50 LOGICAL LSAMEN
51 EXTERNAL LSAMEN
52 * ..
53 * .. External Subroutines ..
54 EXTERNAL ALAESM, CHKXER, SPBCON, SPBEQU, SPBRFS, SPBTF2,
55 $ SPBTRF, SPBTRS, SPOCON, SPOEQU, SPORFS, SPOTF2,
56 $ SPOTRF, SPOTRI, SPOTRS, SPPCON, SPPEQU, SPPRFS,
57 $ SPPTRF, SPPTRI, SPPTRS, SPOEQUB, SPORFSX
58 * ..
59 * .. Scalars in Common ..
60 LOGICAL LERR, OK
61 CHARACTER*32 SRNAMT
62 INTEGER INFOT, NOUT
63 * ..
64 * .. Common blocks ..
65 COMMON / INFOC / INFOT, NOUT, OK, LERR
66 COMMON / SRNAMC / SRNAMT
67 * ..
68 * .. Intrinsic Functions ..
69 INTRINSIC REAL
70 * ..
71 * .. Executable Statements ..
72 *
73 NOUT = NUNIT
74 WRITE( NOUT, FMT = * )
75 C2 = PATH( 2: 3 )
76 *
77 * Set the variables to innocuous values.
78 *
79 DO 20 J = 1, NMAX
80 DO 10 I = 1, NMAX
81 A( I, J ) = 1. / REAL( I+J )
82 AF( I, J ) = 1. / REAL( I+J )
83 10 CONTINUE
84 B( J ) = 0.
85 R1( J ) = 0.
86 R2( J ) = 0.
87 W( J ) = 0.
88 X( J ) = 0.
89 S( J ) = 0.
90 IW( J ) = J
91 20 CONTINUE
92 OK = .TRUE.
93 *
94 IF( LSAMEN( 2, C2, 'PO' ) ) THEN
95 *
96 * Test error exits of the routines that use the Cholesky
97 * decomposition of a symmetric positive definite matrix.
98 *
99 * SPOTRF
100 *
101 SRNAMT = 'SPOTRF'
102 INFOT = 1
103 CALL SPOTRF( '/', 0, A, 1, INFO )
104 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
105 INFOT = 2
106 CALL SPOTRF( 'U', -1, A, 1, INFO )
107 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
108 INFOT = 4
109 CALL SPOTRF( 'U', 2, A, 1, INFO )
110 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
111 *
112 * SPOTF2
113 *
114 SRNAMT = 'SPOTF2'
115 INFOT = 1
116 CALL SPOTF2( '/', 0, A, 1, INFO )
117 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
118 INFOT = 2
119 CALL SPOTF2( 'U', -1, A, 1, INFO )
120 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
121 INFOT = 4
122 CALL SPOTF2( 'U', 2, A, 1, INFO )
123 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
124 *
125 * SPOTRI
126 *
127 SRNAMT = 'SPOTRI'
128 INFOT = 1
129 CALL SPOTRI( '/', 0, A, 1, INFO )
130 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
131 INFOT = 2
132 CALL SPOTRI( 'U', -1, A, 1, INFO )
133 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
134 INFOT = 4
135 CALL SPOTRI( 'U', 2, A, 1, INFO )
136 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
137 *
138 * SPOTRS
139 *
140 SRNAMT = 'SPOTRS'
141 INFOT = 1
142 CALL SPOTRS( '/', 0, 0, A, 1, B, 1, INFO )
143 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
144 INFOT = 2
145 CALL SPOTRS( 'U', -1, 0, A, 1, B, 1, INFO )
146 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
147 INFOT = 3
148 CALL SPOTRS( 'U', 0, -1, A, 1, B, 1, INFO )
149 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
150 INFOT = 5
151 CALL SPOTRS( 'U', 2, 1, A, 1, B, 2, INFO )
152 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
153 INFOT = 7
154 CALL SPOTRS( 'U', 2, 1, A, 2, B, 1, INFO )
155 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
156 *
157 * SPORFS
158 *
159 SRNAMT = 'SPORFS'
160 INFOT = 1
161 CALL SPORFS( '/', 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, IW,
162 $ INFO )
163 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
164 INFOT = 2
165 CALL SPORFS( 'U', -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
166 $ IW, INFO )
167 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
168 INFOT = 3
169 CALL SPORFS( 'U', 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
170 $ IW, INFO )
171 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
172 INFOT = 5
173 CALL SPORFS( 'U', 2, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, IW,
174 $ INFO )
175 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
176 INFOT = 7
177 CALL SPORFS( 'U', 2, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, IW,
178 $ INFO )
179 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
180 INFOT = 9
181 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 1, X, 2, R1, R2, W, IW,
182 $ INFO )
183 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
184 INFOT = 11
185 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 2, X, 1, R1, R2, W, IW,
186 $ INFO )
187 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
188 *
189 * SPORFSX
190 *
191 N_ERR_BNDS = 3
192 NPARAMS = 0
193 SRNAMT = 'SPORFSX'
194 INFOT = 1
195 CALL SPORFSX( '/', EQ, 0, 0, A, 1, AF, 1, S, B, 1, X, 1,
196 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
197 $ PARAMS, W, IW, INFO )
198 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
199 INFOT = 2
200 CALL SPORFSX( 'U', EQ, -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
201 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
202 $ PARAMS, W, IW, INFO )
203 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
204 EQ = 'N'
205 INFOT = 3
206 CALL SPORFSX( 'U', EQ, -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
207 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
208 $ PARAMS, W, IW, INFO )
209 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
210 INFOT = 4
211 CALL SPORFSX( 'U', EQ, 0, -1, A, 1, AF, 1, S, B, 1, X, 1,
212 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
213 $ PARAMS, W, IW, INFO )
214 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
215 INFOT = 6
216 CALL SPORFSX( 'U', EQ, 2, 1, A, 1, AF, 2, S, B, 2, X, 2,
217 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
218 $ PARAMS, W, IW, INFO )
219 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
220 INFOT = 8
221 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 1, S, B, 2, X, 2,
222 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
223 $ PARAMS, W, IW, INFO )
224 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
225 INFOT = 11
226 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 1, X, 2,
227 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
228 $ PARAMS, W, IW, INFO )
229 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
230 INFOT = 13
231 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 2, X, 1,
232 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
233 $ PARAMS, W, IW, INFO )
234 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
235 *
236 * SPOCON
237 *
238 SRNAMT = 'SPOCON'
239 INFOT = 1
240 CALL SPOCON( '/', 0, A, 1, ANRM, RCOND, W, IW, INFO )
241 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
242 INFOT = 2
243 CALL SPOCON( 'U', -1, A, 1, ANRM, RCOND, W, IW, INFO )
244 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
245 INFOT = 4
246 CALL SPOCON( 'U', 2, A, 1, ANRM, RCOND, W, IW, INFO )
247 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
248 *
249 * SPOEQU
250 *
251 SRNAMT = 'SPOEQU'
252 INFOT = 1
253 CALL SPOEQU( -1, A, 1, R1, RCOND, ANRM, INFO )
254 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
255 INFOT = 3
256 CALL SPOEQU( 2, A, 1, R1, RCOND, ANRM, INFO )
257 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
258 *
259 * SPOEQUB
260 *
261 SRNAMT = 'SPOEQUB'
262 INFOT = 1
263 CALL SPOEQUB( -1, A, 1, R1, RCOND, ANRM, INFO )
264 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
265 INFOT = 3
266 CALL SPOEQUB( 2, A, 1, R1, RCOND, ANRM, INFO )
267 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
268 *
269 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
270 *
271 * Test error exits of the routines that use the Cholesky
272 * decomposition of a symmetric positive definite packed matrix.
273 *
274 * SPPTRF
275 *
276 SRNAMT = 'SPPTRF'
277 INFOT = 1
278 CALL SPPTRF( '/', 0, A, INFO )
279 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
280 INFOT = 2
281 CALL SPPTRF( 'U', -1, A, INFO )
282 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
283 *
284 * SPPTRI
285 *
286 SRNAMT = 'SPPTRI'
287 INFOT = 1
288 CALL SPPTRI( '/', 0, A, INFO )
289 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
290 INFOT = 2
291 CALL SPPTRI( 'U', -1, A, INFO )
292 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
293 *
294 * SPPTRS
295 *
296 SRNAMT = 'SPPTRS'
297 INFOT = 1
298 CALL SPPTRS( '/', 0, 0, A, B, 1, INFO )
299 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
300 INFOT = 2
301 CALL SPPTRS( 'U', -1, 0, A, B, 1, INFO )
302 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
303 INFOT = 3
304 CALL SPPTRS( 'U', 0, -1, A, B, 1, INFO )
305 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
306 INFOT = 6
307 CALL SPPTRS( 'U', 2, 1, A, B, 1, INFO )
308 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
309 *
310 * SPPRFS
311 *
312 SRNAMT = 'SPPRFS'
313 INFOT = 1
314 CALL SPPRFS( '/', 0, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
315 $ INFO )
316 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
317 INFOT = 2
318 CALL SPPRFS( 'U', -1, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
319 $ INFO )
320 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
321 INFOT = 3
322 CALL SPPRFS( 'U', 0, -1, A, AF, B, 1, X, 1, R1, R2, W, IW,
323 $ INFO )
324 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
325 INFOT = 7
326 CALL SPPRFS( 'U', 2, 1, A, AF, B, 1, X, 2, R1, R2, W, IW,
327 $ INFO )
328 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
329 INFOT = 9
330 CALL SPPRFS( 'U', 2, 1, A, AF, B, 2, X, 1, R1, R2, W, IW,
331 $ INFO )
332 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
333 *
334 * SPPCON
335 *
336 SRNAMT = 'SPPCON'
337 INFOT = 1
338 CALL SPPCON( '/', 0, A, ANRM, RCOND, W, IW, INFO )
339 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
340 INFOT = 2
341 CALL SPPCON( 'U', -1, A, ANRM, RCOND, W, IW, INFO )
342 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
343 *
344 * SPPEQU
345 *
346 SRNAMT = 'SPPEQU'
347 INFOT = 1
348 CALL SPPEQU( '/', 0, A, R1, RCOND, ANRM, INFO )
349 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
350 INFOT = 2
351 CALL SPPEQU( 'U', -1, A, R1, RCOND, ANRM, INFO )
352 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
353 *
354 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
355 *
356 * Test error exits of the routines that use the Cholesky
357 * decomposition of a symmetric positive definite band matrix.
358 *
359 * SPBTRF
360 *
361 SRNAMT = 'SPBTRF'
362 INFOT = 1
363 CALL SPBTRF( '/', 0, 0, A, 1, INFO )
364 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
365 INFOT = 2
366 CALL SPBTRF( 'U', -1, 0, A, 1, INFO )
367 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
368 INFOT = 3
369 CALL SPBTRF( 'U', 1, -1, A, 1, INFO )
370 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
371 INFOT = 5
372 CALL SPBTRF( 'U', 2, 1, A, 1, INFO )
373 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
374 *
375 * SPBTF2
376 *
377 SRNAMT = 'SPBTF2'
378 INFOT = 1
379 CALL SPBTF2( '/', 0, 0, A, 1, INFO )
380 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
381 INFOT = 2
382 CALL SPBTF2( 'U', -1, 0, A, 1, INFO )
383 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
384 INFOT = 3
385 CALL SPBTF2( 'U', 1, -1, A, 1, INFO )
386 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
387 INFOT = 5
388 CALL SPBTF2( 'U', 2, 1, A, 1, INFO )
389 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
390 *
391 * SPBTRS
392 *
393 SRNAMT = 'SPBTRS'
394 INFOT = 1
395 CALL SPBTRS( '/', 0, 0, 0, A, 1, B, 1, INFO )
396 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
397 INFOT = 2
398 CALL SPBTRS( 'U', -1, 0, 0, A, 1, B, 1, INFO )
399 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
400 INFOT = 3
401 CALL SPBTRS( 'U', 1, -1, 0, A, 1, B, 1, INFO )
402 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
403 INFOT = 4
404 CALL SPBTRS( 'U', 0, 0, -1, A, 1, B, 1, INFO )
405 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
406 INFOT = 6
407 CALL SPBTRS( 'U', 2, 1, 1, A, 1, B, 1, INFO )
408 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
409 INFOT = 8
410 CALL SPBTRS( 'U', 2, 0, 1, A, 1, B, 1, INFO )
411 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
412 *
413 * SPBRFS
414 *
415 SRNAMT = 'SPBRFS'
416 INFOT = 1
417 CALL SPBRFS( '/', 0, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
418 $ IW, INFO )
419 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
420 INFOT = 2
421 CALL SPBRFS( 'U', -1, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
422 $ IW, INFO )
423 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
424 INFOT = 3
425 CALL SPBRFS( 'U', 1, -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
426 $ IW, INFO )
427 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
428 INFOT = 4
429 CALL SPBRFS( 'U', 0, 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
430 $ IW, INFO )
431 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
432 INFOT = 6
433 CALL SPBRFS( 'U', 2, 1, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W,
434 $ IW, INFO )
435 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
436 INFOT = 8
437 CALL SPBRFS( 'U', 2, 1, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W,
438 $ IW, INFO )
439 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
440 INFOT = 10
441 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 1, X, 2, R1, R2, W,
442 $ IW, INFO )
443 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
444 INFOT = 12
445 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 2, X, 1, R1, R2, W,
446 $ IW, INFO )
447 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
448 *
449 * SPBCON
450 *
451 SRNAMT = 'SPBCON'
452 INFOT = 1
453 CALL SPBCON( '/', 0, 0, A, 1, ANRM, RCOND, W, IW, INFO )
454 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
455 INFOT = 2
456 CALL SPBCON( 'U', -1, 0, A, 1, ANRM, RCOND, W, IW, INFO )
457 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
458 INFOT = 3
459 CALL SPBCON( 'U', 1, -1, A, 1, ANRM, RCOND, W, IW, INFO )
460 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
461 INFOT = 5
462 CALL SPBCON( 'U', 2, 1, A, 1, ANRM, RCOND, W, IW, INFO )
463 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
464 *
465 * SPBEQU
466 *
467 SRNAMT = 'SPBEQU'
468 INFOT = 1
469 CALL SPBEQU( '/', 0, 0, A, 1, R1, RCOND, ANRM, INFO )
470 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
471 INFOT = 2
472 CALL SPBEQU( 'U', -1, 0, A, 1, R1, RCOND, ANRM, INFO )
473 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
474 INFOT = 3
475 CALL SPBEQU( 'U', 1, -1, A, 1, R1, RCOND, ANRM, INFO )
476 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
477 INFOT = 5
478 CALL SPBEQU( 'U', 2, 1, A, 1, R1, RCOND, ANRM, INFO )
479 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
480 END IF
481 *
482 * Print a summary line.
483 *
484 CALL ALAESM( PATH, OK, NOUT )
485 *
486 RETURN
487 *
488 * End of SERRPO
489 *
490 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 * SERRPO tests the error exits for the REAL routines
16 * for symmetric positive definite matrices.
17 *
18 * Note that this file is used only when the XBLAS are available,
19 * otherwise serrpo.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, RCOND, BERR
41 * ..
42 * .. Local Arrays ..
43 INTEGER IW( NMAX )
44 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
45 $ R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
46 $ S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
47 $ ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
48 * ..
49 * .. External Functions ..
50 LOGICAL LSAMEN
51 EXTERNAL LSAMEN
52 * ..
53 * .. External Subroutines ..
54 EXTERNAL ALAESM, CHKXER, SPBCON, SPBEQU, SPBRFS, SPBTF2,
55 $ SPBTRF, SPBTRS, SPOCON, SPOEQU, SPORFS, SPOTF2,
56 $ SPOTRF, SPOTRI, SPOTRS, SPPCON, SPPEQU, SPPRFS,
57 $ SPPTRF, SPPTRI, SPPTRS, SPOEQUB, SPORFSX
58 * ..
59 * .. Scalars in Common ..
60 LOGICAL LERR, OK
61 CHARACTER*32 SRNAMT
62 INTEGER INFOT, NOUT
63 * ..
64 * .. Common blocks ..
65 COMMON / INFOC / INFOT, NOUT, OK, LERR
66 COMMON / SRNAMC / SRNAMT
67 * ..
68 * .. Intrinsic Functions ..
69 INTRINSIC REAL
70 * ..
71 * .. Executable Statements ..
72 *
73 NOUT = NUNIT
74 WRITE( NOUT, FMT = * )
75 C2 = PATH( 2: 3 )
76 *
77 * Set the variables to innocuous values.
78 *
79 DO 20 J = 1, NMAX
80 DO 10 I = 1, NMAX
81 A( I, J ) = 1. / REAL( I+J )
82 AF( I, J ) = 1. / REAL( I+J )
83 10 CONTINUE
84 B( J ) = 0.
85 R1( J ) = 0.
86 R2( J ) = 0.
87 W( J ) = 0.
88 X( J ) = 0.
89 S( J ) = 0.
90 IW( J ) = J
91 20 CONTINUE
92 OK = .TRUE.
93 *
94 IF( LSAMEN( 2, C2, 'PO' ) ) THEN
95 *
96 * Test error exits of the routines that use the Cholesky
97 * decomposition of a symmetric positive definite matrix.
98 *
99 * SPOTRF
100 *
101 SRNAMT = 'SPOTRF'
102 INFOT = 1
103 CALL SPOTRF( '/', 0, A, 1, INFO )
104 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
105 INFOT = 2
106 CALL SPOTRF( 'U', -1, A, 1, INFO )
107 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
108 INFOT = 4
109 CALL SPOTRF( 'U', 2, A, 1, INFO )
110 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
111 *
112 * SPOTF2
113 *
114 SRNAMT = 'SPOTF2'
115 INFOT = 1
116 CALL SPOTF2( '/', 0, A, 1, INFO )
117 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
118 INFOT = 2
119 CALL SPOTF2( 'U', -1, A, 1, INFO )
120 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
121 INFOT = 4
122 CALL SPOTF2( 'U', 2, A, 1, INFO )
123 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
124 *
125 * SPOTRI
126 *
127 SRNAMT = 'SPOTRI'
128 INFOT = 1
129 CALL SPOTRI( '/', 0, A, 1, INFO )
130 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
131 INFOT = 2
132 CALL SPOTRI( 'U', -1, A, 1, INFO )
133 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
134 INFOT = 4
135 CALL SPOTRI( 'U', 2, A, 1, INFO )
136 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
137 *
138 * SPOTRS
139 *
140 SRNAMT = 'SPOTRS'
141 INFOT = 1
142 CALL SPOTRS( '/', 0, 0, A, 1, B, 1, INFO )
143 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
144 INFOT = 2
145 CALL SPOTRS( 'U', -1, 0, A, 1, B, 1, INFO )
146 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
147 INFOT = 3
148 CALL SPOTRS( 'U', 0, -1, A, 1, B, 1, INFO )
149 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
150 INFOT = 5
151 CALL SPOTRS( 'U', 2, 1, A, 1, B, 2, INFO )
152 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
153 INFOT = 7
154 CALL SPOTRS( 'U', 2, 1, A, 2, B, 1, INFO )
155 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
156 *
157 * SPORFS
158 *
159 SRNAMT = 'SPORFS'
160 INFOT = 1
161 CALL SPORFS( '/', 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, IW,
162 $ INFO )
163 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
164 INFOT = 2
165 CALL SPORFS( 'U', -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
166 $ IW, INFO )
167 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
168 INFOT = 3
169 CALL SPORFS( 'U', 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
170 $ IW, INFO )
171 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
172 INFOT = 5
173 CALL SPORFS( 'U', 2, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, IW,
174 $ INFO )
175 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
176 INFOT = 7
177 CALL SPORFS( 'U', 2, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, IW,
178 $ INFO )
179 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
180 INFOT = 9
181 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 1, X, 2, R1, R2, W, IW,
182 $ INFO )
183 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
184 INFOT = 11
185 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 2, X, 1, R1, R2, W, IW,
186 $ INFO )
187 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
188 *
189 * SPORFSX
190 *
191 N_ERR_BNDS = 3
192 NPARAMS = 0
193 SRNAMT = 'SPORFSX'
194 INFOT = 1
195 CALL SPORFSX( '/', EQ, 0, 0, A, 1, AF, 1, S, B, 1, X, 1,
196 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
197 $ PARAMS, W, IW, INFO )
198 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
199 INFOT = 2
200 CALL SPORFSX( 'U', EQ, -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
201 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
202 $ PARAMS, W, IW, INFO )
203 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
204 EQ = 'N'
205 INFOT = 3
206 CALL SPORFSX( 'U', EQ, -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
207 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
208 $ PARAMS, W, IW, INFO )
209 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
210 INFOT = 4
211 CALL SPORFSX( 'U', EQ, 0, -1, A, 1, AF, 1, S, B, 1, X, 1,
212 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
213 $ PARAMS, W, IW, INFO )
214 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
215 INFOT = 6
216 CALL SPORFSX( 'U', EQ, 2, 1, A, 1, AF, 2, S, B, 2, X, 2,
217 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
218 $ PARAMS, W, IW, INFO )
219 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
220 INFOT = 8
221 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 1, S, B, 2, X, 2,
222 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
223 $ PARAMS, W, IW, INFO )
224 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
225 INFOT = 11
226 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 1, X, 2,
227 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
228 $ PARAMS, W, IW, INFO )
229 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
230 INFOT = 13
231 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 2, X, 1,
232 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
233 $ PARAMS, W, IW, INFO )
234 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
235 *
236 * SPOCON
237 *
238 SRNAMT = 'SPOCON'
239 INFOT = 1
240 CALL SPOCON( '/', 0, A, 1, ANRM, RCOND, W, IW, INFO )
241 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
242 INFOT = 2
243 CALL SPOCON( 'U', -1, A, 1, ANRM, RCOND, W, IW, INFO )
244 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
245 INFOT = 4
246 CALL SPOCON( 'U', 2, A, 1, ANRM, RCOND, W, IW, INFO )
247 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
248 *
249 * SPOEQU
250 *
251 SRNAMT = 'SPOEQU'
252 INFOT = 1
253 CALL SPOEQU( -1, A, 1, R1, RCOND, ANRM, INFO )
254 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
255 INFOT = 3
256 CALL SPOEQU( 2, A, 1, R1, RCOND, ANRM, INFO )
257 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
258 *
259 * SPOEQUB
260 *
261 SRNAMT = 'SPOEQUB'
262 INFOT = 1
263 CALL SPOEQUB( -1, A, 1, R1, RCOND, ANRM, INFO )
264 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
265 INFOT = 3
266 CALL SPOEQUB( 2, A, 1, R1, RCOND, ANRM, INFO )
267 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
268 *
269 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
270 *
271 * Test error exits of the routines that use the Cholesky
272 * decomposition of a symmetric positive definite packed matrix.
273 *
274 * SPPTRF
275 *
276 SRNAMT = 'SPPTRF'
277 INFOT = 1
278 CALL SPPTRF( '/', 0, A, INFO )
279 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
280 INFOT = 2
281 CALL SPPTRF( 'U', -1, A, INFO )
282 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
283 *
284 * SPPTRI
285 *
286 SRNAMT = 'SPPTRI'
287 INFOT = 1
288 CALL SPPTRI( '/', 0, A, INFO )
289 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
290 INFOT = 2
291 CALL SPPTRI( 'U', -1, A, INFO )
292 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
293 *
294 * SPPTRS
295 *
296 SRNAMT = 'SPPTRS'
297 INFOT = 1
298 CALL SPPTRS( '/', 0, 0, A, B, 1, INFO )
299 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
300 INFOT = 2
301 CALL SPPTRS( 'U', -1, 0, A, B, 1, INFO )
302 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
303 INFOT = 3
304 CALL SPPTRS( 'U', 0, -1, A, B, 1, INFO )
305 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
306 INFOT = 6
307 CALL SPPTRS( 'U', 2, 1, A, B, 1, INFO )
308 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
309 *
310 * SPPRFS
311 *
312 SRNAMT = 'SPPRFS'
313 INFOT = 1
314 CALL SPPRFS( '/', 0, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
315 $ INFO )
316 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
317 INFOT = 2
318 CALL SPPRFS( 'U', -1, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
319 $ INFO )
320 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
321 INFOT = 3
322 CALL SPPRFS( 'U', 0, -1, A, AF, B, 1, X, 1, R1, R2, W, IW,
323 $ INFO )
324 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
325 INFOT = 7
326 CALL SPPRFS( 'U', 2, 1, A, AF, B, 1, X, 2, R1, R2, W, IW,
327 $ INFO )
328 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
329 INFOT = 9
330 CALL SPPRFS( 'U', 2, 1, A, AF, B, 2, X, 1, R1, R2, W, IW,
331 $ INFO )
332 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
333 *
334 * SPPCON
335 *
336 SRNAMT = 'SPPCON'
337 INFOT = 1
338 CALL SPPCON( '/', 0, A, ANRM, RCOND, W, IW, INFO )
339 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
340 INFOT = 2
341 CALL SPPCON( 'U', -1, A, ANRM, RCOND, W, IW, INFO )
342 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
343 *
344 * SPPEQU
345 *
346 SRNAMT = 'SPPEQU'
347 INFOT = 1
348 CALL SPPEQU( '/', 0, A, R1, RCOND, ANRM, INFO )
349 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
350 INFOT = 2
351 CALL SPPEQU( 'U', -1, A, R1, RCOND, ANRM, INFO )
352 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
353 *
354 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
355 *
356 * Test error exits of the routines that use the Cholesky
357 * decomposition of a symmetric positive definite band matrix.
358 *
359 * SPBTRF
360 *
361 SRNAMT = 'SPBTRF'
362 INFOT = 1
363 CALL SPBTRF( '/', 0, 0, A, 1, INFO )
364 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
365 INFOT = 2
366 CALL SPBTRF( 'U', -1, 0, A, 1, INFO )
367 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
368 INFOT = 3
369 CALL SPBTRF( 'U', 1, -1, A, 1, INFO )
370 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
371 INFOT = 5
372 CALL SPBTRF( 'U', 2, 1, A, 1, INFO )
373 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
374 *
375 * SPBTF2
376 *
377 SRNAMT = 'SPBTF2'
378 INFOT = 1
379 CALL SPBTF2( '/', 0, 0, A, 1, INFO )
380 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
381 INFOT = 2
382 CALL SPBTF2( 'U', -1, 0, A, 1, INFO )
383 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
384 INFOT = 3
385 CALL SPBTF2( 'U', 1, -1, A, 1, INFO )
386 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
387 INFOT = 5
388 CALL SPBTF2( 'U', 2, 1, A, 1, INFO )
389 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
390 *
391 * SPBTRS
392 *
393 SRNAMT = 'SPBTRS'
394 INFOT = 1
395 CALL SPBTRS( '/', 0, 0, 0, A, 1, B, 1, INFO )
396 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
397 INFOT = 2
398 CALL SPBTRS( 'U', -1, 0, 0, A, 1, B, 1, INFO )
399 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
400 INFOT = 3
401 CALL SPBTRS( 'U', 1, -1, 0, A, 1, B, 1, INFO )
402 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
403 INFOT = 4
404 CALL SPBTRS( 'U', 0, 0, -1, A, 1, B, 1, INFO )
405 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
406 INFOT = 6
407 CALL SPBTRS( 'U', 2, 1, 1, A, 1, B, 1, INFO )
408 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
409 INFOT = 8
410 CALL SPBTRS( 'U', 2, 0, 1, A, 1, B, 1, INFO )
411 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
412 *
413 * SPBRFS
414 *
415 SRNAMT = 'SPBRFS'
416 INFOT = 1
417 CALL SPBRFS( '/', 0, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
418 $ IW, INFO )
419 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
420 INFOT = 2
421 CALL SPBRFS( 'U', -1, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
422 $ IW, INFO )
423 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
424 INFOT = 3
425 CALL SPBRFS( 'U', 1, -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
426 $ IW, INFO )
427 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
428 INFOT = 4
429 CALL SPBRFS( 'U', 0, 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
430 $ IW, INFO )
431 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
432 INFOT = 6
433 CALL SPBRFS( 'U', 2, 1, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W,
434 $ IW, INFO )
435 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
436 INFOT = 8
437 CALL SPBRFS( 'U', 2, 1, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W,
438 $ IW, INFO )
439 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
440 INFOT = 10
441 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 1, X, 2, R1, R2, W,
442 $ IW, INFO )
443 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
444 INFOT = 12
445 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 2, X, 1, R1, R2, W,
446 $ IW, INFO )
447 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
448 *
449 * SPBCON
450 *
451 SRNAMT = 'SPBCON'
452 INFOT = 1
453 CALL SPBCON( '/', 0, 0, A, 1, ANRM, RCOND, W, IW, INFO )
454 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
455 INFOT = 2
456 CALL SPBCON( 'U', -1, 0, A, 1, ANRM, RCOND, W, IW, INFO )
457 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
458 INFOT = 3
459 CALL SPBCON( 'U', 1, -1, A, 1, ANRM, RCOND, W, IW, INFO )
460 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
461 INFOT = 5
462 CALL SPBCON( 'U', 2, 1, A, 1, ANRM, RCOND, W, IW, INFO )
463 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
464 *
465 * SPBEQU
466 *
467 SRNAMT = 'SPBEQU'
468 INFOT = 1
469 CALL SPBEQU( '/', 0, 0, A, 1, R1, RCOND, ANRM, INFO )
470 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
471 INFOT = 2
472 CALL SPBEQU( 'U', -1, 0, A, 1, R1, RCOND, ANRM, INFO )
473 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
474 INFOT = 3
475 CALL SPBEQU( 'U', 1, -1, A, 1, R1, RCOND, ANRM, INFO )
476 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
477 INFOT = 5
478 CALL SPBEQU( 'U', 2, 1, A, 1, R1, RCOND, ANRM, INFO )
479 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
480 END IF
481 *
482 * Print a summary line.
483 *
484 CALL ALAESM( PATH, OK, NOUT )
485 *
486 RETURN
487 *
488 * End of SERRPO
489 *
490 END