Instance Property

ulp

The unit in the last place of self.

Declaration

var ulp: CGFloat { get }

Discussion

This is the unit of the least significant digit in the significand of self. For most numbers x, this is the difference between x and the next greater (in magnitude) representable number. There are some edge cases to be aware of:

  • greatestFiniteMagnitude.ulp is a finite number, even though the next greater representable value is infinity.

  • x.ulp is NaN if x is not a finite number.

  • If x is very small in magnitude, then x.ulp may be a subnormal number. On targets that do not support subnormals, x.ulp may be flushed to zero.

This quantity, or a related quantity is sometimes called “epsilon” or “machine epsilon”. We avoid that name because it has different meanings in different languages, which can lead to confusion, and because it suggests that it is a good tolerance to use for comparisons, which is almost never is.

(See https://en.wikipedia.org/wiki/Machine_epsilon for more detail)

Relationships

From Protocol