ASKSAGE: Sage Q&A Forum - Latest question feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Wed, 14 Jun 2017 21:29:17 -0500Undeterministic numerical approximationhttps://ask.sagemath.org/question/37946/undeterministic-numerical-approximation/
Let the following expression of `x` :
```
f=1/152444172305856930250752000000*x^28 + 1/10888869450418352160768000000*x^27 + 1/15511210043330985984000000*x^25 + 1/310224200866619719680000*x^24 + 1/25852016738884976640000*x^23 + 1/51090942171709440000*x^21 + 1/1216451004088320000*x^20 + 1/121645100408832000*x^19 + 1/355687428096000*x^17 + 1/10461394944000*x^16 + 1/1307674368000*x^15 + 1/6227020800*x^13 + 1/239500800*x^12 + 1/39916800*x^11 + 1/362880*x^9 + 1/20160*x^8 + 1/5040*x^7 + 1/120*x^5 + 1/12*x^4 + 1/6*x^3 + x - cos(x) + 2 -exp(x)
```
I noticed that evaluating that for the value `x=numerical_approximation(10)` leads to non-deterministic results (from the 12th decimal).
I guess that this is a "cancellation error" : the last term (`-exp(x)`) and the whole stuff before are both of the order of magnitude 22026.
I'm only interested in the first 3 or 4 decimals.
* QUESTION 1
How can I "force" sage to provide deterministic results ? Doing `numerical_approx(...,prec=30) ` makes the job, but the "30" is quite heuristic; I'm not sure that this is a good approach.
* QUESTION 2 (not really sage-related)
How should I unit-test a function that has undeterministic bahaviour like that ?
LaurentClaessensWed, 14 Jun 2017 21:29:17 -0500https://ask.sagemath.org/question/37946/