fix: printing of symbols with fractional powers fixed

This commit is contained in:
Mateusz Pusz
2022-10-23 22:19:44 +02:00
parent e7bebac2a7
commit 8dcdc7bdac
2 changed files with 6 additions and 2 deletions

View File

@@ -642,8 +642,8 @@ constexpr auto unit_symbol_impl(Out out, const power<F, Num, Den...>&, unit_symb
constexpr ratio r = power<F, Num, Den...>::exponent;
if constexpr (r.den != 1) {
// add root part
constexpr auto txt = txt + basic_fixed_string("^(") + regular<r.num>() + basic_fixed_string("/") +
regular<r.den>() + basic_fixed_string(")");
constexpr auto txt = basic_fixed_string("^(") + regular<r.num>() + basic_fixed_string("/") + regular<r.den>() +
basic_fixed_string(")");
return copy<CharT>(txt, fmt.encoding, out);
} else if constexpr (r.num != 1) {
// add exponent part

View File

@@ -478,6 +478,10 @@ static_assert(unit_symbol(kilogram / metre / square<second>, {.encoding = ascii,
"kg m^-1 s^-2");
static_assert(unit_symbol(kilogram / metre / square<second>, {.denominator = always_negative, .separator = dot}) ==
"kg⋅m⁻¹⋅s⁻²");
static_assert(unit_symbol(pow<123>(metre)) == "m¹²³");
static_assert(unit_symbol(pow<1, 2>(metre)) == "m^(1/2)");
static_assert(unit_symbol(pow<3, 5>(metre)) == "m^(3/5)");
static_assert(unit_symbol(pow<1, 2>(metre / second)) == "m^(1/2)/s^(1/2)");
#endif // __cpp_lib_constexpr_string