Details

Bug

Status: Closed

Minor

Resolution: Fixed

3.0

None
Description
The documentation of the Field EPSILON in class org.apache.commons.math3.util.Precision states, that EPSILON is the smallest positive number such that 1  EPSILON is not numerically equal to 1, and its value is defined as 1.1102230246251565E16.
However, this is NOT the smallest positive number with this property.
Consider the following program:
public class Eps { public static void main(String[] args) { double e = Double.longBitsToDouble(0x3c90000000000001L); double e1 = 1e; System.out.println(e); System.out.println(1e); System.out.println(1e != 1); } }
The output is:
% java Eps
5.551115123125784E17
0.9999999999999999
true
This proves, that there are smaller positive numbers with the property that 1eps != 1.
I propose not to change the constant value, but to update the documentation. The value Precision.EPSILON is
an upper bound on the relative error which occurs when a real number is
rounded to its nearest Double floatingpoint number. I propose to update
the api docs in this sense.