Python fails on math
Ian
hobson42 at gmail.com
Tue Feb 22 14:48:41 CET 2011
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
More information about the Python-list
mailing list