summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-03-25 00:42:51 -0400
committerRich Felker <dalias@aerifal.cx>2012-03-25 00:42:51 -0400
commita9014ac1b9bc813a21752cd40e0a73441860e6e6 (patch)
tree6e774ea5863925c49b6da15b25adc20d1ec192b4
parentbff650df9f1f6a0da80d8894535a41b0a2cca320 (diff)
parent6d8df2b9720b7133a0735c9d5a2aae55021bb2c2 (diff)
downloadmusl-a9014ac1b9bc813a21752cd40e0a73441860e6e6.tar.gz
musl-a9014ac1b9bc813a21752cd40e0a73441860e6e6.tar.bz2
musl-a9014ac1b9bc813a21752cd40e0a73441860e6e6.tar.xz
musl-a9014ac1b9bc813a21752cd40e0a73441860e6e6.zip
Merge remote branch 'nsz/master'
-rw-r--r--src/math/rintl.c2
-rw-r--r--src/math/tgammal.c19
2 files changed, 6 insertions, 15 deletions
diff --git a/src/math/rintl.c b/src/math/rintl.c
index 6a311a9d..b13cfeb3 100644
--- a/src/math/rintl.c
+++ b/src/math/rintl.c
@@ -42,8 +42,6 @@ shift[2] = {
0x1.0p63, -0x1.0p63
#elif LDBL_MANT_DIG == 113
0x1.0p112, -0x1.0p112
-#else
-#error "Unsupported long double format"
#endif
};
static const float zero[2] = { 0.0, -0.0 };
diff --git a/src/math/tgammal.c b/src/math/tgammal.c
index 1b460da5..86782a96 100644
--- a/src/math/tgammal.c
+++ b/src/math/tgammal.c
@@ -21,7 +21,6 @@
* SYNOPSIS:
*
* long double x, y, tgammal();
- * extern int signgam;
*
* y = tgammal( x );
*
@@ -29,10 +28,7 @@
* DESCRIPTION:
*
* Returns gamma function of the argument. The result is
- * correctly signed, and the sign (+1 or -1) is also
- * returned in a global (extern) variable named signgam.
- * This variable is also filled in by the logarithmic gamma
- * function lgamma().
+ * correctly signed.
*
* Arguments |x| <= 13 are reduced by recurrence and the function
* approximated by a rational function of degree 7/8 in the
@@ -209,9 +205,8 @@ static long double stirf(long double x)
long double tgammal(long double x)
{
long double p, q, z;
- int i;
+ int i, sign;
- signgam = 1;
if (isnan(x))
return NAN;
if (x == INFINITY)
@@ -220,6 +215,7 @@ long double tgammal(long double x)
return x - x;
q = fabsl(x);
if (q > 13.0) {
+ sign = 1;
if (q > MAXGAML)
goto goverf;
if (x < 0.0) {
@@ -228,7 +224,7 @@ long double tgammal(long double x)
return (x - x) / (x - x);
i = p;
if ((i & 1) == 0)
- signgam = -1;
+ sign = -1;
z = q - p;
if (z > 0.5L) {
p += 1.0;
@@ -238,13 +234,13 @@ long double tgammal(long double x)
z = fabsl(z) * stirf(q);
if (z <= PIL/LDBL_MAX) {
goverf:
- return signgam * INFINITY;
+ return sign * INFINITY;
}
z = PIL/z;
} else {
z = stirf(x);
}
- return signgam * z;
+ return sign * z;
}
z = 1.0;
@@ -269,8 +265,6 @@ goverf:
p = __polevll(x, P, 7);
q = __polevll(x, Q, 8);
z = z * p / q;
- if(z < 0)
- signgam = -1;
return z;
small:
@@ -279,7 +273,6 @@ small:
if (x < 0.0) {
x = -x;
q = z / (x * __polevll(x, SN, 8));
- signgam = -1;
} else
q = z / (x * __polevll(x, S, 8));
return q;