Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libm/common/sf_lrint.c')
-rw-r--r--newlib/libm/common/sf_lrint.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/newlib/libm/common/sf_lrint.c b/newlib/libm/common/sf_lrint.c
index 3165705d1..a58508f02 100644
--- a/newlib/libm/common/sf_lrint.c
+++ b/newlib/libm/common/sf_lrint.c
@@ -28,10 +28,6 @@ static const float
#else
static float
#endif
-/* Adding a float, x, to 2^23 will cause the result to be rounded based on
- the fractional part of x, according to the implementation's current rounding
- mode. 2^23 is the smallest float that can be represented using all 23 significant
- digits. */
TWO23[2]={
8.3886080000e+06, /* 0x4b000000 */
-8.3886080000e+06, /* 0xcb000000 */
@@ -58,21 +54,17 @@ TWO23[2]={
/* Extract exponent field. */
j0 = ((i0 & 0x7f800000) >> 23) - 127;
- if (j0 < (int)(sizeof (long int) * 8) - 1)
+ if (j0 < (sizeof (long int) * 8) - 1)
{
if (j0 < -1)
return 0;
else if (j0 >= 23)
- result = (long int) ((i0 & 0x7fffff) | 0x800000) << (j0 - 23);
+ result = (long int) i0 << (j0 - 23);
else
{
w = TWO23[sx] + x;
t = w - TWO23[sx];
GET_FLOAT_WORD (i0, t);
- /* Detect the all-zeros representation of plus and
- minus zero, which fails the calculation below. */
- if ((i0 & ~(1 << 31)) == 0)
- return 0;
j0 = ((i0 >> 23) & 0xff) - 0x7f;
i0 &= 0x7fffff;
i0 |= 0x800000;