108 if( ! std::isfinite( value ) ) {
112 auto ivalue = std::bit_cast<std::uint32_t>( value );
116 if( ( ivalue & std::uint32_t{0x7fffffff} ) <
m_vmax ) {
122 return std::bit_cast<float>( ivalue );
unsigned int m_mantissaBits
Number of mantissa bits to keep.
uint32_t m_vmax
Largest possible positive 32bit float minus the rounding.
uint32_t m_mantissaBitmask
Bitmask for zeroing out the non-interesting bits.
float reduceFloatPrecision(float value) const
Function returning a reduced precision float value.
FloatCompressor(unsigned int mantissaBits=7)
Constructor with the number of mantissa bits to retain.
constexpr unsigned int NMANTISSA
Total number of total mantissa bits.