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.1102230246251565E-16.
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 = 1-e; System.out.println(e); System.out.println(1-e); System.out.println(1-e != 1); } }
The output is:
% java Eps
5.551115123125784E-17
0.9999999999999999
true
This proves, that there are smaller positive numbers with the property that 1-eps != 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 floating-point number. I propose to update
the api docs in this sense.