45{
46 union ui128_f128 uA;
48 bool sign;
53 struct uint128 frac128;
55
56
57
59 uiA64 = uA.ui.v64;
60 uiA0 = uA.ui.v0;
61 sign = signF128UI64( uiA64 );
62 exp = expF128UI64( uiA64 );
63 frac64 = fracF128UI64( uiA64 );
64 frac0 = uiA0;
65
66
67 if ( exp == 0x7FFF ) {
68 if ( frac64 | frac0 ) {
71 } else {
73 }
74 goto uiZ;
75 }
76
77
79 frac64 = frac128.v64 | (frac128.v0 != 0);
80 if ( ! (exp | frac64) ) {
82 goto uiZ;
83 }
84
85
86 exp -= 0x3C01;
88 if ( exp < -0x1000 ) exp = -0x1000;
89 }
90 return
92 sign, exp, frac64 |
UINT64_C( 0x4000000000000000 ) );
93
94
95 uiZ:
96 uZ.ui = uiZ;
97 return uZ.f;
98
99}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
void softfloat_f128UIToCommonNaN(uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr)
#define softfloat_commonNaNToF64UI(aPtr)
float64_t softfloat_roundPackToF64(bool, int_fast16_t, uint_fast64_t)
#define packToF64UI(sign, exp, sig)
struct uint128 softfloat_shortShiftLeft128(uint64_t a64, uint64_t a0, uint_fast8_t dist)