Sean Owen created MATH-1056:
-------------------------------

             Summary: Small error in PoissonDistribution.nextPoisson() algorithm
                 Key: MATH-1056
                 URL: https://issues.apache.org/jira/browse/MATH-1056
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 3.2
            Reporter: Sean Owen
            Priority: Minor
         Attachments: MATH-1056.patch

Here's a tiny bug I noticed via static inspection, since it flagged the integer 
division. PoissonDistribution.java:325 says:

{code:java}
final double a1 = FastMath.sqrt(FastMath.PI * twolpd) * FastMath.exp(1 / 8 * 
lambda);
{code}

The "1 / 8 * lambda)" is evidently incorrect, since this will always evaluate 
to 0. I rechecked the original algorithm 
(http://luc.devroye.org/devroye-poisson.pdf) and it should instead be:

{code:java}
final double a1 = FastMath.sqrt(FastMath.PI * twolpd) * FastMath.exp(1 / (8 * 
lambda));
{code}

(lambda is a double so there is no int division issue.) This matches a later 
expression.

I'm not sure how to evaluate the effect of the bug. Better to be correct of 
course; it may never have made much practical difference.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to