numeric.float32.internal.operator


const auto _mantissa_width = 23 §source
const auto _exponent_width = 8 §source
const auto _exponent_bias = 127 §source
using float32PackedFormat = floatPackedFormat<23, 8> §source
struct float32ExpandedFormat §source

Fields

struct float32StickyFormat §source

Fields

struct productFormat §source

Fields

template <Denorm denorm_mode>
inline float32ExpandedFormat unpackFloat32(float32PackedFormat a) §source

Apply exponent bias and add mantissa implied one.

inline 
float32StickyFormat normalizeOutput2Zero(float32StickyFormat input) §source

Set denorm values to 0.

inline float32StickyFormat multNormalizeOutput1(float32StickyFormat in) §source

Shift left to normalize small mantissa values. There is guaranteed to be a 1 in either the MSB or the second-most significant bit because mantissas are normalized before taking the product.

template <Denorm denorm_mode>
inline specialCaseFlags getSpecialCases(float32PackedFormat a) §source

Check if nan, zero, inf, or finite.

inline 
uint27
shiftRightSticky(
    uint27 inMantissaGuardRoundSticky,
    uint8 shiftRightAmount
    ) §source
inline 
float32StickyFormat
align(float32ExpandedFormat input, uint8 shiftRightAmount) §source
inline uint5 priorityOneEncoderCountDown26(uint26 in) §source
inline float32StickyFormat addNormalizeOutput1(float32StickyFormat in) §source

Shift left to normalize small mantissa values. There is no guarantee the input isn’t all zeros.

inline float32 float32_mul_denormoff(float32 in1, float32 in2) §source

Multiply two float32 values with denorm off and return the float32 result.

inline float32 float32_add_denormoff(float32 in1, float32 in2) §source

Add two float32 values with denorm off and return the float32 result.

inline float32 neg(float32 x) §source

Negate input.

inline float32 float32_sub_denormoff(float32 in1, float32 in2) §source

Subtract in2 from in1.