45{
   47    bool roundNearEven;
   49    bool isTiny;
   52 
   53    
   54
   57    roundIncrement = 0x200;
   59        roundIncrement =
   60            (roundingMode
   62                ? 0x3FF
   63                : 0;
   64    }
   65    roundBits = sig & 0x3FF;
   66    
   67
   69        if ( exp < 0 ) {
   70            
   71
   72            isTiny =
   74                    || (exp < -1)
   75                    || (sig + roundIncrement < 
UINT64_C( 0x8000000000000000 ));
 
   77            exp = 0;
   78            roundBits = sig & 0x3FF;
   79            if ( isTiny && roundBits ) {
   81            }
   82        } else if (
   83            (0x7FD < exp)
   84                || (
UINT64_C( 0x8000000000000000 ) <= sig + roundIncrement)
 
   85        ) {
   86            
   87
   90            uiZ = 
packToF64UI( sign, 0x7FF, 0 ) - ! roundIncrement;
 
   91            goto uiZ;
   92        }
   93    }
   94    
   95
   96    sig = (sig + roundIncrement)>>10;
   97    if ( roundBits ) {
   99#ifdef SOFTFLOAT_ROUND_ODD
  101            sig |= 1;
  102            goto packReturn;
  103        }
  104#endif
  105    }
  106    sig &= ~(
uint_fast64_t) (! (roundBits ^ 0x200) & roundNearEven);
 
  107    if ( ! sig ) exp = 0;
  108    
  109
  110 packReturn:
  112 uiZ:
  113    uZ.ui = uiZ;
  114    return uZ.f;
  115 
  116}
void softfloat_raiseFlags(uint_fast8_t flags)
 
#define packToF64UI(sign, exp, sig)
 
uint64_t softfloat_shiftRightJam64(uint64_t a, uint_fast32_t dist)
 
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
 
@ softfloat_flag_underflow
 
@ softfloat_flag_overflow
 
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
 
THREAD_LOCAL uint_fast8_t softfloat_detectTininess
 
@ softfloat_round_near_even
 
@ softfloat_round_near_maxMag
 
@ softfloat_tininess_beforeRounding