namespace Msp {
namespace DataFile {
-BinFloat BinFloat::explode(UInt64 value, const Bits &bits)
+BinFloat BinFloat::explode(uint64_t value, const Bits &bits)
{
- UInt64 mantissa_mask = (UInt64(1)<<bits.mantissa)-1;
+ uint64_t mantissa_mask = (1ULL<<bits.mantissa)-1;
int exponent_mask = (1<<bits.exponent)-1;
BinFloat bf;
else
{
// Extract mantissa, add the implied one and align it to high bits
- bf.mantissa = (value&mantissa_mask) | (UInt64(1)<<bits.mantissa);
+ bf.mantissa = (value&mantissa_mask) | (uint64_t(1)<<bits.mantissa);
bf.mantissa <<= 63-bits.mantissa;
}
return bf;
}
-UInt64 BinFloat::compose(const Bits &bits)
+uint64_t BinFloat::compose(const Bits &bits)
{
- UInt64 mantissa_mask = (UInt64(1)<<bits.mantissa)-1;
+ uint64_t mantissa_mask = (1ULL<<bits.mantissa)-1;
int exponent_mask = (1<<bits.exponent)-1;
int biased_exponent = exponent+(exponent_mask>>1);
// Shift down and round the mantissa
- UInt64 rounded_mantissa = ((mantissa>>(62-bits.mantissa))+1)>>1;
+ uint64_t rounded_mantissa = ((mantissa>>(62-bits.mantissa))+1)>>1;
// If the integer part is greater than one, we need to use a higher exponent
if((rounded_mantissa>>bits.mantissa)>1)
++biased_exponent;
if(biased_exponent>=exponent_mask || infinity)
// Overflow, return infinity
- return UInt64(sign<<bits.exponent | exponent_mask)<<bits.mantissa;
+ return uint64_t(sign<<bits.exponent | exponent_mask)<<bits.mantissa;
else if(biased_exponent<=0 || !mantissa)
// Underflow, return zero
return 0;
else
{
- UInt64 value = rounded_mantissa&mantissa_mask;
- value |= UInt64(biased_exponent)<<bits.mantissa;
- value |= UInt64(sign)<<(bits.mantissa+bits.exponent);
+ uint64_t value = rounded_mantissa&mantissa_mask;
+ value |= uint64_t(biased_exponent)<<bits.mantissa;
+ value |= uint64_t(sign)<<(bits.mantissa+bits.exponent);
return value;
}
}