summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorDima Pasechnik <dimpase@gmail.com>2019-02-26 10:41:15 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2019-02-26 10:41:15 (GMT)
commitb545ba0a508a5980ab147ed2641a42be3b31a2db (patch)
treee051fdd189d889a9d8696f30c47ef8ccb921b50b /Modules
parentaf83770c3ad165232218aedd48dcdef34962e749 (diff)
downloadcpython-b545ba0a508a5980ab147ed2641a42be3b31a2db.zip
cpython-b545ba0a508a5980ab147ed2641a42be3b31a2db.tar.gz
cpython-b545ba0a508a5980ab147ed2641a42be3b31a2db.tar.bz2
[2.7] bpo-36106: resolve sinpi name clash with libm (IEEE-754 violation). (GH-12027) (GH-12050)
The standard math library (libm) may follow IEEE-754 recommendation to include an implementation of sinPi(), i.e. sinPi(x):=sin(pi*x). And this triggers a name clash, found by FreeBSD developer Steve Kargl, who worked on putting sinpi into libm used on FreeBSD (it has to be named "sinpi", not "sinPi", cf. e.g. https://en.cppreference.com/w/c/experimental/fpext4).
Diffstat (limited to 'Modules')
-rw-r--r--Modules/mathmodule.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index 67354a7..e2ad281 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -71,7 +71,7 @@ static const double pi = 3.141592653589793238462643383279502884197;
static const double sqrtpi = 1.772453850905516027298167483341145182798;
static double
-sinpi(double x)
+m_sinpi(double x)
{
double y, r;
int n;
@@ -270,7 +270,7 @@ m_tgamma(double x)
integer. */
if (absx > 200.0) {
if (x < 0.0) {
- return 0.0/sinpi(x);
+ return 0.0/m_sinpi(x);
}
else {
errno = ERANGE;
@@ -294,7 +294,7 @@ m_tgamma(double x)
}
z = z * lanczos_g / y;
if (x < 0.0) {
- r = -pi / sinpi(absx) / absx * exp(y) / lanczos_sum(absx);
+ r = -pi / m_sinpi(absx) / absx * exp(y) / lanczos_sum(absx);
r -= z * r;
if (absx < 140.0) {
r /= pow(y, absx - 0.5);
@@ -366,7 +366,7 @@ m_lgamma(double x)
(x-0.5)*(log(x+lanczos_g-0.5)-1);
}
else {
- r = log(pi) - log(fabs(sinpi(absx))) - log(absx) -
+ r = log(pi) - log(fabs(m_sinpi(absx))) - log(absx) -
(log(lanczos_sum(absx)) - lanczos_g +
(absx-0.5)*(log(absx+lanczos_g-0.5)-1));
}