From ff069f024ae8cf15d53429e034d67ddcece0f67a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 15 May 2015 17:21:08 +0000 Subject: 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 | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index 7749398..2b29214 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-05-15 Joseph Myers + + [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. + 2015-05-15 Wilco Dijkstra * stdio-common/printf_fp.c (___printf_fp): Use abs. -- cgit v1.1