[ https://issues.apache.org/jira/browse/MATH-843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13431763#comment-13431763 ]
Gilles commented on MATH-843: ----------------------------- bq. On some machines, the expression 1 + Precision.EPSILON in the test 1 + Precision.EPSILON == 1 might be hold in a register with extended precision and thus may be greater than 1. The expression then returns false. Did you actually see that? I would (maybe naively) think that "1 + ESPILON" would be cast to a 64-bit double before the comparison. If so, wouldn't the equality still hold? bq. Regarding the other definition: [...] No problem to add this comment if you provide it here in a "noformat" block with all the references as HTML links ("<a href="...">...</a>") which I can copy/paste into the code. Thanks. > 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