commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Al Chou <>
Subject Re: [math] Getting 1.0 out the door -- tasks remaining
Date Mon, 07 Jun 2004 13:54:14 GMT
--- Phil Steitz <> wrote:
> J.Pietschmann wrote:
> > Phil Steitz wrote:
> > 
> >> 1) Decide what to do about inverse cumulative probabilities where p = 
> >> 1 (easy solution is to document and throw)
> > 
> > 
> > Nearly +1
> > 
> My own "nearly +1" on this just turned to -1.  After looking some more at 
> the code and thinking some more, I think that both p=1 and p=0 should be 
> handled correctly in all cases.  The difficult cases are when the 
> probability density function has unbounded support.  Here is what I 
> propose for the values of inverseCumulativeProbability() at p=0 and p=1 
> for current distributions.  Unless otherwise noted, these values are 
> intented to be independent of distribution parameters.
> Distribution         p=0                     p=1
> ------------------------------------------------------------------
> Binomial               0               Integer.MAX_VALUE
> Chisquare              0               Double.POSITIVE_INFINITY
> Exponential            0               Double.POSITIVE_INFINITY
> F                      0               Double.POSITIVE_INFINITY
> Gamma                  0               Double.POSITIVE_INFINITY
> HyperGeometric         0               finite, parameter-dependent
> Other than the value for Chisquare with p=1 (which causes R to hang), 
> these values are consistent with what R returns using the q* functions. 
> It might be more convenient to return Double.MAX_VALUE, -Double.MAX_VALUE 
> in place of the INFINITY's (since then we could just use 
> getDomainLowerBound at 0 and 1) but this would not be correct 
> mathematically.  If there are no objections, I will find a way to get the 
> values above returned.

+1 to the values in the table above.  As a user I would prefer to be returned
an infinity rather than MAX_VALUE where possible (it's too bad the integer
types don't provide infinity values), because even though I would often
recognize 1e+308 or thereabouts as Double.POSITIVE_INFINITY, I would still have
to do that conversion mentally, and I would always wonder whether the returned
value was actually MAX_VALUE or just the implementation-dependent
representation of POSITIVE_INFINITY.  Also consider what would happen if the
data type were changed to float.  Then if MAX_VALUE were used, the numeric
value returned for p = 1 would differ depending on the data type.  With the
infinity values, although there's a class difference between
Double.POSITIVE_INFINITY and Float.POSITIVE_INFINITY, the concept is clearly
identical.  It's strange that BigDecimal doesn't provide infinity values,
though.  Maybe that's something Commons should address at some point.


Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger. 

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message