[ 
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

        

Reply via email to