From: John Maddock (john_at_[hidden])
Date: 2006-07-12 12:35:58
Paul A Bristow wrote:
>> This brings to mind another function that, though easily derived
>> would be good to have to allow internal computations less subject to
>> round-off error. This is a two parameter function that is the
>> cumulative probability between a lower and an upper
>> bound. Mathematically this can always be computed as "CDF(x[ub]) -
>> CDF(x[lb])" (read the square brackets as mathematical subscript
>> notation) but numerically with very small intervals, you can easily
>> end up with 0 when you want something close to
> An interesting suggestion.
> John Maddock has been muttering about using Boost.Interval with these
> It's on his TODO list allegedly ;-)
Yeh, but it's a long list ;-)
> Would this help with the "CDF(x[ub]) - CDF(x[lb])"?
> And/or allow one to produce "PDF((x[ub]+x[lb])/2)*(x[ub]-x[lb])"
> using the density/mass/distribution?
No it's entirely different functionality.
Returning an interval guards against rounding error, or function
sensitivity, leading you towards erroneous conclusions.
Calculating a probablity over an interval is the same as integrating the
distribution function from x to y rather than -INF to x. Doing it properly
requires for example a four argument incomplete beta:
ibeta(a, b, x, y); // incomplete beta integral from x to y.
and a three argument incomplete gamma:
gamma_Q(a, x, y); // incomplete gamma integral from x to y.
However, I don't know how to implement those: I did have a very quick look
into this when I did the incomplete gamma and didn't find any useful
literature, so if anyone has any leads I'm all ears. My inclination is to
leave stuff like this for version 2 (or 3!) though :-)