diff options
Diffstat (limited to 'libm/s_rint.c')
-rw-r--r-- | libm/s_rint.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/libm/s_rint.c b/libm/s_rint.c index 06432c622..02ec404e6 100644 --- a/libm/s_rint.c +++ b/libm/s_rint.c @@ -30,7 +30,7 @@ TWO52[2]={ double rint(double x) { - int32_t i0, j0, sx; + int32_t i0, _j0, sx; u_int32_t i,i1; double t; /* We use w = x + 2^52; t = w - 2^52; trick to round x to integer. @@ -43,11 +43,11 @@ double rint(double x) EXTRACT_WORDS(i0,i1,x); /* Unbiased exponent */ - j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff; + _j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff; - if (j0 > 51) { + if (_j0 > 51) { //Why bother? Just returning x works too - //if (j0 == 0x400) /* inf or NaN */ + //if (_j0 == 0x400) /* inf or NaN */ // return x+x; return x; /* x is integral */ } @@ -55,8 +55,8 @@ double rint(double x) /* Sign */ sx = ((u_int32_t)i0) >> 31; - if (j0<20) { - if (j0<0) { /* |x| < 1 */ + if (_j0<20) { + if (_j0<0) { /* |x| < 1 */ if (((i0&0x7fffffff)|i1)==0) return x; i1 |= (i0&0x0fffff); i0 &= 0xfffe0000; @@ -68,19 +68,19 @@ double rint(double x) SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31)); return t; } else { - i = (0x000fffff)>>j0; + i = (0x000fffff)>>_j0; if (((i0&i)|i1)==0) return x; /* x is integral */ i>>=1; if (((i0&i)|i1)!=0) { - if (j0==19) i1 = 0x40000000; - else i0 = (i0&(~i))|((0x20000)>>j0); + if (_j0==19) i1 = 0x40000000; + else i0 = (i0&(~i))|((0x20000)>>_j0); } } } else { - i = ((u_int32_t)(0xffffffff))>>(j0-20); + i = ((u_int32_t)(0xffffffff))>>(_j0-20); if ((i1&i)==0) return x; /* x is integral */ i>>=1; - if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20)); + if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(_j0-20)); } INSERT_WORDS(x,i0,i1); w = TWO52[sx]+x; |