isZero {R.utils} R Documentation

## Checks if a value is (close to) zero or not

### Description

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).

### Usage

```## Default S3 method:
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.

### Author(s)

Henrik Bengtsson

`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
```

[Package R.utils version 2.11.0 Index]