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