# isZero

##### 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 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. If`eps`

is the smallest value such that`1 + eps != 1`

, i.e.`.Machine$double.eps`

,`neps`

must be greater or equal to one.- ...
Not used.

##### Value

Returns a `logical`

`vector`

indicating if the elements are zero or not.

##### See Also

`all.equal`

().
`Comparison`

.
`.Machine`

.

##### Examples

```
# NOT RUN {
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
# }
```

*Documentation reproduced from package R.utils, version 2.8.0, License: LGPL (>= 2.1)*