[
https://issues.apache.org/jira/browse/MATH-471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12981108#action_12981108
]
Phil Steitz commented on MATH-471:
----------------------------------
Yes, you are right. Needs to be reworked slightly for 2.x.
> MathUtils.equals(double, double) does not work properly for floats
> ------------------------------------------------------------------
>
> Key: MATH-471
> URL: https://issues.apache.org/jira/browse/MATH-471
> Project: Commons Math
> Issue Type: Bug
> Reporter: Sebb
> Attachments: Math471.patch
>
>
> MathUtils.equals(double, double) does not work properly for floats.
> There is no equals(float,float) so float parameters are automatically
> promoted to double. However, that is not necessarily appropriate, given that
> the ULP for a double is much smaller than the ULP for a float.
> So for example:
> {code}
> double oneDouble = 1.0d;
> assertTrue(MathUtils.equals(oneDouble, Double.longBitsToDouble(1 +
> Double.doubleToLongBits(oneDouble)))); // OK
> float oneFloat = 1.0f;
> assertTrue(MathUtils.equals(oneFloat, Float.intBitsToFloat(1 +
> Float.floatToIntBits(oneFloat)))); // FAILS
> float f1 = 333.33334f;
> double d1 = 333.33334d;
> assertTrue(MathUtils.equals(d1, f1)); // FAILS
> {code}
> I think the equals() methods need to be duplicated with the appropriate
> changes for floats to avoid any problems with the promotion of floats.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.