Skip to content

Commit

Permalink
[2.7] bpo-36106: resolve sinpi name clash with libm (IEEE-754 violati…
Browse files Browse the repository at this point in the history
…on). (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).
  • Loading branch information
dimpase authored and serhiy-storchaka committed Feb 26, 2019
1 parent af83770 commit b545ba0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Resolve potential name clash with libm's sinpi(). Patch by Dmitrii Pasechnik.
8 changes: 4 additions & 4 deletions Modules/mathmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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);
Expand Down Expand Up @@ -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));
}
Expand Down

0 comments on commit b545ba0

Please sign in to comment.