Bug in Decimal??
pleasedontspam at isp.com
pleasedontspam at isp.com
Tue Apr 29 22:37:17 EDT 2014
Hello,
I believe I found a bug in the Decimal library. The natural logarithm results seem to be off in a certain range, as compared with Wolfram Alpha.
Here's an example:
from decimal import *
getcontext().prec=2016
one=Decimal(1)
number=Decimal('1e-1007')
partial=(one+number)/(one-number)
final.ln()
The result should be 2.00000... with all zeroes and 7 at the end. Instead, I'm getting 1.999999.. with 2 digits different at the end.
I checked that this happens for any 1e-N with N relatively large (above about 300 it starts showing bad digits at the end.
Set the precision even higher and you'll see more digits off, it seems for number=10^-N, the error begins around 10^(-2N). The partial result (1+x)/(1-x) is correct to the number of digits specified, so it seems ln() is having accuracy problems.
Can other people confirm this or is it just my imagination? I tested with python 2.7.5 in XUbuntu, and also with my own build of mpdecimal 2.4.0 (latest, built from source). I compared the results with wolfram Alpha, and also with an open source arbitrary precision calculator, which matches Alpha results.
More information about the Python-list
mailing list