3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE SERRPO( PATH, NUNIT )
13 * .. Scalar Arguments ..
24 *> SERRPO tests the error exits for the REAL routines
25 *> for symmetric positive definite matrices.
27 *> Note that this file is used only when the XBLAS are available,
28 *> otherwise serrpo.f defines this subroutine.
36 *> PATH is CHARACTER*3
37 *> The LAPACK path name for the routines to be tested.
43 *> The unit number for output.
49 *> \author Univ. of Tennessee
50 *> \author Univ. of California Berkeley
51 *> \author Univ. of Colorado Denver
54 *> \date November 2015
56 *> \ingroup single_lin
58 * =====================================================================
59 SUBROUTINE SERRPO( PATH, NUNIT )
61 * -- LAPACK test routine (version 3.6.0) --
62 * -- LAPACK is a software package provided by Univ. of Tennessee, --
63 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
66 * .. Scalar Arguments ..
71 * =====================================================================
75 PARAMETER ( NMAX = 4 )
80 INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
81 REAL ANRM, RCOND, BERR
85 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
86 $ R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
87 $ S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
88 $ ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
90 * .. External Functions ..
94 * .. External Subroutines ..
95 EXTERNAL ALAESM, CHKXER, SPBCON, SPBEQU, SPBRFS, SPBTF2,
96 $ SPBTRF, SPBTRS, SPOCON, SPOEQU, SPORFS, SPOTF2,
97 $ SPOTRF, SPOTRI, SPOTRS, SPPCON, SPPEQU, SPPRFS,
98 $ SPPTRF, SPPTRI, SPPTRS, SPOEQUB, SPORFSX
100 * .. Scalars in Common ..
105 * .. Common blocks ..
106 COMMON / INFOC / INFOT, NOUT, OK, LERR
107 COMMON / SRNAMC / SRNAMT
109 * .. Intrinsic Functions ..
112 * .. Executable Statements ..
115 WRITE( NOUT, FMT = * )
118 * Set the variables to innocuous values.
122 A( I, J ) = 1. / REAL( I+J )
123 AF( I, J ) = 1. / REAL( I+J )
135 IF( LSAMEN( 2, C2, 'PO' ) ) THEN
137 * Test error exits of the routines that use the Cholesky
138 * decomposition of a symmetric positive definite matrix.
144 CALL SPOTRF( '/', 0, A, 1, INFO )
145 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
147 CALL SPOTRF( 'U', -1, A, 1, INFO )
148 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
150 CALL SPOTRF( 'U', 2, A, 1, INFO )
151 CALL CHKXER( 'SPOTRF', INFOT, NOUT, LERR, OK )
157 CALL SPOTF2( '/', 0, A, 1, INFO )
158 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
160 CALL SPOTF2( 'U', -1, A, 1, INFO )
161 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
163 CALL SPOTF2( 'U', 2, A, 1, INFO )
164 CALL CHKXER( 'SPOTF2', INFOT, NOUT, LERR, OK )
170 CALL SPOTRI( '/', 0, A, 1, INFO )
171 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
173 CALL SPOTRI( 'U', -1, A, 1, INFO )
174 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
176 CALL SPOTRI( 'U', 2, A, 1, INFO )
177 CALL CHKXER( 'SPOTRI', INFOT, NOUT, LERR, OK )
183 CALL SPOTRS( '/', 0, 0, A, 1, B, 1, INFO )
184 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
186 CALL SPOTRS( 'U', -1, 0, A, 1, B, 1, INFO )
187 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
189 CALL SPOTRS( 'U', 0, -1, A, 1, B, 1, INFO )
190 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
192 CALL SPOTRS( 'U', 2, 1, A, 1, B, 2, INFO )
193 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
195 CALL SPOTRS( 'U', 2, 1, A, 2, B, 1, INFO )
196 CALL CHKXER( 'SPOTRS', INFOT, NOUT, LERR, OK )
202 CALL SPORFS( '/', 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, IW,
204 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
206 CALL SPORFS( 'U', -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
208 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
210 CALL SPORFS( 'U', 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
212 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
214 CALL SPORFS( 'U', 2, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, IW,
216 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
218 CALL SPORFS( 'U', 2, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, IW,
220 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
222 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 1, X, 2, R1, R2, W, IW,
224 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
226 CALL SPORFS( 'U', 2, 1, A, 2, AF, 2, B, 2, X, 1, R1, R2, W, IW,
228 CALL CHKXER( 'SPORFS', INFOT, NOUT, LERR, OK )
236 CALL SPORFSX( '/', EQ, 0, 0, A, 1, AF, 1, S, B, 1, X, 1,
237 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
238 $ PARAMS, W, IW, INFO )
239 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
241 CALL SPORFSX( 'U', "/", -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
242 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
243 $ PARAMS, W, IW, INFO )
244 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
247 CALL SPORFSX( 'U', EQ, -1, 0, A, 1, AF, 1, S, B, 1, X, 1,
248 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
249 $ PARAMS, W, IW, INFO )
250 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
252 CALL SPORFSX( 'U', EQ, 0, -1, A, 1, AF, 1, S, B, 1, X, 1,
253 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
254 $ PARAMS, W, IW, INFO )
255 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
257 CALL SPORFSX( 'U', EQ, 2, 1, A, 1, AF, 2, S, B, 2, X, 2,
258 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
259 $ PARAMS, W, IW, INFO )
260 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
262 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 1, S, B, 2, X, 2,
263 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
264 $ PARAMS, W, IW, INFO )
265 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
267 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 1, X, 2,
268 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
269 $ PARAMS, W, IW, INFO )
270 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
272 CALL SPORFSX( 'U', EQ, 2, 1, A, 2, AF, 2, S, B, 2, X, 1,
273 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
274 $ PARAMS, W, IW, INFO )
275 CALL CHKXER( 'SPORFSX', INFOT, NOUT, LERR, OK )
281 CALL SPOCON( '/', 0, A, 1, ANRM, RCOND, W, IW, INFO )
282 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
284 CALL SPOCON( 'U', -1, A, 1, ANRM, RCOND, W, IW, INFO )
285 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
287 CALL SPOCON( 'U', 2, A, 1, ANRM, RCOND, W, IW, INFO )
288 CALL CHKXER( 'SPOCON', INFOT, NOUT, LERR, OK )
294 CALL SPOEQU( -1, A, 1, R1, RCOND, ANRM, INFO )
295 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
297 CALL SPOEQU( 2, A, 1, R1, RCOND, ANRM, INFO )
298 CALL CHKXER( 'SPOEQU', INFOT, NOUT, LERR, OK )
304 CALL SPOEQUB( -1, A, 1, R1, RCOND, ANRM, INFO )
305 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
307 CALL SPOEQUB( 2, A, 1, R1, RCOND, ANRM, INFO )
308 CALL CHKXER( 'SPOEQUB', INFOT, NOUT, LERR, OK )
310 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
312 * Test error exits of the routines that use the Cholesky
313 * decomposition of a symmetric positive definite packed matrix.
319 CALL SPPTRF( '/', 0, A, INFO )
320 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
322 CALL SPPTRF( 'U', -1, A, INFO )
323 CALL CHKXER( 'SPPTRF', INFOT, NOUT, LERR, OK )
329 CALL SPPTRI( '/', 0, A, INFO )
330 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
332 CALL SPPTRI( 'U', -1, A, INFO )
333 CALL CHKXER( 'SPPTRI', INFOT, NOUT, LERR, OK )
339 CALL SPPTRS( '/', 0, 0, A, B, 1, INFO )
340 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
342 CALL SPPTRS( 'U', -1, 0, A, B, 1, INFO )
343 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
345 CALL SPPTRS( 'U', 0, -1, A, B, 1, INFO )
346 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
348 CALL SPPTRS( 'U', 2, 1, A, B, 1, INFO )
349 CALL CHKXER( 'SPPTRS', INFOT, NOUT, LERR, OK )
355 CALL SPPRFS( '/', 0, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
357 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
359 CALL SPPRFS( 'U', -1, 0, A, AF, B, 1, X, 1, R1, R2, W, IW,
361 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
363 CALL SPPRFS( 'U', 0, -1, A, AF, B, 1, X, 1, R1, R2, W, IW,
365 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
367 CALL SPPRFS( 'U', 2, 1, A, AF, B, 1, X, 2, R1, R2, W, IW,
369 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
371 CALL SPPRFS( 'U', 2, 1, A, AF, B, 2, X, 1, R1, R2, W, IW,
373 CALL CHKXER( 'SPPRFS', INFOT, NOUT, LERR, OK )
379 CALL SPPCON( '/', 0, A, ANRM, RCOND, W, IW, INFO )
380 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
382 CALL SPPCON( 'U', -1, A, ANRM, RCOND, W, IW, INFO )
383 CALL CHKXER( 'SPPCON', INFOT, NOUT, LERR, OK )
389 CALL SPPEQU( '/', 0, A, R1, RCOND, ANRM, INFO )
390 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
392 CALL SPPEQU( 'U', -1, A, R1, RCOND, ANRM, INFO )
393 CALL CHKXER( 'SPPEQU', INFOT, NOUT, LERR, OK )
395 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
397 * Test error exits of the routines that use the Cholesky
398 * decomposition of a symmetric positive definite band matrix.
404 CALL SPBTRF( '/', 0, 0, A, 1, INFO )
405 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
407 CALL SPBTRF( 'U', -1, 0, A, 1, INFO )
408 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
410 CALL SPBTRF( 'U', 1, -1, A, 1, INFO )
411 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
413 CALL SPBTRF( 'U', 2, 1, A, 1, INFO )
414 CALL CHKXER( 'SPBTRF', INFOT, NOUT, LERR, OK )
420 CALL SPBTF2( '/', 0, 0, A, 1, INFO )
421 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
423 CALL SPBTF2( 'U', -1, 0, A, 1, INFO )
424 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
426 CALL SPBTF2( 'U', 1, -1, A, 1, INFO )
427 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
429 CALL SPBTF2( 'U', 2, 1, A, 1, INFO )
430 CALL CHKXER( 'SPBTF2', INFOT, NOUT, LERR, OK )
436 CALL SPBTRS( '/', 0, 0, 0, A, 1, B, 1, INFO )
437 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
439 CALL SPBTRS( 'U', -1, 0, 0, A, 1, B, 1, INFO )
440 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
442 CALL SPBTRS( 'U', 1, -1, 0, A, 1, B, 1, INFO )
443 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
445 CALL SPBTRS( 'U', 0, 0, -1, A, 1, B, 1, INFO )
446 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
448 CALL SPBTRS( 'U', 2, 1, 1, A, 1, B, 1, INFO )
449 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
451 CALL SPBTRS( 'U', 2, 0, 1, A, 1, B, 1, INFO )
452 CALL CHKXER( 'SPBTRS', INFOT, NOUT, LERR, OK )
458 CALL SPBRFS( '/', 0, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
460 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
462 CALL SPBRFS( 'U', -1, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
464 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
466 CALL SPBRFS( 'U', 1, -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
468 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
470 CALL SPBRFS( 'U', 0, 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
472 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
474 CALL SPBRFS( 'U', 2, 1, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W,
476 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
478 CALL SPBRFS( 'U', 2, 1, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W,
480 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
482 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 1, X, 2, R1, R2, W,
484 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
486 CALL SPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 2, X, 1, R1, R2, W,
488 CALL CHKXER( 'SPBRFS', INFOT, NOUT, LERR, OK )
494 CALL SPBCON( '/', 0, 0, A, 1, ANRM, RCOND, W, IW, INFO )
495 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
497 CALL SPBCON( 'U', -1, 0, A, 1, ANRM, RCOND, W, IW, INFO )
498 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
500 CALL SPBCON( 'U', 1, -1, A, 1, ANRM, RCOND, W, IW, INFO )
501 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
503 CALL SPBCON( 'U', 2, 1, A, 1, ANRM, RCOND, W, IW, INFO )
504 CALL CHKXER( 'SPBCON', INFOT, NOUT, LERR, OK )
510 CALL SPBEQU( '/', 0, 0, A, 1, R1, RCOND, ANRM, INFO )
511 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
513 CALL SPBEQU( 'U', -1, 0, A, 1, R1, RCOND, ANRM, INFO )
514 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
516 CALL SPBEQU( 'U', 1, -1, A, 1, R1, RCOND, ANRM, INFO )
517 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
519 CALL SPBEQU( 'U', 2, 1, A, 1, R1, RCOND, ANRM, INFO )
520 CALL CHKXER( 'SPBEQU', INFOT, NOUT, LERR, OK )
523 * Print a summary line.
525 CALL ALAESM( PATH, OK, NOUT )