Re: [PATCH] libm: Fix 'gamma' and 'gammaf' functions. Clean up other gamma code. [v2]
Corinna Vinschen via Newlib <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On Sep 4 09:25, Keith Packard via Newlib wrote: > The current gamma, gamma_r, gammaf and gammaf_r functions return > |gamma(x)| instead of ln(|gamma(x)|) due to a change made back in 2002 > to the __ieee754_gamma_r implementation. This patch fixes that, making > all of these functions map too their lgamma equivalents. > > To fix the underlying bug, the __ieee754_gamma functions have been > changed to return gamma(x), removing the _r variants as those are no > longer necessary. Their names have been changed to __ieee754_tgamma to > avoid potential confusion from users. > > Now that the __ieee754_tgamma functions return the correctly signed > value, the tgamma functions have been modified to use them. > > libm.a now exposes the following gamma functions: > > ln(|gamma(x)|): > > __ieee754_lgamma_r > __ieee754_lgammaf_r > > lgamma > lgamma_r > gamma > gamma_r > > lgammaf > lgammaf_r > gammaf > gammaf_r > > lgammal (on machines where long double is double) > > gamma(x): > > __ieee754_tgamma > __ieee754_tgammaf > tgamma > tgammaf > tgammal (on machines where long double is double) > > Additional aliases for any of the above functions can be added if > necessary; in particular, I'm not sure if we need to include > __ieee754_gamma*_r functions (which would return ln(|(gamma(x)|). > > Signed-off-by: Keith Packard <[email protected]> Pushed. Thanks, Corinna