41#include "specialize.h"
53 uint32_t sig32A, recipSqrt32, sig32Z;
68 if ( expA == 0x7FF ) {
73 if ( ! signA )
return a;
79 if ( ! (expA | sigA) )
return a;
85 if ( ! sigA )
return a;
87 expA = normExpSig.
exp;
88 sigA = normExpSig.
sig;
95 expZ = ((expA - 0x3FF)>>1) + 0x3FE;
97 sigA |=
UINT64_C( 0x0010000000000000 );
112 if ( (sigZ & 0x1FF) < 0x22 ) {
114 shiftedSigZ = sigZ>>6;
115 rem = (sigA<<52) - shiftedSigZ * shiftedSigZ;
116 if ( rem &
UINT64_C( 0x8000000000000000 ) ) {
119 if ( rem ) sigZ |= 1;
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, uint_fast64_t uiB)
void softfloat_raiseFlags(uint_fast8_t flags)
float64_t f64_sqrt(float64_t a)
float64_t softfloat_roundPackToF64(bool, int_fast16_t, uint_fast64_t)
struct exp16_sig64 softfloat_normSubnormalF64Sig(uint_fast64_t)
uint32_t softfloat_approxRecipSqrt32_1(unsigned int oddExpA, uint32_t a)