Remove ratio's numerator() and denominator()

These have now become trivial.
This commit is contained in:
Chip Hogg
2022-07-07 19:22:26 +00:00
parent 7fd6913b73
commit 7e591115fa
3 changed files with 5 additions and 13 deletions

View File

@@ -198,7 +198,7 @@ constexpr widen_t<T> compute_base_power(BasePower auto bp)
}
}
auto power = numerator(bp.power);
auto power = bp.power.num;
return int_power(static_cast<widen_t<T>>(bp.get_base()), power);
}
@@ -495,8 +495,8 @@ namespace detail {
template<auto BP>
constexpr auto integer_part(magnitude<BP>)
{
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<decltype(BP.get_base())> && (power_num >= power_den)) {
constexpr auto largest_integer_power = [=](BasePower auto bp) {
@@ -553,7 +553,7 @@ namespace detail {
template<auto BP>
constexpr auto remove_positive_power(magnitude<BP> 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<BPs...>)
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)
{

View File

@@ -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); }

View File

@@ -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));