aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog83
-rw-r--r--include/math.h2
-rw-r--r--math/divtc3.c12
-rw-r--r--math/multc3.c24
-rw-r--r--sysdeps/alpha/fpu/s_copysign.c1
-rw-r--r--sysdeps/alpha/fpu/s_copysignf.c1
-rw-r--r--sysdeps/generic/math-type-macros.h2
-rw-r--r--sysdeps/generic/math_private_calls.h9
-rw-r--r--sysdeps/ieee754/dbl-64/e_atan2.c2
-rw-r--r--sysdeps/ieee754/dbl-64/e_atanh.c2
-rw-r--r--sysdeps/ieee754/dbl-64/e_gamma_r.c8
-rw-r--r--sysdeps/ieee754/dbl-64/e_jn.c4
-rw-r--r--sysdeps/ieee754/dbl-64/s_asinh.c2
-rw-r--r--sysdeps/ieee754/dbl-64/s_atan.c2
-rw-r--r--sysdeps/ieee754/dbl-64/s_copysign.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_scalbln.c6
-rw-r--r--sysdeps/ieee754/dbl-64/s_scalbn.c6
-rw-r--r--sysdeps/ieee754/dbl-64/s_sin.c4
-rw-r--r--sysdeps/ieee754/dbl-64/s_sincos.c2
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c2
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c6
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c6
-rw-r--r--sysdeps/ieee754/float128/s_copysignf128.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_atanhf.c2
-rw-r--r--sysdeps/ieee754/flt-32/e_gammaf_r.c8
-rw-r--r--sysdeps/ieee754/flt-32/e_jnf.c4
-rw-r--r--sysdeps/ieee754/flt-32/s_asinhf.c2
-rw-r--r--sysdeps/ieee754/flt-32/s_copysignf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_scalbnf.c6
-rw-r--r--sysdeps/ieee754/k_standard.c6
-rw-r--r--sysdeps/ieee754/ldbl-128/e_gammal_r.c8
-rw-r--r--sysdeps/ieee754/ldbl-128/e_jnl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128/s_copysignl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_scalblnl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128/s_scalbnl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c8
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_jnl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_copysignl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_fmal.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c6
-rw-r--r--sysdeps/ieee754/ldbl-96/e_gammal_r.c8
-rw-r--r--sysdeps/ieee754/ldbl-96/e_jnl.c4
-rw-r--r--sysdeps/ieee754/ldbl-96/s_asinhl.c2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_copysignl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/s_scalblnl.c6
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-copysign.c2
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modf.c6
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modff.c6
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c1
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c1
-rw-r--r--sysdeps/riscv/rvd/s_copysign.c1
-rw-r--r--sysdeps/riscv/rvf/s_copysignf.c1
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.c1
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.c1
57 files changed, 202 insertions, 110 deletions
diff --git a/ChangeLog b/ChangeLog
index 4e438c88c4..0af91b490d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,89 @@
2018-09-27 Joseph Myers <joseph@codesourcery.com>
* include/math.h [!_ISOMAC && !(__FINITE_MATH_ONLY__ &&
+ __FINITE_MATH_ONLY__ > 0) && !NO_MATH_REDIRECT]
+ (MATH_REDIRECT_BINARY_ARGS): New macro.
+ [!_ISOMAC && !(__FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+ && !NO_MATH_REDIRECT] (copysign): Redirect using MATH_REDIRECT.
+ * sysdeps/alpha/fpu/s_copysign.c: Define NO_MATH_REDIRECT before
+ header inclusion.
+ * sysdeps/alpha/fpu/s_copysignf.c: Likewise.
+ * sysdeps/ieee754/dbl-64/s_copysign.c: Likewise.
+ * sysdeps/ieee754/float128/s_copysignf128.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_copysignf.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/s_copysignl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_copysignl.c: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c:
+ Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c:
+ Likewise.
+ * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c: Likewise.
+ * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c: Likewise.
+ * sysdeps/riscv/rvd/s_copysign.c: Likewise.
+ * sysdeps/riscv/rvf/s_copysignf.c: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.c:
+ Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.c:
+ Likewise.
+ * sysdeps/generic/math_private_calls.h
+ [!__MATH_DECLARING_LONG_DOUBLE || !NO_LONG_DOUBLE] (__copysign):
+ Do not declare and define as an inline function.
+ * math/divtc3.c (__divtc3): Use copysign functions instead of
+ __copysign variants.
+ * math/multc3.c (__multc3): Likewise.
+ * sysdeps/generic/math-type-macros.h (M_COPYSIGN): Likewise.
+ * sysdeps/ieee754/dbl-64/e_atan2.c (signArctan2): Likewise.
+ * sysdeps/ieee754/dbl-64/e_atanh.c (__ieee754_atanh): Likewise.
+ * sysdeps/ieee754/dbl-64/e_gamma_r.c (__ieee754_gamma_r):
+ Likewise.
+ * sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Likewise.
+ (__ieee754_yn): Likewise.
+ * sysdeps/ieee754/dbl-64/s_asinh.c (__asinh): Likewise.
+ * sysdeps/ieee754/dbl-64/s_atan.c (__signArctan): Likewise.
+ * sysdeps/ieee754/dbl-64/s_scalbln.c (__scalbln): Likewise.
+ * sysdeps/ieee754/dbl-64/s_scalbn.c (__scalbn): Likewise.
+ * sysdeps/ieee754/dbl-64/s_sin.c (do_sin): Likewise.
+ (__sin): Likewise.
+ * sysdeps/ieee754/dbl-64/s_sincos.c (__sincos): Likewise.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c (__nearbyint):
+ Likewise.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c (__scalbln):
+ Likewise.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c (__scalbn):
+ Likewise.
+ * sysdeps/ieee754/flt-32/e_atanhf.c (__ieee754_atanhf): Likewise.
+ * sysdeps/ieee754/flt-32/e_gammaf_r.c (__ieee754_gammaf_r):
+ Likewise.
+ * sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_jnf): Likewise.
+ (__ieee754_ynf): Likewise.
+ * sysdeps/ieee754/flt-32/s_asinhf.c (__asinhf): Likewise.
+ * sysdeps/ieee754/flt-32/s_scalbnf.c (__scalbnf): Likewise.
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Likewise.
+ * sysdeps/ieee754/ldbl-128/e_gammal_r.c (__ieee754_gammal_r):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise.
+ (__ieee754_ynl): Likewise.
+ * sysdeps/ieee754/ldbl-128/s_scalblnl.c (__scalblnl): Likewise.
+ * sysdeps/ieee754/ldbl-128/s_scalbnl.c (__scalbnl): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (__ieee754_gammal_r):
+ Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise.
+ (__ieee754_ynl): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_fmal.c (__fmal): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c (__scalblnl): Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c (__scalbnl): Likewise.
+ * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r):
+ Likewise.
+ * sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise.
+ (__ieee754_ynl)
+ * sysdeps/ieee754/ldbl-96/s_asinhl.c (__asinhl): Likewise.
+ * sysdeps/ieee754/ldbl-96/s_scalblnl.c (__scalblnl): Likewise.
+ * sysdeps/ieee754/ldbl-opt/nldbl-copysign.c (copysignl): Likewise.
+ * sysdeps/powerpc/power5+/fpu/s_modf.c (__modf): Likewise.
+ * sysdeps/powerpc/power5+/fpu/s_modff.c (__modff): Likewise.
+
+ * include/math.h [!_ISOMAC && !(__FINITE_MATH_ONLY__ &&
__FINITE_MATH_ONLY__ > 0) && !NO_MATH_REDIRECT] (round): Redirect
using MATH_REDIRECT.
* sysdeps/aarch64/fpu/s_round.c: Define NO_MATH_REDIRECT before
diff --git a/include/math.h b/include/math.h
index ca9a1f0cd6..79ebbae359 100644
--- a/include/math.h
+++ b/include/math.h
@@ -100,12 +100,14 @@ fabsf128 (_Float128 x)
# define MATH_REDIRECT_F128(FUNC, PREFIX, ARGS)
# endif
# define MATH_REDIRECT_UNARY_ARGS(TYPE) TYPE
+# define MATH_REDIRECT_BINARY_ARGS(TYPE) TYPE, TYPE
MATH_REDIRECT (sqrt, "__ieee754_", MATH_REDIRECT_UNARY_ARGS)
MATH_REDIRECT (ceil, "__", MATH_REDIRECT_UNARY_ARGS)
MATH_REDIRECT (floor, "__", MATH_REDIRECT_UNARY_ARGS)
MATH_REDIRECT (rint, "__", MATH_REDIRECT_UNARY_ARGS)
MATH_REDIRECT (trunc, "__", MATH_REDIRECT_UNARY_ARGS)
MATH_REDIRECT (round, "__", MATH_REDIRECT_UNARY_ARGS)
+MATH_REDIRECT (copysign, "__", MATH_REDIRECT_BINARY_ARGS)
# endif
# endif
diff --git a/math/divtc3.c b/math/divtc3.c
index b1df88bdb7..e83feca837 100644
--- a/math/divtc3.c
+++ b/math/divtc3.c
@@ -51,22 +51,22 @@ __divtc3 (long double a, long double b, long double c, long double d)
{
if (denom == 0.0 && (!isnan (a) || !isnan (b)))
{
- x = __copysignl (INFINITY, c) * a;
- y = __copysignl (INFINITY, c) * b;
+ x = copysignl (INFINITY, c) * a;
+ y = copysignl (INFINITY, c) * b;
}
else if ((isinf (a) || isinf (b))
&& isfinite (c) && isfinite (d))
{
- a = __copysignl (isinf (a) ? 1 : 0, a);
- b = __copysignl (isinf (b) ? 1 : 0, b);
+ a = copysignl (isinf (a) ? 1 : 0, a);
+ b = copysignl (isinf (b) ? 1 : 0, b);
x = INFINITY * (a * c + b * d);
y = INFINITY * (b * c - a * d);
}
else if ((isinf (c) || isinf (d))
&& isfinite (a) && isfinite (b))
{
- c = __copysignl (isinf (c) ? 1 : 0, c);
- d = __copysignl (isinf (d) ? 1 : 0, d);
+ c = copysignl (isinf (c) ? 1 : 0, c);
+ d = copysignl (isinf (d) ? 1 : 0, d);
x = 0.0 * (a * c + b * d);
y = 0.0 * (b * c - a * d);
}
diff --git a/math/multc3.c b/math/multc3.c
index 9943d705fd..775cbfbcce 100644
--- a/math/multc3.c
+++ b/math/multc3.c
@@ -42,20 +42,20 @@ __multc3 (long double a, long double b, long double c, long double d)
{
/* z is infinite. "Box" the infinity and change NaNs in
the other factor to 0. */
- a = __copysignl (isinf (a) ? 1 : 0, a);
- b = __copysignl (isinf (b) ? 1 : 0, b);
- if (isnan (c)) c = __copysignl (0, c);
- if (isnan (d)) d = __copysignl (0, d);
+ a = copysignl (isinf (a) ? 1 : 0, a);
+ b = copysignl (isinf (b) ? 1 : 0, b);
+ if (isnan (c)) c = copysignl (0, c);
+ if (isnan (d)) d = copysignl (0, d);
recalc = 1;
}
if (isinf (c) || isinf (d))
{
/* w is infinite. "Box" the infinity and change NaNs in
the other factor to 0. */
- c = __copysignl (isinf (c) ? 1 : 0, c);
- d = __copysignl (isinf (d) ? 1 : 0, d);
- if (isnan (a)) a = __copysignl (0, a);
- if (isnan (b)) b = __copysignl (0, b);
+ c = copysignl (isinf (c) ? 1 : 0, c);
+ d = copysignl (isinf (d) ? 1 : 0, d);
+ if (isnan (a)) a = copysignl (0, a);
+ if (isnan (b)) b = copysignl (0, b);
recalc = 1;
}
if (!recalc
@@ -63,10 +63,10 @@ __multc3 (long double a, long double b, long double c, long double d)
|| isinf (ad) || isinf (bc)))
{
/* Recover infinities from overflow by changing NaNs to 0. */
- if (isnan (a)) a = __copysignl (0, a);
- if (isnan (b)) b = __copysignl (0, b);
- if (isnan (c)) c = __copysignl (0, c);
- if (isnan (d)) d = __copysignl (0, d);
+ if (isnan (a)) a = copysignl (0, a);
+ if (isnan (b)) b = copysignl (0, b);
+ if (isnan (c)) c = copysignl (0, c);
+ if (isnan (d)) d = copysignl (0, d);
recalc = 1;
}
if (recalc)
diff --git a/sysdeps/alpha/fpu/s_copysign.c b/sysdeps/alpha/fpu/s_copysign.c
index 493615a896..96c294a6af 100644
--- a/sysdeps/alpha/fpu/s_copysign.c
+++ b/sysdeps/alpha/fpu/s_copysign.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 <libm-alias-double.h>
diff --git a/sysdeps/alpha/fpu/s_copysignf.c b/sysdeps/alpha/fpu/s_copysignf.c
index b92b6d4d77..e814a92c68 100644
--- a/sysdeps/alpha/fpu/s_copysignf.c
+++ b/sysdeps/alpha/fpu/s_copysignf.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/generic/math-type