commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sébastien Brisard <>
Subject Re: [math] Exposing the Lanczos approximation in o.a.c.m3.special.Gamma?
Date Wed, 09 May 2012 03:47:13 GMT
Hi Thomas,

2012/5/8 Thomas Neidhart <>:
> On 05/08/2012 05:26 PM, Sébastien Brisard wrote:
>> Hi,
>> I've spent quite some time on MATH-753 [1], and I think I now have a
>> satisfactory solution.
>> The problem was to overcome the overflows which arise when computing
>> the density of the Gamma distribution for large values of the argument
>> and/or the scale parameter.
>> As I initially feared, what was proposed in the JIRA ticket leads to
>> high floating point errors. I adapted a method proposed in BOOST [2]
>> with acceptable errors. Meanwhile, I've also managed to improve the
>> accuracy of the computation of the density for the range of parameters
>> where the previous implementation was already working: in this range,
>> the accuracy *was* about 300 ulps, and is now 1-2 ulps! I think this
>> improvement is worth implementing.
>> The downside is that I need to expose the Lanczos implementation
>> internally used by o.a.c.m3.special.Gamma. This approximation is so
>> standard that I don't see it as a problem. I don't think that it
>> reveals too much of the Gamma internals, since the javadoc of
>> Gamma.logGamma states that it uses this approximation. So what I
>> propose is the addition of two methods in Gamma:
>> double getLanczosG(): returns the g constant
>> double getLanczos(double): returns the value of the Lanczos sum.
>> If you do not like this option, I can copy/paste the Lanczos
>> approximation in the GammaDistribution class. I'm adverse to the
>> latter option, as it leads to code duplication.
>> What do you think?
> Hi Sébastien,
> this sounds pretty good.
> After looking at the current Gamma function implementation, it looks
> like it consists mainly of public static methods. Could you attach your
> changes to the issue so I can have a look at them?
I will prepare a patch and attach it to MATH-753. Thanks for proposing
to review it!

> Thanks,
> Thomas
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

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

View raw message