[R] Logical inconsistency
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Fri Dec 5 14:18:51 CET 2008
Berwin A Turlach wrote:
> Dear Emma,
>
> On Fri, 5 Dec 2008 04:23:53 -0800 (PST)
> emma jane <emma_me_jane at yahoo.com> wrote:
>
>
>> Please could someone kindly explain the following inconsistencies
>> I've discovered__when performing logical calculations in R:
>>
>> 8.8 - 7.8 > 1
>>
>>> TRUE
>>>
>> 8.3 - 7.3 > 1
>>
>>> TRUE
>>>
>
> Gladly: FAQ 7.31
> http://cran.at.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f
>
>
well, this answer the question only partially. this explains why a
system with finite precision arithmetic, such as r, will fail to be
logically correct in certain cases. it does not explain why r, a
language said to isolate a user from the underlying implementational
choices, would have to fail this way.
there is, in principle, no problem in having a high-level language
perform the computation in a logically consistent way. for example, bc
is an "arbitrary precision calculator language", and has no problem with
examples as the above:
bc <<< "8.8 - 7.8 > 1"
# 0, meaning 'no'
bc <<< "8.3 - 7.3 > 1"
# 0, meaning 'no'
bc <<< "8.8 - 7.8 == 1"
# 1, meaning 'yes'
the fact that r (and many others, including matlab and sage, perhaps not
mathematica) does not perform logically here is a consequence of its
implementation of floating point arithmetic.
the faq you were pointed to, and its referring to the goldberg's
article, show that r does not successfully isolate a user from details
of the lower-level implementation.
vQ
More information about the R-help
mailing list