From 2dec468fd82c6d968f622c2c519fcb8dc09bddac Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 18 Dec 2013 11:38:27 +0000 Subject: Fix ldbl-128 logl for subnormals (bug 16338). This patch fixes bug 16338, ldbl-128 logl not handling subnormals (with consequent inaccuracy for lgammal as well). The fix is simply to use __frexpl when determining the exponent, as done already in log2l and log10l. Given the lack of testing of small arguments to any of the log* functions, appropriate tests are added for all of them. Tested x86_64 and x86 and ulps updated accordingly, and spot tests also run for mips64 to confirm the ldbl-128 fix. Note that while this fixes lgammal inaccuracy for small positive arguments, I suspect that there will still be problems with spurious underflows in that case. * sysdeps/ieee754/ldbl-128/e_logl.c (__ieee754_logl): Use __frexpl to determine exponent and adjust argument to have exponent of -1. * math/auto-libm-test-in: Add more tests of log, log10, log1p and log2. * math/auto-libm-test-out: Regenerated. * sysdeps/x86_64/fpu/libm-test-ulps: Update. --- math/auto-libm-test-in | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'math/auto-libm-test-in') diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index dd4fd22..30e1ec6 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -414,6 +414,8 @@ log 1/e log 2 log 10 log 0.75 +log min +log min_subnorm log10 1 log10 0.1 @@ -422,12 +424,19 @@ log10 100.0 log10 10000.0 log10 e log10 0.75 +log10 min +log10 min_subnorm log1p 0 log1p -0 log1p e-1 log1p -0.25 log1p -0.875 +# Bug 16339: underflow exception may be missing. +log1p min missing-underflow +log1p min_subnorm missing-underflow +log1p -min missing-underflow +log1p -min_subnorm missing-underflow log2 1 log2 e @@ -435,6 +444,8 @@ log2 2.0 log2 16.0 log2 256.0 log2 0.75 +log2 min +log2 min_subnorm pow 0 0 pow 0 -0 -- cgit v1.1