41#include "specialize.h"
78 if ( ! signA )
return a;
84 if ( ! (expA | sigA) )
return a;
90 if ( ! sigA )
return a;
92 expA = normExpSig.
exp;
93 sigA = normExpSig.
sig;
97 expZ = ((expA - 0xF)>>1) + 0xE;
100 index = (sigA>>6 & 0xE) + expA;
106 if ( expA ) ESqrR0 >>= 1;
109 if ( ! (recipSqrt16 & 0x8000) ) recipSqrt16 = 0x8000;
111 if ( expA ) sigZ >>= 1;
115 if ( ! (sigZ & 7) ) {
116 shiftedSigZ = sigZ>>1;
117 negRem = shiftedSigZ * shiftedSigZ;
119 if ( negRem & 0x8000 ) {
122 if ( negRem ) --sigZ;
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB)
void softfloat_raiseFlags(uint_fast8_t flags)
const uint16_t softfloat_approxRecipSqrt_1k0s[]
const uint16_t softfloat_approxRecipSqrt_1k1s[]
float16_t f16_sqrt(float16_t a)
float16_t softfloat_roundPackToF16(bool, int_fast16_t, uint_fast16_t)
struct exp8_sig16 softfloat_normSubnormalF16Sig(uint_fast16_t)