From 0b14d695392002c12e43a110ecc3a29dbfcb5f19 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 5 Feb 2025 12:08:32 +0100 Subject: [PATCH] feat: `quantity::one()` removed Related to #408 --- src/core/include/mp-units/framework/quantity.h | 6 ------ src/core/include/mp-units/math.h | 8 ++++---- test/runtime/distribution_test.cpp | 12 ++++++------ test/static/quantity_test.cpp | 2 -- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/core/include/mp-units/framework/quantity.h b/src/core/include/mp-units/framework/quantity.h index fe211ff4..9703bb77 100644 --- a/src/core/include/mp-units/framework/quantity.h +++ b/src/core/include/mp-units/framework/quantity.h @@ -148,12 +148,6 @@ public: return {representation_values::zero(), R}; } - [[nodiscard]] static constexpr quantity one() noexcept - requires requires { representation_values::one(); } - { - return {representation_values::one(), R}; - } - [[nodiscard]] static constexpr quantity min() noexcept requires requires { representation_values::min(); } { diff --git a/src/core/include/mp-units/math.h b/src/core/include/mp-units/math.h index 420472db..fb458f9e 100644 --- a/src/core/include/mp-units/math.h +++ b/src/core/include/mp-units/math.h @@ -84,7 +84,7 @@ template { if constexpr (Num == 0) { - return quantity(R), Rep>::one(); + return {representation_values::one(), pow<0>(R)}; } else if constexpr (Num == Den) { return q; } else { @@ -341,7 +341,7 @@ template { const auto handle_signed_results = [&](const T& res) { if (res > q) { - return res - T::one(); + return res - representation_values::one() * T::reference; } return res; }; @@ -378,7 +378,7 @@ template { const auto handle_signed_results = [&](const T& res) { if (res < q) { - return res + T::one(); + return res + representation_values::one() * T::reference; } return res; }; @@ -424,7 +424,7 @@ template } } else { const auto res_low = mp_units::floor(q); - const auto res_high = res_low + res_low.one(); + const auto res_high = res_low + representation_values::one() * res_low.reference; const auto diff0 = q - res_low; const auto diff1 = res_high - q; if (diff0 == diff1) { diff --git a/test/runtime/distribution_test.cpp b/test/runtime/distribution_test.cpp index 1ea3da1d..19b237a0 100644 --- a/test/runtime/distribution_test.cpp +++ b/test/runtime/distribution_test.cpp @@ -83,7 +83,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::uniform_real_distribution(); CHECK(dist.a() == q::zero()); - CHECK(dist.b() == q::one()); + CHECK(dist.b() == 1 * si::metre); } SECTION("parametrized") @@ -111,7 +111,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::binomial_distribution(); CHECK(dist.p() == 0.5); - CHECK(dist.t() == q::one()); + CHECK(dist.t() == 1 * si::metre); } SECTION("parametrized") @@ -139,7 +139,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::negative_binomial_distribution(); CHECK(dist.p() == 0.5); - CHECK(dist.k() == q::one()); + CHECK(dist.k() == 1 * si::metre); } SECTION("parametrized") @@ -326,7 +326,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::normal_distribution(); CHECK(dist.mean() == q::zero()); - CHECK(dist.stddev() == q::one()); + CHECK(dist.stddev() == 1 * si::metre); } SECTION("parametrized") @@ -354,7 +354,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::lognormal_distribution(); CHECK(dist.m() == q::zero()); - CHECK(dist.s() == q::one()); + CHECK(dist.s() == 1 * si::metre); } SECTION("parametrized") @@ -407,7 +407,7 @@ TEST_CASE("distributions", "[random][distribution]") auto dist = mp_units::cauchy_distribution(); CHECK(dist.a() == q::zero()); - CHECK(dist.b() == q::one()); + CHECK(dist.b() == 1 * si::metre); } SECTION("parametrized") diff --git a/test/static/quantity_test.cpp b/test/static/quantity_test.cpp index 8e3f44e8..7ae481be 100644 --- a/test/static/quantity_test.cpp +++ b/test/static/quantity_test.cpp @@ -162,11 +162,9 @@ static_assert(is_same_v); //////////////////////////// static_assert(quantity::zero().numerical_value_in(m) == 0); -static_assert(quantity::one().numerical_value_in(m) == 1); static_assert(quantity::min().numerical_value_in(m) == std::numeric_limits::lowest()); static_assert(quantity::max().numerical_value_in(m) == std::numeric_limits::max()); static_assert(quantity::zero().numerical_value_in(m) == 0.0); -static_assert(quantity::one().numerical_value_in(m) == 1.0); static_assert(quantity::min().numerical_value_in(m) == std::numeric_limits::lowest()); static_assert(quantity::max().numerical_value_in(m) == std::numeric_limits::max());