r5sdk/r5dev/mathlib/bits.cpp
Amos c292d8ad46 Implement new ConVar features
Slight cleanup with new ConVar features to be used throughout the SDK
2022-01-09 16:18:35 +01:00

47 lines
1.0 KiB
C++

//=============================================================================//
//
// Purpose: look for NANs, infinities, and underflows.
//
//=============================================================================//
#include "core/stdafx.h"
#include "mathlib/bits.h"
//-----------------------------------------------------------------------------
// This follows the ANSI/IEEE 754-1985 standard
//-----------------------------------------------------------------------------
unsigned long& FloatBits(float& f)
{
return *reinterpret_cast<unsigned long*>(&f);
}
unsigned long const& FloatBits(float const& f)
{
return *reinterpret_cast<unsigned long const*>(&f);
}
float BitsToFloat(unsigned long i)
{
return *reinterpret_cast<float*>(&i);
}
bool IsFinite(float f)
{
return ((FloatBits(f) & 0x7F800000) != 0x7F800000);
}
unsigned long FloatAbsBits(float f)
{
return FloatBits(f) & 0x7FFFFFFF;
}
float FloatMakePositive(float f)
{
return fabsf(f);
}
float FloatNegate(float f)
{
return -f; //BitsToFloat( FloatBits(f) ^ 0x80000000 );
}