diff options
Diffstat (limited to 'math/w_lgammaf_r.c')
-rw-r--r-- | math/w_lgammaf_r.c | 43 |
1 files changed, 14 insertions, 29 deletions
diff --git a/math/w_lgammaf_r.c b/math/w_lgammaf_r.c index 3758fa0d06..683fe72dc6 100644 --- a/math/w_lgammaf_r.c +++ b/math/w_lgammaf_r.c @@ -8,16 +8,12 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: w_lgammaf_r.c,v 1.3 1995/05/10 20:49:32 jtc Exp $"; -#endif - -/* +/* * wrapper float lgammaf_r(float x, int *signgamp) */ @@ -25,28 +21,17 @@ static char rcsid[] = "$NetBSD: w_lgammaf_r.c,v 1.3 1995/05/10 20:49:32 jtc Exp #include <math_private.h> -#ifdef __STDC__ - float __lgammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */ -#else - float __lgammaf_r(x,signgamp) /* wrapper lgammaf_r */ - float x; int *signgamp; -#endif +float +__lgammaf_r(float x, int *signgamp) { -#ifdef _IEEE_LIBM - return __ieee754_lgammaf_r(x,signgamp); -#else - float y; - y = __ieee754_lgammaf_r(x,signgamp); - if(_LIB_VERSION == _IEEE_) return y; - if(!__finitef(y)&&__finitef(x)) { - if(__floorf(x)==x&&x<=(float)0.0) - /* lgamma pole */ - return (float)__kernel_standard((double)x,(double)x,115); - else - /* lgamma overflow */ - return (float)__kernel_standard((double)x,(double)x,114); - } else - return y; -#endif -} + float y = __ieee754_lgammaf_r(x,signgamp); + if(__builtin_expect(!__finitef(y), 0) + && __finitef(x) && _LIB_VERSION != _IEEE_) + return __kernel_standard_f(x, x, + __floorf(x)==x&&x<=0.0f + ? 115 /* lgamma pole */ + : 114); /* lgamma overflow */ + + return y; +} weak_alias (__lgammaf_r, lgammaf_r) |