From f253786a807967c2a7f289fa294b66d5dffadcdd Mon Sep 17 00:00:00 2001
From: Mark Dickinson <dickinsm@gmail.com>
Date: Sat, 18 Apr 2009 13:58:18 +0000
Subject: [PATCH] Add check for C99 round function to configure, and define a
 fallback function if round doesn't exist.

---
 Include/pymath.h |  4 ++++
 Python/pymath.c  | 13 +++++++++++++
 configure        |  5 +++--
 configure.in     |  2 +-
 pyconfig.h.in    |  3 +++
 5 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/Include/pymath.h b/Include/pymath.h
index 8872e8a997..816691abd9 100644
--- a/Include/pymath.h
+++ b/Include/pymath.h
@@ -22,6 +22,10 @@ functions and constants
 extern double copysign(double, double);
 #endif
 
+#ifndef HAVE_ROUND
+extern double round(double);
+#endif
+
 #ifndef HAVE_ACOSH
 extern double acosh(double);
 #endif
diff --git a/Python/pymath.c b/Python/pymath.c
index 2e049be870..eb06eb2244 100644
--- a/Python/pymath.c
+++ b/Python/pymath.c
@@ -69,6 +69,19 @@ copysign(double x, double y)
 }
 #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 */
+
 #ifndef HAVE_LOG1P
 #include <float.h>
 
diff --git a/configure b/configure
index f4ee3109f4..de5c3541fa 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 71274 .
+# From configure.in Revision: 71663 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for python 3.1.
 #
@@ -22310,7 +22310,8 @@ fi
 
 
 
-for ac_func in acosh asinh atanh copysign expm1 finite hypot log1p
+
+for ac_func in acosh asinh atanh copysign expm1 finite hypot log1p round
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
diff --git a/configure.in b/configure.in
index b3bd00fb27..7f7dc7f0c8 100644
--- a/configure.in
+++ b/configure.in
@@ -3337,7 +3337,7 @@ then
   [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
 fi
 
-AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
+AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
 AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
 
 LIBS=$LIBS_SAVE
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 72f5fb3959..1807d80064 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -521,6 +521,9 @@
 /* Define if you have readline 4.0 */
 #undef HAVE_RL_PRE_INPUT_HOOK
 
+/* Define to 1 if you have the `round' function. */
+#undef HAVE_ROUND
+
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
-- 
2.40.0