Fix compilation errors in half.cpp
parent
993d9e9ed6
commit
5aa5d91ecb
|
@ -30,22 +30,22 @@ namespace Math
|
||||||
//! Converts float to half-float
|
//! Converts float to half-float
|
||||||
uint16_t FloatToHalf(float value)
|
uint16_t FloatToHalf(float value)
|
||||||
{
|
{
|
||||||
uint16_t sign = (copysign(1.0f, value) > 0.0f ? 0x0000 : 0x8000);
|
uint16_t sign = (std::copysign(1.0f, value) > 0.0f ? 0x0000 : 0x8000);
|
||||||
|
|
||||||
// Infinity
|
// Infinity
|
||||||
if (isinf(value))
|
if (std::isinf(value))
|
||||||
{
|
{
|
||||||
return sign | 0x7C00;
|
return sign | 0x7C00;
|
||||||
}
|
}
|
||||||
// NaN
|
// NaN
|
||||||
else if (isnan(value))
|
else if (std::isnan(value))
|
||||||
{
|
{
|
||||||
return sign | 0x7FFF;
|
return sign | 0x7FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
int exponent;
|
int exponent;
|
||||||
|
|
||||||
float significand = fabs(frexp(value, &exponent));
|
float significand = std::fabs(std::frexp(value, &exponent));
|
||||||
|
|
||||||
// Exponent bias
|
// Exponent bias
|
||||||
exponent += 15;
|
exponent += 15;
|
||||||
|
@ -67,7 +67,7 @@ uint16_t FloatToHalf(float value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normal value
|
// Normal value
|
||||||
uint16_t mantissa = static_cast<uint16_t>(ldexp(2 * significand - 1, 10));
|
uint16_t mantissa = static_cast<uint16_t>(std::ldexp(2 * significand - 1, 10));
|
||||||
|
|
||||||
uint16_t bits = sign | mantissa | ((exponent - 1) << 10);
|
uint16_t bits = sign | mantissa | ((exponent - 1) << 10);
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ float HaltToFloat(uint16_t value)
|
||||||
// Subnormal
|
// Subnormal
|
||||||
else if ((exponent == 0) && (mantissa != 0))
|
else if ((exponent == 0) && (mantissa != 0))
|
||||||
{
|
{
|
||||||
result = ldexp(static_cast<float>(mantissa), -24);
|
result = std::ldexp(static_cast<float>(mantissa), -24);
|
||||||
}
|
}
|
||||||
// Infinity
|
// Infinity
|
||||||
else if ((exponent == 31) && (mantissa == 0))
|
else if ((exponent == 31) && (mantissa == 0))
|
||||||
|
@ -100,17 +100,17 @@ float HaltToFloat(uint16_t value)
|
||||||
// NaN
|
// NaN
|
||||||
else if ((exponent == 31) && (mantissa != 0))
|
else if ((exponent == 31) && (mantissa != 0))
|
||||||
{
|
{
|
||||||
result = nanf("");
|
result = std::nanf("");
|
||||||
}
|
}
|
||||||
// Normal number
|
// Normal number
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = ldexp(static_cast<float>(mantissa | 0x0400), exponent - 25);
|
result = std::ldexp(static_cast<float>(mantissa | 0x0400), exponent - 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
float sign = ((value & 0x8000) == 0 ? 1.0f : -1.0f);
|
float sign = ((value & 0x8000) == 0 ? 1.0f : -1.0f);
|
||||||
|
|
||||||
return copysignf(result, sign);
|
return std::copysignf(result, sign);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Math
|
} // namespace Math
|
||||||
|
|
Loading…
Reference in New Issue