提交 7eabe8e6 编写于 作者: N nsz

math: minor cleanups in ceil and floor

上级 d79ac8c3
......@@ -34,7 +34,6 @@ double ceil(double x)
if (j0 < 0) {
/* raise inexact if x != 0 */
if (huge+x > 0.0) {
/* return 0*sign(x) if |x|<1 */
if (i0 < 0) {
i0 = 0x80000000;
i1=0;
......@@ -44,7 +43,7 @@ double ceil(double x)
}
}
} else {
i = (0x000fffff)>>j0;
i = 0x000fffff>>j0;
if (((i0&i)|i1) == 0) /* x is integral */
return x;
/* raise inexact flag */
......
......@@ -28,7 +28,6 @@ float ceilf(float x)
if (j0 < 0) {
/* raise inexact if x != 0 */
if (huge+x > 0.0f) {
/* return 0*sign(x) if |x|<1 */
if (i0 < 0)
i0 = 0x80000000;
else if(i0 != 0)
......
......@@ -49,8 +49,7 @@ long double ceill(long double x)
static const long double huge = 1.0e300;
long double
ceill(long double x)
long double ceill(long double x)
{
union IEEEl2bits u = { .e = x };
int e = u.bits.exp - LDBL_MAX_EXP + 1;
......
......@@ -50,7 +50,7 @@ double floor(double x)
if (i0 < 0)
i0 += 0x00100000>>j0;
i0 &= ~i;
i1=0;
i1 = 0;
}
}
} else if (j0 > 51) {
......@@ -59,18 +59,18 @@ double floor(double x)
else
return x; /* x is integral */
} else {
i = ((uint32_t)(0xffffffff))>>(j0-20);
i = (uint32_t)0xffffffff>>(j0-20);
if ((i1&i) == 0)
return x; /* x is integral */
/* raise inexact flag */
if (huge+x > 0.0) {
if (i0 < 0) {
if (j0 == 20)
i0+=1;
i0++;
else {
j = i1+(1<<(52-j0));
if (j < i1)
i0 += 1; /* got a carry */
i0++; /* got a carry */
i1 = j;
}
}
......
......@@ -97,6 +97,6 @@ long double floorl(long double x)
if (huge + x > 0.0)
u.bits.manl &= ~m;
}
return (u.e);
return u.e;
}
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册