diff options
author | chai <chaifix@163.com> | 2021-12-01 13:34:22 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-12-01 13:34:22 +0800 |
commit | 09abf1b529b4226f585ecfbb20866715b901755b (patch) | |
tree | 16929f2a6bee3ad4667bdd006cfcc1e683ab7210 /Client/ThirdParty/fpm/tests/manip.cpp | |
parent | 84d961f754c905b37420f4d1b3fee8f4e523e58a (diff) |
+fpm
Diffstat (limited to 'Client/ThirdParty/fpm/tests/manip.cpp')
-rw-r--r-- | Client/ThirdParty/fpm/tests/manip.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Client/ThirdParty/fpm/tests/manip.cpp b/Client/ThirdParty/fpm/tests/manip.cpp new file mode 100644 index 0000000..3e47640 --- /dev/null +++ b/Client/ThirdParty/fpm/tests/manip.cpp @@ -0,0 +1,64 @@ +#include "common.hpp" +#include <fpm/math.hpp> + +TEST(manipulation, copysign) +{ + using P = fpm::fixed_24_8; + + EXPECT_EQ(P(-13.125), copysign(P(-13.125), P(-7.25))); + EXPECT_EQ(P(-13.125), copysign(P( 13.125), P(-7.25))); + EXPECT_EQ(P( 13.125), copysign(P(-13.125), P( 7.25))); + EXPECT_EQ(P( 13.125), copysign(P( 13.125), P( 7.25))); + + EXPECT_EQ(P(-13), copysign(P(-13), P(-7))); + EXPECT_EQ(P(-13), copysign(P( 13), P(-7))); + EXPECT_EQ(P( 13), copysign(P(-13), P( 7))); + EXPECT_EQ(P( 13), copysign(P( 13), P( 7))); +} + +TEST(manipulation, nextafter) +{ + using P = fpm::fixed_16_16; + + EXPECT_EQ(P(2.5), nextafter(P(2.5), P(2.5))); + EXPECT_EQ(P(-2.5), nextafter(P(-2.5), P(-2.5))); + + EXPECT_EQ(P::from_raw_value(1), nextafter(P(0), std::numeric_limits<P>::max())); + EXPECT_EQ(P::from_raw_value(0x10001), nextafter(P(1), P(10))); + EXPECT_EQ(P::from_raw_value(-0x0ffff), nextafter(P(-1), P(10))); + + EXPECT_EQ(P::from_raw_value(-1), nextafter(P(0), std::numeric_limits<P>::min())); + EXPECT_EQ(P::from_raw_value(0x0ffff), nextafter(P(1), P(-10))); + EXPECT_EQ(P::from_raw_value(-0x10001), nextafter(P(-1), P(-10))); +} + +TEST(manipulation, nexttoward) +{ + using P = fpm::fixed_16_16; + + EXPECT_EQ(P(2.5), nexttoward(P(2.5), P(2.5))); + EXPECT_EQ(P(-2.5), nexttoward(P(-2.5), P(-2.5))); + + EXPECT_EQ(P::from_raw_value(1), nexttoward(P(0), std::numeric_limits<P>::max())); + EXPECT_EQ(P::from_raw_value(0x10001), nexttoward(P(1), P(10))); + EXPECT_EQ(P::from_raw_value(-0x0ffff), nexttoward(P(-1), P(10))); + + EXPECT_EQ(P::from_raw_value(-1), nexttoward(P(0), std::numeric_limits<P>::min())); + EXPECT_EQ(P::from_raw_value(0x0ffff), nexttoward(P(1), P(-10))); + EXPECT_EQ(P::from_raw_value(-0x10001), nexttoward(P(-1), P(-10))); +} + +TEST(manipulation, modf) +{ + using P = fpm::fixed_16_16; + + P integral; + EXPECT_EQ(P(0), modf(P(0), &integral)); + EXPECT_EQ(P(0), integral); + + EXPECT_EQ(P(0.25), modf(P(12.25), &integral)); + EXPECT_EQ(P(12), integral); + + EXPECT_EQ(P(-0.25), modf(P(-12.25), &integral)); + EXPECT_EQ(P(-12), integral); +} |