isZero
From R.utils v1.4.2
by Henrik Bengtsson
Checks if a value is (close to) zero or not
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).
- Keywords
- logic
Usage
## S3 method for class 'default':
isZero(x, neps=1, eps=.Machine$double.eps, ...)
Arguments
- x
- A
vector
of values. - eps
- The smallest possible floating point.
- neps
- A scale factor of
eps
specifying how close to zero "close" means. Ifeps
is the smallest value such that1 + eps != 1
, i.e..Machine$double.eps
,neps
must be greater or equ - ...
- Not used.
Value
See Also
all.equal
().
Comparison
.
.Machine
.
Examples
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
Community examples
Looks like there are no examples yet.