aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog76
-rw-r--r--include/math.h29
-rw-r--r--math/w_lgamma_main.c2
-rw-r--r--math/w_lgamma_r_compat.c2
-rw-r--r--math/w_lgammaf_main.c2
-rw-r--r--math/w_lgammaf_r_compat.c2
-rw-r--r--math/w_lgammal_main.c2
-rw-r--r--math/w_lgammal_r_compat.c2
-rw-r--r--math/w_tgamma_compat.c2
-rw-r--r--math/w_tgamma_template.c2
-rw-r--r--math/w_tgammaf_compat.c2
-rw-r--r--math/w_tgammal_compat.c2
-rw-r--r--sysdeps/aarch64/fpu/s_floor.c1
-rw-r--r--sysdeps/aarch64/fpu/s_floorf.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_lgamma_r.c4
-rw-r--r--sysdeps/ieee754/dbl-64/k_rem_pio2.c2
-rw-r--r--sysdeps/ieee754/dbl-64/lgamma_neg.c4
-rw-r--r--sysdeps/ieee754/dbl-64/s_floor.c1
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c1
-rw-r--r--sysdeps/ieee754/float128/s_floorf128.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_lgammaf_r.c4
-rw-r--r--sysdeps/ieee754/flt-32/lgamma_negf.c4
-rw-r--r--sysdeps/ieee754/flt-32/s_floorf.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_lgammal_r.c6
-rw-r--r--sysdeps/ieee754/ldbl-128/e_powl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128/lgamma_negl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128/s_expm1l.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_floorl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_powl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_expm1l.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_floorl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_truncl.c2
-rw-r--r--sysdeps/ieee754/ldbl-96/e_lgammal_r.c4
-rw-r--r--sysdeps/ieee754/ldbl-96/lgamma_negl.c4
-rw-r--r--sysdeps/m68k/m680x0/fpu/s_floor_template.c1
-rw-r--r--sysdeps/powerpc/fpu/math_private.h20
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modf.c2
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modff.c2
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c1
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c1
-rw-r--r--sysdeps/riscv/rv64/rvd/s_floor.c1
-rw-r--r--sysdeps/riscv/rvf/s_floorf.c1
-rw-r--r--sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c1
-rw-r--r--sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c1
-rw-r--r--sysdeps/x86_64/fpu/math_private.h24
-rw-r--r--sysdeps/x86_64/fpu/multiarch/s_floor.c1
-rw-r--r--sysdeps/x86_64/fpu/multiarch/s_floorf.c1
51 files changed, 160 insertions, 96 deletions
diff --git a/ChangeLog b/ChangeLog
index 5bbf568..b91461d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,79 @@
+2018-09-14 Joseph Myers <joseph@codesourcery.com>
+
+ * include/math.h [!_ISOMAC && !(__FINITE_MATH_ONLY__ &&
+ __FINITE_MATH_ONLY__ > 0) && !NO_MATH_REDIRECT] (MATH_REDIRECT):
+ New macro.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (MATH_REDIRECT_LDBL): Likewise.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (MATH_REDIRECT_F128): Likewise.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (MATH_REDIRECT_UNARY_ARGS): Likewise.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (sqrt): Redirect using MATH_REDIRECT.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (floor): Likewise.
+ * sysdeps/aarch64/fpu/s_floor.c: Define NO_MATH_REDIRECT before
+ header inclusion.
+ * sysdeps/aarch64/fpu/s_floorf.c: Likewise.
+ * sysdeps/ieee754/dbl-64/s_floor.c: Likewise.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c: Likewise.
+ * sysdeps/ieee754/float128/s_floorf128.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_floorf.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/s_floorl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_floorl.c: Likewise.
+ * sysdeps/m68k/m680x0/fpu/s_floor_template.c: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c: Likewise.
+ * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c: Likewise.
+ * sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c: Likewise.
+ * sysdeps/riscv/rv64/rvd/s_floor.c: Likewise.
+ * sysdeps/riscv/rvf/s_floorf.c: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c: Likewise.
+ * sysdeps/x86_64/fpu/multiarch/s_floor.c: Likewise.
+ * sysdeps/x86_64/fpu/multiarch/s_floorf.c: Likewise.
+ * sysdeps/powerpc/fpu/math_private.h [_ARCH_PWR5X] (__floor):
+ Remove macro.
+ [_ARCH_PWR5X] (__floorf): Likewise.
+ * sysdeps/x86_64/fpu/math_private.h [__SSE4_1__] (__floor): Remove
+ inline function.
+ [__SSE4_1__] (__floorf): Likewise.
+ * math/w_lgamma_main.c (LGFUNC (__lgamma)): Use floor functions
+ instead of __floor variants.
+ * math/w_lgamma_r_compat.c (__lgamma_r): Likewise.
+ * math/w_lgammaf_main.c (LGFUNC (__lgammaf)): Likewise.
+ * math/w_lgammaf_r_compat.c (__lgammaf_r): Likewise.
+ * math/w_lgammal_main.c (LGFUNC (__lgammal)): Likewise.
+ * math/w_lgammal_r_compat.c (__lgammal_r): Likewise.
+ * math/w_tgamma_compat.c (__tgamma): Likewise.
+ * math/w_tgamma_template.c (M_DECL_FUNC (__tgamma)): Likewise.
+ * math/w_tgammaf_compat.c (__tgammaf): Likewise.
+ * math/w_tgammal_compat.c (__tgammal): Likewise.
+ * sysdeps/ieee754/dbl-64/e_lgamma_r.c (sin_pi): Likewise.
+ * sysdeps/ieee754/dbl-64/k_rem_pio2.c (__kernel_rem_pio2):
+ Likewise.
+ * sysdeps/ieee754/dbl-64/lgamma_neg.c (__lgamma_neg): Likewise.
+ * sysdeps/ieee754/flt-32/e_lgammaf_r.c (sin_pif): Likewise.
+ * sysdeps/ieee754/flt-32/lgamma_negf.c (__lgamma_negf): Likewise.
+ * sysdeps/ieee754/ldbl-128/e_lgammal_r.c (__ieee754_lgammal_r):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Likewise.
+ * sysdeps/ieee754/ldbl-128/lgamma_negl.c (__lgamma_negl):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c (__ieee754_lgammal_r):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c (__lgamma_negl):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_truncl.c (__truncl): Likewise.
+ * sysdeps/ieee754/ldbl-96/e_lgammal_r.c (sin_pi): Likewise.
+ * sysdeps/ieee754/ldbl-96/lgamma_negl.c (__lgamma_negl): Likewise.
+ * sysdeps/powerpc/power5+/fpu/s_modf.c (__modf): Likewise.
+ * sysdeps/powerpc/power5+/fpu/s_modff.c (__modff): Likewise.
+
2018-09-12 Joseph Myers <joseph@codesourcery.com>
* elf/Makefile (modules-names-tests): New variable.
diff --git a/include/math.h b/include/math.h
index 9ab7aa4..eed9530 100644
--- a/include/math.h
+++ b/include/math.h
@@ -79,16 +79,29 @@ fabsf128 (_Float128 x)
# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
# ifndef NO_MATH_REDIRECT
-/* Declare sqrt for use within GLIBC. Compilers typically inline sqrt as a
- single instruction. Use an asm to avoid use of PLTs if it doesn't. */
-float (sqrtf) (float) asm ("__ieee754_sqrtf");
-double (sqrt) (double) asm ("__ieee754_sqrt");
-# ifndef __NO_LONG_DOUBLE_MATH
-long double (sqrtl) (long double) asm ("__ieee754_sqrtl");
+/* Declare some functions for use within GLIBC. Compilers typically
+ inline those functions as a single instruction. Use an asm to
+ avoid use of PLTs if it doesn't. */
+# define MATH_REDIRECT(FUNC, PREFIX, ARGS) \
+ float (FUNC ## f) (ARGS (float)) asm (PREFIX #FUNC "f"); \
+ double (FUNC) (ARGS (double)) asm (PREFIX #FUNC ); \
+ MATH_REDIRECT_LDBL (FUNC, PREFIX, ARGS) \
+ MATH_REDIRECT_F128 (FUNC, PREFIX, ARGS)
+# ifdef __NO_LONG_DOUBLE_MATH
+# define MATH_REDIRECT_LDBL(FUNC, PREFIX, ARGS)
+# else
+# define MATH_REDIRECT_LDBL(FUNC, PREFIX, ARGS) \
+ long double (FUNC ## l) (ARGS (long double)) asm (PREFIX #FUNC "l");
# endif
-# if __HAVE_DISTINCT_FLOAT128 > 0
-_Float128 (sqrtf128) (_Float128) asm ("__ieee754_sqrtf128");
+# if __HAVE_DISTINCT_FLOAT128
+# define MATH_REDIRECT_F128(FUNC, PREFIX, ARGS) \
+ _Float128 (FUNC ## f128) (ARGS (_Float128)) asm (PREFIX #FUNC "f128");
+# else
+# define MATH_REDIRECT_F128(FUNC, PREFIX, ARGS)
# endif
+# define MATH_REDIRECT_UNARY_ARGS(TYPE) TYPE
+MATH_REDIRECT (sqrt, "__ieee754_", MATH_REDIRECT_UNARY_ARGS)
+MATH_REDIRECT (floor, "__", MATH_REDIRECT_UNARY_ARGS)
# endif
# endif
diff --git a/math/w_lgamma_main.c b/math/w_lgamma_main.c
index ac91b9d..573bcb8 100644
--- a/math/w_lgamma_main.c
+++ b/math/w_lgamma_main.c
@@ -31,7 +31,7 @@ LGFUNC (__lgamma) (double x)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard(x, x,
- __floor(x)==x&&x<=0.0
+ floor(x)==x&&x<=0.0
? 15 /* lgamma pole */
: 14); /* lgamma overflow */
diff --git a/math/w_lgamma_r_compat.c b/math/w_lgamma_r_compat.c
index 5b3ceaa..c68ce67 100644
--- a/math/w_lgamma_r_compat.c
+++ b/math/w_lgamma_r_compat.c
@@ -28,7 +28,7 @@ __lgamma_r(double x, int *signgamp)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard(x, x,
- __floor(x)==x&&x<=0.0
+ floor(x)==x&&x<=0.0
? 15 /* lgamma pole */
: 14); /* lgamma overflow */
diff --git a/math/w_lgammaf_main.c b/math/w_lgammaf_main.c
index ef60659..2a85e3c 100644
--- a/math/w_lgammaf_main.c
+++ b/math/w_lgammaf_main.c
@@ -28,7 +28,7 @@ LGFUNC (__lgammaf) (float x)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard_f(x, x,
- __floorf(x)==x&&x<=0.0f
+ floorf(x)==x&&x<=0.0f
? 115 /* lgamma pole */
: 114); /* lgamma overflow */
diff --git a/math/w_lgammaf_r_compat.c b/math/w_lgammaf_r_compat.c
index c7751f1..78fc4fc 100644
--- a/math/w_lgammaf_r_compat.c
+++ b/math/w_lgammaf_r_compat.c
@@ -31,7 +31,7 @@ __lgammaf_r(float x, int *signgamp)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard_f(x, x,
- __floorf(x)==x&&x<=0.0f
+ floorf(x)==x&&x<=0.0f
? 115 /* lgamma pole */
: 114); /* lgamma overflow */
diff --git a/math/w_lgammal_main.c b/math/w_lgammal_main.c
index f269cef..04440cd 100644
--- a/math/w_lgammal_main.c
+++ b/math/w_lgammal_main.c
@@ -35,7 +35,7 @@ LGFUNC (__lgammal) (long double x)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard_l(x, x,
- __floorl(x)==x&&x<=0.0L
+ floorl(x)==x&&x<=0.0L
? 215 /* lgamma pole */
: 214); /* lgamma overflow */
diff --git a/math/w_lgammal_r_compat.c b/math/w_lgammal_r_compat.c
index 09a8070..6ebfa41 100644
--- a/math/w_lgammal_r_compat.c
+++ b/math/w_lgammal_r_compat.c
@@ -32,7 +32,7 @@ __lgammal_r(long double x, int *signgamp)
if(__builtin_expect(!isfinite(y), 0)
&& isfinite(x) && _LIB_VERSION != _IEEE_)
return __kernel_standard(x, x,
- __floorl(x)==x&&x<=0.0
+ floorl(x)==x&&x<=0.0
? 215 /* lgamma pole */
: 214); /* lgamma overflow */
diff --git a/math/w_tgamma_compat.c b/math/w_tgamma_compat.c
index 219aa10..910d2fe 100644
--- a/math/w_tgamma_compat.c
+++ b/math/w_tgamma_compat.c
@@ -33,7 +33,7 @@ __tgamma(double x)
&& _LIB_VERSION != _IEEE_) {
if (x == 0.0)
return __kernel_standard(x,x,50); /* tgamma pole */
- else if(__floor(x)==x&&x<0.0)
+ else if(floor(x)==x&&x<0.0)
return __kernel_standard(x,x,41); /* tgamma domain */
else if (y == 0)
__set_errno (ERANGE); /* tgamma underflow */
diff --git a/math/w_tgamma_template.c b/math/w_tgamma_template.c
index 032f27a..f570615 100644
--- a/math/w_tgamma_template.c
+++ b/math/w_tgamma_template.c
@@ -41,7 +41,7 @@ M_DECL_FUNC (__tgamma) (FLOAT x)
if (x == 0)
/* Pole error: tgamma(x=0). */
__set_errno (ERANGE);
- else if (M_SUF (__floor) (x) == x && x < 0)
+ else if (M_SUF (floor) (x) == x && x < 0)
/* Domain error: tgamma(integer x<0). */
__set_errno (EDOM);
else
diff --git a/math/w_tgammaf_compat.c b/math/w_tgammaf_compat.c
index e9ffddb..ed50988 100644
--- a/math/w_tgammaf_compat.c
+++ b/math/w_tgammaf_compat.c
@@ -32,7 +32,7 @@ __tgammaf(float x)
if (x == (float)0.0)
/* tgammaf pole */
return __kernel_standard_f(x, x, 150);
- else if(__floorf(x)==x&&x<0.0f)
+ else if(floorf(x)==x&&x<0.0f)
/* tgammaf domain */
return __kernel_standard_f(x, x, 141);
else if (y == 0)
diff --git a/math/w_tgammal_compat.c b/math/w_tgammal_compat.c
index 3695b7f..d79c788 100644
--- a/math/w_tgammal_compat.c
+++ b/math/w_tgammal_compat.c
@@ -36,7 +36,7 @@ __tgammal(long double x)
&& _LIB_VERSION != _IEEE_) {
if(x==0.0)
return __kernel_standard_l(x,x,250); /* tgamma pole */
- else if(__floorl(x)==x&&x<0.0L)
+ else if(floorl(x)==x&&x<0.0L)
return __kernel_standard_l(x,x,241); /* tgamma domain */
else if (y == 0)
__set_errno (ERANGE); /* tgamma underflow */
diff --git a/sysdeps/aarch64/fpu/s_floor.c b/sysdeps/aarch64/fpu/s_floor.c
index 7258246..9580a53 100644
--- a/sysdeps/aarch64/fpu/s_floor.c
+++ b/sysdeps/aarch64/fpu/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <libm-alias-double.h>
diff --git a/sysdeps/aarch64/fpu/s_floorf.c b/sysdeps/aarch64/fpu/s_floorf.c
index bd19701..a874aae 100644
--- a/sysdeps/aarch64/fpu/s_floorf.c
+++ b/sysdeps/aarch64/fpu/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <libm-alias-float.h>
diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index 17717d9..88051bc 100644
--- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
@@ -168,10 +168,10 @@ sin_pi(double x)
* argument reduction, make sure inexact flag not raised if input
* is an integer
*/
- z = __floor(y);
+ z = floor(y);
if(z!=y) { /* inexact anyway */
y *= 0.5;
- y = 2.0*(y - __floor(y)); /* y = |x| mod 2.0 */
+ y = 2.0*(y - floor(y)); /* y = |x| mod 2.0 */
n = (int) (y*4.0);
} else {
if(ix>=0x43400000) {
diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
index d8403dc..6221a1a 100644
--- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c
+++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
@@ -196,7 +196,7 @@ recompute:
/* compute n */
z = __scalbn (z, q0); /* actual value of z */
- z -= 8.0 * __floor (z * 0.125); /* trim off integer >= 8 */
+ z -= 8.0 * floor (z * 0.125); /* trim off integer >= 8 */
n = (int32_t) z;
z -= (double) n;
ih = 0;
diff --git a/sysdeps/ieee754/dbl-64/lgamma_neg.c b/sysdeps/ieee754/dbl-64/lgamma_neg.c
index eaa6f64..56a3fca 100644
--- a/sysdeps/ieee754/dbl-64/lgamma_neg.c
+++ b/sysdeps/ieee754/dbl-64/lgamma_neg.c
@@ -282,7 +282,7 @@ __lgamma_neg (double x, int *signgamp)
{
/* Determine the half-integer region X lies in, handle exact
integers and determine the sign of the result. */
- int i = __floor (-2 * x);
+ int i = floor (-2 * x);
if ((i & 1) == 0 && i == -2 * x)
return 1.0 / 0.0;
double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
@@ -299,7 +299,7 @@ __lgamma_neg (double x, int *signgamp)
approximations to an adjusted version of the gamma function. */
if (i < 2)
{
- int j = __floor (-8 * x) - 16;
+ int j = floor (-8 * x) - 16;
double xm = (-33 - 2 * j) * 0.0625;
double x_adj = x - xm;
size_t deg = poly_deg[j];
diff --git a/sysdeps/ieee754/dbl-64/s_floor.c b/sysdeps/ieee754/dbl-64/s_floor.c
index f27c6f3..bebc018 100644
--- a/sysdeps/ieee754/dbl-64/s_floor.c
+++ b/sysdeps/ieee754/dbl-64/s_floor.c
@@ -17,6 +17,7 @@
* Bit twiddling.
*/
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <libm-alias-double.h>
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c
index f7e0a77..44c1e19 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c
@@ -30,6 +30,7 @@
* ====================================================
*/
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <stdint.h>
diff --git a/sysdeps/ieee754/float128/s_floorf128.c b/sysdeps/ieee754/float128/s_floorf128.c
index 1829843..e0a6412 100644
--- a/sysdeps/ieee754/float128/s_floorf128.c
+++ b/sysdeps/ieee754/float128/s_floorf128.c
@@ -1,2 +1,3 @@
+#define NO_MATH_REDIRECT
#include <float128_private.h>
#include "../ldbl-128/s_floorl.c"
diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
index ebe2d34..a7f9b9f 100644
--- a/sysdeps/ieee754/flt-32/e_lgammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
@@ -104,10 +104,10 @@ sin_pif(float x)
* argument reduction, make sure inexact flag not raised if input
* is an integer
*/
- z = __floorf(y);
+ z = floorf(y);
if(z!=y) { /* inexact anyway */
y *= (float)0.5;
- y = (float)2.0*(y - __floorf(y)); /* y = |x| mod 2.0 */
+ y = (float)2.0*(y - floorf(y)); /* y = |x| mod 2.0 */
n = (int) (y*(float)4.0);
} else {
if(ix>=0x4b800000) {
diff --git a/sysdeps/ieee754/flt-32/lgamma_negf.c b/sysdeps/ieee754/flt-32/lgamma_negf.c
index 7951cde..c20b816 100644
--- a/sysdeps/ieee754/flt-32/lgamma_negf.c
+++ b/sysdeps/ieee754/flt-32/lgamma_negf.c
@@ -197,7 +197,7 @@ __lgamma_negf (float x, int *signgamp)
{
/* Determine the half-integer region X lies in, handle exact
integers and determine the sign of the result. */
- int i = __floorf (-2 * x);
+ int i = floorf (-2 * x);
if ((i & 1) == 0 && i == -2 * x)
return 1.0f / 0.0f;
float xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
@@ -214,7 +214,7 @@ __lgamma_negf (float x, int *signgamp)
approximations to an adjusted version of the gamma function. */
if (i < 2)
{
- int j = __floorf (-8 * x) - 16;
+ int j = floorf (-8 * x) - 16;
float xm = (-33 - 2 * j) * 0.0625f;
float x_adj = x - xm;
size_t deg = poly_deg[j];
diff --git a/sysdeps/ieee754/flt-32/s_floorf.c b/sysdeps/ieee754/flt-32/s_floorf.c
index 12aed34..b34d967 100644
--- a/sysdeps/ieee754/flt-32/s_floorf.c
+++ b/sysdeps/ieee754/flt-32/s_floorf.c
@@ -20,6 +20,7 @@
* Bit twiddling.
*/
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <libm-alias-float.h>
diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
index 5c50e46..f470034 100644
--- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
@@ -776,11 +776,11 @@ __ieee754_lgammal_r (_Float128 x, int *signgamp)
if (x < -2 && x > -50)
return __lgamma_negl (x, signgamp);
q = -x;
- p = __floorl (q);
+ p = floorl (q);
if (p == q)
return (one / fabsl (p - p));
_Float128 halfp = p * L(0.5);
- if (halfp == __floorl (halfp))
+ if (halfp == floorl (halfp))
*signgamp = -1;
else
*signgamp = 1;
@@ -801,7 +801,7 @@ __ieee754_lgammal_r (_Float128 x, int *signgamp)
if (x < L(13.5))
{
p = 0;
- nx = __floorl (x + L(0.5));
+ nx = floorl (x + L(0.5));
nn = nx;
switch (nn)
{
diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c
index dc748c3..47226f8 100644
--- a/sysdeps/ieee754/ldbl-128/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128/e_powl.c
@@ -198,10 +198,10 @@ __ieee754_powl (_Float128 x, _Float128 y)
yisint = 2; /* even integer y */
else if (iy >= 0x3fff0000) /* 1.0 */
{
- if (__floorl (y) == y)
+ if (floorl (y) == y)
{
z = 0.5 * y;
- if (__floorl (z) == z)
+ if (floorl (z) == z)
yisint = 2;
else
yisint = 1;
@@ -413,7 +413,7 @@ __ieee754_powl (_Float128 x, _Float128 y)
n = 0;
if (i > 0x3ffe0000)
{ /* if |z| > 0.5, set n = [z+0.5] */
- n = __floorl (z + L(0.5));
+ n = floorl (z + L(0.5));
t = n;
p_h -= t;
}
diff --git a/sysdeps/ieee754/ldbl-128/lgamma_negl.c b/sysdeps/ieee754/ldbl-128/lgamma_negl.c
index cb64d4b..c0bf166 100644
--- a/sysdeps/ieee754/ldbl-128/lgamma_negl.c
+++ b/sysdeps/ieee754/ldbl-128/lgamma_negl.c
@@ -449,7 +449,7 @@ __lgamma_negl (_Float128 x, int *signgamp)
{
/* Determine the half-integer region X lies in, handle exact
integers and determine the sign of the result. */
- int i = __floorl (-2 * x);
+ int i = floorl (-2 * x);
if ((i & 1) == 0 && i == -2 * x)
return L(1.0) / L(0.0);
_Float128 xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
@@ -466,7 +466,7 @@ __lgamma_negl (_Float128 x, int *signgamp)
approximations to an adjusted version of the gamma function. */
if (i < 2)
{
- int j = __floorl (-8 * x) - 16;
+ int j = floorl (-8 * x) - 16;
_Float128 xm = (-33 - 2 * j) * L(0.0625);
_Float128 x_adj = x - xm;
size_t deg = poly_deg[j];
diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c
index 66881af..08f9ec8 100644
--- a/sysdeps/ieee754/ldbl-128/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c
@@ -136,7 +136,7 @@ __expm1l (_Float128 x)
/* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
xx = C1 + C2; /* ln 2. */
- px = __floorl (0.5 + x / xx);
+ px = floorl (0.5 + x / xx);
k = px;
/* remainder times ln 2 */
x -= px * C1;
diff --git a/sysdeps/ieee754/ldbl-128/s_floorl.c b/sysdeps/ieee754/ldbl-128/s_floorl.c
index f9c5e01..f340a3f 100644
--- a/sysdeps/ieee754/ldbl-128/s_floorl.c
+++ b/sysdeps/ieee754/ldbl-128/s_floorl.c
@@ -24,6 +24,7 @@ static char rcsid[] = "$NetBSD: $";
* Bit twiddling.
*/
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <libm-alias-ldouble.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
index 5b628be..ae2e655 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
@@ -726,11 +726,11 @@ __ieee754_lgammal_r (long double x, int *signgamp)
if (x < -2 && x > -48)
return __lgamma_negl (x, signgamp);
q = -x;
- p = __floorl (q);
+ p = floorl (q);
if (p == q)
return (one / fabsl (p - p));
long double halfp = p * 0.5L;
- if (halfp == __floorl (halfp))
+ if (halfp == floorl (halfp))
*signgamp = -1;
else
*signgamp = 1;
@@ -751,7 +751,7 @@ __ieee754_lgammal_r (long double x, int *signgamp)
if (x < 13.5L)
{
p = 0;
- nx = __floorl (x + 0.5L);
+ nx = floorl (x + 0.5L);
nn = nx;
switch (nn)
{
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
index f59ad4e..1f0f2b4 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
@@ -195,10 +195,10 @@ __ieee754_powl (long double x, long double y)
yisint = 2; /* even integer y */
else if (iy >= 0x3ff00000) /* 1.0 */
{
- if (__floorl (y) == y)
+ if (floorl (y) == y)
{
z = 0.5 * y;
- if (__floorl (z) == z)
+ if (floorl (z) == z)
yisint = 2;
else
yisint = 1;
@@ -392,7 +392,7 @@ __ieee754_powl (long double x, long double y)
n = 0;
if (i > 0x3fe00000)
{ /* if |z| > 0.5, set n = [z+0.5] */
- n = __floorl (z + 0.5L);
+ n = floorl (z + 0.5L);
t = n;
p_h -= t;
}
diff --git a/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c b/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c
index c96b641..c359657 100644
--- a/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c
@@ -430,7 +430,7 @@ __lgamma_negl (long double x, int *signgamp)
{
/* Determine the half-integer region X lies in, handle exact
integers and determine the sign of the result. */
- int i = __floorl (-2 * x);
+ int i = floorl (-2 * x);
if ((i & 1) == 0 && i == -2 * x)
return 1.0L / 0.0L;
long double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
@@ -447,7 +447,7 @@ __lgamma_negl (long double x, int *signgamp)
approximations to an adjusted version of the gamma function. */
if (i < 2)
{
- int j = __floorl (-8 * x) - 16;
+ int j = floorl (-8 * x) - 16;
long double xm = (-33 - 2 * j) * 0.0625L;
long double x_adj = x - xm;
size_t deg = poly_deg[j];
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
index 42d57c6..22abee4 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
@@ -120,7 +120,7 @@ __expm1l (long double x)
/* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
xx = C1 + C2; /* ln 2. */
- px = __floorl (0.5 + x / xx);
+ px = floorl (0.5 + x / xx);
k = px;
/* remainder times ln 2 */
x -= px * C1;
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
index 4aae5ae..f33b6ad 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <math_ldbl_opt.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
index a915a01..a366c42 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
@@ -47,7 +47,7 @@ __truncl (long double x)
else
{
/* The high part is a nonzero integer. */
- lo = xh > 0 ? __floor (xl) : __ceil (xl);
+ lo = xh > 0 ? floor (xl) : __ceil (xl);
xh = hi;
xl = lo;
ldbl_canonicalize_int (&xh, &xl);
diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
index 200421f..a5d6d0d 100644
--- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
@@ -221,11 +221,11 @@ sin_pi (long double x)
* argument reduction, make sure inexact flag not raised if input
* is an integer
*/
- z = __floorl (y);
+ z = floorl (y);
if (z != y)
{ /* inexact anyway */
y *= 0.5;
- y = 2.0*(y - __floorl(y)); /* y = |x| mod 2.0 */
+ y = 2.0*(y - floorl(y)); /* y = |x| mod 2.0 */
n = (int) (y*4.0);
}
else
diff --git a/sysdeps/ieee754/ldbl-96/lgamma_negl.c b/sysdeps/ieee754/ldbl-96/lgamma_negl.c
index 90bb834..eaa41d6 100644
--- a/sysdeps/ieee754/ldbl-96/lgamma_negl.c
+++ b/sysdeps/ieee754/ldbl-96/lgamma_negl.c
@@ -316,7 +316,7 @@ __lgamma_negl (long double x, int *signgamp)
{
/* Determine the half-integer region X lies in, handle exact
integers and determine the sign of the result. */
- int i = __floorl (-2 * x);
+ int i = floorl (-2 * x);
if ((i & 1) == 0 && i == -2 * x)
return 1.0L / 0.0L;
long double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
@@ -333,7 +333,7 @@ __lgamma_negl (long double x, int *signgamp)
approximations to an adjusted version of the gamma function. */
if (i < 2)
{
- int j = __floorl (-8 * x) - 16;
+ int j = floorl (-8 * x) - 16;
long double xm = (-33 - 2 * j) * 0.0625L;
long double x_adj = x - xm;
size_t deg = poly_deg[j];
diff --git a/sysdeps/m68k/m680x0/fpu/s_floor_template.c b/sysdeps/m68k/m680x0/fpu/s_floor_template.c
index 7779813..1bead5a 100644
--- a/sysdeps/m68k/m680x0/fpu/s_floor_template.c
+++ b/sysdeps/m68k/m680x0/fpu/s_floor_template.c
@@ -16,6 +16,7 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
FLOAT
diff --git a/sysdeps/powerpc/fpu/math_private.h b/sysdeps/powerpc/fpu/math_private.h
index 36fcb3c..dc6dbfa 100644
--- a/sysdeps/powerpc/fpu/math_private.h
+++ b/sysdeps/powerpc/fpu/math_private.h
@@ -97,26 +97,6 @@ __ieee754_sqrtf128 (_Float128 __x)
__z; })
# endif
-# ifndef __floor
-# define __floor(x) \
- ({ double __z; \
- __asm __volatile ( \
- " frim %0,%1\n" \
- : "=f" (__z) \
- : "f" (x)); \
- __z; })
-# endif
-# ifndef __floorf
-# define __floorf(x) \
- ({ float __z; \
- __asm __volatile ( \
- " frim %0,%1\n" \
- " frsp %0,%0\n" \
- : "=f" (__z) \
- : "f" (x)); \
- __z; })
-# endif
-
#endif /* defined _ARCH_PWR5X */
#endif /* _PPC_MATH_PRIVATE_H_ */
diff --git a/sysdeps/powerpc/power5+/fpu/s_modf.c b/sysdeps/powerpc/power5+/fpu/s_modf.c
index 7a32d31..3d3b3e7 100644
--- a/sysdeps/powerpc/power5+/fpu/s_modf.c
+++ b/sysdeps/powerpc/power5+/fpu/s_modf.c
@@ -36,7 +36,7 @@ __modf (double x, double *iptr)
if (x >= 0.0)
{
- *iptr = __floor (x);
+ *iptr = floor (x);
return __copysign (x - *iptr, x);
}
else
diff --git a/sysdeps/powerpc/power5+/fpu/s_modff.c b/sysdeps/powerpc/power5+/fpu/s_modff.c
index c1bbae6..de44218 100644
--- a/sysdeps/powerpc/power5+/fpu/s_modff.c
+++ b/sysdeps/powerpc/power5+/fpu/s_modff.c
@@ -35,7 +35,7 @@ __modff (float x, float *iptr)
if (x >= 0.0)
{
- *iptr = __floorf (x);
+ *iptr = floorf (x);
return __copysignf (x - *iptr, x);
}
else
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
index 0152ea6..5380471 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
index 57ae50c..cd95393 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
index d1a21a1..3b21afc 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
index d1bbc14..7b89aec 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_ldbl_opt.h>
#include <shlib-compat.h>
diff --git a/sysdeps/riscv/rv64/rvd/s_floor.c b/sysdeps/riscv/rv64/rvd/s_floor.c
index da3b11cd..84a609f 100644
--- a/sysdeps/riscv/rv64/rvd/s_floor.c
+++ b/sysdeps/riscv/rv64/rvd/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <fenv_private.h>
diff --git a/sysdeps/riscv/rvf/s_floorf.c b/sysdeps/riscv/rvf/s_floorf.c
index 560553f..ba91d37 100644
--- a/sysdeps/riscv/rvf/s_floorf.c
+++ b/sysdeps/riscv/rvf/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <math.h>
#include <math_private.h>
#include <fenv_private.h>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c
index 6e5ecd2..910e7c1 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <sparc-ifunc.h>
#include <math.h>
#include <libm-alias-double.h>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c
index b79fd83..788d69c 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <sparc-ifunc.h>
#include <math.h>
#include <libm-alias-float.h>
diff --git a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h
index 306875f..e5bf46f 100644
--- a/sysdeps/x86_64/fpu/math_private.h
+++ b/sysdeps/x86_64/fpu/math_private.h
@@ -27,30 +27,6 @@ __rintf (float d)
# endif
return res;
}
-
-extern __always_inline double
-__floor (double d)
-{
- double res;
-# if defined __AVX__ || defined SSE2AVX
- asm ("vroundsd $1, %1, %0, %0" : "=x" (res) : "xm" (d));
-# else
- asm ("roundsd $1, %1, %0" : "=x" (res) : "xm" (d));
-# endif
- return res;
-}
-
-extern __always_inline float
-__floorf (float d)
-{
- float res;
-# if defined __AVX__ || defined SSE2AVX
- asm ("vroundss $1, %1, %0, %0" : "=x" (res) : "xm" (d));
-# else
- asm ("roundss $1, %1, %0" : "=x" (res) : "xm" (d));
-# endif
- return res;
-}
#endif /* __SSE4_1__ */
#endif /* X86_64_MATH_PRIVATE_H */
diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor.c b/sysdeps/x86_64/fpu/multiarch/s_floor.c
index 58f8ed8..2171863 100644
--- a/sysdeps/x86_64/fpu/multiarch/s_floor.c
+++ b/sysdeps/x86_64/fpu/multiarch/s_floor.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <libm-alias-double.h>
#define floor __redirect_floor
diff --git a/sysdeps/x86_64/fpu/multiarch/s_floorf.c b/sysdeps/x86_64/fpu/multiarch/s_floorf.c
index 5ef2fec..8298797 100644
--- a/sysdeps/x86_64/fpu/multiarch/s_floorf.c
+++ b/sysdeps/x86_64/fpu/multiarch/s_floorf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#define NO_MATH_REDIRECT
#include <libm-alias-float.h>
#define floorf __redirect_floorf