mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
47 lines
1.0 KiB
C++
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 );
|
||
|
}
|