This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug math/19677] [ldbl-128ibm] remainderl equality test incorrect for zero low part
- From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Tue, 08 Mar 2016 00:28:23 +0000
- Subject: [Bug math/19677] [ldbl-128ibm] remainderl equality test incorrect for zero low part
- Auto-submitted: auto-generated
- References: <bug-19677-131 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=19677
--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via cc4084017e211cdeafef2d9036a130cbd6f2cadd (commit)
from 920b35c92ed8f41796c090c2819434e56701da5b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cc4084017e211cdeafef2d9036a130cbd6f2cadd
commit cc4084017e211cdeafef2d9036a130cbd6f2cadd
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Mar 8 00:27:21 2016 +0000
Fix ldbl-128ibm remainderl equality test for zero low part (bug 19677).
The ldbl-128ibm implementation of remainderl has logic resulting in
incorrect tests for equality of the absolute values of the arguments
in the case of zero low parts. If the low parts are both zero but
with different signs, this can wrongly cause equal arguments to be
treated as different, resulting in turn in incorrect signs of zero
result in nondefault rounding modes arising from the subtractions done
when the arguments are not equal.
This patch fixes the logic to convert -0 low parts into +0 before the
comparison (remquo already has separate logic to deal with signs of
zero results, so doesn't need such a change). Tests are added for
remainderl and remquol similar to that for fmodl, and based on a
refactoring of it, since the bug depends on low parts which should not
be relied upon in tests not setting the representation explicitly
(although in fact the bug shows up in test-ldouble with current GCC).
Tested for powerpc.
[BZ #19677]
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
(__ieee754_remainderl): Put zero low parts in canonical form.
* sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c: New
file. Based on
sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c.
* sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c: Replace
with wrapper round test-fmodrem-ldbl-128ibm.c.
* sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c: New
file.
* sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c:
Likewise.
* sysdeps/ieee754/ldbl-128ibm/Makefile (tests): Add
test-remainderl-ldbl-128ibm and test-remquol-ldbl-128ibm.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 17 ++++
sysdeps/ieee754/ldbl-128ibm/Makefile | 3 +-
sysdeps/ieee754/ldbl-128ibm/e_remainderl.c | 4 +
.../ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c | 62 +--------------
.../ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c | 84 ++++++++++++++++++++
.../ldbl-128ibm/test-remainderl-ldbl-128ibm.c | 21 +++++
.../ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c | 30 +++++++
7 files changed, 161 insertions(+), 60 deletions(-)
create mode 100644 sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c
--
You are receiving this mail because:
You are on the CC list for the bug.