# No SVID compatible error handling.
hypotf; hypot;
}
- GLIBC_2.38 {
- # No SVID compatible error handling.
- fmod; fmodf;
- }
GLIBC_2.39 {
# No SVID compatible error handling.
exp10;
#include <math-svid-compat.h>
#include <libm-alias-double.h>
-#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_38)
+#if LIBM_SVID_COMPAT
/* wrapper fmod */
double
-__fmod_compat (double x, double y)
+__fmod (double x, double y)
{
if (__builtin_expect (isinf (x) || y == 0.0, 0)
&& _LIB_VERSION != _IEEE_ && !isnan (y) && !isnan (x))
return __ieee754_fmod (x, y);
}
-compat_symbol (libm, __fmod_compat, fmod, GLIBC_2_0);
-# ifdef NO_LONG_DOUBLE
-weak_alias (__fmod_compat, fmodl)
-# endif
-# ifdef LONG_DOUBLE_COMPAT
-LONG_DOUBLE_COMPAT_CHOOSE_libm_fmodl (
- compat_symbol (libm, __fmod_compat, fmodl, FIRST_VERSION_libm_fmodl), );
-# endif
+libm_alias_double (__fmod, fmod)
#endif
#include <math-svid-compat.h>
#include <libm-alias-float.h>
-#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_38)
+#if LIBM_SVID_COMPAT
/* wrapper fmodf */
float
-__fmod_compatf (float x, float y)
+__fmodf (float x, float y)
{
if (__builtin_expect (isinf (x) || y == 0.0f, 0)
&& _LIB_VERSION != _IEEE_ && !isnan (y) && !isnan (x))
return __ieee754_fmodf (x, y);
}
-compat_symbol (libm, __fmod_compatf, fmodf, GLIBC_2_0);
+libm_alias_float (__fmod, fmod)
#endif
+++ /dev/null
-/* i386 provides an optimized __ieee752_fmod. */
-#include <math-svid-compat.h>
-#ifdef SHARED
-# undef SHLIB_COMPAT
-# define SHLIB_COMPAT(a, b, c) 1
-# undef LIBM_SVID_COMPAT
-# define LIBM_SVID_COMPAT 1
-# undef compat_symbol
-# define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmod_compat.c>
-#ifdef SHARED
-libm_alias_double (__fmod_compat, fmod)
-#endif
+++ /dev/null
-/* i386 provides an optimized __ieee752_fmodf. */
-#include <math-svid-compat.h>
-#ifdef SHARED
-# undef SHLIB_COMPAT
-# define SHLIB_COMPAT(a, b, c) 1
-# undef LIBM_SVID_COMPAT
-# define LIBM_SVID_COMPAT 1
-# undef compat_symbol
-# define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmodf_compat.c>
-#ifdef SHARED
-libm_alias_float (__fmod_compat, fmod)
-#endif
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <libm-alias-double.h>
#include <libm-alias-finite.h>
-#include <math-svid-compat.h>
#include <math.h>
#include "math_config.h"
} */
double
-__fmod (double x, double y)
+__ieee754_fmod (double x, double y)
{
uint64_t hx = asuint64 (x);
uint64_t hy = asuint64 (y);
/* Special cases:
- If x or y is a Nan, NaN is returned.
- - If x is an inifinity, a NaN is returned and EDOM is set.
+ - If x is an inifinity, a NaN is returned.
- If y is zero, Nan is returned.
- If x is +0/-0, and y is not zero, +0/-0 is returned. */
- if (__glibc_unlikely (hy == 0
- || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
- {
- if (is_nan (hx) || is_nan (hy))
- return (x * y) / (x * y);
- return __math_edom ((x * y) / (x * y));
- }
+ if (__glibc_unlikely (hy == 0 || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+ return (x * y) / (x * y);
if (__glibc_unlikely (hx <= hy))
{
return make_double (mx, ey, sx);
}
-strong_alias (__fmod, __ieee754_fmod)
libm_alias_finite (__ieee754_fmod, __fmod)
-#if LIBM_SVID_COMPAT
-versioned_symbol (libm, __fmod, fmod, GLIBC_2_38);
-libm_alias_double_other (__fmod, fmod)
-#else
-libm_alias_double (__fmod, fmod)
-#endif
/* Error handling using output checking, only for errno setting. */
-/* Check if the result generated a demain error. */
-attribute_hidden double __math_edom (double x);
-
/* Check if the result overflowed to infinity. */
attribute_hidden double __math_check_oflow (double);
/* Check if the result underflowed to 0. */
#define with_errno(x, e) (x)
#endif
-attribute_hidden double
-__math_edom (double y)
-{
- return with_errno (y, EDOM);
-}
-
/* NOINLINE reduces code size. */
NOINLINE static double
xflow (uint32_t sign, double y)
+++ /dev/null
-/* Not needed. */
<https://www.gnu.org/licenses/>. */
#include <libm-alias-finite.h>
-#include <libm-alias-float.h>
-#include <math-svid-compat.h>
#include <math.h>
#include "math_config.h"
} */
float
-__fmodf (float x, float y)
+__ieee754_fmodf (float x, float y)
{
uint32_t hx = asuint (x);
uint32_t hy = asuint (y);
- If x is an inifinity, a NaN is returned.
- If y is zero, Nan is returned.
- If x is +0/-0, and y is not zero, +0/-0 is returned. */
- if (__glibc_unlikely (hy == 0
- || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
- {
- if (is_nan (hx) || is_nan (hy))
- return (x * y) / (x * y);
- return __math_edomf ((x * y) / (x * y));
- }
+ if (__glibc_unlikely (hy == 0 || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+ return (x * y) / (x * y);
if (__glibc_unlikely (hx <= hy))
{
return make_float (mx, ey, sx);
}
-strong_alias (__fmodf, __ieee754_fmodf)
-#if LIBM_SVID_COMPAT
-versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_38);
-libm_alias_float_other (__fmod, fmod)
-#else
-libm_alias_float (__fmod, fmod)
-#endif
libm_alias_finite (__ieee754_fmodf, __fmodf)
attribute_hidden float __math_may_uflowf (uint32_t);
attribute_hidden float __math_divzerof (uint32_t);
attribute_hidden float __math_invalidf (float);
-attribute_hidden float __math_edomf (float x);
/* Shared between expf, exp2f, exp10f, and powf. */
#define EXP2F_TABLE_BITS 5
# define with_errnof(x, e) (x)
#endif
-attribute_hidden float
-__math_edomf (float y)
-{
- return with_errnof (y, EDOM);
-}
-
/* NOINLINE prevents fenv semantics breaking optimizations. */
NOINLINE static float
xflowf (uint32_t sign, float y)
+++ /dev/null
-/* Not needed. */
+++ /dev/null
-/* m68k provides an optimized __ieee752_fmod. */
-#include <math-svid-compat.h>
-#ifdef SHARED
-# undef SHLIB_COMPAT
-# define SHLIB_COMPAT(a, b, c) 1
-# undef LIBM_SVID_COMPAT
-# define LIBM_SVID_COMPAT 1
-# undef compat_symbol
-# define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmod_compat.c>
-#ifdef SHARED
-libm_alias_double (__fmod_compat, fmod)
-#endif
+++ /dev/null
-/* m68k provides an optimized __ieee752_fmodf. */
-#include <math-svid-compat.h>
-#ifdef SHARED
-# undef SHLIB_COMPAT
-# define SHLIB_COMPAT(a, b, c) 1
-# undef LIBM_SVID_COMPAT
-# define LIBM_SVID_COMPAT 1
-# undef compat_symbol
-# define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmodf_compat.c>
-#ifdef SHARED
-libm_alias_float (__fmod_compat, fmod)
-#endif
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
-GLIBC_2.38 fmod F
-GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F