[
https://issues.apache.org/jira/browse/MATH-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14099461#comment-14099461
]
Gilles commented on MATH-1146:
------------------------------
Is there a consistent policy throughout CM for handling NaN and infinities?
Unit tests for some statistics classes refer to "special values", so it looks
like they were meant to be handled. If so, shouldn't we assume that they must
be handled correctly, in all cases?
Alternately, it would be fine to just signal that if special values are passed
to those classes, results are undefined (filtering is the caller's
responsibility).
Anything in between is confusing, IMHO.
Consistency should come first. Once the policy is defined, we can then look for
an efficient way to implement it.
> class Mean returns incorrect result after processing an Infinity value
> ----------------------------------------------------------------------
>
> Key: MATH-1146
> URL: https://issues.apache.org/jira/browse/MATH-1146
> Project: Commons Math
> Issue Type: Bug
> Affects Versions: 3.3
> Reporter: david cogen
> Attachments: MATH-1146.patch
>
>
> 1. Create a Mean object.
> 2. call increment() with Double.POSITIVE_INFINITY.
> 3. Call getResult(). Result is INFINITY as expected.
> 4. call increment() with 0.
> 5. Call getResult(). Result is NaN; not INFINITY as expected.
> This is apparently due to the "optimization" for calculating mean described
> in the javadoc. Rather than accumulating a sum, it maintains a running mean
> value using the formula "m = m + (new value - m) / (number of observations)",
> which unlike the "definition way", fails after an infinity.
> I was using Mean within a SummaryStatistics. Other statistics also seem to be
> affected; for example, the standard deviation also incorrectly gives NaN
> rather than Infinity. I don't know if that's due to the error in Mean or if
> the other stats classes have similar bugs.
--
This message was sent by Atlassian JIRA
(v6.2#6252)