A quick precision test
|
06-04-2014, 02:17 PM
(This post was last modified: 06-04-2014 02:20 PM by Claudio L..)
Post: #35
|
|||
|
|||
RE: A quick precision test
(06-04-2014 01:38 PM)pito Wrote: Not sure whether doing 27 times x^2 or using Xpower2power27 is the same. Power functions are calculated in a different way usually (less precise I bet..). Regarding your suspicion that it's not the same: you are right, it's not. The power function is guaranteed to give you an accurate result with 34 good digits, for any 2 parameters (in this case, your guess that it's less precise is incorrect). Doing 2 ^ 27, the result is less than 34 digits, so it's exact (no rounding error). so 1.0000001 ^ (2^27) should give you an answer with all 34 digits correct, since both numbers are "exact" as given in the problem. I don't know how decNumber does it in particular, but in general powers with small integer exponents are handled by a sequence of multiplications, while powers of real numbers or large numbers are usually done through logarithms: Code: x^a = exp( a * ln(x) ) Which is usually very accurate, as ln() and exp() are both guaranteed to give you 34+GUARD good digits on any number you throw at them. If you assume that basic operations give you results that are guaranteed up to your user precision, your only source of error is the rounding of those results to your user precision. The less operations you perform the better, so you don't accumulate those rounding errors. In this case, if you do: Code: 1.0000001 LN 2 27 ^ * EXP Code: 1.0000001 2 27 ^ ^ but this is by pure chance (with this precision, this particular number behaves like this), since the intermediate rounded results of LN and * could've messed the last digit. Claudio |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 20 Guest(s)