commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Barker (JIRA)" <j...@apache.org>
Subject [jira] Commented: (MATH-373) StatUtils.sum returns NaN for zero-length arrays
Date Tue, 08 Jun 2010 01:40:11 GMT

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


Mime
View raw message