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 INTEGER NMAX
00031 PARAMETER ( NMAX = 4 )
00032
00033
00034 CHARACTER*2 C2
00035 INTEGER I, INFO, J
00036 DOUBLE PRECISION ANRM, RCOND
00037
00038
00039 INTEGER IP( NMAX )
00040 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX )
00041 COMPLEX*16 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, ZSPCON, ZSPRFS, ZSPTRF, ZSPTRI,
00050 $ ZSPTRS, ZSYCON, ZSYRFS, ZSYTF2, ZSYTRF, ZSYTRI,
00051 $ ZSYTRI2, ZSYTRS
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 DBLE, DCMPLX
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 ) = DCMPLX( 1.D0 / DBLE( I+J ),
00076 $ -1.D0 / DBLE( I+J ) )
00077 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
00078 $ -1.D0 / DBLE( I+J ) )
00079 10 CONTINUE
00080 B( J ) = 0.D0
00081 R1( J ) = 0.D0
00082 R2( J ) = 0.D0
00083 W( J ) = 0.D0
00084 X( J ) = 0.D0
00085 IP( J ) = J
00086 20 CONTINUE
00087 ANRM = 1.0D0
00088 OK = .TRUE.
00089
00090
00091
00092
00093 IF( LSAMEN( 2, C2, 'SY' ) ) THEN
00094
00095
00096
00097 SRNAMT = 'ZSYTRF'
00098 INFOT = 1
00099 CALL ZSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
00100 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
00101 INFOT = 2
00102 CALL ZSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
00103 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
00104 INFOT = 4
00105 CALL ZSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
00106 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
00107
00108
00109
00110 SRNAMT = 'ZSYTF2'
00111 INFOT = 1
00112 CALL ZSYTF2( '/', 0, A, 1, IP, INFO )
00113 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
00114 INFOT = 2
00115 CALL ZSYTF2( 'U', -1, A, 1, IP, INFO )
00116 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
00117 INFOT = 4
00118 CALL ZSYTF2( 'U', 2, A, 1, IP, INFO )
00119 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
00120
00121
00122
00123 SRNAMT = 'ZSYTRI'
00124 INFOT = 1
00125 CALL ZSYTRI( '/', 0, A, 1, IP, W, INFO )
00126 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
00127 INFOT = 2
00128 CALL ZSYTRI( 'U', -1, A, 1, IP, W, INFO )
00129 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
00130 INFOT = 4
00131 CALL ZSYTRI( 'U', 2, A, 1, IP, W, INFO )
00132 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
00133
00134
00135
00136 SRNAMT = 'ZSYTRI2'
00137 INFOT = 1
00138 CALL ZSYTRI2( '/', 0, A, 1, IP, W, 1, INFO )
00139 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
00140 INFOT = 2
00141 CALL ZSYTRI2( 'U', -1, A, 1, IP, W, 1, INFO )
00142 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
00143 INFOT = 4
00144 CALL ZSYTRI2( 'U', 2, A, 1, IP, W, 1, INFO )
00145 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
00146
00147
00148
00149 SRNAMT = 'ZSYTRS'
00150 INFOT = 1
00151 CALL ZSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00152 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00153 INFOT = 2
00154 CALL ZSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
00155 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00156 INFOT = 3
00157 CALL ZSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
00158 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00159 INFOT = 5
00160 CALL ZSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
00161 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00162 INFOT = 8
00163 CALL ZSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
00164 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00165
00166
00167
00168 SRNAMT = 'ZSYRFS'
00169 INFOT = 1
00170 CALL ZSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00171 $ R, INFO )
00172 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00173 INFOT = 2
00174 CALL ZSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00175 $ W, R, INFO )
00176 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00177 INFOT = 3
00178 CALL ZSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00179 $ W, R, INFO )
00180 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00181 INFOT = 5
00182 CALL ZSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00183 $ R, INFO )
00184 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00185 INFOT = 7
00186 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00187 $ R, INFO )
00188 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00189 INFOT = 10
00190 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00191 $ R, INFO )
00192 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00193 INFOT = 12
00194 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00195 $ R, INFO )
00196 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00197
00198
00199
00200 SRNAMT = 'ZSYCON'
00201 INFOT = 1
00202 CALL ZSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
00203 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00204 INFOT = 2
00205 CALL ZSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
00206 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00207 INFOT = 4
00208 CALL ZSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
00209 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00210 INFOT = 6
00211 CALL ZSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
00212 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00213
00214
00215
00216
00217 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
00218
00219
00220
00221 SRNAMT = 'ZSPTRF'
00222 INFOT = 1
00223 CALL ZSPTRF( '/', 0, A, IP, INFO )
00224 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
00225 INFOT = 2
00226 CALL ZSPTRF( 'U', -1, A, IP, INFO )
00227 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
00228
00229
00230
00231 SRNAMT = 'ZSPTRI'
00232 INFOT = 1
00233 CALL ZSPTRI( '/', 0, A, IP, W, INFO )
00234 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
00235 INFOT = 2
00236 CALL ZSPTRI( 'U', -1, A, IP, W, INFO )
00237 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
00238
00239
00240
00241 SRNAMT = 'ZSPTRS'
00242 INFOT = 1
00243 CALL ZSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
00244 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00245 INFOT = 2
00246 CALL ZSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
00247 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00248 INFOT = 3
00249 CALL ZSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
00250 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00251 INFOT = 7
00252 CALL ZSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
00253 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00254
00255
00256
00257 SRNAMT = 'ZSPRFS'
00258 INFOT = 1
00259 CALL ZSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00260 $ INFO )
00261 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00262 INFOT = 2
00263 CALL ZSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00264 $ INFO )
00265 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00266 INFOT = 3
00267 CALL ZSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00268 $ INFO )
00269 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00270 INFOT = 8
00271 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
00272 $ INFO )
00273 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00274 INFOT = 10
00275 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
00276 $ INFO )
00277 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00278
00279
00280
00281 SRNAMT = 'ZSPCON'
00282 INFOT = 1
00283 CALL ZSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
00284 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00285 INFOT = 2
00286 CALL ZSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
00287 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00288 INFOT = 5
00289 CALL ZSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
00290 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00291 END IF
00292
00293
00294
00295 CALL ALAESM( PATH, OK, NOUT )
00296
00297 RETURN
00298
00299
00300
00301 END