]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-26121: Revert to using the own implementations of lgamma and gamma on all platfor...
authorSerhiy Storchaka <storchaka@gmail.com>
Sun, 12 Mar 2017 12:08:06 +0000 (14:08 +0200)
committerGitHub <noreply@github.com>
Sun, 12 Mar 2017 12:08:06 +0000 (14:08 +0200)
Misc/NEWS
Modules/mathmodule.c

index 2872aa1fe70b751b24728d0c25c053b9e487ef61..d4f0f25a292242593d073b130dd0cac13b87a892 100644 (file)
--- 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.
index bfc028edddfa83c233ed68175cabe72505f9062d..d5a8ca1ebefdc1a0fa824aa435eb183bdc7da7e8 100644 (file)
@@ -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)