diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-10-28 21:42:52 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-10-28 21:42:52 +0000 |
commit | 1f4dafa3ea24df63a6550dbdbbe8769caa7a9fc3 (patch) | |
tree | 70f341e615048fa98c3cc33efa340dcc2143b65f | |
parent | a62719ba90e2fa1728890ae7dc8df9e32a622e7b (diff) | |
download | glibc-1f4dafa3ea24df63a6550dbdbbe8769caa7a9fc3.zip glibc-1f4dafa3ea24df63a6550dbdbbe8769caa7a9fc3.tar.gz glibc-1f4dafa3ea24df63a6550dbdbbe8769caa7a9fc3.tar.bz2 |
Use C11 *_TRUE_MIN macros where applicable.
C11 defines standard <float.h> macros *_TRUE_MIN for the least
positive subnormal value of a type. Now that we build with
-std=gnu11, we can use these macros in glibc. This patch replaces
previous uses of the GCC predefines __*_DENORM_MIN__ (used in
<float.h> to define *_TRUE_MIN), as well as *_DENORM_MIN references in
comments.
Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch). Also tested for powerpc that
installed stripped shared libraries are unchanged by the patch.
* math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN,
DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__,
__DBL_DENORM_MIN__ and __FLT_DENORM_MIN__.
* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Refer to DBL_TRUE_MIN
instead of DBL_DENORM_MIN in comment.
* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Refer to
LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <float.h>.
(__nextafterl): Use LDBL_TRUE_MIN instead of __LDBL_DENORM_MIN__.
* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Refer to
LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | math/libm-test.inc | 12 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_fma.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_fmal.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_fmal.c | 2 |
6 files changed, 27 insertions, 12 deletions
@@ -1,3 +1,17 @@ +2015-10-28 Joseph Myers <joseph@codesourcery.com> + + * math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN, + DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__, + __DBL_DENORM_MIN__ and __FLT_DENORM_MIN__. + * sysdeps/ieee754/dbl-64/s_fma.c (__fma): Refer to DBL_TRUE_MIN + instead of DBL_DENORM_MIN in comment. + * sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Refer to + LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment. + * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <float.h>. + (__nextafterl): Use LDBL_TRUE_MIN instead of __LDBL_DENORM_MIN__. + * sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Refer to + LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment. + 2015-10-28 Florian Weimer <fweimer@redhat.com> [BZ# 19048] diff --git a/math/libm-test.inc b/math/libm-test.inc index 6cce5fc..631b205 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -315,12 +315,12 @@ static int ignore_max_ulp; /* Should we ignore max_ulp? */ LDBL_MAX, DBL_MAX, FLT_MAX) #define min_value CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN, \ LDBL_MIN, DBL_MIN, FLT_MIN) -#define min_subnorm_value CHOOSE (__LDBL_DENORM_MIN__, \ - __DBL_DENORM_MIN__, \ - __FLT_DENORM_MIN__, \ - __LDBL_DENORM_MIN__, \ - __DBL_DENORM_MIN__, \ - __FLT_DENORM_MIN__) +#define min_subnorm_value CHOOSE (LDBL_TRUE_MIN, \ + DBL_TRUE_MIN, \ + FLT_TRUE_MIN, \ + LDBL_TRUE_MIN, \ + DBL_TRUE_MIN, \ + FLT_TRUE_MIN) static FLOAT max_error, real_max_error, imag_max_error; diff --git a/sysdeps/ieee754/dbl-64/s_fma.c b/sysdeps/ieee754/dbl-64/s_fma.c index 8b4e133..4b9ec8b 100644 --- a/sysdeps/ieee754/dbl-64/s_fma.c +++ b/sysdeps/ieee754/dbl-64/s_fma.c @@ -66,7 +66,7 @@ __fma (double x, double y, double z) /* If fma will certainly overflow, compute as x * y. */ if (u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS) return x * y; - /* If x * y is less than 1/4 of DBL_DENORM_MIN, neither the + /* If x * y is less than 1/4 of DBL_TRUE_MIN, neither the result nor whether there is underflow depends on its exact value, only on its sign. */ if (u.ieee.exponent + v.ieee.exponent diff --git a/sysdeps/ieee754/ldbl-128/s_fmal.c b/sysdeps/ieee754/ldbl-128/s_fmal.c index e231ce6..3c87039 100644 --- a/sysdeps/ieee754/ldbl-128/s_fmal.c +++ b/sysdeps/ieee754/ldbl-128/s_fmal.c @@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z) if (u.ieee.exponent + v.ieee.exponent > 0x7fff + IEEE854_LONG_DOUBLE_BIAS) return x * y; - /* If x * y is less than 1/4 of LDBL_DENORM_MIN, neither the + /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the result nor whether there is underflow depends on its exact value, only on its sign. */ if (u.ieee.exponent + v.ieee.exponent diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c index bf57cb8..36a5090 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c @@ -24,6 +24,7 @@ static char rcsid[] = "$NetBSD: $"; * Special cases: */ +#include <float.h> #include <math.h> #include <math_private.h> #include <math_ldbl_opt.h> @@ -76,7 +77,7 @@ long double __nextafterl(long double x, long double y) } if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */ u = math_opt_barrier (x); - x -= __LDBL_DENORM_MIN__; + x -= LDBL_TRUE_MIN; if (ihx < 0x0360000000000000LL || (hx > 0 && lx <= 0) || (hx < 0 && lx > 1)) { @@ -115,14 +116,14 @@ long double __nextafterl(long double x, long double y) } if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */ u = math_opt_barrier (x); - x += __LDBL_DENORM_MIN__; + x += LDBL_TRUE_MIN; if (ihx < 0x0360000000000000LL || (hx > 0 && lx < 0 && lx != 0x8000000000000001LL) || (hx < 0 && lx >= 0)) { u = u * u; math_force_eval (u); /* raise underflow flag */ } - if (x == 0.0L) /* handle negative __LDBL_DENORM_MIN__ case */ + if (x == 0.0L) /* handle negative LDBL_TRUE_MIN case */ x = -0.0L; return x; } diff --git a/sysdeps/ieee754/ldbl-96/s_fmal.c b/sysdeps/ieee754/ldbl-96/s_fmal.c index d11885e..1a0d83b 100644 --- a/sysdeps/ieee754/ldbl-96/s_fmal.c +++ b/sysdeps/ieee754/ldbl-96/s_fmal.c @@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z) if (u.ieee.exponent + v.ieee.exponent > 0x7fff + IEEE854_LONG_DOUBLE_BIAS) return x * y; - /* If x * y is less than 1/4 of LDBL_DENORM_MIN, neither the + /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the result nor whether there is underflow depends on its exact value, only on its sign. */ if (u.ieee.exponent + v.ieee.exponent |