]> sourceware.org Git - glibc.git/commit
Fix nexttoward overflow in non-default rounding modes (bug 19059).
authorJoseph Myers <joseph@codesourcery.com>
Fri, 2 Oct 2015 17:11:13 +0000 (17:11 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 2 Oct 2015 17:11:13 +0000 (17:11 +0000)
commit59a63cca1133a8e1e3219970ee95979ac1f810df
treea4fc7c389f60647377479748d75bcc94f3c36547
parentef6b619f73e49b6d87c7530e6e9f8a59723b492d
Fix nexttoward overflow in non-default rounding modes (bug 19059).

ISO C requires overflowing results from nexttoward to be the
appropriate infinity independent of the rounding mode, but some
implementations use a rounding-mode-dependent result (this is the same
issue as was fixed for nextafter in bug 16677).  This patch fixes the
problem by making the nexttoward implementations discard the result
from the floating-point computation that forced an overflow exception
and then return the infinity previously computed with integer
arithmetic.

Tested for x86_64, x86, mips64 and powerpc.

[BZ #19059]
* math/s_nexttowardf.c (__nexttowardf): Do not return value from
overflowing computation.
* sysdeps/i386/fpu/s_nexttoward.c (__nexttoward): Likewise.
* sysdeps/i386/fpu/s_nexttowardf.c (__nexttowardf): Likewise.
* sysdeps/ieee754/ldbl-128/s_nexttoward.c (__nexttoward):
Likewise.
* sysdeps/ieee754/ldbl-128/s_nexttowardf.c (__nexttowardf):
Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c (__nexttoward):
Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c (__nexttowardf):
Likewise.
* sysdeps/ieee754/ldbl-96/s_nexttoward.c (__nexttoward): Likewise.
* sysdeps/ieee754/ldbl-96/s_nexttowardf.c (__nexttowardf):
Likewise.
* sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c (__nldbl_nexttowardf):
Likewise.
* math/libm-test.inc (nexttoward_test_data): Add more tests.
13 files changed:
ChangeLog
NEWS
math/libm-test.inc
math/s_nexttowardf.c
sysdeps/i386/fpu/s_nexttoward.c
sysdeps/i386/fpu/s_nexttowardf.c
sysdeps/ieee754/ldbl-128/s_nexttoward.c
sysdeps/ieee754/ldbl-128/s_nexttowardf.c
sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c
sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c
sysdeps/ieee754/ldbl-96/s_nexttoward.c
sysdeps/ieee754/ldbl-96/s_nexttowardf.c
sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c
This page took 0.04153 seconds and 5 git commands to generate.