mirror of
https://github.com/fluencelabs/musl
synced 2025-06-30 15:11:55 +00:00
support ld80 pseudo-denormal invalid bit patterns; treat them as nan
this is silly, but it makes apps that read binary junk and interpret it as ld80 "safer", and it gets gnulib to stop replacing printf...
This commit is contained in:
@ -7,8 +7,11 @@ int __fpclassifyl(long double x)
|
|||||||
{
|
{
|
||||||
union ldshape u = { x };
|
union ldshape u = { x };
|
||||||
int e = u.bits.exp;
|
int e = u.bits.exp;
|
||||||
if (!e)
|
if (!e) {
|
||||||
return u.bits.m ? FP_SUBNORMAL : FP_ZERO;
|
if (u.bits.m >> 63) return FP_NAN;
|
||||||
|
else if (u.bits.m) return FP_SUBNORMAL;
|
||||||
|
else return FP_ZERO;
|
||||||
|
}
|
||||||
if (e == 0x7fff)
|
if (e == 0x7fff)
|
||||||
return u.bits.m & (uint64_t)-1>>1 ? 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;
|
return u.bits.m & (uint64_t)1<<63 ? FP_NORMAL : FP_NAN;
|
||||||
|
Reference in New Issue
Block a user