diff options
Diffstat (limited to 'newlib/libm/common/sf_round.c')
-rw-r--r-- | newlib/libm/common/sf_round.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/newlib/libm/common/sf_round.c b/newlib/libm/common/sf_round.c deleted file mode 100644 index 6c9087db0..000000000 --- a/newlib/libm/common/sf_round.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#include "fdlibm.h" - -#ifdef __STDC__ - float roundf(float x) -#else - float roundf(x) - float x; -#endif -{ - int signbit; - __uint32_t w; - /* Most significant word, least significant word. */ - int exponent_less_127; - - GET_FLOAT_WORD(w, x); - - /* Extract sign bit. */ - signbit = w & 0x80000000; - - /* Extract exponent field. */ - exponent_less_127 = (int)((w & 0x7f800000) >> 23) - 127; - - if (exponent_less_127 < 23) - { - if (exponent_less_127 < 0) - { - w &= 0x80000000; - if (exponent_less_127 == -1) - /* Result is +1.0 or -1.0. */ - w |= (127 << 23); - } - else - { - unsigned int exponent_mask = 0x007fffff >> exponent_less_127; - if ((w & exponent_mask) == 0) - /* x has an integral value. */ - return x; - - w += 0x00400000 >> exponent_less_127; - w &= ~exponent_mask; - } - } - else - { - if (exponent_less_127 == 128) - /* x is NaN or infinite. */ - return x + x; - else - return x; - } - SET_FLOAT_WORD(x, w); - return x; -} - -#ifdef _DOUBLE_IS_32BITS - -#ifdef __STDC__ - double round(double x) -#else - double round(x) - double x; -#endif -{ - return (double) roundf((float) x); -} - -#endif /* defined(_DOUBLE_IS_32BITS) */ |