From f853f1f4efc54c6e22056ba8c7abc3f8ad85da50 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 8 Jun 2023 19:08:41 +0200 Subject: [PATCH] fix: magnitudes division fixed when units are divided --- src/core/include/mp-units/unit.h | 2 +- test/unit_test/static/unit_test.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/include/mp-units/unit.h b/src/core/include/mp-units/unit.h index 9996f7e4..12257032 100644 --- a/src/core/include/mp-units/unit.h +++ b/src/core/include/mp-units/unit.h @@ -436,7 +436,7 @@ template else if constexpr (detail::is_specialization_of_scaled_unit) return Lhs::mag * (Lhs::reference_unit / rhs); else if constexpr (detail::is_specialization_of_scaled_unit) - return Rhs::mag * (lhs / Rhs::reference_unit); + return mag<1> / Rhs::mag * (lhs / Rhs::reference_unit); else return detail::expr_divide(lhs, rhs); } diff --git a/test/unit_test/static/unit_test.cpp b/test/unit_test/static/unit_test.cpp index 25826862..5a689a97 100644 --- a/test/unit_test/static/unit_test.cpp +++ b/test/unit_test/static/unit_test.cpp @@ -457,6 +457,8 @@ static_assert(convertible(si::kilo, kilometre)); static_assert(convertible(mag<1000> * metre, si::kilo)); static_assert(convertible(mag<1000> * metre, kilometre)); +static_assert(mag<60> * metre / second == metre / (mag * second)); + static_assert(metre != kilometre); static_assert(convertible(metre, kilometre)); static_assert(mag<100> * metre != kilometre);