[ 
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)

Reply via email to