mirror of
https://github.com/SerenityOS/serenity.git
synced 2026-11-07 12:38:38 -10:00
AK: Add the wrap_to_range() function
This commit is contained in:
1 parent
d9d961439a
commit
5dbea4283f
2 files changed
+16
No files matched your search
@@ -1284,6 +1284,13 @@ constexpr I clamp_to(T value)
|
||||
return value;
|
||||
}
|
||||
|
||||
// Wrap a to keep it in the range [-b, b].
|
||||
template<typename T>
|
||||
constexpr T wrap_to_range(T a, IdentityType<T> b)
|
||||
{
|
||||
return fmod(fmod(a + b, 2 * b) + 2 * b, 2 * b) - b;
|
||||
}
|
||||
|
||||
#undef CONSTEXPR_STATE
|
||||
#undef AARCH64_INSTRUCTION
|
||||
}
|
||||
|
||||
@@ -36,3 +36,12 @@ TEST_CASE(pow)
|
||||
EXPECT_EQ(AK::pow(1., -9223372036854775808.0), 1.);
|
||||
EXPECT_EQ(AK::pow(1., -9223372036854777856.0), 1.);
|
||||
}
|
||||
|
||||
TEST_CASE(wrap_to_range)
|
||||
{
|
||||
EXPECT_EQ(AK::wrap_to_range(-185., 180.), 175.);
|
||||
EXPECT_EQ(AK::wrap_to_range(185., 180.), -175.);
|
||||
EXPECT_EQ(AK::wrap_to_range(85., 180.), 85.);
|
||||
EXPECT_EQ(AK::wrap_to_range(0., 180.), 0.);
|
||||
EXPECT_EQ(AK::wrap_to_range(-85., 180.), -85.);
|
||||
}
|
||||
Reference in new issue
Block a user