00001 SUBROUTINE SERRSY( 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
00031
00032
00033 INTEGER NMAX
00034 PARAMETER ( NMAX = 4 )
00035
00036
00037 CHARACTER EQ
00038 CHARACTER*2 C2
00039 INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
00040 REAL ANRM, RCOND, BERR
00041
00042
00043 INTEGER IP( NMAX ), IW( NMAX )
00044 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00045 $ R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
00046 $ S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
00047 $ ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
00048
00049
00050 LOGICAL LSAMEN
00051 EXTERNAL LSAMEN
00052
00053
00054 EXTERNAL ALAESM, CHKXER, SSPCON, SSPRFS, SSPTRF, SSPTRI,
00055 $ SSPTRS, SSYCON, SSYRFS, SSYTF2, SSYTRF, SSYTRI,
00056 $ SSYTRS, SSYRFSX
00057
00058
00059 LOGICAL LERR, OK
00060 CHARACTER*32 SRNAMT
00061 INTEGER INFOT, NOUT
00062
00063
00064 COMMON / INFOC / INFOT, NOUT, OK, LERR
00065 COMMON / SRNAMC / SRNAMT
00066
00067
00068 INTRINSIC REAL
00069
00070
00071
00072 NOUT = NUNIT
00073 WRITE( NOUT, FMT = * )
00074 C2 = PATH( 2: 3 )
00075
00076
00077
00078 DO 20 J = 1, NMAX
00079 DO 10 I = 1, NMAX
00080 A( I, J ) = 1. / REAL( I+J )
00081 AF( I, J ) = 1. / REAL( I+J )
00082 10 CONTINUE
00083 B( J ) = 0.
00084 R1( J ) = 0.
00085 R2( J ) = 0.
00086 W( J ) = 0.
00087 X( J ) = 0.
00088 S( J ) = 0.
00089 IP( J ) = J
00090 IW( J ) = J
00091 20 CONTINUE
00092 ANRM = 1.0
00093 RCOND = 1.0
00094 OK = .TRUE.
00095
00096 IF( LSAMEN( 2, C2, 'SY' ) ) THEN
00097
00098
00099
00100
00101
00102
00103 SRNAMT = 'SSYTRF'
00104 INFOT = 1
00105 CALL SSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
00106 CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
00107 INFOT = 2
00108 CALL SSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
00109 CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
00110 INFOT = 4
00111 CALL SSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
00112 CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
00113
00114
00115
00116 SRNAMT = 'SSYTF2'
00117 INFOT = 1
00118 CALL SSYTF2( '/', 0, A, 1, IP, INFO )
00119 CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
00120 INFOT = 2
00121 CALL SSYTF2( 'U', -1, A, 1, IP, INFO )
00122 CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
00123 INFOT = 4
00124 CALL SSYTF2( 'U', 2, A, 1, IP, INFO )
00125 CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
00126
00127
00128
00129 SRNAMT = 'SSYTRI'
00130 INFOT = 1
00131 CALL SSYTRI( '/', 0, A, 1, IP, W, INFO )
00132 CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
00133 INFOT = 2
00134 CALL SSYTRI( 'U', -1, A, 1, IP, W, INFO )
00135 CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
00136 INFOT = 4
00137 CALL SSYTRI( 'U', 2, A, 1, IP, W, INFO )
00138 CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
00139
00140
00141
00142 SRNAMT = 'SSYTRS'
00143 INFOT = 1
00144 CALL SSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00145 CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
00146 INFOT = 2
00147 CALL SSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
00148 CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
00149 INFOT = 3
00150 CALL SSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
00151 CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
00152 INFOT = 5
00153 CALL SSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
00154 CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
00155 INFOT = 8
00156 CALL SSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
00157 CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
00158
00159
00160
00161 SRNAMT = 'SSYRFS'
00162 INFOT = 1
00163 CALL SSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00164 $ IW, INFO )
00165 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00166 INFOT = 2
00167 CALL SSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00168 $ W, IW, INFO )
00169 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00170 INFOT = 3
00171 CALL SSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00172 $ W, IW, INFO )
00173 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00174 INFOT = 5
00175 CALL SSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00176 $ IW, INFO )
00177 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00178 INFOT = 7
00179 CALL SSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00180 $ IW, INFO )
00181 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00182 INFOT = 10
00183 CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00184 $ IW, INFO )
00185 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00186 INFOT = 12
00187 CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00188 $ IW, INFO )
00189 CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
00190
00191
00192
00193 N_ERR_BNDS = 3
00194 NPARAMS = 0
00195 SRNAMT = 'SSYRFSX'
00196 INFOT = 1
00197 CALL SSYRFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
00198 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00199 $ PARAMS, W, IW, INFO )
00200 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00201 INFOT = 2
00202 CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
00203 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00204 $ PARAMS, W, IW, INFO )
00205 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00206 EQ = 'N'
00207 INFOT = 3
00208 CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
00209 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00210 $ PARAMS, W, IW, INFO )
00211 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00212 INFOT = 4
00213 CALL SSYRFSX( 'U', EQ, 0, -1, A, 1, AF, 1, IP, S, B, 1, X, 1,
00214 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00215 $ PARAMS, W, IW, INFO )
00216 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00217 INFOT = 6
00218 CALL SSYRFSX( 'U', EQ, 2, 1, A, 1, AF, 2, IP, S, B, 2, X, 2,
00219 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00220 $ PARAMS, W, IW, INFO )
00221 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00222 INFOT = 8
00223 CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 1, IP, S, B, 2, X, 2,
00224 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00225 $ PARAMS, W, IW, INFO )
00226 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00227 INFOT = 11
00228 CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 1, X, 2,
00229 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00230 $ PARAMS, W, IW, INFO )
00231 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00232 INFOT = 13
00233 CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 2, X, 1,
00234 $ RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
00235 $ PARAMS, W, IW, INFO )
00236 CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
00237
00238
00239
00240 SRNAMT = 'SSYCON'
00241 INFOT = 1
00242 CALL SSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
00243 CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
00244 INFOT = 2
00245 CALL SSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
00246 CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
00247 INFOT = 4
00248 CALL SSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
00249 CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
00250 INFOT = 6
00251 CALL SSYCON( 'U', 1, A, 1, IP, -1.0, RCOND, W, IW, INFO )
00252 CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
00253
00254 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
00255
00256
00257
00258
00259
00260
00261 SRNAMT = 'SSPTRF'
00262 INFOT = 1
00263 CALL SSPTRF( '/', 0, A, IP, INFO )
00264 CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
00265 INFOT = 2
00266 CALL SSPTRF( 'U', -1, A, IP, INFO )
00267 CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
00268
00269
00270
00271 SRNAMT = 'SSPTRI'
00272 INFOT = 1
00273 CALL SSPTRI( '/', 0, A, IP, W, INFO )
00274 CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
00275 INFOT = 2
00276 CALL SSPTRI( 'U', -1, A, IP, W, INFO )
00277 CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
00278
00279
00280
00281 SRNAMT = 'SSPTRS'
00282 INFOT = 1
00283 CALL SSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
00284 CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
00285 INFOT = 2
00286 CALL SSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
00287 CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
00288 INFOT = 3
00289 CALL SSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
00290 CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
00291 INFOT = 7
00292 CALL SSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
00293 CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
00294
00295
00296
00297 SRNAMT = 'SSPRFS'
00298 INFOT = 1
00299 CALL SSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
00300 $ INFO )
00301 CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
00302 INFOT = 2
00303 CALL SSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
00304 $ INFO )
00305 CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
00306 INFOT = 3
00307 CALL SSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
00308 $ INFO )
00309 CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
00310 INFOT = 8
00311 CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, IW,
00312 $ INFO )
00313 CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
00314 INFOT = 10
00315 CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, IW,
00316 $ INFO )
00317 CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
00318
00319
00320
00321 SRNAMT = 'SSPCON'
00322 INFOT = 1
00323 CALL SSPCON( '/', 0, A, IP, ANRM, RCOND, W, IW, INFO )
00324 CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
00325 INFOT = 2
00326 CALL SSPCON( 'U', -1, A, IP, ANRM, RCOND, W, IW, INFO )
00327 CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
00328 INFOT = 5
00329 CALL SSPCON( 'U', 1, A, IP, -1.0, RCOND, W, IW, INFO )
00330 CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
00331 END IF
00332
00333
00334
00335 CALL ALAESM( PATH, OK, NOUT )
00336
00337 RETURN
00338
00339
00340
00341 END