summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-03-12 12:08:06 (GMT)
committerGitHub <noreply@github.com>2017-03-12 12:08:06 (GMT)
commit4125e5c60e24ffcff8031817dc60984335917f59 (patch)
tree074f44b09757a353d69953c888871456b40c85e4
parentc2cf12857187aa147c268651f10acd6da2c9cb74 (diff)
downloadcpython-4125e5c60e24ffcff8031817dc60984335917f59.zip
cpython-4125e5c60e24ffcff8031817dc60984335917f59.tar.gz
cpython-4125e5c60e24ffcff8031817dc60984335917f59.tar.bz2
bpo-26121: Revert to using the own implementations of lgamma and gamma on all platforms. (#637)
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/mathmodule.c31
2 files changed, 1 insertions, 33 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 2872aa1..d4f0f25 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -284,8 +284,7 @@ Library
- bpo-28692: Using non-integer value for selecting a plural form in gettext is
now deprecated.
-- bpo-26121: Use C library implementation for math functions:
- tgamma(), lgamma(), erf() and erfc().
+- bpo-26121: Use C library implementation for math functions erf() and erfc().
- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) using
unsigned integers.
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index bfc028e..d5a8ca1 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -74,17 +74,6 @@ static const double pi = 3.141592653589793238462643383279502884197;
static const double sqrtpi = 1.772453850905516027298167483341145182798;
static const double logpi = 1.144729885849400174143427351353058711647;
-#ifndef __APPLE__
-# ifdef HAVE_TGAMMA
-# define USE_TGAMMA
-# endif
-# ifdef HAVE_LGAMMA
-# define USE_LGAMMA
-# endif
-#endif
-
-#if !defined(USE_TGAMMA) || !defined(USE_LGAMMA)
-
static double
sinpi(double x)
{
@@ -241,7 +230,6 @@ lanczos_sum(double x)
}
return num/den;
}
-#endif /* !defined(USE_TGAMMA) || !defined(USE_LGAMMA) */
/* Constant for +infinity, generated in the same way as float('inf'). */
@@ -275,14 +263,6 @@ m_nan(void)
static double
m_tgamma(double x)
{
-#ifdef USE_TGAMMA
- if (x == 0.0) {
- errno = EDOM;
- /* tgamma(+-0.0) = +-inf, divide-by-zero */
- return copysign(Py_HUGE_VAL, x);
- }
- return tgamma(x);
-#else
double absx, r, y, z, sqrtpow;
/* special cases */
@@ -374,7 +354,6 @@ m_tgamma(double x)
if (Py_IS_INFINITY(r))
errno = ERANGE;
return r;
-#endif
}
/*
@@ -386,15 +365,6 @@ static double
m_lgamma(double x)
{
double r;
-
-#ifdef USE_LGAMMA
- r = lgamma(x);
- if (errno == ERANGE && x == floor(x) && x <= 0.0) {
- errno = EDOM; /* lgamma(n) = inf, divide-by-zero for */
- return Py_HUGE_VAL; /* integers n <= 0 */
- }
- return r;
-#else
double absx;
/* special cases */
@@ -433,7 +403,6 @@ m_lgamma(double x)
if (Py_IS_INFINITY(r))
errno = ERANGE;
return r;
-#endif
}
#if !defined(HAVE_ERF) || !defined(HAVE_ERFC)