45{
51
52
53
55 uiA = uA.ui;
57
58
59 if ( exp <= 0xE ) {
63 switch ( roundingMode ) {
68 break;
71 break;
74 break;
75#ifdef SOFTFLOAT_ROUND_ODD
78 break;
79#endif
80 }
81 goto uiZ;
82 }
83
84
85 if ( 0x19 <= exp ) {
86 if ( (exp == 0x1F) &&
fracF16UI( uiA ) ) {
88 goto uiZ;
89 }
91 }
92
93
94 uiZ = uiA;
96 roundBitsMask = lastBitMask - 1;
98 uiZ += lastBitMask>>1;
100 uiZ += lastBitMask>>1;
101 if ( !(uiZ & roundBitsMask) ) uiZ &= ~lastBitMask;
102 } else if (
103 roundingMode
105 ) {
106 uiZ += roundBitsMask;
107 }
108 uiZ &= ~roundBitsMask;
109 if ( uiZ != uiA ) {
110#ifdef SOFTFLOAT_ROUND_ODD
112#endif
114 }
115 uiZ:
116 uZ.ui = uiZ;
117 return uZ.f;
118
119}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB)
#define packToF16UI(sign, exp, sig)
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
@ softfloat_round_near_even
@ softfloat_round_near_maxMag