From a785480d285a665d6ef36d2ae9cb01f18f347ea4 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 3 Apr 2024 17:23:35 -0400 Subject: [PATCH] xo-unit: bugfix: quantity/quantity --- include/xo/unit/quantity.hpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/xo/unit/quantity.hpp b/include/xo/unit/quantity.hpp index adb6cf80..9a86baba 100644 --- a/include/xo/unit/quantity.hpp +++ b/include/xo/unit/quantity.hpp @@ -123,8 +123,20 @@ namespace xo { using repr_type = std::common_type_t; - repr_type r_scale = ((scale() * c_scalefactor_inexact * unit_type::scalefactor_type::num) - / (y.scale() * unit_type::scalefactor_type::den)); + repr_type r_scale = ((scale() * c_scalefactor_inexact * exact_scalefactor_type::num) + / (y.scale() * exact_scalefactor_type::den)); + +# ifdef NOT_USING_DEBUG + using xo::reflect::Reflect; + scope log(XO_DEBUG(true /*c_debug_flag*/)); + log && log(xtag("unit_divide_type", Reflect::require()->canonical_name())); + log && log(xtag("exact_unit_type", Reflect::require()->canonical_name())); + log && log(xtag("norm_unit_type", Reflect::require()->canonical_name())); + log && log(xtag("exact_scalefactor_type", Reflect::require()->canonical_name())); + log && log(xtag("c_scalefactor_inexact", c_scalefactor_inexact)); + log && log(xtag("r_scale", r_scale)); + log && log(xtag("repr_type", Reflect::require()->canonical_name())); +# endif return quantity::promote(r_scale); }