12#include "../3rdparty/catch2/catch.hpp"
18TEST_CASE(
"DivideApproxTest - Negative")
25TEST_CASE(
"DivideApproxTest, Divide")
33TEST_CASE(
"IntSqrtTest - Zero")
38TEST_CASE(
"IntSqrtTest - FindSqRt")
43 CHECK(1696 ==
IntSqrt(2876278));
77 CHECK(std::numeric_limits<uint64_t>::lowest() ==
ClampTo<uint64_t>(std::numeric_limits<uint64_t>::lowest()));
78 CHECK(std::numeric_limits<uint64_t>::max() ==
ClampTo<uint64_t>(std::numeric_limits<uint64_t>::max()));
85 CHECK(
static_cast<uint64_t
>(std::numeric_limits<int64_t>::max()) ==
ClampTo<uint64_t>(std::numeric_limits<int64_t>::max()));
88 CHECK(std::numeric_limits<int64_t>::max() ==
ClampTo<int64_t>(std::numeric_limits<uint64_t>::max()));
96 int million = 1000 * 1000;
97 CHECK(1250 * million ==
SoftClamp(0, 1500 * million, 1000 * million));
98 CHECK(0 ==
SoftClamp(0, 1500 * million, -1500 * million));
int DivideApprox(int a, int b)
Deterministic approximate division.
uint32_t IntSqrt(uint32_t num)
Compute the integer square root.
constexpr T SoftClamp(const T a, const T min, const T max)
Clamp a value between an interval.
constexpr To ClampTo(From value)
Clamp the given value down to lie within the requested type.
A number of safeguards to prevent using unsafe methods.
Definition of base types and functions in a cross-platform compatible way.