6 #include "specialize.h"
9 uint_fast16_t f128_classify( float128_t a
)
12 uint_fast64_t uiA64
, uiA0
;
18 uint_fast16_t infOrNaN
= expF128UI64( uiA64
) == 0x7FFF;
19 uint_fast16_t subnormalOrZero
= expF128UI64( uiA64
) == 0;
20 bool sign
= signF128UI64( uiA64
);
21 bool fracZero
= fracF128UI64( uiA64
) == 0 && uiA0
== 0;
22 bool isNaN
= isNaNF128UI( uiA64
, uiA0
);
23 bool isSNaN
= softfloat_isSigNaNF128UI( uiA64
, uiA0
);
26 ( sign
&& infOrNaN
&& fracZero
) << 0 |
27 ( sign
&& !infOrNaN
&& !subnormalOrZero
) << 1 |
28 ( sign
&& subnormalOrZero
&& !fracZero
) << 2 |
29 ( sign
&& subnormalOrZero
&& fracZero
) << 3 |
30 ( !sign
&& infOrNaN
&& fracZero
) << 7 |
31 ( !sign
&& !infOrNaN
&& !subnormalOrZero
) << 6 |
32 ( !sign
&& subnormalOrZero
&& !fracZero
) << 5 |
33 ( !sign
&& subnormalOrZero
&& fracZero
) << 4 |
34 ( isNaN
&& isSNaN
) << 8 |
35 ( isNaN
&& !isSNaN
) << 9;