diff --git a/library/math_tgamma.c b/library/math_tgamma.c index a8c086c9..e08117d8 100644 --- a/library/math_tgamma.c +++ b/library/math_tgamma.c @@ -54,13 +54,9 @@ double tgamma(double x) { int gamma_sign; - double y; + double y = __lgamma(x, &gamma_sign); - y = __lgamma(x,&gamma_sign); - if (gamma_sign < 0) - y = -y; - - return y; + return gamma_sign * exp(y); } /****************************************************************************/ diff --git a/library/math_tgammaf.c b/library/math_tgammaf.c index 4da5c8e6..af34007e 100644 --- a/library/math_tgammaf.c +++ b/library/math_tgammaf.c @@ -54,13 +54,9 @@ float tgammaf(float x) { int gamma_sign; - float y; + float y = __lgammaf(x, &gamma_sign); - y = __lgammaf(x,&gamma_sign); - if (gamma_sign < 0) - y = -y; - - return y; + return gamma_sign * expf(y); } /****************************************************************************/