diff options
| -rw-r--r-- | src/math/rintl.c | 2 | ||||
| -rw-r--r-- | src/math/tgammal.c | 19 | 
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; | 
