[
https://issues.apache.org/jira/browse/MATH-1559?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17222274#comment-17222274
]
XinT commented on MATH-1559:
----------------------------
I think the test is failing due to randomness in the HashMap. I found the test
to be flaky using a tool called NonDex ([implementation
here|https://github.com/TestingResearchIllinois/NonDex] and the [paper
here|http://mir.cs.illinois.edu/awshi2/publications/FSEDEMO2016.pdf]), which
uses different random seeds for testing so that wrong assumptions about Java
APIs (eg. HashMaps are ordered) are caught.
When I simply run mvn test, the test doesn't fail either. Empirically the
failing orders doesn't occur that often when the HashMap implementation is not
instrumented by the NonDex tool. Still, I am able to produce the exact trace
when it does fail (see screenshot above), and I think my reasoning should be
correct.
> testCreateFromDoubles can fail
> ------------------------------
>
> Key: MATH-1559
> URL: https://issues.apache.org/jira/browse/MATH-1559
> Project: Commons Math
> Issue Type: Bug
> Affects Versions: 3.6.1
> Reporter: XinT
> Priority: Minor
> Labels: pull-request-available, test
> Attachments: image-2020-10-28-10-32-34-088.png
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> EnumeratedRealDistributionTest.testCreateFromDoubles() can sometimes fail due
> to a precision problem. More precisely, sometimes distribution.probability(2)
> equals to 0.5000000000000001, and the assertion assertEquals(0.5,
> distribution.probability(2), 0) will fail.
> The deeper reason why this happens is that the call to
> MathArrays.normalizeArray() in the constructor of EnumeratedDistribution
> (line 105) can mess up the probability for value 2 by changing it from
> exactly 0.5 to 0.5000000000000001.
> Available PR: https://github.com/apache/commons-math/pull/162
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)