if (!e)
return u.bits.m ? FP_SUBNORMAL : FP_ZERO;
if (e == 0x7fff)
- return u.bits.m & ~((uint64_t)1<<63) ? FP_NAN : FP_INFINITE;
+ return u.bits.m & (uint64_t)-1>>1 ? FP_NAN : FP_INFINITE;
return u.bits.m & (uint64_t)1<<63 ? FP_NORMAL : FP_NAN;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
ux.value = x;
uy.value = y;
- ux.bits &= ~((uint64_t)1<<63);
+ ux.bits &= (uint64_t)-1>>1;
ux.bits |= uy.bits & (uint64_t)1<<63;
return ux.value;
}
ux.value = x;
uy.value = y;
- ux.bits &= ~(uint32_t)1<<31;
+ ux.bits &= (uint32_t)-1>>1;
ux.bits |= uy.bits & (uint32_t)1<<31;
return ux.value;
}
}
if (e == 0x7fff)
/* in ld80 msb is set in inf */
- return m & ~((uint64_t)1<<63) ? FP_ILOGBNAN : INT_MAX;
+ return m & (uint64_t)-1>>1 ? FP_ILOGBNAN : INT_MAX;
return e - 0x3fff;
}
#endif
INSERT_WORDS(x, high & 0x80000000, 0); /* return +-0 */
return x;
}
- INSERT_WORDS(*iptr, i0&(~i), 0);
+ INSERT_WORDS(*iptr, i0&~i, 0);
return x - *iptr;
} else if (j0 > 51) { /* no fraction part */
uint32_t high;
INSERT_WORDS(x, high & 0x80000000, 0); /* return +-0 */
return x;
}
- INSERT_WORDS(*iptr, i0, i1&(~i));
+ INSERT_WORDS(*iptr, i0, i1&~i);
return x - *iptr;
}
}
SET_FLOAT_WORD(x, ix & 0x80000000); /* return +-0 */
return x;
}
- SET_FLOAT_WORD(*iptr, i0&(~i));
+ SET_FLOAT_WORD(*iptr, i0&~i);
return x - *iptr;
} else { /* no fraction part */
uint32_t ix;
}
/* take care of zero */
if (ix0 <= 0) {
- if (((ix0&(~sign))|ix1) == 0)
+ if (((ix0&~sign)|ix1) == 0)
return x; /* sqrt(+-0) = +-0 */
if (ix0 < 0)
return (x-x)/(x-x); /* sqrt(-ve) = sNaN */