41 #include "softfloat.h" 57 roundIncrement = 0x200;
65 roundBits = sig & 0x3FF;
75 || (sig + roundIncrement <
UINT64_C( 0x8000000000000000 ));
78 roundBits = sig & 0x3FF;
79 if ( isTiny && roundBits ) {
84 || (
UINT64_C( 0x8000000000000000 ) <= sig + roundIncrement)
90 uiZ =
packToF64UI( sign, 0x7FF, 0 ) - ! roundIncrement;
96 sig = (sig + roundIncrement)>>10;
99 #ifdef SOFTFLOAT_ROUND_ODD 106 sig &= ~(
uint_fast64_t) (! (roundBits ^ 0x200) & roundNearEven);
107 if ( ! sig )
exp = 0;
uint64_t softfloat_shiftRightJam64(uint64_t a, uint_fast32_t dist)
THREAD_LOCAL uint_fast8_t softfloat_detectTininess
void softfloat_raiseFlags(uint_fast8_t)
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
float64_t softfloat_roundPackToF64(bool sign, int_fast16_t exp, uint_fast64_t sig)
#define packToF64UI(sign, exp, sig)
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags