From 33f14f39f3f72cfefd8b2575ea561fac01b59df1 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Fri, 6 Dec 2019 12:56:44 +0100 Subject: [PATCH] math_test enabled --- src/include/units/derived_dimension.h | 7 ++++++- src/include/units/math.h | 12 +++++++----- test/unit_test/static/CMakeLists.txt | 2 +- test/unit_test/static/math_test.cpp | 6 +++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/include/units/derived_dimension.h b/src/include/units/derived_dimension.h index 35e969db..57323161 100644 --- a/src/include/units/derived_dimension.h +++ b/src/include/units/derived_dimension.h @@ -408,8 +408,13 @@ struct dimension_pow_impl { using type = downcast>>; }; +template +struct dimension_pow_impl { + using type = D; +}; + template -struct dimension_pow_impl, N> { +struct dimension_pow_impl>, N> { using type = D; }; diff --git a/src/include/units/math.h b/src/include/units/math.h index ae13cf2a..c6bb2bc4 100644 --- a/src/include/units/math.h +++ b/src/include/units/math.h @@ -38,16 +38,18 @@ namespace units { inline Quantity AUTO pow(const quantity& q) noexcept { using dim = dimension_pow; - using r = ratio_pow; - return quantity>, Rep>(static_cast(std::pow(q.count(), N))); + using ratio = ratio_pow; + using unit = detail::unit_for_dimension; + return quantity(static_cast(std::pow(q.count(), N))); } template inline Quantity AUTO sqrt(const quantity& q) noexcept { - using dim = dimension_sqrt; - using r = ratio_sqrt; - return quantity>, Rep>(static_cast(std::sqrt(q.count()))); + using dim = dimension_sqrt; + using ratio = ratio_sqrt; + using unit = detail::unit_for_dimension; + return quantity(static_cast(std::sqrt(q.count()))); } } // namespace units diff --git a/test/unit_test/static/CMakeLists.txt b/test/unit_test/static/CMakeLists.txt index 0eb0c108..0babe95d 100644 --- a/test/unit_test/static/CMakeLists.txt +++ b/test/unit_test/static/CMakeLists.txt @@ -25,7 +25,7 @@ add_library(unit_tests_static # custom_unit_test.cpp dimension_test.cpp # fixed_string_test.cpp -# math_test.cpp + math_test.cpp # new_design.cpp quantity_test.cpp ratio_test.cpp diff --git a/test/unit_test/static/math_test.cpp b/test/unit_test/static/math_test.cpp index 09a4759c..752c58b7 100644 --- a/test/unit_test/static/math_test.cpp +++ b/test/unit_test/static/math_test.cpp @@ -20,13 +20,13 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include "units/dimensions/area.h" +#include "units/physical/si/area.h" #include "units/math.h" -using namespace units; - namespace { + using namespace units::si::literals; + static_assert(std::is_same_v(2m)), std::int64_t>); static_assert(std::is_same_v(2m)), decltype(2m)>); static_assert(std::is_same_v(2m)), decltype(4sq_m)>);