72 return std::max(min, std::min(val, max));
79 return (dividend + divisor-1) / divisor;
96 inline bool feq(
double d1,
double d2,
double epsilon = 0.00001)
98 return fabs(d1 - d2) < epsilon;
101 inline bool feqf(
float f1,
float f2,
float epsilon = 0.001f)
103 return fabsf(f1 - f2) < epsilon;
108 const double relativeError = fabs(d1/d2 - 1.0);
109 if(relativeError > relativeErrorTolerance)
141 const u8 max = std::numeric_limits<u8>::max();
143 throw std::out_of_range(
"u8_from_larger");
144 return (
u8)(x & max);
149 const u16 max = std::numeric_limits<u16>::max();
151 throw std::out_of_range(
"u16_from_larger");
152 return (
u16)(x & max);
157 const u32 max = std::numeric_limits<u32>::max();
159 throw std::out_of_range(
"u32_from_larger");
160 return (
u32)(x & max);
168 #endif // #ifndef INCLUDED_LIB T DivideRoundUp(T dividend, T divisor)
Definition: lib.h:76
u8 u8_from_larger(T x)
assemble u32 from u16
Definition: lib.h:139
uint16_t u16
Definition: types.h:38
u16 u32_hi(u32 x)
return lower 32-bits
Definition: lib.cpp:54
#define ASSERT(expr)
same as ENSURE in debug mode, does nothing in release mode.
Definition: debug.h:315
u32 u64_lo(u64 x)
return upper 32-bits
Definition: lib.cpp:49
T Clamp(T val, T min, T max)
low-level aka "lib"
Definition: lib.h:69
uint8_t u8
Definition: types.h:37
uint64_t u64
Definition: types.h:40
bool IsSimilarMagnitude(double d1, double d2, const double relativeErrorTolerance=0.05)
Definition: lib.h:106
uint32_t u32
Definition: types.h:39
#define T(string_literal)
Definition: secure_crt.cpp:76
u16 u16_from_double(double in)
convert double to u16; verifies number is in range.
Definition: lib.cpp:97
u32 u32_from_larger(T x)
Definition: lib.h:155
u16 u32_lo(u32 x)
return upper 16-bits
Definition: lib.cpp:59
u64 u64_from_u32(u32 hi, u32 lo)
return lower 16-bits
Definition: lib.cpp:65
u8 u8_from_double(double in)
convert double to u8; verifies number is in range.
Definition: lib.cpp:83
bool feq(double d1, double d2, double epsilon=0.00001)
are the given floats nearly "equal"?
Definition: lib.h:96
u32 u32_from_u16(u16 hi, u16 lo)
assemble u64 from u32
Definition: lib.cpp:73
bool feqf(float f1, float f2, float epsilon=0.001f)
Definition: lib.h:101
u32 u64_hi(u64 x)
Definition: lib.cpp:44
u16 u16_from_larger(T x)
Definition: lib.h:147