diff options
| author | Matti Picus <matti.picus@gmail.com> | 2022-11-28 18:06:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-28 17:06:11 +0100 |
| commit | c687f2d16f8ba965828fee3a001844b4952474f5 (patch) | |
| tree | b7360d2119fc8543edb2d8f51ae7ec85086a3673 /numpy/core/include | |
| parent | bba74740e5236735f6ec5013d8d778145b758e89 (diff) | |
| download | numpy-c687f2d16f8ba965828fee3a001844b4952474f5.tar.gz | |
MAINT: npymath cleanups for isnan, isinf, isinfinite, signbit, nextafter (#22684)
* make isnan, isinf, isfinite, signbit, nextafter aliases
* fixes from review
Co-authored-by: Sebastian Berg <sebastianb@nvidia.com>
Diffstat (limited to 'numpy/core/include')
| -rw-r--r-- | numpy/core/include/numpy/_numpyconfig.h.in | 4 | ||||
| -rw-r--r-- | numpy/core/include/numpy/npy_math.h | 43 |
2 files changed, 9 insertions, 38 deletions
diff --git a/numpy/core/include/numpy/_numpyconfig.h.in b/numpy/core/include/numpy/_numpyconfig.h.in index 8e799971a..a21820026 100644 --- a/numpy/core/include/numpy/_numpyconfig.h.in +++ b/numpy/core/include/numpy/_numpyconfig.h.in @@ -14,10 +14,6 @@ #mesondefine NPY_SIZEOF_PY_LONG_LONG #mesondefine NPY_SIZEOF_LONGLONG -#mesondefine NPY_HAVE_DECL_ISNAN -#mesondefine NPY_HAVE_DECL_ISINF -#mesondefine NPY_HAVE_DECL_ISFINITE -#mesondefine NPY_HAVE_DECL_SIGNBIT #mesondefine NPY_USE_C99_COMPLEX #mesondefine NPY_HAVE_COMPLEX_DOUBLE #mesondefine NPY_HAVE_COMPLEX_FLOAT diff --git a/numpy/core/include/numpy/npy_math.h b/numpy/core/include/numpy/npy_math.h index d7c9fbb4f..a1fd11396 100644 --- a/numpy/core/include/numpy/npy_math.h +++ b/numpy/core/include/numpy/npy_math.h @@ -195,6 +195,7 @@ NPY_INPLACE double npy_atan2(double x, double y); #define npy_sqrt sqrt #define npy_pow pow #define npy_modf modf +#define npy_nextafter nextafter #if defined(__arm64__) && defined(__APPLE__) /* due to a build problem with scipy, export these as functions */ @@ -206,11 +207,11 @@ NPY_INPLACE double npy_log1p(double x); #define npy_copysign copysign #define npy_log1p log1p #endif -double npy_nextafter(double x, double y); + double npy_spacing(double x); /* - * IEEE 754 fpu handling. Those are guaranteed to be macros + * IEEE 754 fpu handling */ /* use builtins to avoid function calls in tight loops @@ -218,11 +219,7 @@ double npy_spacing(double x); #ifdef HAVE___BUILTIN_ISNAN #define npy_isnan(x) __builtin_isnan(x) #else - #ifndef NPY_HAVE_DECL_ISNAN - #define npy_isnan(x) ((x) != (x)) - #else - #define npy_isnan(x) isnan(x) - #endif + #define npy_isnan(x) isnan(x) #endif @@ -230,39 +227,17 @@ double npy_spacing(double x); #ifdef HAVE___BUILTIN_ISFINITE #define npy_isfinite(x) __builtin_isfinite(x) #else - #ifndef NPY_HAVE_DECL_ISFINITE - #ifdef _MSC_VER - #define npy_isfinite(x) _finite((x)) - #else - #define npy_isfinite(x) !npy_isnan((x) + (-x)) - #endif - #else - #define npy_isfinite(x) isfinite((x)) - #endif + #define npy_isfinite(x) isfinite((x)) #endif /* only available if npy_config.h is available (= numpys own build) */ #ifdef HAVE___BUILTIN_ISINF #define npy_isinf(x) __builtin_isinf(x) #else - #ifndef NPY_HAVE_DECL_ISINF - #define npy_isinf(x) (!npy_isfinite(x) && !npy_isnan(x)) - #else - #define npy_isinf(x) isinf((x)) - #endif + #define npy_isinf(x) isinf((x)) #endif -#ifndef NPY_HAVE_DECL_SIGNBIT - int _npy_signbit_f(float x); - int _npy_signbit_d(double x); - int _npy_signbit_ld(long double x); - #define npy_signbit(x) \ - (sizeof (x) == sizeof (long double) ? _npy_signbit_ld (x) \ - : sizeof (x) == sizeof (double) ? _npy_signbit_d (x) \ - : _npy_signbit_f (x)) -#else - #define npy_signbit(x) signbit((x)) -#endif +#define npy_signbit(x) signbit((x)) /* * float C99 math funcs that need fixups or are blocklist-able @@ -305,8 +280,8 @@ NPY_INPLACE float npy_modff(float x, float* y); #define npy_frexpf frexpf #define npy_ldexpf ldexpf #define npy_copysignf copysignf +#define npy_nextafterf nextafterf -float npy_nextafterf(float x, float y); float npy_spacingf(float x); /* @@ -349,8 +324,8 @@ NPY_INPLACE npy_longdouble npy_modfl(npy_longdouble x, npy_longdouble* y); #define npy_frexpl frexpl #define npy_ldexpl ldexpl #define npy_copysignl copysignl +#define npy_nextafterl nextafterl -npy_longdouble npy_nextafterl(npy_longdouble x, npy_longdouble y); npy_longdouble npy_spacingl(npy_longdouble x); /* |
