mirror of https://github.com/python/cpython
bpo-26121: Revert to using the own implementations of lgamma and gamma on all platforms. (#637)
This commit is contained in:
parent
c2cf128571
commit
4125e5c60e
|
@ -284,8 +284,7 @@ Library
|
||||||
- bpo-28692: Using non-integer value for selecting a plural form in gettext is
|
- bpo-28692: Using non-integer value for selecting a plural form in gettext is
|
||||||
now deprecated.
|
now deprecated.
|
||||||
|
|
||||||
- bpo-26121: Use C library implementation for math functions:
|
- bpo-26121: Use C library implementation for math functions erf() and erfc().
|
||||||
tgamma(), lgamma(), erf() and erfc().
|
|
||||||
|
|
||||||
- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) using
|
- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) using
|
||||||
unsigned integers.
|
unsigned integers.
|
||||||
|
|
|
@ -74,17 +74,6 @@ static const double pi = 3.141592653589793238462643383279502884197;
|
||||||
static const double sqrtpi = 1.772453850905516027298167483341145182798;
|
static const double sqrtpi = 1.772453850905516027298167483341145182798;
|
||||||
static const double logpi = 1.144729885849400174143427351353058711647;
|
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
|
static double
|
||||||
sinpi(double x)
|
sinpi(double x)
|
||||||
{
|
{
|
||||||
|
@ -241,7 +230,6 @@ lanczos_sum(double x)
|
||||||
}
|
}
|
||||||
return num/den;
|
return num/den;
|
||||||
}
|
}
|
||||||
#endif /* !defined(USE_TGAMMA) || !defined(USE_LGAMMA) */
|
|
||||||
|
|
||||||
/* Constant for +infinity, generated in the same way as float('inf'). */
|
/* Constant for +infinity, generated in the same way as float('inf'). */
|
||||||
|
|
||||||
|
@ -275,14 +263,6 @@ m_nan(void)
|
||||||
static double
|
static double
|
||||||
m_tgamma(double x)
|
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;
|
double absx, r, y, z, sqrtpow;
|
||||||
|
|
||||||
/* special cases */
|
/* special cases */
|
||||||
|
@ -374,7 +354,6 @@ m_tgamma(double x)
|
||||||
if (Py_IS_INFINITY(r))
|
if (Py_IS_INFINITY(r))
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
return r;
|
return r;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -386,15 +365,6 @@ static double
|
||||||
m_lgamma(double x)
|
m_lgamma(double x)
|
||||||
{
|
{
|
||||||
double r;
|
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;
|
double absx;
|
||||||
|
|
||||||
/* special cases */
|
/* special cases */
|
||||||
|
@ -433,7 +403,6 @@ m_lgamma(double x)
|
||||||
if (Py_IS_INFINITY(r))
|
if (Py_IS_INFINITY(r))
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
return r;
|
return r;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(HAVE_ERF) || !defined(HAVE_ERFC)
|
#if !defined(HAVE_ERF) || !defined(HAVE_ERFC)
|
||||||
|
|
Loading…
Reference in New Issue