diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-16 20:58:17 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-16 20:58:17 -0400 |
commit | ad0f5cad15f1c76faf3843b3e189dead2c05cfcc (patch) | |
tree | d3ed2cb9df7536e17a275d08bdb09b2840fee5e5 /sysdeps/ieee754/flt-32/s_floorf.c | |
parent | aac13307d6879af0f46e6b26895244d063c50db5 (diff) | |
download | glibc-ad0f5cad15f1c76faf3843b3e189dead2c05cfcc.tar.gz glibc-ad0f5cad15f1c76faf3843b3e189dead2c05cfcc.tar.xz glibc-ad0f5cad15f1c76faf3843b3e189dead2c05cfcc.zip |
Use rounds{s,d} for x86 rint, ceil, floor
Diffstat (limited to 'sysdeps/ieee754/flt-32/s_floorf.c')
-rw-r--r-- | sysdeps/ieee754/flt-32/s_floorf.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/sysdeps/ieee754/flt-32/s_floorf.c b/sysdeps/ieee754/flt-32/s_floorf.c index e8822b0884..dd19c6bc56 100644 --- a/sysdeps/ieee754/flt-32/s_floorf.c +++ b/sysdeps/ieee754/flt-32/s_floorf.c @@ -8,15 +8,11 @@ * * 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: s_floorf.c,v 1.4 1995/05/10 20:47:22 jtc Exp $"; -#endif - /* * floorf(x) * Return x rounded toward -inf to integral value @@ -29,27 +25,19 @@ static char rcsid[] = "$NetBSD: s_floorf.c,v 1.4 1995/05/10 20:47:22 jtc Exp $"; #include "math.h" #include "math_private.h" -#ifdef __STDC__ static const float huge = 1.0e30; -#else -static float huge = 1.0e30; -#endif -#ifdef __STDC__ - float __floorf(float x) -#else - float __floorf(x) - float x; -#endif +float +__floorf(float x) { int32_t i0,j0; u_int32_t i; GET_FLOAT_WORD(i0,x); j0 = ((i0>>23)&0xff)-0x7f; if(j0<23) { - if(j0<0) { /* raise inexact if x != 0 */ + if(j0<0) { /* raise inexact if x != 0 */ if(huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */ - if(i0>=0) {i0=0;} + if(i0>=0) {i0=0;} else if((i0&0x7fffffff)!=0) { i0=0xbf800000;} } @@ -62,10 +50,12 @@ static float huge = 1.0e30; } } } else { - if(j0==0x80) return x+x; /* inf or NaN */ + if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */ else return x; /* x is integral */ } SET_FLOAT_WORD(x,i0); return x; } +#ifndef __floorf weak_alias (__floorf, floorf) +#endif |