00001 SUBROUTINE CERRSY( PATH, NUNIT )
00002
00003
00004
00005
00006
00007
00008 CHARACTER*3 PATH
00009 INTEGER NUNIT
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 INTEGER NMAX
00031 PARAMETER ( NMAX = 4 )
00032
00033
00034 CHARACTER*2 C2
00035 INTEGER I, INFO, J
00036 REAL ANRM, RCOND
00037
00038
00039 INTEGER IP( NMAX )
00040 REAL R( NMAX ), R1( NMAX ), R2( NMAX )
00041 COMPLEX A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00042 $ W( 2*NMAX ), X( NMAX )
00043
00044
00045 LOGICAL LSAMEN
00046 EXTERNAL LSAMEN
00047
00048
00049 EXTERNAL ALAESM, CHKXER, CSPCON, CSPRFS, CSPTRF, CSPTRI,
00050 $ CSPTRS, CSYCON, CSYRFS, CSYTF2, CSYTRF, CSYTRI,
00051 $ CSYTRS
00052
00053
00054 LOGICAL LERR, OK
00055 CHARACTER*32 SRNAMT
00056 INTEGER INFOT, NOUT
00057
00058
00059 COMMON / INFOC / INFOT, NOUT, OK, LERR
00060 COMMON / SRNAMC / SRNAMT
00061
00062
00063 INTRINSIC CMPLX, REAL
00064
00065
00066
00067 NOUT = NUNIT
00068 WRITE( NOUT, FMT = * )
00069 C2 = PATH( 2: 3 )
00070
00071
00072
00073 DO 20 J = 1, NMAX
00074 DO 10 I = 1, NMAX
00075 A( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00076 AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00077 10 CONTINUE
00078 B( J ) = 0.
00079 R1( J ) = 0.
00080 R2( J ) = 0.
00081 W( J ) = 0.
00082 X( J ) = 0.
00083 IP( J ) = J
00084 20 CONTINUE
00085 ANRM = 1.0
00086 OK = .TRUE.
00087
00088
00089
00090
00091 IF( LSAMEN( 2, C2, 'SY' ) ) THEN
00092
00093
00094
00095 SRNAMT = 'CSYTRF'
00096 INFOT = 1
00097 CALL CSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
00098 CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00099 INFOT = 2
00100 CALL CSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
00101 CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00102 INFOT = 4
00103 CALL CSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
00104 CALL CHKXER( 'CSYTRF', INFOT, NOUT, LERR, OK )
00105
00106
00107
00108 SRNAMT = 'CSYTF2'
00109 INFOT = 1
00110 CALL CSYTF2( '/', 0, A, 1, IP, INFO )
00111 CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00112 INFOT = 2
00113 CALL CSYTF2( 'U', -1, A, 1, IP, INFO )
00114 CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00115 INFOT = 4
00116 CALL CSYTF2( 'U', 2, A, 1, IP, INFO )
00117 CALL CHKXER( 'CSYTF2', INFOT, NOUT, LERR, OK )
00118
00119
00120
00121 SRNAMT = 'CSYTRI'
00122 INFOT = 1
00123 CALL CSYTRI( '/', 0, A, 1, IP, W, INFO )
00124 CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00125 INFOT = 2
00126 CALL CSYTRI( 'U', -1, A, 1, IP, W, INFO )
00127 CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00128 INFOT = 4
00129 CALL CSYTRI( 'U', 2, A, 1, IP, W, INFO )
00130 CALL CHKXER( 'CSYTRI', INFOT, NOUT, LERR, OK )
00131
00132
00133
00134 SRNAMT = 'CSYTRS'
00135 INFOT = 1
00136 CALL CSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00137 CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00138 INFOT = 2
00139 CALL CSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
00140 CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00141 INFOT = 3
00142 CALL CSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
00143 CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00144 INFOT = 5
00145 CALL CSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
00146 CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00147 INFOT = 8
00148 CALL CSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
00149 CALL CHKXER( 'CSYTRS', INFOT, NOUT, LERR, OK )
00150
00151
00152
00153 SRNAMT = 'CSYRFS'
00154 INFOT = 1
00155 CALL CSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00156 $ R, INFO )
00157 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00158 INFOT = 2
00159 CALL CSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00160 $ W, R, INFO )
00161 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00162 INFOT = 3
00163 CALL CSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00164 $ W, R, INFO )
00165 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00166 INFOT = 5
00167 CALL CSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00168 $ R, INFO )
00169 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00170 INFOT = 7
00171 CALL CSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00172 $ R, INFO )
00173 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00174 INFOT = 10
00175 CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00176 $ R, INFO )
00177 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00178 INFOT = 12
00179 CALL CSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00180 $ R, INFO )
00181 CALL CHKXER( 'CSYRFS', INFOT, NOUT, LERR, OK )
00182
00183
00184
00185 SRNAMT = 'CSYCON'
00186 INFOT = 1
00187 CALL CSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
00188 CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00189 INFOT = 2
00190 CALL CSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
00191 CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00192 INFOT = 4
00193 CALL CSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
00194 CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00195 INFOT = 6
00196 CALL CSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
00197 CALL CHKXER( 'CSYCON', INFOT, NOUT, LERR, OK )
00198
00199
00200
00201
00202 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
00203
00204
00205
00206 SRNAMT = 'CSPTRF'
00207 INFOT = 1
00208 CALL CSPTRF( '/', 0, A, IP, INFO )
00209 CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
00210 INFOT = 2
00211 CALL CSPTRF( 'U', -1, A, IP, INFO )
00212 CALL CHKXER( 'CSPTRF', INFOT, NOUT, LERR, OK )
00213
00214
00215
00216 SRNAMT = 'CSPTRI'
00217 INFOT = 1
00218 CALL CSPTRI( '/', 0, A, IP, W, INFO )
00219 CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
00220 INFOT = 2
00221 CALL CSPTRI( 'U', -1, A, IP, W, INFO )
00222 CALL CHKXER( 'CSPTRI', INFOT, NOUT, LERR, OK )
00223
00224
00225
00226 SRNAMT = 'CSPTRS'
00227 INFOT = 1
00228 CALL CSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
00229 CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00230 INFOT = 2
00231 CALL CSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
00232 CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00233 INFOT = 3
00234 CALL CSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
00235 CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00236 INFOT = 7
00237 CALL CSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
00238 CALL CHKXER( 'CSPTRS', INFOT, NOUT, LERR, OK )
00239
00240
00241
00242 SRNAMT = 'CSPRFS'
00243 INFOT = 1
00244 CALL CSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00245 $ INFO )
00246 CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00247 INFOT = 2
00248 CALL CSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00249 $ INFO )
00250 CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00251 INFOT = 3
00252 CALL CSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00253 $ INFO )
00254 CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00255 INFOT = 8
00256 CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
00257 $ INFO )
00258 CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00259 INFOT = 10
00260 CALL CSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
00261 $ INFO )
00262 CALL CHKXER( 'CSPRFS', INFOT, NOUT, LERR, OK )
00263
00264
00265
00266 SRNAMT = 'CSPCON'
00267 INFOT = 1
00268 CALL CSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
00269 CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00270 INFOT = 2
00271 CALL CSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
00272 CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00273 INFOT = 5
00274 CALL CSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
00275 CALL CHKXER( 'CSPCON', INFOT, NOUT, LERR, OK )
00276 END IF
00277
00278
00279
00280 CALL ALAESM( PATH, OK, NOUT )
00281
00282 RETURN
00283
00284
00285
00286 END