mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
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.
This commit is contained in:
14
ChangeLog
14
ChangeLog
@ -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>
|
2015-10-28 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
[BZ# 19048]
|
[BZ# 19048]
|
||||||
|
@ -315,12 +315,12 @@ static int ignore_max_ulp; /* Should we ignore max_ulp? */
|
|||||||
LDBL_MAX, DBL_MAX, FLT_MAX)
|
LDBL_MAX, DBL_MAX, FLT_MAX)
|
||||||
#define min_value CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN, \
|
#define min_value CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN, \
|
||||||
LDBL_MIN, DBL_MIN, FLT_MIN)
|
LDBL_MIN, DBL_MIN, FLT_MIN)
|
||||||
#define min_subnorm_value CHOOSE (__LDBL_DENORM_MIN__, \
|
#define min_subnorm_value CHOOSE (LDBL_TRUE_MIN, \
|
||||||
__DBL_DENORM_MIN__, \
|
DBL_TRUE_MIN, \
|
||||||
__FLT_DENORM_MIN__, \
|
FLT_TRUE_MIN, \
|
||||||
__LDBL_DENORM_MIN__, \
|
LDBL_TRUE_MIN, \
|
||||||
__DBL_DENORM_MIN__, \
|
DBL_TRUE_MIN, \
|
||||||
__FLT_DENORM_MIN__)
|
FLT_TRUE_MIN)
|
||||||
|
|
||||||
static FLOAT max_error, real_max_error, imag_max_error;
|
static FLOAT max_error, real_max_error, imag_max_error;
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ __fma (double x, double y, double z)
|
|||||||
/* If fma will certainly overflow, compute as x * y. */
|
/* If fma will certainly overflow, compute as x * y. */
|
||||||
if (u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS)
|
if (u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS)
|
||||||
return x * y;
|
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
|
result nor whether there is underflow depends on its exact
|
||||||
value, only on its sign. */
|
value, only on its sign. */
|
||||||
if (u.ieee.exponent + v.ieee.exponent
|
if (u.ieee.exponent + v.ieee.exponent
|
||||||
|
@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z)
|
|||||||
if (u.ieee.exponent + v.ieee.exponent
|
if (u.ieee.exponent + v.ieee.exponent
|
||||||
> 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
|
> 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
|
||||||
return x * y;
|
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
|
result nor whether there is underflow depends on its exact
|
||||||
value, only on its sign. */
|
value, only on its sign. */
|
||||||
if (u.ieee.exponent + v.ieee.exponent
|
if (u.ieee.exponent + v.ieee.exponent
|
||||||
|
@ -24,6 +24,7 @@ static char rcsid[] = "$NetBSD: $";
|
|||||||
* Special cases:
|
* Special cases:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <float.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <math_private.h>
|
#include <math_private.h>
|
||||||
#include <math_ldbl_opt.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 */
|
if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */
|
||||||
u = math_opt_barrier (x);
|
u = math_opt_barrier (x);
|
||||||
x -= __LDBL_DENORM_MIN__;
|
x -= LDBL_TRUE_MIN;
|
||||||
if (ihx < 0x0360000000000000LL
|
if (ihx < 0x0360000000000000LL
|
||||||
|| (hx > 0 && lx <= 0)
|
|| (hx > 0 && lx <= 0)
|
||||||
|| (hx < 0 && lx > 1)) {
|
|| (hx < 0 && lx > 1)) {
|
||||||
@ -115,14 +116,14 @@ long double __nextafterl(long double x, long double y)
|
|||||||
}
|
}
|
||||||
if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */
|
if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */
|
||||||
u = math_opt_barrier (x);
|
u = math_opt_barrier (x);
|
||||||
x += __LDBL_DENORM_MIN__;
|
x += LDBL_TRUE_MIN;
|
||||||
if (ihx < 0x0360000000000000LL
|
if (ihx < 0x0360000000000000LL
|
||||||
|| (hx > 0 && lx < 0 && lx != 0x8000000000000001LL)
|
|| (hx > 0 && lx < 0 && lx != 0x8000000000000001LL)
|
||||||
|| (hx < 0 && lx >= 0)) {
|
|| (hx < 0 && lx >= 0)) {
|
||||||
u = u * u;
|
u = u * u;
|
||||||
math_force_eval (u); /* raise underflow flag */
|
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;
|
x = -0.0L;
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ __fmal (long double x, long double y, long double z)
|
|||||||
if (u.ieee.exponent + v.ieee.exponent
|
if (u.ieee.exponent + v.ieee.exponent
|
||||||
> 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
|
> 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
|
||||||
return x * y;
|
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
|
result nor whether there is underflow depends on its exact
|
||||||
value, only on its sign. */
|
value, only on its sign. */
|
||||||
if (u.ieee.exponent + v.ieee.exponent
|
if (u.ieee.exponent + v.ieee.exponent
|
||||||
|
Reference in New Issue
Block a user