You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bill Barker (JIRA)" <ji...@apache.org> on 2010/06/08 03:40:11 UTC

[jira] Commented: (MATH-373) StatUtils.sum returns NaN for zero-length arrays

    [ https://issues.apache.org/jira/browse/MATH-373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12876512#action_12876512 ] 

Bill Barker commented on MATH-373:
----------------------------------

I agree with the reasoning here, and we should do it this way in 3.0.  However it is an incompatible change to do in a point release, so I'm going to wait for more feed back from other developers before I make any changes to the current code.

I'm thinking that adding a method to AbstractUnivariateStatistic that looks like:
   protected boolean test( final double[] values,  final int begin,   final int length, final boolean allowEmpty)

that would have the test:
   if(length == 0 && !allowEmpty)
        return false;

The current test method can call the new one with allowEmpty=false for backwards compatibility.  Then we can decide on which statistics should have a zero value on the empty set.


> StatUtils.sum returns NaN for zero-length arrays
> ------------------------------------------------
>
>                 Key: MATH-373
>                 URL: https://issues.apache.org/jira/browse/MATH-373
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.1
>            Reporter: Roman Werpachowski
>
> StatUtils.sum returns NaN for zero-length arrays, which is:
> 1. inconsistent with the mathematical notion of sum: in maths, sum_{i=0}^{N-1} a_i will be 0 for N=0. In particular, the identity
> sum_{i=0}^{k-1} a_i + sum_{i=k}^{N-1} = sum_{i=0}^{N-1}
> is broken for k = 0, since NaN + x = NaN, not x.
> 2. introduces hard to debug erros (returning a NaN is one of the worst forms of reporting an exceptional condition, as NaNs propagate silently and require manual tracing during the debugging)
> 3. enforces "special case" handling when the user expects that the summed array can have a zero length.
> The correct behaviour is, in my opinion, to return 0.0, not NaN in the above case.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.