Berwin A Turlach wrote: > Dear Emma, > > On Fri, 5 Dec 2008 04:23:53 -0800 (PST) > emma jane <[EMAIL PROTECTED]> 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 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.