Révision 85 pobysoPythonSage/src/sageSLZ/sageSLZ.sage
sageSLZ.sage (revision 85) | ||
---|---|---|
49 | 49 |
sollya_lib_clear_obj(polySo) |
50 | 50 |
currentRangeSo = pobyso_bounds_to_range_sa_so(currentLowerBoundSa, |
51 | 51 |
currentUpperBoundSa) |
52 |
#print "New interval:", |
|
53 |
#pobyso_autoprint(currentRangeSo) |
|
52 | 54 |
(polySo, intervalCenterSo, maxErrorSo) = \ |
53 | 55 |
pobyso_taylor_expansion_no_change_var_so_so(functionSo, degreeSo, |
54 | 56 |
currentRangeSo, |
55 | 57 |
absoluteErrorTypeSo) |
56 | 58 |
#maxErrorSa = pobyso_get_constant_as_rn_with_rf_so_sa(maxErrorSo, RRR) |
59 |
#print "Max errorSo:", |
|
60 |
#pobyso_autoprint(maxErrorSo) |
|
57 | 61 |
maxErrorSa = pobyso_get_constant_as_rn_with_rf_so_sa(maxErrorSo) |
62 |
#print "Max errorSa:", maxErrorSa |
|
63 |
#print "Sollya prec:", |
|
64 |
#pobyso_autoprint(sollya_lib_get_prec(None)) |
|
58 | 65 |
sollya_lib_clear_obj(absoluteErrorTypeSo) |
59 | 66 |
return((polySo, currentRangeSo, intervalCenterSo, maxErrorSo)) |
60 | 67 |
# End slz_compute_polynomial_and_interval |
... | ... | |
137 | 144 |
- the center, x0, of the interval; |
138 | 145 |
- the corresponding approximation error. |
139 | 146 |
""" |
147 |
currentSollyaPrecSo = pobyso_get_prec_so() |
|
148 |
currentSollyaPrecSa = pobyso_constant_from_int_so_sa(currentSollyaPrecSo) |
|
149 |
if internalSollyaPrecSa > currentSollyaPrecSa: |
|
150 |
pobyso_set_prec_sa_so(internalSollyaPrecSa) |
|
140 | 151 |
x = functionSa.variables()[0] # Actual variable name can be anything. |
141 | 152 |
(fff, scaledLowerBoundSa, scaledUpperBoundSa, \ |
142 | 153 |
scaledLowerBoundImageSa, scaledUpperBoundImageSa) = \ |
... | ... | |
221 | 232 |
boundsSa.endpoints()[1] + \ |
222 | 233 |
(boundsSa.endpoints()[1] - boundsSa.endpoints()[0]) \ |
223 | 234 |
* currentErrorRatio.log2() * 2 |
235 |
# Test for insufficient precision. |
|
236 |
if currentScaledUpperBoundSa == scaledLowerBoundSa: |
|
237 |
print "Can't shrink the interval anymore!" |
|
238 |
print "You should consider increasing the Sollya internal precision" |
|
239 |
print "or the polynomial degree." |
|
240 |
print "Giving up!" |
|
241 |
sollya_lib_clear_obj(functionSo) |
|
242 |
sollya_lib_clear_obj(degreeSo) |
|
243 |
sollya_lib_clear_obj(scaledBoundsSo) |
|
244 |
return None |
|
224 | 245 |
if currentScaledUpperBoundSa > scaledUpperBoundSa: |
225 | 246 |
currentScaledUpperBoundSa = scaledUpperBoundSa |
226 | 247 |
sollya_lib_clear_obj(functionSo) |
227 | 248 |
sollya_lib_clear_obj(degreeSo) |
228 | 249 |
sollya_lib_clear_obj(scaledBoundsSo) |
250 |
if internalSollyaPrecSa > currentSollyaPrecSa: |
|
251 |
pobyso_set_prec_so_so(currentSollyaPrecSo) |
|
229 | 252 |
return(resultArray) |
230 | 253 |
# End slz_get_intervals_and_polynomials |
231 | 254 |
|
Formats disponibles : Unified diff