]> git.ipfire.org Git - thirdparty/glibc.git/commit - ChangeLog
Fix log2 (1) in round-downward mode (bug 17042).
authorJoseph Myers <joseph@codesourcery.com>
Tue, 10 Jun 2014 12:07:15 +0000 (12:07 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 10 Jun 2014 12:07:15 +0000 (12:07 +0000)
commitf8ba1b5654d876c8db4c9a020e6fa976d434f988
treef5e34ce57471cbb1c54ec4cd0492b665f94151bb
parent2c3520d98d9773d9e092196c3c36150244eed1dd
Fix log2 (1) in round-downward mode (bug 17042).

As with other issues of this kind, bug 17042 is log2 (1) wrongly
returning -0 instead of +0 in round-downward mode because of
implementations effectively in terms of log1p (x - 1).  This patch
fixes the issue in the same way used for log and log10.

Tested x86_64 and x86 and ulps updated accordingly.  Also tested for
mips64 to confirm a fix was needed for ldbl-128 and to validate that
fix (also applied to ldbl-128ibm since that version of log2l is
essentially the same as the ldbl-128 one).

[BZ #17042]
* sysdeps/i386/fpu/e_log2.S (__ieee754_log2): Take absolete value
when x - 1 is zero.
* sysdeps/i386/fpu/e_log2f.S (__ieee754_log2f): Likewise.
* sysdeps/i386/fpu/e_log2l.S (__ieee754_log2l): Likewise.
* sysdeps/ieee754/ldbl-128/e_log2l.c (__ieee754_log2l): Return
0.0L for an argument of 1.0L.
* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (__ieee754_log2l):
Likewise.
* sysdeps/x86_64/fpu/e_log2l.S (__ieee754_log2l): Take absolute
value when x - 1 is zero.
* math/libm-test.inc (log2_test): Use ALL_RM_TEST.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
ChangeLog
NEWS
math/libm-test.inc
sysdeps/i386/fpu/e_log2.S
sysdeps/i386/fpu/e_log2f.S
sysdeps/i386/fpu/e_log2l.S
sysdeps/i386/fpu/libm-test-ulps
sysdeps/ieee754/ldbl-128/e_log2l.c
sysdeps/ieee754/ldbl-128ibm/e_log2l.c
sysdeps/x86_64/fpu/e_log2l.S
sysdeps/x86_64/fpu/libm-test-ulps