guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Can somebody help to explain why result from atan does not equal a r


From: Noah Lavine
Subject: Re: Can somebody help to explain why result from atan does not equal a real?
Date: Thu, 31 Jan 2013 08:32:53 -0500

What you have here is a precision problem.

When a floating-point number like pi is printed, I don't think you can guarantee that the string representation will be read in the same way it was read out. So when guile reads "3.14159265358979", it gives you some floating point number that is *close to* what (atan 0 -1) returns, but not necessarily the same.

That's why line 2 in your example returned #t - because both things were read as the same number - but #f for line 3 - because (atan 0 -1) returns something slightly different. You can see this in Guile 2.0:

scheme@(guile-user)> (atan 0 -1)
$7 = 3.14159265358979
scheme@(guile-user)> (= 3.14159265358979 (atan 0 -1))
$8 = #f
scheme@(guile-user)> (= $7 (atan 0 -1))
$9 = #t

It might be possible to have Guile print more digits and make this problem go away.

Noah Lavine


On Thu, Jan 31, 2013 at 5:50 AM, Hengqing Hu <address@hidden> wrote:
Dear list,

The following behavior is observed on both guile 1.8 and guile 2.0.
Is it correct?
Can somebody elaborate why it happens?

guile> (atan 0 -1)
3.14159265358979
guile> (= 3.14159265358979 3.14159265358979)
#t
guile> (= (atan 0 -1) 3.14159265358979)
#f

--
Best Regards, Hengqing Hu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]