Révision 181 pobysoPythonSage/src/pobyso.py
pobyso.py (revision 181) | ||
---|---|---|
1158 | 1158 |
#polySo = taylorFormListSaSo[0] |
1159 | 1159 |
#errorRangeSo = sollya_lib_copy_obj(taylorFormListSaSo[2]) |
1160 | 1160 |
errorRangeSo = taylorFormListSaSo[2] |
1161 |
# No copy_obj needed here: a new object is created. |
|
1162 |
maxErrorSo = sollya_lib_sup(errorRangeSo) |
|
1161 |
# No copy_obj needed here: a new objects are created. |
|
1162 |
maxErrorSo = sollya_lib_sup(errorRangeSo) |
|
1163 |
minErrorSo = sollya_lib_inf(errorRangeSo) |
|
1164 |
absMaxErrorSo = sollya_lib_abs(maxErrorSo) |
|
1165 |
absMinErrorSo = sollya_lib_abs(minErrorSo) |
|
1166 |
sollya_lib_clear_obj(maxErrorSo) |
|
1167 |
sollya_lib_clear_obj(minErrorSo) |
|
1168 |
absMaxErrorSa = pobyso_get_constant_as_rn_so_sa(absMaxErrorSo) |
|
1169 |
absMinErrorSa = pobyso_get_constant_as_rn_so_sa(absMinErrorSo) |
|
1163 | 1170 |
# If changed, reset the Sollya working precision. |
1164 | 1171 |
if not sollyaPrecSo is None: |
1165 | 1172 |
sollya_lib_set_prec(initialPrecSo) |
... | ... | |
1167 | 1174 |
if errorTypeIsNone: |
1168 | 1175 |
sollya_lib_clear_obj(errorTypeSo) |
1169 | 1176 |
pobyso_clear_taylorform_sa_so(taylorFormListSaSo) |
1170 |
return((polySo, intervalCenterSo, maxErrorSo)) |
|
1177 |
if absMaxErrorSa > absMinErrorSa: |
|
1178 |
sollya_lib_clear_obj(absMinErrorSo) |
|
1179 |
return((polySo, intervalCenterSo, absMaxErrorSo)) |
|
1180 |
else: |
|
1181 |
sollya_lib_clear_obj(absMaxErrorSo) |
|
1182 |
return((polySo, intervalCenterSo, absMinErrorSo)) |
|
1171 | 1183 |
# end pobyso_taylor_expansion_no_change_var_so_so |
1172 | 1184 |
|
1173 | 1185 |
def pobyso_taylor_expansion_with_change_var_so_so(functionSo, degreeSo, \ |
... | ... | |
1200 | 1212 |
pobyso_get_list_elements_so_so(taylorFormSo) |
1201 | 1213 |
polySo = taylorFormListSo[0] |
1202 | 1214 |
errorRangeSo = taylorFormListSo[2] |
1203 |
maxErrorSo = sollya_lib_sup(errorRangeSo) |
|
1215 |
maxErrorSo = sollya_lib_sup(errorRangeSo) |
|
1216 |
minErrorSo = sollya_lib_inf(errorRangeSo) |
|
1217 |
absMaxErrorSo = sollya_lib_abs(maxErrorSo) |
|
1218 |
absMinErrorSo = sollya_lib_abs(minErrorSo) |
|
1219 |
sollya_lib_clear_obj(maxErrorSo) |
|
1220 |
sollya_lib_clear_obj(minErrorSo) |
|
1221 |
absMaxErrorSa = pobyso_get_constant_as_rn_so_sa(absMaxErrorSo) |
|
1222 |
absMinErrorSa = pobyso_get_constant_as_rn_so_sa(absMinErrorSo) |
|
1204 | 1223 |
changeVarExpSo = sollya_lib_build_function_sub(\ |
1205 | 1224 |
sollya_lib_build_function_free_variable(),\ |
1206 | 1225 |
sollya_lib_copy_obj(intervalCenterSo)) |
1207 |
polyVarChangedSo = sollya_lib_evaluate(polySo, changeVarExpSo) |
|
1226 |
polyVarChangedSo = sollya_lib_evaluate(polySo, changeVarExpSo) |
|
1227 |
sollya_lib_clear_obj(polySo) |
|
1208 | 1228 |
sollya_lib_clear_obj(changeVarExpSo) |
1209 | 1229 |
# If changed, reset the Sollya working precision. |
1210 | 1230 |
if not sollyaPrecSo is None: |
... | ... | |
1214 | 1234 |
sollya_lib_clear_obj(errorTypeSo) |
1215 | 1235 |
sollya_lib_clear_obj(taylorFormSo) |
1216 | 1236 |
# Do not clear maxErrorSo. |
1217 |
return((polyVarChangedSo, intervalCenterSo, maxErrorSo)) |
|
1237 |
if absMaxErrorSa > absMinErrorSa: |
|
1238 |
sollya_lib_clear_obj(absMinErrorSo) |
|
1239 |
return((polyVarChangedSo, intervalCenterSo, absMaxErrorSo)) |
|
1240 |
else: |
|
1241 |
sollya_lib_clear_obj(absMaxErrorSo) |
|
1242 |
return((polyVarChangedSo, intervalCenterSo, absMinErrorSo)) |
|
1218 | 1243 |
# end pobyso_taylor_expansion_with_change_var_so_so |
1219 | 1244 |
|
1220 | 1245 |
def pobyso_taylor(function, degree, point): |
Formats disponibles : Unified diff