From 7e591115fa4cc0d8573f5df94ca5faebd5c93626 Mon Sep 17 00:00:00 2001 From: Chip Hogg Date: Thu, 7 Jul 2022 19:22:26 +0000 Subject: [PATCH] Remove ratio's `numerator()` and `denominator()` These have now become trivial. --- src/core/include/units/magnitude.h | 10 +++++----- src/core/include/units/ratio.h | 4 ---- test/unit_test/static/ratio_test.cpp | 4 ---- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/core/include/units/magnitude.h b/src/core/include/units/magnitude.h index 47bb1aee..3e1e7a19 100644 --- a/src/core/include/units/magnitude.h +++ b/src/core/include/units/magnitude.h @@ -198,7 +198,7 @@ constexpr widen_t compute_base_power(BasePower auto bp) } } - auto power = numerator(bp.power); + auto power = bp.power.num; return int_power(static_cast>(bp.get_base()), power); } @@ -495,8 +495,8 @@ namespace detail { template constexpr auto integer_part(magnitude) { - constexpr auto power_num = numerator(BP.power); - constexpr auto power_den = denominator(BP.power); + constexpr auto power_num = BP.power.num; + constexpr auto power_den = BP.power.den; if constexpr (std::is_integral_v && (power_num >= power_den)) { constexpr auto largest_integer_power = [=](BasePower auto bp) { @@ -553,7 +553,7 @@ namespace detail { template constexpr auto remove_positive_power(magnitude m) { - if constexpr (numerator(BP.power) < 0) { + if constexpr (BP.power.num < 0) { return m; } else { return magnitude<>{}; @@ -659,7 +659,7 @@ constexpr ratio get_power(T base, magnitude) return ((BPs.get_base() == base ? BPs.power : ratio{0}) + ... + ratio{0}); } -constexpr std::intmax_t integer_part(ratio r) { return numerator(r) / denominator(r); } +constexpr std::intmax_t integer_part(ratio r) { return r.num / r.den; } constexpr std::intmax_t extract_power_of_10(Magnitude auto m) { diff --git a/src/core/include/units/ratio.h b/src/core/include/units/ratio.h index a469d4c2..d0bd8ec3 100644 --- a/src/core/include/units/ratio.h +++ b/src/core/include/units/ratio.h @@ -78,10 +78,6 @@ struct ratio { } [[nodiscard]] friend constexpr ratio operator/(const ratio& lhs, const ratio& rhs) { return lhs * inverse(rhs); } - - [[nodiscard]] friend constexpr std::intmax_t numerator(const ratio& r) { return r.num; } - - [[nodiscard]] friend constexpr std::intmax_t denominator(const ratio& r) { return r.den; } }; [[nodiscard]] constexpr ratio inverse(const ratio& r) { return ratio(r.den, r.num); } diff --git a/test/unit_test/static/ratio_test.cpp b/test/unit_test/static/ratio_test.cpp index 87d36443..02828115 100644 --- a/test/unit_test/static/ratio_test.cpp +++ b/test/unit_test/static/ratio_test.cpp @@ -63,10 +63,6 @@ static_assert(common_ratio(ratio(1, 1000), ratio(1)) == ratio(1, 1000)); static_assert(common_ratio(ratio(100, 1), ratio(10, 1)) == ratio(10, 1)); static_assert(common_ratio(ratio(100, 1), ratio(1, 10)) == ratio(1, 10)); -// numerator and denominator -static_assert(numerator(ratio(3, 4)) == 3); -static_assert(denominator(ratio(3, 4)) == 4); - // comparison static_assert((ratio(3, 4) <=> ratio(6, 8)) == (0 <=> 0)); static_assert((ratio(3, 4) <=> ratio(-3, 4)) == (0 <=> -1));