diff options
author | Dima Pasechnik <dimpase@gmail.com> | 2019-02-26 10:41:15 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2019-02-26 10:41:15 (GMT) |
commit | b545ba0a508a5980ab147ed2641a42be3b31a2db (patch) | |
tree | e051fdd189d889a9d8696f30c47ef8ccb921b50b /Modules | |
parent | af83770c3ad165232218aedd48dcdef34962e749 (diff) | |
download | cpython-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.c | 8 |
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)); } |