Nathan Leon Pace, MD, MStat wrote:
Hi,

Using R 2.0.1 on Mac g5 running Mac OS X 10.3.6.

I would expect that

abs(.7 - .5) >= abs(.3 - .5) should be returned TRUE.

Instead

 > www <- abs(.7 - .5) >= abs(.3 - .5)
 > www
[1] FALSE

Is this a result of floating point or the implementation of abs or something else?

Due to floating point arithmetic in general, not specifically the abs function. The number .5 will have an exact floating point representation but .3 and .7 will not. Making equality comparisons with floating point values is always risky.


In a function I need to compare two absolute values - each being of the form |variable - constant|.

On a Mac I get

> abs(.7-.5) - abs(.3-.5)
[1] -5.551115e-17

so you need to make a relative comparison, not an absolute comparison. You could write the relative comparison using the all.equal function, such as

> v1 <- abs(.7-.5)
> v2 <- abs(.3-.5)
> (v1 > v2) || all.equal(v1, v2)
[1] TRUE

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to