| isZero {R.utils} | R Documentation |
Checks if a value (or a vector of values) is (close to) zero or not
where "close" means if the absolute value is less than neps*eps.
Note that x == 0 will not work in all cases.
By default eps is the smallest possible floating point value
that can be represented by the running machine, i.e.
.Machine$double.eps and neps is one.
By changing neps it is easy to adjust how close to zero "close"
means without having to know the machine precision (or remembering how
to get it).
## Default S3 method: isZero(x, neps=1, eps=.Machine$double.eps, ...)
x |
A |
eps |
The smallest possible floating point. |
neps |
A scale factor of |
... |
Not used. |
Returns a logical vector indicating if the elments are zero or not.
Henrik Bengtsson
all.equal().
Comparison.
.Machine.
x <- 0 print(x == 0) # TRUE print(isZero(x)) # TRUE x <- 1 print(x == 0) # FALSE print(isZero(x)) # FALSE x <- .Machine$double.eps print(x == 0) # FALSE print(isZero(x)) # FALSE x <- 0.9*.Machine$double.eps print(x == 0) # FALSE print(isZero(x)) # TRUE # From help(Comparisions) x1 <- 0.5 - 0.3 x2 <- 0.3 - 0.1 print(x1 - x2) print(x1 == x2) # FALSE on most machines print(identical(all.equal(x1, x2), TRUE)) # TRUE everywhere print(isZero(x1-x2)) # TRUE everywhere