Fix lgammaf spurious underflows (bug 18220).
commitff069f024ae8cf15d53429e034d67ddcece0f67a
authorJoseph Myers <joseph@codesourcery.com>
Fri, 15 May 2015 17:21:08 +0000 (15 17:21 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 15 May 2015 17:21:08 +0000 (15 17:21 +0000)
treed6ad47bf62f47e532cadb862d427eaa2f610c12c
parentb2fb25240813266e4f62f2dd039573f1a042ea2f
Fix lgammaf spurious underflows (bug 18220).

The flt-32 implementation of lgammaf produces spurious underflow
exceptions for some large arguments, because of calculations involving
x^-2 multiplied by small constants.  This patch fixes this by
adjusting the threshold for a simpler computation to 2**26 (the error
in the simpler computation is on the order of 0.5 * log (x), for a
result on the order of x * log (x)).

Tested for x86_64 and x86.

[BZ #18220]
* sysdeps/ieee754/flt-32/e_lgammaf_r.c (__ieee754_lgammaf_r): Use
2**26 not 2**58 as threshold for returning x * (log (x) - 1).
* math/auto-libm-test-in: Add another test of lgamma.
* math/auto-libm-test-out: Regenerated.
ChangeLog
NEWS
math/auto-libm-test-in
math/auto-libm-test-out
sysdeps/ieee754/flt-32/e_lgammaf_r.c