[
https://issues.apache.org/jira/browse/MATH-843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13430699#comment-13430699
]
Dominik Gruntz commented on MATH-843:
-------------------------------------
yes, the new documentation in rev 1370547 is correct; 2^(-53) has that property
(i.e. it is the largest double eps such that 1+eps = 1):
{code}
scala> math.pow(2, -53)
res1: Double = 1.1102230246251565E-16
scala> 1+res1 == 1
res2: Boolean = true
scala>
java.lang.Double.longBitsToDouble(java.lang.Double.doubleToLongBits(res1)+1)
res3: Double = 1.1102230246251568E-16
scala> 1+res3
res4: Double = 1.0000000000000002
{code}
So I agree, but I do not like it. I would not define this constant over 1+eps
== 1 (as if executed in extended precision the result may be different), but I
would define it as upper bound on the relative error due to rounding real
numbers to {{double}} floating-point numbers.
> Precision.EPSILON: wrong documentation
> --------------------------------------
>
> Key: MATH-843
> URL: https://issues.apache.org/jira/browse/MATH-843
> Project: Commons Math
> Issue Type: Bug
> Affects Versions: 3.0
> Reporter: Dominik Gruntz
> Priority: Minor
> Labels: documentation
> Original Estimate: 0.5h
> Remaining Estimate: 0.5h
>
> 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:
> {code}
> 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);
> }
> }
> {code}
> The output is:
> {code}
> % java Eps
> 5.551115123125784E-17
> 0.9999999999999999
> true
> {code}
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira