From f253786a807967c2a7f289fa294b66d5dffadcdd Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sat, 18 Apr 2009 13:58:18 +0000 Subject: 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 8872e8a..816691a 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 2e049be..eb06eb2 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 diff --git a/configure b/configure index f4ee310..de5c354 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 b3bd00f..7f7dc7f 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 ]]) LIBS=$LIBS_SAVE diff --git a/pyconfig.h.in b/pyconfig.h.in index 72f5fb3..1807d80 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 -- cgit v0.12