#include #include #include TEST(math, Scalar) { EXPECT_EQ(hpr::scalar(5) + hpr::scalar(7), hpr::scalar(12)); #ifdef HPR_SCALAR_IMPLEMENTATION EXPECT_TRUE(std::is_floating_point_v>); EXPECT_TRUE(std::is_arithmetic_v>); #endif //EXPECT_EQ(5.f, hpr::Scalar(5)); EXPECT_EQ(hpr::rad(180), hpr::pi()); EXPECT_EQ(hpr::deg(hpr::pi()), 180); EXPECT_EQ(hpr::cos(0), 1); EXPECT_EQ(hpr::sin(0), 0); EXPECT_EQ(hpr::abs(hpr::scalar(-1)), 1); EXPECT_EQ(hpr::pow(2, 2), 4); EXPECT_EQ(hpr::precision(), static_cast(1e-15)); EXPECT_TRUE(typeid(static_cast(hpr::scalar(5))) == typeid(float)); EXPECT_FALSE(!hpr::scalar(-1.)); std::stringstream oss; oss << hpr::cos(0); EXPECT_EQ(oss.str(), "1"); hpr::scalar s; oss >> s; EXPECT_EQ(s, 1); EXPECT_TRUE(hpr::equal(5.5453535353535395818593, 5.5453535353535395817592, 1e-18)); EXPECT_EQ(hpr::min(7., 5), 5); EXPECT_EQ(hpr::max(7., 5), 7); EXPECT_EQ(hpr::clip(7., 5, 10), 7); EXPECT_EQ(hpr::clip(1., 5, 10), 5); EXPECT_EQ(hpr::clip(72., 5, 10), 10); } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }