On 22/02/2011 13:20, christian schulze wrote:
Hey guys,

I just found out, how much Python fails on simple math. I checked a
simple equation for a friend.

[code]
from math import e as e
from math import sqrt as sqrt
2*e*sqrt(3) - 2*e == 2*e*(sqrt(3) - 1)
False
[/code]

So WTF? The equation is definitive equivalent. (See http://mathbin.net/59158)

PS:

#1:
2.0 * e * sqrt(3.0) - 2.0 * e
3.9798408154464964

#2:
2.0 * e * (sqrt(3.0) -1.0)
3.979840815446496

I was wondering what exactly is failing here. The math module? Python,
or the IEEE specifications?

--
What has failed you is your understanding of what floating point means. Both sides of your equation contain e which is an irrational number.

No irrational number and many rational ones cannot be expressed exactly in IEEE format. (1/3, 1/7)

All that has happened is that the two sides have come out with very slightly different approximations to numbers that they cannot express exactly.

Regards

Ian







--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to