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