diff options
Diffstat (limited to 'libm/w_tgamma.c')
-rw-r--r-- | libm/w_tgamma.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/libm/w_tgamma.c b/libm/w_tgamma.c index 15723c5d6..3ad473b2f 100644 --- a/libm/w_tgamma.c +++ b/libm/w_tgamma.c @@ -17,25 +17,23 @@ #include "math.h" #include "math_private.h" -libm_hidden_proto(signgam) double tgamma(double x) { double y; int local_signgam; - y = __ieee754_gamma_r(x,&local_signgam); - if (local_signgam < 0) y = -y; -#ifdef _IEEE_LIBM - return y; -#else - if(_LIB_VERSION == _IEEE_) return y; - if(!isfinite(y)&&isfinite(x)) { - if(floor(x)==x&&x<=0.0) - return __kernel_standard(x,x,41); /* tgamma pole */ - else - return __kernel_standard(x,x,40); /* tgamma overflow */ + y = __ieee754_gamma_r(x, &local_signgam); + if (local_signgam < 0) + y = -y; +#ifndef _IEEE_LIBM + if (_LIB_VERSION == _IEEE_) + return y; + if (!isfinite(y) && isfinite(x)) { + if (floor(x) == x && x <= 0.0) + return __kernel_standard(x, x, 41); /* tgamma pole */ + return __kernel_standard(x, x, 40); /* tgamma overflow */ } - return y; #endif + return y; } libm_hidden_def(tgamma) |