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 $ 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 = 'ZSYTRS'
00137 INFOT = 1
00138 CALL ZSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00139 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00140 INFOT = 2
00141 CALL ZSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
00142 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00143 INFOT = 3
00144 CALL ZSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
00145 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00146 INFOT = 5
00147 CALL ZSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
00148 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00149 INFOT = 8
00150 CALL ZSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
00151 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
00152
00153
00154
00155 SRNAMT = 'ZSYRFS'
00156 INFOT = 1
00157 CALL ZSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00158 $ R, INFO )
00159 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00160 INFOT = 2
00161 CALL ZSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00162 $ W, R, INFO )
00163 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00164 INFOT = 3
00165 CALL ZSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00166 $ W, R, INFO )
00167 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00168 INFOT = 5
00169 CALL ZSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00170 $ R, INFO )
00171 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00172 INFOT = 7
00173 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00174 $ R, INFO )
00175 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00176 INFOT = 10
00177 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00178 $ R, INFO )
00179 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00180 INFOT = 12
00181 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00182 $ R, INFO )
00183 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
00184
00185
00186
00187 SRNAMT = 'ZSYCON'
00188 INFOT = 1
00189 CALL ZSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
00190 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00191 INFOT = 2
00192 CALL ZSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
00193 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00194 INFOT = 4
00195 CALL ZSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
00196 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00197 INFOT = 6
00198 CALL ZSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
00199 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
00200
00201
00202
00203
00204 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
00205
00206
00207
00208 SRNAMT = 'ZSPTRF'
00209 INFOT = 1
00210 CALL ZSPTRF( '/', 0, A, IP, INFO )
00211 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
00212 INFOT = 2
00213 CALL ZSPTRF( 'U', -1, A, IP, INFO )
00214 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
00215
00216
00217
00218 SRNAMT = 'ZSPTRI'
00219 INFOT = 1
00220 CALL ZSPTRI( '/', 0, A, IP, W, INFO )
00221 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
00222 INFOT = 2
00223 CALL ZSPTRI( 'U', -1, A, IP, W, INFO )
00224 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
00225
00226
00227
00228 SRNAMT = 'ZSPTRS'
00229 INFOT = 1
00230 CALL ZSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
00231 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00232 INFOT = 2
00233 CALL ZSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
00234 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00235 INFOT = 3
00236 CALL ZSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
00237 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00238 INFOT = 7
00239 CALL ZSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
00240 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
00241
00242
00243
00244 SRNAMT = 'ZSPRFS'
00245 INFOT = 1
00246 CALL ZSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00247 $ INFO )
00248 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00249 INFOT = 2
00250 CALL ZSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00251 $ INFO )
00252 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00253 INFOT = 3
00254 CALL ZSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
00255 $ INFO )
00256 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00257 INFOT = 8
00258 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
00259 $ INFO )
00260 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00261 INFOT = 10
00262 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
00263 $ INFO )
00264 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
00265
00266
00267
00268 SRNAMT = 'ZSPCON'
00269 INFOT = 1
00270 CALL ZSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
00271 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00272 INFOT = 2
00273 CALL ZSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
00274 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00275 INFOT = 5
00276 CALL ZSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
00277 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
00278 END IF
00279
00280
00281
00282 CALL ALAESM( PATH, OK, NOUT )
00283
00284 RETURN
00285
00286
00287
00288 END