math: minor cleanups in ceil and floor
This commit is contained in:
parent
d79ac8c38f
commit
7eabe8e690
5 changed files with 7 additions and 10 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue