aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.11.rst3
-rw-r--r--Include/internal/pycore_pymath.h18
-rw-r--r--Misc/NEWS.d/next/Build/2021-10-12-02-13-08.bpo-45440.-zYgDb.rst4
-rw-r--r--PC/pyconfig.h9
-rw-r--r--Python/pymath.c48
-rwxr-xr-xconfigure4
-rw-r--r--configure.ac4
-rw-r--r--pyconfig.h.in9
8 files changed, 9 insertions, 90 deletions
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 4704be5715..9d7d3f19fa 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -461,7 +461,8 @@ Build Changes
(Contributed by Mike Gilbert in :issue:`45433`.)
* Building Python now requires a C99 ``<math.h>`` header file providing
- ``isinf()``, ``isnan()`` and ``isfinite()`` functions.
+ the following functions: ``copysign()``, ``hypot()``, ``isfinite()``,
+ ``isinf()``, ``isnan()``, ``round()``.
(Contributed by Victor Stinner in :issue:`45440`.)
C API Changes
diff --git a/Include/internal/pycore_pymath.h b/Include/internal/pycore_pymath.h
index 32743fc83f..395b71452e 100644
--- a/Include/internal/pycore_pymath.h
+++ b/Include/internal/pycore_pymath.h
@@ -8,24 +8,6 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-
-// Python provides implementations for copysign(), round() and hypot() in
-// Python/pymath.c just in case your math library doesn't provide the
-// functions.
-//
-// Note: PC/pyconfig.h defines copysign as _copysign
-#ifndef HAVE_COPYSIGN
-extern double copysign(double, double);
-#endif
-
-#ifndef HAVE_ROUND
-extern double round(double);
-#endif
-
-#ifndef HAVE_HYPOT
-extern double hypot(double, double);
-#endif
-
// Extra declarations
#if !defined(_MSC_VER) && !defined(__STDC__)
extern double fmod (double, double);
diff --git a/Misc/NEWS.d/next/Build/2021-10-12-02-13-08.bpo-45440.-zYgDb.rst b/Misc/NEWS.d/next/Build/2021-10-12-02-13-08.bpo-45440.-zYgDb.rst
index 1c7c413155..93f7f31390 100644
--- a/Misc/NEWS.d/next/Build/2021-10-12-02-13-08.bpo-45440.-zYgDb.rst
+++ b/Misc/NEWS.d/next/Build/2021-10-12-02-13-08.bpo-45440.-zYgDb.rst
@@ -1,2 +1,4 @@
Building Python now requires a C99 ``<math.h>`` header file providing
-``isinf()``, ``isnan()`` and ``isfinite()`` functions. Patch by Victor Stinner.
+the following functions: ``copysign()``, ``hypot()``, ``isfinite()``,
+``isinf()``, ``isnan()``, ``round()``.
+Patch by Victor Stinner.
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 7539777228..bb55ff4fe1 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -58,7 +58,6 @@ WIN32 is still required for the locale module.
#include <io.h>
-#define HAVE_HYPOT
#define HAVE_STRFTIME
#define DONT_HAVE_SIG_ALARM
#define DONT_HAVE_SIG_PAUSE
@@ -348,14 +347,6 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Fairly standard from here! */
-/* Define to 1 if you have the `copysign' function. */
-#define HAVE_COPYSIGN 1
-
-/* Define to 1 if you have the `round' function. */
-#if _MSC_VER >= 1800
-# define HAVE_ROUND 1
-#endif
-
/* Define if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
diff --git a/Python/pymath.c b/Python/pymath.c
index b2681f2acc..e7d0161ff9 100644
--- a/Python/pymath.c
+++ b/Python/pymath.c
@@ -17,51 +17,3 @@ void _Py_set_387controlword(unsigned short cw) {
__asm__ __volatile__ ("fldcw %0" : : "m" (cw));
}
#endif // HAVE_GCC_ASM_FOR_X87
-
-
-#ifndef HAVE_HYPOT
-double hypot(double x, double y)
-{
- double yx;
-
- x = fabs(x);
- y = fabs(y);
- if (x < y) {
- double temp = x;
- x = y;
- y = temp;
- }
- if (x == 0.)
- return 0.;
- else {
- yx = y/x;
- return x*sqrt(1.+yx*yx);
- }
-}
-#endif /* HAVE_HYPOT */
-
-#ifndef HAVE_COPYSIGN
-double
-copysign(double x, double y)
-{
- /* use atan2 to distinguish -0. from 0. */
- if (y > 0. || (y == 0. && atan2(y, -1.) > 0.)) {
- return fabs(x);
- } else {
- return -fabs(x);
- }
-}
-#endif /* HAVE_COPYSIGN */
-
-#ifndef HAVE_ROUND
-double
-round(double x)
-{
- double absx, y;
- absx = fabs(x);
- y = floor(absx);
- if (absx - y >= 0.5)
- y += 1.0;
- return copysign(y, x);
-}
-#endif /* HAVE_ROUND */
diff --git a/configure b/configure
index c56ff1dc5c..81ee4282d9 100755
--- a/configure
+++ b/configure
@@ -15066,7 +15066,7 @@ fi
LIBS_SAVE=$LIBS
LIBS="$LIBS $LIBM"
-for ac_func in acosh asinh atanh copysign erf erfc expm1 finite gamma
+for ac_func in acosh asinh atanh erf erfc expm1 finite gamma
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -15078,7 +15078,7 @@ _ACEOF
fi
done
-for ac_func in hypot lgamma log1p log2 round tgamma
+for ac_func in lgamma log1p log2 tgamma
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/configure.ac b/configure.ac
index 1d0c753efa..ab3fc2839d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4675,8 +4675,8 @@ fi
LIBS_SAVE=$LIBS
LIBS="$LIBS $LIBM"
-AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
-AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
+AC_CHECK_FUNCS([acosh asinh atanh erf erfc expm1 finite gamma])
+AC_CHECK_FUNCS([lgamma log1p log2 tgamma])
# For multiprocessing module, check that sem_open
# actually works. For FreeBSD versions <= 7.2,
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 43a04e371a..a426e8effd 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -160,9 +160,6 @@
/* Define to 1 if you have the <conio.h> header file. */
#undef HAVE_CONIO_H
-/* Define to 1 if you have the `copysign' function. */
-#undef HAVE_COPYSIGN
-
/* Define to 1 if you have the `copy_file_range' function. */
#undef HAVE_COPY_FILE_RANGE
@@ -538,9 +535,6 @@
/* Define this if you have le64toh() */
#undef HAVE_HTOLE64
-/* Define to 1 if you have the `hypot' function. */
-#undef HAVE_HYPOT
-
/* Define to 1 if you have the <ieeefp.h> header file. */
#undef HAVE_IEEEFP_H
@@ -872,9 +866,6 @@
/* Define if you have readline 4.0 */
#undef HAVE_RL_RESIZE_TERMINAL
-/* Define to 1 if you have the `round' function. */
-#undef HAVE_ROUND
-
/* Define to 1 if you have the `rtpSpawn' function. */
#undef HAVE_RTPSPAWN