]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binfloat.cpp
Use <cstdint> in BinFloat
[libs/datafile.git] / source / binfloat.cpp
index fa4be738b8a472f99f5292500580686237535f75..50fe5c53329331b3b6661ba5e0bb5874ed596e67 100644 (file)
@@ -7,9 +7,9 @@ using namespace std;
 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;
@@ -24,7 +24,7 @@ BinFloat BinFloat::explode(UInt64 value, const Bits &bits)
        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;
        }
 
@@ -34,29 +34,29 @@ BinFloat BinFloat::explode(UInt64 value, const Bits &bits)
        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;
        }
 }