commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (MATH-475) MathUtils.equals(double, double, double) does not agree with Javadoc
Date Sat, 15 Jan 2011 17:48:45 GMT

    [ https://issues.apache.org/jira/browse/MATH-475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12982118#action_12982118
] 

Phil Steitz edited comment on MATH-475 at 1/15/11 12:48 PM:
------------------------------------------------------------

Very interesting example.  How do you come up with this stuff, Sebb?  :)

I tend to agree with Gilles' view that if if a and b are not distinguishable as doubles, we
don't really have any confidence in the value of abs(a - b), so the short-circuit in the current
code is better.  I would say just update the javadoc to make say something like

"Returns true if the values are indistinguishable as doubles or the difference between them
is within the range of allowed error (inclusive)."

      was (Author: psteitz):
    Very interesting example.  How do you come up with this stuff, Sebb?  :)

I tend to agree with Gilles' view that if if a and b are not distinguishable as doubles, we
don't really have any confidence in the value of abs(a - b), so the short-circuit in the current
code is better.  I would say just update the javadoc to make say something like

"Returns true if there is no double value strictly between the arguments or the difference
between them is within the range of allowed error (inclusive)."
  
> MathUtils.equals(double, double, double) does not agree with Javadoc
> --------------------------------------------------------------------
>
>                 Key: MATH-475
>                 URL: https://issues.apache.org/jira/browse/MATH-475
>             Project: Commons Math
>          Issue Type: Bug
>            Reporter: Sebb
>
> MathUtils.equals(double, double, double) does not agree with its Javadoc.
> The Javadoc says:
> "Returns true if both arguments are equal or within the range of allowed error (inclusive)."
> However the following test fails:
> {code}
> double top=1.7976931348623184E16;
> double pen=1.7976931348623182E16;
> double diff=Math.abs(top-pen);
> assertTrue(MathUtils.equals(top, pen, 1.0)); // OK - implies the difference is <=
1.0
> assertTrue("expected < 1.0, but was: "+diff,diff <= 1.0); // reports: expected
< 1.0, but was: 2.0
> {code}
> This discrepancy is because the equals(double, double, double) method also checks to
see if the numbers are within one ULP of each other.
> Either the Javadoc needs to be corrected, or the code needs to be corrected to drop the
ULP comparison.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message