LAPACK 3.3.0

cerrsyx.f

Go to the documentation of this file.
00001       SUBROUTINE CERRSY( PATH, NUNIT )
00002 *
00003 *  -- LAPACK test routine (version 3.2) --
00004 *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
00005 *     November 2006
00006 *
00007 *     .. Scalar Arguments ..
00008       CHARACTER*3        PATH
00009       INTEGER            NUNIT
00010 *     ..
00011 *
00012 *  Purpose
00013 *  =======
00014 *
00015 *  CERRSY tests the error exits for the COMPLEX routines
00016 *  for symmetric indefinite matrices.
00017 *
00018 *  Note that this file is used only when the XBLAS are available,
00019 *  otherwise cerrsy.f defines this subroutine.
00020 *
00021 *  Arguments
00022 *  =========
00023 *
00024 *  PATH    (input) CHARACTER*3
00025 *          The LAPACK path name for the routines to be tested.
00026 *
00027 *  NUNIT   (input) INTEGER
00028 *          The unit number for output.
00029 *
00030 *  =====================================================================
00031 *
00032 *     .. Parameters ..
00033       INTEGER            NMAX
00034       PARAMETER          ( NMAX = 4 )
00035 *     ..
00036 *     .. Local Scalars ..
00037       CHARACTER          EQ
00038       CHARACTER*2        C2
00039       INTEGER            I, INFO, J, N_ERR_BNDS, NPARAMS
00040       REAL               ANRM, RCOND, BERR
00041 *     ..
00042 *     .. Local Arrays ..
00043       INTEGER            IP( NMAX )
00044       REAL               R( NMAX ), R1( NMAX ), R2( NMAX ),
00045      $                   S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
00046      $                   ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
00047       COMPLEX            A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00048      $                   W( 2*NMAX ), X( NMAX )
00049 *     ..
00050 *     .. External Functions ..
00051       LOGICAL            LSAMEN
00052       EXTERNAL           LSAMEN
00053 *     ..
00054 *     .. External Subroutines ..
00055       EXTERNAL           ALAESM, CHKXER, CSPCON, CSPRFS, CSPTRF, CSPTRI,
00056      $                   CSPTRS, CSYCON, CSYRFS, CSYTF2, CSYTRF, CSYTRI,
00057      $                   CSYTRI2, CSYTRS, CSYRFSX
00058 *     ..
00059 *     .. Scalars in Common ..
00060       LOGICAL            LERR, OK
00061       CHARACTER*32       SRNAMT
00062       INTEGER            INFOT, NOUT
00063 *     ..
00064 *     .. Common blocks ..
00065       COMMON             / INFOC / INFOT, NOUT, OK, LERR
00066       COMMON             / SRNAMC / SRNAMT
00067 *     ..
00068 *     .. Intrinsic Functions ..
00069       INTRINSIC          CMPLX, REAL
00070 *     ..
00071 *     .. Executable Statements ..
00072 *
00073       NOUT = NUNIT
00074       WRITE( NOUT, FMT = * )
00075       C2 = PATH( 2: 3 )
00076 *
00077 *     Set the variables to innocuous values.
00078 *
00079       DO 20 J = 1, NMAX
00080          DO 10 I = 1, NMAX
00081             A( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00082             AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00083    10    CONTINUE
00084          B( J ) = 0.
00085          R1( J ) = 0.
00086          R2( J ) = 0.
00087          W( J ) = 0.
00088          X( J ) = 0.
00089          S( J ) = 0.
00090          IP( J ) = J
00091    20 CONTINUE
00092       ANRM = 1.0
00093       OK = .TRUE.
00094 *
00095 *     Test error exits of the routines that use the diagonal pivoting
00096 *     factorization of a symmetric indefinite matrix.
00097 *
00098       IF( LSAMEN( 2, C2, 'SY' ) ) THEN
00099 *
00100 *        CSYTRF
00101 *
00102          SRNAMT = 'CSYTRF'
00103          INFOT = 1
00104          CALL CSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
00105          CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00106          INFOT = 2
00107          CALL CSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
00108          CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00109          INFOT = 4
00110          CALL CSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
00111          CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00112 *
00113 *        CSYTF2
00114 *
00115          SRNAMT = 'CSYTF2'
00116          INFOT = 1
00117          CALL CSYTF2( '/', 0, A, 1, IP, INFO )
00118          CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00119          INFOT = 2
00120          CALL CSYTF2( 'U', -1, A, 1, IP, INFO )
00121          CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00122          INFOT = 4
00123          CALL CSYTF2( 'U', 2, A, 1, IP, INFO )
00124          CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00125 *
00126 *        CSYTRI
00127 *
00128          SRNAMT = 'CSYTRI'
00129          INFOT = 1
00130          CALL CSYTRI( '/', 0, A, 1, IP, W, INFO )
00131          CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00132          INFOT = 2
00133          CALL CSYTRI( 'U', -1, A, 1, IP, W, INFO )
00134          CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00135          INFOT = 4
00136          CALL CSYTRI( 'U', 2, A, 1, IP, W, INFO )
00137          CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00138 *
00139 *        CSYTRI2
00140 *
00141          SRNAMT = 'CSYTRI2'
00142          INFOT = 1
00143          CALL CSYTRI2( '/', 0, A, 1, IP, W, IW, INFO )
00144          CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
00145          INFOT = 2
00146          CALL CSYTRI2( 'U', -1, A, 1, IP, W, IW, INFO )
00147          CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
00148          INFOT = 4
00149          CALL CSYTRI2( 'U', 2, A, 1, IP, W, IW, INFO )
00150          CALL CHKXER( 'CSYTRI2', INFOT, NOUT, LERR, OK )
00151 *
00152 *        CSYTRS
00153 *
00154          SRNAMT = 'CSYTRS'
00155          INFOT = 1
00156          CALL CSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00157          CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00158          INFOT = 2
00159          CALL CSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
00160          CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00161          INFOT = 3
00162          CALL CSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
00163          CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00164          INFOT = 5
00165          CALL CSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
00166          CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00167          INFOT = 8
00168          CALL CSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
00169          CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00170 *
00171 *        CSYRFS
00172 *
00173          SRNAMT = 'CSYRFS'
00174          INFOT = 1
00175          CALL CSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00176      $                R, INFO )
00177          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00178          INFOT = 2
00179          CALL CSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00180      $                W, R, INFO )
00181          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00182          INFOT = 3
00183          CALL CSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00184      $                W, R, INFO )
00185          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00186          INFOT = 5
00187          CALL CSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00188      $                R, INFO )
00189          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00190          INFOT = 7
00191          CALL CSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00192      $                R, INFO )
00193          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00194          INFOT = 10
00195          CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00196      $                R, INFO )
00197          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00198          INFOT = 12
00199          CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00200      $                R, INFO )
00201          CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00202 *
00203 *        CSYRFSX
00204 *
00205          N_ERR_BNDS = 3
00206          NPARAMS = 0
00207          SRNAMT = 'CSYRFSX'
00208          INFOT = 1
00209          CALL CSYRFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, S, B, 1, X, 1, 
00210      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00211      $        PARAMS, W, R, INFO )
00212          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00213          INFOT = 2
00214          CALL CSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
00215      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00216      $        PARAMS, W, R, INFO )
00217          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00218          EQ = 'N'
00219          INFOT = 3
00220          CALL CSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
00221      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00222      $        PARAMS, W, R, INFO )
00223          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00224          INFOT = 4
00225          CALL CSYRFSX( 'U', EQ, 0, -1, A, 1, AF, 1, IP, S, B, 1, X, 1, 
00226      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00227      $        PARAMS, W, R, INFO )
00228          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00229          INFOT = 6
00230          CALL CSYRFSX( 'U', EQ, 2, 1, A, 1, AF, 2, IP, S, B, 2, X, 2, 
00231      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00232      $        PARAMS, W, R, INFO )
00233          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00234          INFOT = 8
00235          CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 1, IP, S, B, 2, X, 2, 
00236      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00237      $        PARAMS, W, R, INFO )
00238          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00239          INFOT = 11
00240          CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 1, X, 2, 
00241      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00242      $        PARAMS, W, R, INFO )
00243          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00244          INFOT = 13
00245          CALL CSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 2, X, 1, 
00246      $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00247      $        PARAMS, W, R, INFO )
00248          CALL CHKXER( 'CSYRFSX', INFOT, NOUT, LERR, OK )
00249 *
00250 *        CSYCON
00251 *
00252          SRNAMT = 'CSYCON'
00253          INFOT = 1
00254          CALL CSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
00255          CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00256          INFOT = 2
00257          CALL CSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
00258          CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00259          INFOT = 4
00260          CALL CSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
00261          CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00262          INFOT = 6
00263          CALL CSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
00264          CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00265 *
00266 *     Test error exits of the routines that use the diagonal pivoting
00267 *     factorization of a symmetric indefinite packed matrix.
00268 *
00269       ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
00270 *
00271 *        CSPTRF
00272 *
00273          SRNAMT = 'CSPTRF'
00274          INFOT = 1
00275          CALL CSPTRF( '/', 0, A, IP, INFO )
00276          CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
00277          INFOT = 2
00278          CALL CSPTRF( 'U', -1, A, IP, INFO )
00279          CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
00280 *
00281 *        CSPTRI
00282 *
00283          SRNAMT = 'CSPTRI'
00284          INFOT = 1
00285          CALL CSPTRI( '/', 0, A, IP, W, INFO )
00286          CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
00287          INFOT = 2
00288          CALL CSPTRI( 'U', -1, A, IP, W, INFO )
00289          CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
00290 *
00291 *        CSPTRS
00292 *
00293          SRNAMT = 'CSPTRS'
00294          INFOT = 1
00295          CALL CSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
00296          CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00297          INFOT = 2
00298          CALL CSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
00299          CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00300          INFOT = 3
00301          CALL CSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
00302          CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00303          INFOT = 7
00304          CALL CSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
00305          CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00306 *
00307 *        CSPRFS
00308 *
00309          SRNAMT = 'CSPRFS'
00310          INFOT = 1
00311          CALL CSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00312      $                INFO )
00313          CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00314          INFOT = 2
00315          CALL CSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00316      $                INFO )
00317          CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00318          INFOT = 3
00319          CALL CSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00320      $                INFO )
00321          CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00322          INFOT = 8
00323          CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
00324      $                INFO )
00325          CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00326          INFOT = 10
00327          CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
00328      $                INFO )
00329          CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00330 *
00331 *        CSPCON
00332 *
00333          SRNAMT = 'CSPCON'
00334          INFOT = 1
00335          CALL CSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
00336          CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00337          INFOT = 2
00338          CALL CSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
00339          CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00340          INFOT = 5
00341          CALL CSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
00342          CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00343       END IF
00344 *
00345 *     Print a summary line.
00346 *
00347       CALL ALAESM( PATH, OK, NOUT )
00348 *
00349       RETURN
00350 *
00351 *     End of CERRSY
00352 *
00353       END
 All Files Functions