From 75d5a197a9237c0418fe1e1a39754b155ec73ad0 Mon Sep 17 00:00:00 2001 From: Slendi Date: Sat, 27 Dec 2025 21:36:38 +0200 Subject: [PATCH] Quick fix for deg/rad/turns functions Signed-off-by: Slendi --- include/smath.hpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/include/smath.hpp b/include/smath.hpp index 4bacac4..245c161 100644 --- a/include/smath.hpp +++ b/include/smath.hpp @@ -577,42 +577,47 @@ using Vec2d = Vec<2, double>; using Vec3d = Vec<3, double>; using Vec4d = Vec<4, double>; -template constexpr auto deg(T const value) -> T +template constexpr auto deg(T const value) { + using R = std::common_type_t; if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Degrees) { - return value; + return static_cast(value); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Radians) { - return value * static_cast(std::numbers::pi / 180.0); + return static_cast(value) * static_cast(std::numbers::pi / 180.0); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Turns) { - return value / static_cast(360.0); + return static_cast(value) / static_cast(360.0); } } -template constexpr auto rad(T const value) -> T +template constexpr auto rad(T const value) { + using R = std::common_type_t; if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Degrees) { - return value * static_cast(180.0 / std::numbers::pi); + return static_cast(value) * static_cast(180.0 / std::numbers::pi); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Radians) { - return value; + return static_cast(value); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Turns) { - return value / (static_cast(2.0) * static_cast(std::numbers::pi)); + return static_cast(value) + / (static_cast(2.0) * static_cast(std::numbers::pi)); } } -template constexpr auto turns(T const value) -> T +template constexpr auto turns(T const value) { + using R = std::common_type_t; if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Degrees) { - return value * static_cast(360.0); + return static_cast(value) * static_cast(360.0); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Radians) { - return value * (static_cast(2.0) * static_cast(std::numbers::pi)); + return static_cast(value) + * (static_cast(2.0) * static_cast(std::numbers::pi)); } else if constexpr (detail::SMATH_ANGLE_UNIT_ID == detail::AngularUnit::Turns) { - return value; + return static_cast(value); } }