71 return (dividend + divisor-1) / divisor;
88inline bool feq(
double d1,
double d2,
double epsilon = 0.00001)
90 return fabs(d1 - d2) < epsilon;
93inline bool feqf(
float f1,
float f2,
float epsilon = 0.001f)
95 return fabsf(f1 - f2) < epsilon;
100 const double relativeError = fabs(d1/d2 - 1.0);
101 if(relativeError > relativeErrorTolerance)
133 const u8 max = std::numeric_limits<u8>::max();
135 throw std::out_of_range(
"u8_from_larger");
136 return (
u8)(x & max);
141 const u16 max = std::numeric_limits<u16>::max();
143 throw std::out_of_range(
"u16_from_larger");
144 return (
u16)(x & max);
149 const u32 max = std::numeric_limits<u32>::max();
151 throw std::out_of_range(
"u32_from_larger");
152 return (
u32)(x & max);
#define ASSERT(expr)
same as ENSURE in debug mode, does nothing in release mode.
Definition: debug.h:305
bool feq(double d1, double d2, double epsilon=0.00001)
are the given floats nearly "equal"?
Definition: lib.h:88
bool feqf(float f1, float f2, float epsilon=0.001f)
Definition: lib.h:93
u16 u16_from_larger(T x)
Definition: lib.h:139
u8 u8_from_double(double in)
convert double to u8; verifies number is in range.
Definition: lib.cpp:83
u8 u8_from_larger(T x)
assemble u32 from u16
Definition: lib.h:131
u32 u64_lo(u64 x)
return upper 32-bits
Definition: lib.cpp:49
u32 u32_from_u16(u16 hi, u16 lo)
assemble u64 from u32
Definition: lib.cpp:73
T DivideRoundUp(T dividend, T divisor)
Definition: lib.h:68
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
u32 u64_hi(u64 x)
Definition: lib.cpp:44
bool IsSimilarMagnitude(double d1, double d2, const double relativeErrorTolerance=0.05)
Definition: lib.h:98
u32 u32_from_larger(T x)
Definition: lib.h:147
u16 u16_from_double(double in)
convert double to u16; verifies number is in range.
Definition: lib.cpp:97
u16 u32_hi(u32 x)
return lower 32-bits
Definition: lib.cpp:54
#define T(string_literal)
Definition: secure_crt.cpp:77
uint64_t u64
Definition: types.h:40
uint8_t u8
Definition: types.h:37
uint16_t u16
Definition: types.h:38
uint32_t u32
Definition: types.h:39