diff options
author | Joseph Myers <joseph@codesourcery.com> | 2013-12-18 11:38:27 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2013-12-18 11:38:27 +0000 |
commit | 2dec468fd82c6d968f622c2c519fcb8dc09bddac (patch) | |
tree | ebc7e3f72a6474d7aa3f6a042bb01a2917562bc3 /sysdeps/x86_64/fpu | |
parent | 4d84e6addd62bdc256627af334ba85489112e008 (diff) | |
download | glibc-2dec468fd82c6d968f622c2c519fcb8dc09bddac.zip glibc-2dec468fd82c6d968f622c2c519fcb8dc09bddac.tar.gz glibc-2dec468fd82c6d968f622c2c519fcb8dc09bddac.tar.bz2 |
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.
Diffstat (limited to 'sysdeps/x86_64/fpu')
-rw-r--r-- | sysdeps/x86_64/fpu/libm-test-ulps | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 3985945..d36b76a 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -7675,6 +7675,9 @@ ldouble: 1 Test "log10 (0x2.b7e154p+0)": float: 1 ifloat: 1 +Test "log10 (0x4p-128)": +ildouble: 1 +ldouble: 1 Test "log10 (0xcp-4)": double: 1 float: 2 |