diff --git a/example/conversion_factor.cpp b/example/conversion_factor.cpp index 6fbda2cf..34501e2b 100644 --- a/example/conversion_factor.cpp +++ b/example/conversion_factor.cpp @@ -33,7 +33,7 @@ template requires std::constructible_from inline constexpr double conversion_factor(Target, Source) { - return mp_units::value_cast(1. * Source::reference).number(); + return mp_units::value_cast(1. * Source::reference).value(); } } // namespace @@ -55,6 +55,6 @@ int main() std::cout << MP_UNITS_STD_FMT::format("conversion factor from lengthA::unit of {:%q} to lengthB::unit of {:%q}:\n\n", lengthA, lengthB) - << MP_UNITS_STD_FMT::format("lengthB.number( {} ) == lengthA.number( {} ) * conversion_factor( {} )\n", - lengthB.number(), lengthA.number(), conversion_factor(lengthB, lengthA)); + << MP_UNITS_STD_FMT::format("lengthB.value( {} ) == lengthA.value( {} ) * conversion_factor( {} )\n", + lengthB.value(), lengthA.value(), conversion_factor(lengthB, lengthA)); } diff --git a/example/currency.cpp b/example/currency.cpp index c02b6490..8d465a17 100644 --- a/example/currency.cpp +++ b/example/currency.cpp @@ -75,14 +75,14 @@ template template auto To, ReferenceOf auto From, typename Rep> quantity exchange_to(quantity q) { - return static_cast(exchange_rate() * q.number()) * To; + return static_cast(exchange_rate() * q.value()) * To; } template auto To, ReferenceOf auto From, auto PO, typename Rep> quantity_point exchange_to(quantity_point q) { return quantity_point{ - zero + static_cast(exchange_rate() * (q - q.absolute_point_origin).number()) * To}; + zero + static_cast(exchange_rate() * (q - q.absolute_point_origin).value()) * To}; } int main() diff --git a/example/include/geographic.h b/example/include/geographic.h index 082d25ba..01d6b5f2 100644 --- a/example/include/geographic.h +++ b/example/include/geographic.h @@ -74,19 +74,19 @@ using longitude = template std::basic_ostream& operator<<(std::basic_ostream& os, const latitude& lat) { - if (lat.number() > 0) - return os << "N" << lat.number(); + if (lat.value() > 0) + return os << "N" << lat.value(); else - return os << "S" << -lat.number(); + return os << "S" << -lat.value(); } template std::basic_ostream& operator<<(std::basic_ostream& os, const longitude& lon) { - if (lon.number() > 0) - return os << "E" << lon.number(); + if (lon.value() > 0) + return os << "E" << lon.value(); else - return os << "W" << -lon.number(); + return os << "W" << -lon.value(); } inline namespace literals { @@ -129,7 +129,7 @@ struct MP_UNITS_STD_FMT::formatter> : formatter { auto format(geographic::latitude lat, FormatContext& ctx) { MP_UNITS_STD_FMT::format_to(ctx.out(), "{}", lat > geographic::latitude::zero() ? 'N' : 'S'); - return formatter::format(lat > geographic::latitude::zero() ? lat.number() : -lat.number(), ctx); + return formatter::format(lat > geographic::latitude::zero() ? lat.value() : -lat.value(), ctx); } }; @@ -139,7 +139,7 @@ struct MP_UNITS_STD_FMT::formatter> : formatter { auto format(geographic::longitude lon, FormatContext& ctx) { MP_UNITS_STD_FMT::format_to(ctx.out(), "{}", lon > geographic::longitude::zero() ? 'E' : 'W'); - return formatter::format(lon > geographic::longitude::zero() ? lon.number() : -lon.number(), ctx); + return formatter::format(lon > geographic::longitude::zero() ? lon.value() : -lon.value(), ctx); } }; diff --git a/example/unmanned_aerial_vehicle.cpp b/example/unmanned_aerial_vehicle.cpp index 3996b7fd..f6cc20d6 100644 --- a/example/unmanned_aerial_vehicle.cpp +++ b/example/unmanned_aerial_vehicle.cpp @@ -97,7 +97,7 @@ template hae_altitude to_hae(msl_altitude msl, position pos) { const auto geoid_undulation = - isq::height(GeographicLibWhatsMyOffset(pos.lat.number_in(si::degree), pos.lon.number_in(si::degree)) * si::metre); + isq::height(GeographicLibWhatsMyOffset(pos.lat.value_in(si::degree), pos.lon.value_in(si::degree)) * si::metre); return height_above_ellipsoid + (msl - mean_sea_level - geoid_undulation); } diff --git a/src/core-fmt/include/mp-units/format.h b/src/core-fmt/include/mp-units/format.h index 60ae49c3..7d204491 100644 --- a/src/core-fmt/include/mp-units/format.h +++ b/src/core-fmt/include/mp-units/format.h @@ -226,7 +226,7 @@ struct quantity_formatter { explicit quantity_formatter(OutputIt o, quantity q, const quantity_format_specs& fspecs, Locale lc) : - out(o), val(std::move(q).number()), specs(fspecs), loc(std::move(lc)) + out(o), val(std::move(q).value()), specs(fspecs), loc(std::move(lc)) { } @@ -396,7 +396,7 @@ private: if (begin == end || *begin == '}') { // default format should print value followed by the unit separated with 1 space - out = mp_units::detail::format_units_quantity_value(out, q.number(), specs.rep, ctx.locale()); + out = mp_units::detail::format_units_quantity_value(out, q.value(), specs.rep, ctx.locale()); if constexpr (mp_units::detail::has_unit_symbol(get_unit(Reference))) { *out++ = CharT(' '); out = unit_symbol_to(out, get_unit(Reference)); diff --git a/src/core-io/include/mp-units/ostream.h b/src/core-io/include/mp-units/ostream.h index 03fb3ac4..2329c42e 100644 --- a/src/core-io/include/mp-units/ostream.h +++ b/src/core-io/include/mp-units/ostream.h @@ -36,9 +36,9 @@ void to_stream(std::basic_ostream& os, const quantity& q) { if constexpr (is_same_v || is_same_v) // promote the value to int - os << +q.number(); + os << +q.value(); else - os << q.number(); + os << q.value(); if constexpr (has_unit_symbol(get_unit(R))) { os << " "; unit_symbol_to(std::ostream_iterator(os), get_unit(R)); @@ -49,7 +49,7 @@ void to_stream(std::basic_ostream& os, const quantity& q) template std::basic_ostream& operator<<(std::basic_ostream& os, const quantity& q) - requires requires { os << q.number(); } + requires requires { os << q.value(); } { if (os.width()) { // std::setw() applies to the whole quantity output so it has to be first put into std::string diff --git a/src/core/include/mp-units/bits/quantity_cast.h b/src/core/include/mp-units/bits/quantity_cast.h index c465837d..5d05b52f 100644 --- a/src/core/include/mp-units/bits/quantity_cast.h +++ b/src/core/include/mp-units/bits/quantity_cast.h @@ -51,9 +51,9 @@ template { if constexpr (detail::QuantityKindSpec> && AssociatedUnit>) - return make_quantity(std::forward(q).number()); + return make_quantity(std::forward(q).value()); else - return make_quantity{}>(std::forward(q).number()); + return make_quantity{}>(std::forward(q).value()); } } // namespace mp_units diff --git a/src/core/include/mp-units/bits/quantity_concepts.h b/src/core/include/mp-units/bits/quantity_concepts.h index cb1a5694..7214c738 100644 --- a/src/core/include/mp-units/bits/quantity_concepts.h +++ b/src/core/include/mp-units/bits/quantity_concepts.h @@ -74,7 +74,7 @@ concept QuantityLike = requires(T q) { requires RepresentationOf::rep, get_quantity_spec(quantity_like_traits::reference).character>; { - quantity_like_traits::number(q) + quantity_like_traits::value(q) } -> std::convertible_to::rep>; }; diff --git a/src/core/include/mp-units/bits/sudo_cast.h b/src/core/include/mp-units/bits/sudo_cast.h index 1917c1aa..7dd8f680 100644 --- a/src/core/include/mp-units/bits/sudo_cast.h +++ b/src/core/include/mp-units/bits/sudo_cast.h @@ -63,10 +63,10 @@ template if constexpr (q_unit == To::unit) { // no scaling of the number needed return make_quantity(static_cast( - std::forward(q).number())); // this is the only (and recommended) way to do - // a truncating conversion on a number, so we are - // using static_cast to suppress all the compiler - // warnings on conversions + std::forward(q).value())); // this is the only (and recommended) way to do + // a truncating conversion on a number, so we are + // using static_cast to suppress all the compiler + // warnings on conversions } else { // scale the number constexpr Magnitude auto c_mag = get_canonical_unit(q_unit).mag / get_canonical_unit(To::unit).mag; @@ -78,7 +78,7 @@ template using multiplier_type = conditional, std::common_type_t, c_mag_type>; constexpr auto val = [](Magnitude auto m) { return get_value(m); }; - return static_cast(static_cast(std::forward(q).number()) * val(num) / + return static_cast(static_cast(std::forward(q).value()) * val(num) / val(den) * val(irr)) * To::reference; } diff --git a/src/core/include/mp-units/customization_points.h b/src/core/include/mp-units/customization_points.h index a16d158a..e4c16916 100644 --- a/src/core/include/mp-units/customization_points.h +++ b/src/core/include/mp-units/customization_points.h @@ -136,7 +136,7 @@ struct quantity_values { * @brief Provides support for external quantity-like types * * The type trait should provide the @c reference object, a type alias @c rep, - * and a static member function @c number(T) that returns the raw value of the quantity. + * and a static member function @c value(T) that returns the raw value of the quantity. * * Usage example can be found in @c units/chrono.h header file. * diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/quantity.h index 15483449..0512f733 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/quantity.h @@ -134,7 +134,7 @@ public: template Q> constexpr explicit(!std::convertible_to) quantity(const Q& q) : - number_(detail::sudo_cast(q).number()) + number_(detail::sudo_cast(q).value()) { } @@ -142,7 +142,7 @@ public: requires detail::QuantityConvertibleTo< quantity::reference, typename quantity_like_traits::rep>, quantity> constexpr explicit quantity(const Q& q) : - quantity(make_quantity::reference>(quantity_like_traits::number(q))) + quantity(make_quantity::reference>(quantity_like_traits::value(q))) { } @@ -152,22 +152,22 @@ public: // data access #ifdef __cpp_explicit_this_parameter template - [[nodiscard]] constexpr auto&& number(this Self&& self) noexcept + [[nodiscard]] constexpr auto&& value(this Self&& self) noexcept { return std::forward(self).number_; } #else - [[nodiscard]] constexpr rep& number() & noexcept { return number_; } - [[nodiscard]] constexpr const rep& number() const& noexcept { return number_; } - [[nodiscard]] constexpr rep&& number() && noexcept { return std::move(number_); } - [[nodiscard]] constexpr const rep&& number() const&& noexcept { return std::move(number_); } + [[nodiscard]] constexpr rep& value() & noexcept { return number_; } + [[nodiscard]] constexpr const rep& value() const& noexcept { return number_; } + [[nodiscard]] constexpr rep&& value() && noexcept { return std::move(number_); } + [[nodiscard]] constexpr const rep&& value() const&& noexcept { return std::move(number_); } #endif template requires requires(quantity q) { q.in(U{}); } - [[nodiscard]] constexpr rep number_in(U) const noexcept + [[nodiscard]] constexpr rep value_in(U) const noexcept { - return (*this).in(U{}).number(); + return (*this).in(U{}).value(); } template @@ -185,7 +185,7 @@ public: } -> std::common_with; } { - return make_quantity(+number()); + return make_quantity(+value()); } [[nodiscard]] constexpr Quantity auto operator-() const @@ -195,7 +195,7 @@ public: } -> std::common_with; } { - return make_quantity(-number()); + return make_quantity(-value()); } constexpr quantity& operator++() @@ -247,7 +247,7 @@ public: } -> std::same_as; } { - number_ += q.number(); + number_ += q.value(); return *this; } @@ -258,7 +258,7 @@ public: } -> std::same_as; } { - number_ -= q.number(); + number_ -= q.value(); return *this; } @@ -282,7 +282,7 @@ public: } constexpr quantity& operator*=(const Q& rhs) { - number_ *= rhs.number(); + number_ *= rhs.value(); return *this; } @@ -307,8 +307,8 @@ public: } constexpr quantity& operator/=(const Q& rhs) { - gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); - number_ /= rhs.number(); + gsl_ExpectsAudit(rhs.value() != quantity_values::zero()); + number_ /= rhs.value(); return *this; } @@ -319,8 +319,8 @@ public: } -> std::same_as; } { - gsl_ExpectsAudit(q.number() != quantity_values::zero()); - number_ %= q.number(); + gsl_ExpectsAudit(q.value() != quantity_values::zero()); + number_ %= q.value(); return *this; } @@ -346,7 +346,7 @@ template [[nodiscard]] constexpr Quantity auto operator+(const quantity& lhs, const quantity& rhs) { using ret = detail::common_quantity_for, quantity, quantity>; - return make_quantity(ret(lhs).number() + ret(rhs).number()); + return make_quantity(ret(lhs).value() + ret(rhs).value()); } template @@ -354,7 +354,7 @@ template [[nodiscard]] constexpr Quantity auto operator-(const quantity& lhs, const quantity& rhs) { using ret = detail::common_quantity_for, quantity, quantity>; - return make_quantity(ret(lhs).number() - ret(rhs).number()); + return make_quantity(ret(lhs).value() - ret(rhs).value()); } template @@ -362,7 +362,7 @@ template Rep2> [[nodiscard]] constexpr Quantity auto operator*(const quantity& lhs, const quantity& rhs) { - return make_quantity(lhs.number() * rhs.number()); + return make_quantity(lhs.value() * rhs.value()); } template @@ -370,7 +370,7 @@ template detail::InvokeResultOf, Rep, const Value&> [[nodiscard]] constexpr Quantity auto operator*(const quantity& q, const Value& v) { - return make_quantity(q.number() * v); + return make_quantity(q.value() * v); } template @@ -378,15 +378,15 @@ template detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator*(const Value& v, const quantity& q) { - return make_quantity(v * q.number()); + return make_quantity(v * q.value()); } template requires detail::InvokeResultOf<(get_quantity_spec(R1) / get_quantity_spec(R2)).character, std::divides<>, Rep1, Rep2> [[nodiscard]] constexpr Quantity auto operator/(const quantity& lhs, const quantity& rhs) { - gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); - return make_quantity(lhs.number() / rhs.number()); + gsl_ExpectsAudit(rhs.value() != quantity_values::zero()); + return make_quantity(lhs.value() / rhs.value()); } template @@ -395,7 +395,7 @@ template [[nodiscard]] constexpr Quantity auto operator/(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); - return make_quantity(q.number() / v); + return make_quantity(q.value() / v); } template @@ -403,7 +403,7 @@ template detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator/(const Value& v, const quantity& q) { - return make_quantity<::mp_units::one / R>(v / q.number()); + return make_quantity<::mp_units::one / R>(v / q.value()); } template @@ -411,9 +411,9 @@ template detail::InvocableQuantities, quantity, quantity> [[nodiscard]] constexpr Quantity auto operator%(const quantity& lhs, const quantity& rhs) { - gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); + gsl_ExpectsAudit(rhs.value() != quantity_values::zero()); using ret = detail::common_quantity_for, quantity, quantity>; - return make_quantity(ret(lhs).number() % ret(rhs).number()); + return make_quantity(ret(lhs).value() % ret(rhs).value()); } template @@ -422,7 +422,7 @@ template [[nodiscard]] constexpr bool operator==(const quantity& lhs, const quantity& rhs) { using ct = std::common_type_t, quantity>; - return ct(lhs).number() == ct(rhs).number(); + return ct(lhs).value() == ct(rhs).value(); } template @@ -431,7 +431,7 @@ template [[nodiscard]] constexpr auto operator<=>(const quantity& lhs, const quantity& rhs) { using ct = std::common_type_t, quantity>; - return ct(lhs).number() <=> ct(rhs).number(); + return ct(lhs).value() <=> ct(rhs).value(); } // make_quantity diff --git a/src/core/include/mp-units/quantity_spec.h b/src/core/include/mp-units/quantity_spec.h index 83d13f67..ee01c9e6 100644 --- a/src/core/include/mp-units/quantity_spec.h +++ b/src/core/include/mp-units/quantity_spec.h @@ -115,7 +115,7 @@ struct quantity_spec_interface { requires Quantity> && (explicitly_convertible(std::remove_reference_t::quantity_spec, self)) { - return make_quantity::unit>{}>(std::forward(q).number()); + return make_quantity::unit>{}>(std::forward(q).value()); } #else template U> @@ -132,7 +132,7 @@ struct quantity_spec_interface { (explicitly_convertible(std::remove_reference_t::quantity_spec, Self_{})) [[nodiscard]] constexpr Quantity auto operator()(Q&& q) const { - return make_quantity::unit>{}>(std::forward(q).number()); + return make_quantity::unit>{}>(std::forward(q).value()); } #endif }; @@ -311,7 +311,7 @@ struct quantity_spec : std::remove_const_t { (explicitly_convertible(std::remove_reference_t::quantity_spec, Self_{})) [[nodiscard]] constexpr Quantity auto operator()(Q&& q) const { - return make_quantity::unit>{}>(std::forward(q).number()); + return make_quantity::unit>{}>(std::forward(q).value()); } #endif }; diff --git a/src/utility/include/mp-units/chrono.h b/src/utility/include/mp-units/chrono.h index 3bfb479d..88c70ce1 100644 --- a/src/utility/include/mp-units/chrono.h +++ b/src/utility/include/mp-units/chrono.h @@ -64,7 +64,7 @@ template struct quantity_like_traits> { static constexpr auto reference = detail::time_unit_from_chrono_period(); using rep = Rep; - [[nodiscard]] static constexpr rep number(const std::chrono::duration& q) { return q.count(); } + [[nodiscard]] static constexpr rep value(const std::chrono::duration& q) { return q.count(); } }; template @@ -92,7 +92,7 @@ template Q> { constexpr auto canonical = detail::get_canonical_unit(Q::unit); constexpr ratio r = as_ratio(canonical.mag); - return std::chrono::duration>{q.number()}; + return std::chrono::duration>{q.value()}; } template QP> diff --git a/src/utility/include/mp-units/math.h b/src/utility/include/mp-units/math.h index 7ac3f195..2df2fa95 100644 --- a/src/utility/include/mp-units/math.h +++ b/src/utility/include/mp-units/math.h @@ -54,7 +54,7 @@ template requires detail::non_zero && requires { quantity_values::one(); } [[nodiscard]] constexpr quantity(R), Rep> pow(const quantity& q) noexcept - requires requires { pow(q.number(), 1.0); } || requires { std::pow(q.number(), 1.0); } + requires requires { pow(q.value(), 1.0); } || requires { std::pow(q.value(), 1.0); } { if constexpr (Num == 0) { return quantity(R), Rep>::one(); @@ -63,7 +63,7 @@ template } else { using std::pow; return make_quantity(R)>( - static_cast(pow(q.number(), static_cast(Num) / static_cast(Den)))); + static_cast(pow(q.value(), static_cast(Num) / static_cast(Den)))); } } @@ -77,10 +77,10 @@ template */ template [[nodiscard]] constexpr quantity sqrt(const quantity& q) noexcept - requires requires { sqrt(q.number()); } || requires { std::sqrt(q.number()); } + requires requires { sqrt(q.value()); } || requires { std::sqrt(q.value()); } { using std::sqrt; - return make_quantity(static_cast(sqrt(q.number()))); + return make_quantity(static_cast(sqrt(q.value()))); } /** @@ -93,10 +93,10 @@ template */ template [[nodiscard]] constexpr quantity cbrt(const quantity& q) noexcept - requires requires { cbrt(q.number()); } || requires { std::cbrt(q.number()); } + requires requires { cbrt(q.value()); } || requires { std::cbrt(q.value()); } { using std::cbrt; - return make_quantity(static_cast(cbrt(q.number()))); + return make_quantity(static_cast(cbrt(q.value()))); } /** @@ -109,11 +109,11 @@ template */ template auto R, typename Rep> [[nodiscard]] constexpr quantity exp(const quantity& q) - requires requires { exp(q.number()); } || requires { std::exp(q.number()); } + requires requires { exp(q.value()); } || requires { std::exp(q.value()); } { using std::exp; return value_cast( - make_quantity(R)>(static_cast(exp(value_cast(q).number())))); + make_quantity(R)>(static_cast(exp(value_cast(q).value())))); } /** @@ -124,10 +124,10 @@ template auto R, typename Rep> */ template [[nodiscard]] constexpr quantity abs(const quantity& q) noexcept - requires requires { abs(q.number()); } || requires { std::abs(q.number()); } + requires requires { abs(q.value()); } || requires { std::abs(q.value()); } { using std::abs; - return make_quantity(static_cast(abs(q.number()))); + return make_quantity(static_cast(abs(q.value()))); } /** @@ -153,8 +153,7 @@ template */ template [[nodiscard]] constexpr quantity(R), Rep> floor(const quantity& q) noexcept - requires((!treat_as_floating_point) || requires { floor(q.number()); } || - requires { std::floor(q.number()); }) && + requires((!treat_as_floating_point) || requires { floor(q.value()); } || requires { std::floor(q.value()); }) && (To == get_unit(R) || requires { ::mp_units::value_cast(q); quantity_values::one(); @@ -169,10 +168,10 @@ template if constexpr (treat_as_floating_point) { using std::floor; if constexpr (To == get_unit(R)) { - return make_quantity(R)>(static_cast(floor(q.number()))); + return make_quantity(R)>(static_cast(floor(q.value()))); } else { return handle_signed_results(make_quantity(q.reference)>( - static_cast(floor(value_cast(q).number())))); + static_cast(floor(value_cast(q).value())))); } } else { if constexpr (To == get_unit(R)) { @@ -191,7 +190,7 @@ template */ template [[nodiscard]] constexpr quantity(R), Rep> ceil(const quantity& q) noexcept - requires((!treat_as_floating_point) || requires { ceil(q.number()); } || requires { std::ceil(q.number()); }) && + requires((!treat_as_floating_point) || requires { ceil(q.value()); } || requires { std::ceil(q.value()); }) && (To == get_unit(R) || requires { ::mp_units::value_cast(q); quantity_values::one(); @@ -206,10 +205,10 @@ template if constexpr (treat_as_floating_point) { using std::ceil; if constexpr (To == get_unit(R)) { - return make_quantity(q.reference)>(static_cast(ceil(q.number()))); + return make_quantity(q.reference)>(static_cast(ceil(q.value()))); } else { return handle_signed_results(make_quantity(q.reference)>( - static_cast(ceil(value_cast(q).number())))); + static_cast(ceil(value_cast(q).value())))); } } else { if constexpr (To == get_unit(R)) { @@ -230,8 +229,7 @@ template */ template [[nodiscard]] constexpr quantity(R), Rep> round(const quantity& q) noexcept - requires((!treat_as_floating_point) || requires { round(q.number()); } || - requires { std::round(q.number()); }) && + requires((!treat_as_floating_point) || requires { round(q.value()); } || requires { std::round(q.value()); }) && (To == get_unit(R) || requires { ::mp_units::floor(q); quantity_values::one(); @@ -240,7 +238,7 @@ template if constexpr (To == get_unit(R)) { if constexpr (treat_as_floating_point) { using std::round; - return make_quantity(q.reference)>(static_cast(round(q.number()))); + return make_quantity(q.reference)>(static_cast(round(q.value()))); } else { return value_cast(q); } @@ -250,7 +248,7 @@ template const auto diff0 = q - res_low; const auto diff1 = res_high - q; if (diff0 == diff1) { - if (static_cast(res_low.number()) & 1) { + if (static_cast(res_low.value()) & 1) { return res_high; } return res_low; @@ -271,12 +269,12 @@ template const quantity& x, const quantity& y) noexcept requires requires { common_reference(R1, R2); } && ( - requires { hypot(x.number(), y.number()); } || requires { std::hypot(x.number(), y.number()); }) + requires { hypot(x.value(), y.value()); } || requires { std::hypot(x.value(), y.value()); }) { constexpr auto ref = common_reference(R1, R2); constexpr auto unit = get_unit(ref); using std::hypot; - return make_quantity(hypot(x.number_in(unit), y.number_in(unit))); + return make_quantity(hypot(x.value_in(unit), y.value_in(unit))); } /** @@ -287,13 +285,13 @@ template [[nodiscard]] constexpr QuantityOf auto hypot( const quantity& x, const quantity& y, const quantity& z) noexcept requires requires { common_reference(R1, R2, R3); } && ( - requires { hypot(x.number(), y.number(), z.number()); } || - requires { std::hypot(x.number(), y.number(), z.number()); }) + requires { hypot(x.value(), y.value(), z.value()); } || + requires { std::hypot(x.value(), y.value(), z.value()); }) { constexpr auto ref = common_reference(R1, R2); constexpr auto unit = get_unit(ref); using std::hypot; - return make_quantity(hypot(x.number_in(unit), y.number_in(unit), z.number_in(unit))); + return make_quantity(hypot(x.value_in(unit), y.value_in(unit), z.value_in(unit))); } namespace isq { @@ -301,55 +299,55 @@ namespace isq { template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity sin(const quantity& q) noexcept - requires requires { sin(q.number()); } || requires { std::sin(q.number()); } + requires requires { sin(q.value()); } || requires { std::sin(q.value()); } { using std::sin; - return make_quantity(static_cast(sin(q.in(si::radian).number()))); + return make_quantity(static_cast(sin(q.in(si::radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity cos(const quantity& q) noexcept - requires requires { cos(q.number()); } || requires { std::cos(q.number()); } + requires requires { cos(q.value()); } || requires { std::cos(q.value()); } { using std::cos; - return make_quantity(static_cast(cos(q.in(si::radian).number()))); + return make_quantity(static_cast(cos(q.in(si::radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity tan(const quantity& q) noexcept - requires requires { tan(q.number()); } || requires { std::tan(q.number()); } + requires requires { tan(q.value()); } || requires { std::tan(q.value()); } { using std::tan; - return make_quantity(static_cast(tan(q.in(si::radian).number()))); + return make_quantity(static_cast(tan(q.in(si::radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity asin(const quantity& q) noexcept - requires requires { asin(q.number()); } || requires { std::asin(q.number()); } + requires requires { asin(q.value()); } || requires { std::asin(q.value()); } { using std::asin; - return make_quantity(static_cast(asin(value_cast(q).number()))); + return make_quantity(static_cast(asin(value_cast(q).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity acos(const quantity& q) noexcept - requires requires { acos(q.number()); } || requires { std::acos(q.number()); } + requires requires { acos(q.value()); } || requires { std::acos(q.value()); } { using std::acos; - return make_quantity(static_cast(acos(value_cast(q).number()))); + return make_quantity(static_cast(acos(value_cast(q).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity atan(const quantity& q) noexcept - requires requires { atan(q.number()); } || requires { std::atan(q.number()); } + requires requires { atan(q.value()); } || requires { std::atan(q.value()); } { using std::atan; - return make_quantity(static_cast(atan(value_cast(q).number()))); + return make_quantity(static_cast(atan(value_cast(q).value()))); } } // namespace isq @@ -359,55 +357,55 @@ namespace angular { template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity sin(const quantity& q) noexcept - requires requires { sin(q.number()); } || requires { std::sin(q.number()); } + requires requires { sin(q.value()); } || requires { std::sin(q.value()); } { using std::sin; - return make_quantity(static_cast(sin(q.in(radian).number()))); + return make_quantity(static_cast(sin(q.in(radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity cos(const quantity& q) noexcept - requires requires { cos(q.number()); } || requires { std::cos(q.number()); } + requires requires { cos(q.value()); } || requires { std::cos(q.value()); } { using std::cos; - return make_quantity(static_cast(cos(q.in(radian).number()))); + return make_quantity(static_cast(cos(q.in(radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity tan(const quantity& q) noexcept - requires requires { tan(q.number()); } || requires { std::tan(q.number()); } + requires requires { tan(q.value()); } || requires { std::tan(q.value()); } { using std::tan; - return make_quantity(static_cast(tan(q.in(radian).number()))); + return make_quantity(static_cast(tan(q.in(radian).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity asin(const quantity& q) noexcept - requires requires { asin(q.number()); } || requires { std::asin(q.number()); } + requires requires { asin(q.value()); } || requires { std::asin(q.value()); } { using std::asin; - return make_quantity(static_cast(asin(value_cast(q).number()))); + return make_quantity(static_cast(asin(value_cast(q).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity acos(const quantity& q) noexcept - requires requires { acos(q.number()); } || requires { std::acos(q.number()); } + requires requires { acos(q.value()); } || requires { std::acos(q.value()); } { using std::acos; - return make_quantity(static_cast(acos(value_cast(q).number()))); + return make_quantity(static_cast(acos(value_cast(q).value()))); } template auto R, typename Rep> requires treat_as_floating_point [[nodiscard]] inline quantity atan(const quantity& q) noexcept - requires requires { atan(q.number()); } || requires { std::atan(q.number()); } + requires requires { atan(q.value()); } || requires { std::atan(q.value()); } { using std::atan; - return make_quantity(static_cast(atan(value_cast(q).number()))); + return make_quantity(static_cast(atan(value_cast(q).value()))); } } // namespace angular diff --git a/src/utility/include/mp-units/random.h b/src/utility/include/mp-units/random.h index 570f1742..837a6925 100644 --- a/src/utility/include/mp-units/random.h +++ b/src/utility/include/mp-units/random.h @@ -35,7 +35,7 @@ static std::vector i_qty_to_rep(InputIt first, InputIt last) std::vector intervals_rep; intervals_rep.reserve(static_cast(std::distance(first, last))); for (auto itr = first; itr != last; ++itr) { - intervals_rep.push_back(itr->number()); + intervals_rep.push_back(itr->value()); } return intervals_rep; } @@ -46,7 +46,7 @@ static std::vector bl_qty_to_rep(std::initializer_list& bl) std::vector bl_rep; bl_rep.reserve(bl.size()); for (const Q& qty : bl) { - bl_rep.push_back(qty.number()); + bl_rep.push_back(qty.value()); } return bl_rep; } @@ -88,7 +88,7 @@ struct uniform_int_distribution : public std::uniform_int_distribution; uniform_int_distribution() : base() {} - uniform_int_distribution(const Q& a, const Q& b) : base(a.number(), b.number()) {} + uniform_int_distribution(const Q& a, const Q& b) : base(a.value(), b.value()) {} template Q operator()(Generator& g) @@ -110,7 +110,7 @@ struct uniform_real_distribution : public std::uniform_real_distribution; uniform_real_distribution() : base() {} - uniform_real_distribution(const Q& a, const Q& b) : base(a.number(), b.number()) {} + uniform_real_distribution(const Q& a, const Q& b) : base(a.value(), b.value()) {} template Q operator()(Generator& g) @@ -132,7 +132,7 @@ struct binomial_distribution : public std::binomial_distribution; binomial_distribution() : base() {} - binomial_distribution(const Q& t, double p) : base(t.number(), p) {} + binomial_distribution(const Q& t, double p) : base(t.value(), p) {} template Q operator()(Generator& g) @@ -153,7 +153,7 @@ struct negative_binomial_distribution : public std::negative_binomial_distributi using base = MP_UNITS_TYPENAME std::negative_binomial_distribution; negative_binomial_distribution() : base() {} - negative_binomial_distribution(const Q& k, double p) : base(k.number(), p) {} + negative_binomial_distribution(const Q& k, double p) : base(k.value(), p) {} template Q operator()(Generator& g) @@ -269,7 +269,7 @@ struct extreme_value_distribution : public std::extreme_value_distribution; extreme_value_distribution() : base() {} - extreme_value_distribution(const Q& a, const rep& b) : base(a.number(), b) {} + extreme_value_distribution(const Q& a, const rep& b) : base(a.value(), b) {} template Q operator()(Generator& g) @@ -290,7 +290,7 @@ struct normal_distribution : public std::normal_distribution { using base = MP_UNITS_TYPENAME std::normal_distribution; normal_distribution() : base() {} - normal_distribution(const Q& mean, const Q& stddev) : base(mean.number(), stddev.number()) {} + normal_distribution(const Q& mean, const Q& stddev) : base(mean.value(), stddev.value()) {} template Q operator()(Generator& g) @@ -312,7 +312,7 @@ struct lognormal_distribution : public std::lognormal_distribution; lognormal_distribution() : base() {} - lognormal_distribution(const Q& m, const Q& s) : base(m.number(), s.number()) {} + lognormal_distribution(const Q& m, const Q& s) : base(m.value(), s.value()) {} template Q operator()(Generator& g) @@ -353,7 +353,7 @@ struct cauchy_distribution : public std::cauchy_distribution { using base = MP_UNITS_TYPENAME std::cauchy_distribution; cauchy_distribution() : base() {} - cauchy_distribution(const Q& a, const Q& b) : base(a.number(), b.number()) {} + cauchy_distribution(const Q& a, const Q& b) : base(a.value(), b.value()) {} template Q operator()(Generator& g) @@ -470,7 +470,7 @@ public: template piecewise_constant_distribution(std::size_t nw, const Q& xmin, const Q& xmax, UnaryOperation fw) : - base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(val * Q::reference); }) + base(nw, xmin.value(), xmax.value(), [fw](rep val) { return fw(val * Q::reference); }) { } @@ -528,7 +528,7 @@ public: template piecewise_linear_distribution(std::size_t nw, const Q& xmin, const Q& xmax, UnaryOperation fw) : - base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(val * Q::reference); }) + base(nw, xmin.value(), xmax.value(), [fw](rep val) { return fw(val * Q::reference); }) { } diff --git a/test/unit_test/runtime/almost_equals.h b/test/unit_test/runtime/almost_equals.h index 34aa21a3..4bf5c499 100644 --- a/test/unit_test/runtime/almost_equals.h +++ b/test/unit_test/runtime/almost_equals.h @@ -36,8 +36,8 @@ struct AlmostEqualsMatcher : Catch::Matchers::MatcherGenericBase { { using std::abs; using common = std::common_type_t; - const auto x = common(target_).number(); - const auto y = common(other).number(); + const auto x = common(target_).value(); + const auto y = common(other).value(); const auto maxXYOne = std::max({typename T::rep{1}, abs(x), abs(y)}); return abs(x - y) <= std::numeric_limits::epsilon() * maxXYOne; } diff --git a/test/unit_test/runtime/distribution_test.cpp b/test/unit_test/runtime/distribution_test.cpp index 98062246..347fe6c6 100644 --- a/test/unit_test/runtime/distribution_test.cpp +++ b/test/unit_test/runtime/distribution_test.cpp @@ -559,7 +559,7 @@ TEST_CASE("piecewise_constant_distribution") 3.0 * isq::length[si::metre]}; auto stl_dist = std::piecewise_constant_distribution(intervals_rep, [](rep val) { return val; }); - auto units_dist = mp_units::piecewise_constant_distribution(intervals_qty, [](q qty) { return qty.number(); }); + auto units_dist = mp_units::piecewise_constant_distribution(intervals_qty, [](q qty) { return qty.value(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -573,7 +573,7 @@ TEST_CASE("piecewise_constant_distribution") auto stl_dist = std::piecewise_constant_distribution(nw, xmin_rep, xmax_rep, [](rep val) { return val; }); auto units_dist = - mp_units::piecewise_constant_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); + mp_units::piecewise_constant_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.value(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -626,7 +626,7 @@ TEST_CASE("piecewise_linear_distribution") 3.0 * isq::length[si::metre]}; auto stl_dist = std::piecewise_linear_distribution(intervals_rep, [](rep val) { return val; }); - auto units_dist = mp_units::piecewise_linear_distribution(intervals_qty, [](q qty) { return qty.number(); }); + auto units_dist = mp_units::piecewise_linear_distribution(intervals_qty, [](q qty) { return qty.value(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -640,7 +640,7 @@ TEST_CASE("piecewise_linear_distribution") auto stl_dist = std::piecewise_linear_distribution(nw, xmin_rep, xmax_rep, [](rep val) { return val; }); auto units_dist = - mp_units::piecewise_linear_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); + mp_units::piecewise_linear_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.value(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); diff --git a/test/unit_test/runtime/linear_algebra_test.cpp b/test/unit_test/runtime/linear_algebra_test.cpp index 4fc15271..a1ebb353 100644 --- a/test/unit_test/runtime/linear_algebra_test.cpp +++ b/test/unit_test/runtime/linear_algebra_test.cpp @@ -71,7 +71,7 @@ template requires(typename Q1::rep v1, typename Q2::rep v2) { cross_product(v1, v2); } [[nodiscard]] QuantityOf auto cross_product(const Q1& q1, const Q2& q2) { - return cross_product(q1.number(), q2.number()) * (Q1::reference * Q2::reference); + return cross_product(q1.value(), q2.value()) * (Q1::reference * Q2::reference); } } // namespace @@ -83,21 +83,21 @@ TEST_CASE("vector quantity", "[la]") SECTION("non-truncating") { const auto v = vector{3, 2, 1} * isq::position_vector[km]; - CHECK(v.in(m).number() == vector{3000, 2000, 1000}); + CHECK(v.in(m).value() == vector{3000, 2000, 1000}); } SECTION("truncating") { const auto v = vector{1001, 1002, 1003} * isq::position_vector[m]; - CHECK(value_cast(v).number() == vector{1, 1, 1}); + CHECK(value_cast(v).value() == vector{1, 1, 1}); } } SECTION("to scalar magnitude") { const auto v = vector{2, 3, 6} * isq::velocity[km / h]; - const auto speed = get_magnitude(v.number()) * isq::speed[v.unit]; // TODO can we do better here? - CHECK(speed.number() == 7); + const auto speed = get_magnitude(v.value()) * isq::speed[v.unit]; // TODO can we do better here? + CHECK(speed.value() == 7); } SECTION("multiply by scalar value") @@ -106,14 +106,14 @@ TEST_CASE("vector quantity", "[la]") SECTION("integral") { - SECTION("scalar on LHS") { CHECK((2 * v).number() == vector{2, 4, 6}); } - SECTION("scalar on RHS") { CHECK((v * 2).number() == vector{2, 4, 6}); } + SECTION("scalar on LHS") { CHECK((2 * v).value() == vector{2, 4, 6}); } + SECTION("scalar on RHS") { CHECK((v * 2).value() == vector{2, 4, 6}); } } SECTION("floating-point") { - SECTION("scalar on LHS") { CHECK((0.5 * v).number() == vector{0.5, 1., 1.5}); } - SECTION("scalar on RHS") { CHECK((v * 0.5).number() == vector{0.5, 1., 1.5}); } + SECTION("scalar on LHS") { CHECK((0.5 * v).value() == vector{0.5, 1., 1.5}); } + SECTION("scalar on RHS") { CHECK((v * 0.5).value() == vector{0.5, 1., 1.5}); } } } @@ -121,8 +121,8 @@ TEST_CASE("vector quantity", "[la]") { const auto v = vector{2, 4, 6} * isq::position_vector[m]; - SECTION("integral") { CHECK((v / 2).number() == vector{1, 2, 3}); } - SECTION("floating-point") { CHECK((v / 0.5).number() == vector{4., 8., 12.}); } + SECTION("integral") { CHECK((v / 2).value() == vector{1, 2, 3}); } + SECTION("floating-point") { CHECK((v / 0.5).value() == vector{4., 8., 12.}); } } SECTION("add") @@ -132,12 +132,12 @@ TEST_CASE("vector quantity", "[la]") SECTION("same unit") { const auto u = vector{3, 2, 1} * isq::position_vector[m]; - CHECK((v + u).number() == vector{4, 4, 4}); + CHECK((v + u).value() == vector{4, 4, 4}); } SECTION("different units") { const auto u = vector{3, 2, 1} * isq::position_vector[km]; - CHECK((v + u).number() == vector{3001, 2002, 1003}); + CHECK((v + u).value() == vector{3001, 2002, 1003}); } } @@ -148,12 +148,12 @@ TEST_CASE("vector quantity", "[la]") SECTION("same unit") { const auto u = vector{3, 2, 1} * isq::position_vector[m]; - CHECK((v - u).number() == vector{-2, 0, 2}); + CHECK((v - u).value() == vector{-2, 0, 2}); } SECTION("different units") { const auto u = vector{3, 2, 1} * isq::position_vector[km]; - CHECK((v - u).number() == vector{-2999, -1998, -997}); + CHECK((v - u).value() == vector{-2999, -1998, -997}); } } @@ -167,25 +167,25 @@ TEST_CASE("vector quantity", "[la]") SECTION("derived_quantity_spec") { - SECTION("scalar on LHS") { CHECK((mass * v).number() == vector{2, 4, 6}); } - SECTION("scalar on RHS") { CHECK((v * mass).number() == vector{2, 4, 6}); } + SECTION("scalar on LHS") { CHECK((mass * v).value() == vector{2, 4, 6}); } + SECTION("scalar on RHS") { CHECK((v * mass).value() == vector{2, 4, 6}); } } SECTION("quantity_cast to momentum") { - SECTION("scalar on LHS") { CHECK(quantity_cast(mass * v).number() == vector{2, 4, 6}); } - SECTION("scalar on RHS") { CHECK(quantity_cast(v * mass).number() == vector{2, 4, 6}); } + SECTION("scalar on LHS") { CHECK(quantity_cast(mass * v).value() == vector{2, 4, 6}); } + SECTION("scalar on RHS") { CHECK(quantity_cast(v * mass).value() == vector{2, 4, 6}); } } SECTION("quantity of momentum") { SECTION("scalar on LHS") { const quantity> momentum = mass * v; - CHECK(momentum.number() == vector{2, 4, 6}); + CHECK(momentum.value() == vector{2, 4, 6}); } SECTION("scalar on RHS") { const quantity> momentum = v * mass; - CHECK(momentum.number() == vector{2, 4, 6}); + CHECK(momentum.value() == vector{2, 4, 6}); } } } @@ -196,18 +196,18 @@ TEST_CASE("vector quantity", "[la]") SECTION("derived_quantity_spec") { - SECTION("scalar on LHS") { CHECK((mass * v).number() == vector{0.5, 1., 1.5}); } - SECTION("scalar on RHS") { CHECK((v * mass).number() == vector{0.5, 1., 1.5}); } + SECTION("scalar on LHS") { CHECK((mass * v).value() == vector{0.5, 1., 1.5}); } + SECTION("scalar on RHS") { CHECK((v * mass).value() == vector{0.5, 1., 1.5}); } } SECTION("quantity_cast to momentum") { SECTION("scalar on LHS") { - CHECK(quantity_cast(mass * v).number() == vector{0.5, 1., 1.5}); + CHECK(quantity_cast(mass * v).value() == vector{0.5, 1., 1.5}); } SECTION("scalar on RHS") { - CHECK(quantity_cast(v * mass).number() == vector{0.5, 1., 1.5}); + CHECK(quantity_cast(v * mass).value() == vector{0.5, 1., 1.5}); } } SECTION("quantity of momentum") @@ -215,12 +215,12 @@ TEST_CASE("vector quantity", "[la]") SECTION("scalar on LHS") { const quantity> momentum = mass * v; - CHECK(momentum.number() == vector{0.5, 1., 1.5}); + CHECK(momentum.value() == vector{0.5, 1., 1.5}); } SECTION("scalar on RHS") { const quantity> momentum = v * mass; - CHECK(momentum.number() == vector{0.5, 1., 1.5}); + CHECK(momentum.value() == vector{0.5, 1., 1.5}); } } } @@ -234,15 +234,15 @@ TEST_CASE("vector quantity", "[la]") { const auto dur = 2 * isq::duration[h]; - SECTION("derived_quantity_spec") { CHECK((pos / dur).number() == vector{15, 10, 5}); } + SECTION("derived_quantity_spec") { CHECK((pos / dur).value() == vector{15, 10, 5}); } SECTION("quantity_cast to velocity") { - CHECK(quantity_cast(pos / dur).number() == vector{15, 10, 5}); + CHECK(quantity_cast(pos / dur).value() == vector{15, 10, 5}); } SECTION("quantity of velocity") { const quantity> v = pos / dur; - CHECK(v.number() == vector{15, 10, 5}); + CHECK(v.value() == vector{15, 10, 5}); } } @@ -250,15 +250,15 @@ TEST_CASE("vector quantity", "[la]") { const auto dur = 0.5 * isq::duration[h]; - SECTION("derived_quantity_spec") { CHECK((pos / dur).number() == vector{60, 40, 20}); } + SECTION("derived_quantity_spec") { CHECK((pos / dur).value() == vector{60, 40, 20}); } SECTION("quantity_cast to velocity") { - CHECK(quantity_cast(pos / dur).number() == vector{60, 40, 20}); + CHECK(quantity_cast(pos / dur).value() == vector{60, 40, 20}); } SECTION("quantity of velocity") { const quantity> v = pos / dur; - CHECK(v.number() == vector{60, 40, 20}); + CHECK(v.value() == vector{60, 40, 20}); } } } @@ -294,8 +294,8 @@ TEST_CASE("vector of quantities", "[la]") SECTION("to scalar magnitude") { const vector> v = {2 * (km / h), 3 * (km / h), 6 * (km / h)}; - const auto speed = get_magnitude(v).number() * isq::speed[v(0).unit]; // TODO can we do better here? - CHECK(speed.number() == 7); + const auto speed = get_magnitude(v).value() * isq::speed[v(0).unit]; // TODO can we do better here? + CHECK(speed.value() == 7); } SECTION("multiply by scalar value") diff --git a/test/unit_test/runtime/math_test.cpp b/test/unit_test/runtime/math_test.cpp index dbaf0907..4085d09e 100644 --- a/test/unit_test/runtime/math_test.cpp +++ b/test/unit_test/runtime/math_test.cpp @@ -90,12 +90,12 @@ TEST_CASE("numeric_limits functions", "[limits]") { SECTION("'epsilon' works as expected using default floating type") { - REQUIRE(epsilon(isq::length[m]).number() == + REQUIRE(epsilon(isq::length[m]).value() == std::numeric_limits::epsilon()); } SECTION("'epsilon' works as expected using integers") { - REQUIRE(epsilon(isq::length[m]).number() == std::numeric_limits::epsilon()); + REQUIRE(epsilon(isq::length[m]).value() == std::numeric_limits::epsilon()); } } diff --git a/test/unit_test/static/quantity_point_test.cpp b/test/unit_test/static/quantity_point_test.cpp index 37df9452..610e755b 100644 --- a/test/unit_test/static/quantity_point_test.cpp +++ b/test/unit_test/static/quantity_point_test.cpp @@ -241,16 +241,16 @@ static_assert( // static member functions //////////////////////////// -static_assert(quantity_point::zero().quantity_from_origin().number() == 0); -static_assert(quantity_point::min().quantity_from_origin().number() == +static_assert(quantity_point::zero().quantity_from_origin().value() == 0); +static_assert(quantity_point::min().quantity_from_origin().value() == std::numeric_limits::lowest()); -static_assert(quantity_point::max().quantity_from_origin().number() == +static_assert(quantity_point::max().quantity_from_origin().value() == std::numeric_limits::max()); -static_assert(quantity_point::zero().quantity_from_origin().number() == 0); -static_assert(quantity_point::min().quantity_from_origin().number() == +static_assert(quantity_point::zero().quantity_from_origin().value() == 0); +static_assert(quantity_point::min().quantity_from_origin().value() == std::numeric_limits::lowest()); -static_assert(quantity_point::max().quantity_from_origin().number() == +static_assert(quantity_point::max().quantity_from_origin().value() == std::numeric_limits::max()); @@ -576,15 +576,15 @@ static_assert(is_of_type<(ground_level + isq::height(short(42) * m)).point_for(m // converting to a different unit /////////////////////////////////// -static_assert((mean_sea_level + 2. * km).in(km).quantity_from_origin().number() == 2.); -static_assert((mean_sea_level + 2. * km).in(m).quantity_from_origin().number() == 2000.); -static_assert((mean_sea_level + 2000. * m).in(km).quantity_from_origin().number() == 2.); -static_assert((ground_level + 2. * km).in(km).quantity_from_origin().number() == 2.); -static_assert((ground_level + 2. * km).in(m).quantity_from_origin().number() == 2000.); -static_assert((ground_level + 2000. * m).in(km).quantity_from_origin().number() == 2.); -static_assert((tower_peak + 2. * km).in(km).quantity_from_origin().number() == 2.); -static_assert((tower_peak + 2. * km).in(m).quantity_from_origin().number() == 2000.); -static_assert((tower_peak + 2000. * m).in(km).quantity_from_origin().number() == 2.); +static_assert((mean_sea_level + 2. * km).in(km).quantity_from_origin().value() == 2.); +static_assert((mean_sea_level + 2. * km).in(m).quantity_from_origin().value() == 2000.); +static_assert((mean_sea_level + 2000. * m).in(km).quantity_from_origin().value() == 2.); +static_assert((ground_level + 2. * km).in(km).quantity_from_origin().value() == 2.); +static_assert((ground_level + 2. * km).in(m).quantity_from_origin().value() == 2000.); +static_assert((ground_level + 2000. * m).in(km).quantity_from_origin().value() == 2.); +static_assert((tower_peak + 2. * km).in(km).quantity_from_origin().value() == 2.); +static_assert((tower_peak + 2. * km).in(m).quantity_from_origin().value() == 2000.); +static_assert((tower_peak + 2000. * m).in(km).quantity_from_origin().value() == 2.); #if MP_UNITS_COMP_GCC != 10 || MP_UNITS_COMP_GCC_MINOR > 2 template typename QP> @@ -657,14 +657,14 @@ static_assert([](auto v) { //////////////////////// // same type -static_assert((mean_sea_level + 1 * m += 1 * m).quantity_from_origin().number() == 2); -static_assert((mean_sea_level + 2 * m -= 1 * m).quantity_from_origin().number() == 1); +static_assert((mean_sea_level + 1 * m += 1 * m).quantity_from_origin().value() == 2); +static_assert((mean_sea_level + 2 * m -= 1 * m).quantity_from_origin().value() == 1); // different types -static_assert((mean_sea_level + 2.5 * m += 3 * m).quantity_from_origin().number() == 5.5); -static_assert((mean_sea_level + 123 * m += 1 * km).quantity_from_origin().number() == 1123); -static_assert((mean_sea_level + 5.5 * m -= 3 * m).quantity_from_origin().number() == 2.5); -static_assert((mean_sea_level + 1123 * m -= 1 * km).quantity_from_origin().number() == 123); +static_assert((mean_sea_level + 2.5 * m += 3 * m).quantity_from_origin().value() == 5.5); +static_assert((mean_sea_level + 123 * m += 1 * km).quantity_from_origin().value() == 1123); +static_assert((mean_sea_level + 5.5 * m -= 3 * m).quantity_from_origin().value() == 2.5); +static_assert((mean_sea_level + 1123 * m -= 1 * km).quantity_from_origin().value() == 123); template typename QP> @@ -930,24 +930,24 @@ static_assert(is_of_type<(1 * m + tower_peak) - (1 * m + other_ground_level), qu // check for integral types promotion static_assert( - is_same_v); static_assert( - is_same_v); static_assert( - is_same_v); static_assert( - is_same_v); -static_assert(((mean_sea_level + std::uint8_t(128) * m) + std::uint8_t(128) * m).quantity_from_origin().number() == +static_assert(((mean_sea_level + std::uint8_t(128) * m) + std::uint8_t(128) * m).quantity_from_origin().value() == std::uint8_t(128) + std::uint8_t(128)); -static_assert((std::uint8_t(128) * m + (mean_sea_level + std::uint8_t(128) * m)).quantity_from_origin().number() == +static_assert((std::uint8_t(128) * m + (mean_sea_level + std::uint8_t(128) * m)).quantity_from_origin().value() == std::uint8_t(128) + std::uint8_t(128)); -static_assert(((mean_sea_level + std::uint8_t(0) * m) - std::uint8_t(1) * m).quantity_from_origin().number() == +static_assert(((mean_sea_level + std::uint8_t(0) * m) - std::uint8_t(1) * m).quantity_from_origin().value() == std::uint8_t(0) - std::uint8_t(1)); -static_assert(((mean_sea_level + std::uint8_t(0) * m) - (mean_sea_level + std::uint8_t(1) * m)).number() == +static_assert(((mean_sea_level + std::uint8_t(0) * m) - (mean_sea_level + std::uint8_t(1) * m)).value() == std::uint8_t(0) - std::uint8_t(1)); // different representation types @@ -1002,39 +1002,39 @@ static_assert(is_of_type<(mean_sea_level + 1 * km) - (mean_sea_level + 1. * m), static_assert(is_of_type<(mean_sea_level + 1. * km) - (mean_sea_level + 1. * m), quantity>); -static_assert(((mean_sea_level + 1 * m) + 1 * m).quantity_from_origin().number() == 2); -static_assert((1 * m + (mean_sea_level + 1 * m)).quantity_from_origin().number() == 2); -static_assert(((mean_sea_level + 1 * m) + 1 * km).quantity_from_origin().number() == 1001); -static_assert((1 * m + (mean_sea_level + 1 * km)).quantity_from_origin().number() == 1001); -static_assert(((mean_sea_level + 1 * km) + 1 * m).quantity_from_origin().number() == 1001); -static_assert((1 * km + (mean_sea_level + 1 * m)).quantity_from_origin().number() == 1001); -static_assert(((mean_sea_level + 2 * m) - 1 * m).quantity_from_origin().number() == 1); -static_assert(((mean_sea_level + 1 * km) - 1 * m).quantity_from_origin().number() == 999); +static_assert(((mean_sea_level + 1 * m) + 1 * m).quantity_from_origin().value() == 2); +static_assert((1 * m + (mean_sea_level + 1 * m)).quantity_from_origin().value() == 2); +static_assert(((mean_sea_level + 1 * m) + 1 * km).quantity_from_origin().value() == 1001); +static_assert((1 * m + (mean_sea_level + 1 * km)).quantity_from_origin().value() == 1001); +static_assert(((mean_sea_level + 1 * km) + 1 * m).quantity_from_origin().value() == 1001); +static_assert((1 * km + (mean_sea_level + 1 * m)).quantity_from_origin().value() == 1001); +static_assert(((mean_sea_level + 2 * m) - 1 * m).quantity_from_origin().value() == 1); +static_assert(((mean_sea_level + 1 * km) - 1 * m).quantity_from_origin().value() == 999); -static_assert(((mean_sea_level + 1.5 * m) + 1 * m).quantity_from_origin().number() == 2.5); -static_assert((1.5 * m + (mean_sea_level + 1 * m)).quantity_from_origin().number() == 2.5); -static_assert(((mean_sea_level + 1.5 * m) + 1 * km).quantity_from_origin().number() == 1001.5); -static_assert((1.5 * m + (mean_sea_level + 1 * km)).quantity_from_origin().number() == 1001.5); -static_assert(((mean_sea_level + 1.5 * km) + 1 * m).quantity_from_origin().number() == 1501); -static_assert((1.5 * km + (mean_sea_level + 1 * m)).quantity_from_origin().number() == 1501); -static_assert(((mean_sea_level + 2.5 * m) - 1 * m).quantity_from_origin().number() == 1.5); -static_assert(((mean_sea_level + 1.5 * km) - 1 * m).quantity_from_origin().number() == 1499); +static_assert(((mean_sea_level + 1.5 * m) + 1 * m).quantity_from_origin().value() == 2.5); +static_assert((1.5 * m + (mean_sea_level + 1 * m)).quantity_from_origin().value() == 2.5); +static_assert(((mean_sea_level + 1.5 * m) + 1 * km).quantity_from_origin().value() == 1001.5); +static_assert((1.5 * m + (mean_sea_level + 1 * km)).quantity_from_origin().value() == 1001.5); +static_assert(((mean_sea_level + 1.5 * km) + 1 * m).quantity_from_origin().value() == 1501); +static_assert((1.5 * km + (mean_sea_level + 1 * m)).quantity_from_origin().value() == 1501); +static_assert(((mean_sea_level + 2.5 * m) - 1 * m).quantity_from_origin().value() == 1.5); +static_assert(((mean_sea_level + 1.5 * km) - 1 * m).quantity_from_origin().value() == 1499); -static_assert(((mean_sea_level + 1 * m) + 1.5 * m).quantity_from_origin().number() == 2.5); -static_assert((1 * m + (mean_sea_level + 1.5 * m)).quantity_from_origin().number() == 2.5); -static_assert(((mean_sea_level + 1 * m) + 1.5 * km).quantity_from_origin().number() == 1501); -static_assert((1 * m + (mean_sea_level + 1.5 * km)).quantity_from_origin().number() == 1501); -static_assert(((mean_sea_level + 1 * km) + 1.5 * m).quantity_from_origin().number() == 1001.5); -static_assert((1 * km + (mean_sea_level + 1.5 * m)).quantity_from_origin().number() == 1001.5); -static_assert(((mean_sea_level + 2 * m) - 1.5 * m).quantity_from_origin().number() == 0.5); -static_assert(((mean_sea_level + 1 * km) - 1.5 * m).quantity_from_origin().number() == 998.5); +static_assert(((mean_sea_level + 1 * m) + 1.5 * m).quantity_from_origin().value() == 2.5); +static_assert((1 * m + (mean_sea_level + 1.5 * m)).quantity_from_origin().value() == 2.5); +static_assert(((mean_sea_level + 1 * m) + 1.5 * km).quantity_from_origin().value() == 1501); +static_assert((1 * m + (mean_sea_level + 1.5 * km)).quantity_from_origin().value() == 1501); +static_assert(((mean_sea_level + 1 * km) + 1.5 * m).quantity_from_origin().value() == 1001.5); +static_assert((1 * km + (mean_sea_level + 1.5 * m)).quantity_from_origin().value() == 1001.5); +static_assert(((mean_sea_level + 2 * m) - 1.5 * m).quantity_from_origin().value() == 0.5); +static_assert(((mean_sea_level + 1 * km) - 1.5 * m).quantity_from_origin().value() == 998.5); -static_assert(((mean_sea_level + 2 * m) - (mean_sea_level + 1 * m)).number() == 1); -static_assert(((mean_sea_level + 1 * km) - (mean_sea_level + 1 * m)).number() == 999); -static_assert(((mean_sea_level + 2.5 * m) - (mean_sea_level + 1 * m)).number() == 1.5); -static_assert(((mean_sea_level + 1.5 * km) - (mean_sea_level + 1 * m)).number() == 1499); -static_assert(((mean_sea_level + 2 * m) - (mean_sea_level + 1.5 * m)).number() == 0.5); -static_assert(((mean_sea_level + 1 * km) - (mean_sea_level + 1.5 * m)).number() == 998.5); +static_assert(((mean_sea_level + 2 * m) - (mean_sea_level + 1 * m)).value() == 1); +static_assert(((mean_sea_level + 1 * km) - (mean_sea_level + 1 * m)).value() == 999); +static_assert(((mean_sea_level + 2.5 * m) - (mean_sea_level + 1 * m)).value() == 1.5); +static_assert(((mean_sea_level + 1.5 * km) - (mean_sea_level + 1 * m)).value() == 1499); +static_assert(((mean_sea_level + 2 * m) - (mean_sea_level + 1.5 * m)).value() == 0.5); +static_assert(((mean_sea_level + 1 * km) - (mean_sea_level + 1.5 * m)).value() == 998.5); static_assert((mean_sea_level + 42 * m) - (ground_level + 42 * m) == -42 * m); static_assert((ground_level + 42 * m) - (mean_sea_level + 42 * m) == 42 * m); diff --git a/test/unit_test/static/quantity_test.cpp b/test/unit_test/static/quantity_test.cpp index 259a7036..d4efdd5e 100644 --- a/test/unit_test/static/quantity_test.cpp +++ b/test/unit_test/static/quantity_test.cpp @@ -112,12 +112,12 @@ static_assert(is_same_v::rep, int>); // static member functions //////////////////////////// -static_assert(quantity::zero().number() == 0); -static_assert(quantity::min().number() == std::numeric_limits::lowest()); -static_assert(quantity::max().number() == std::numeric_limits::max()); -static_assert(quantity::zero().number() == 0.0); -static_assert(quantity::min().number() == std::numeric_limits::lowest()); -static_assert(quantity::max().number() == std::numeric_limits::max()); +static_assert(quantity::zero().value() == 0); +static_assert(quantity::min().value() == std::numeric_limits::lowest()); +static_assert(quantity::max().value() == std::numeric_limits::max()); +static_assert(quantity::zero().value() == 0.0); +static_assert(quantity::min().value() == std::numeric_limits::lowest()); +static_assert(quantity::max().value() == std::numeric_limits::max()); ////////////////////////////// @@ -188,21 +188,21 @@ static_assert(std::convertible_to, quantity(123 * m).number() == 123); -static_assert(quantity(2 * km).number() == 2000); -static_assert(quantity(2 * km).number() == 2); -static_assert(quantity(1500 * m).number() == 1.5); +static_assert(quantity(123 * m).value() == 123); +static_assert(quantity(2 * km).value() == 2000); +static_assert(quantity(2 * km).value() == 2); +static_assert(quantity(1500 * m).value() == 1.5); /////////////////////////////////// // converting to a different unit /////////////////////////////////// -static_assert(quantity(2. * km).in(km).number() == 2.); -static_assert(quantity(2. * km).in(m).number() == 2000.); -static_assert(quantity(2000. * m).in(km).number() == 2.); -static_assert(quantity(2 * km).in(km).number() == 2); -static_assert(quantity(2 * km).in(m).number() == 2000); +static_assert(quantity(2. * km).in(km).value() == 2.); +static_assert(quantity(2. * km).in(m).value() == 2000.); +static_assert(quantity(2000. * m).in(km).value() == 2.); +static_assert(quantity(2 * km).in(km).value() == 2); +static_assert(quantity(2 * km).in(m).value() == 2000); #if MP_UNITS_COMP_GCC != 10 || MP_UNITS_COMP_GCC_MINOR > 2 template typename Q> @@ -213,17 +213,17 @@ concept invalid_unit_conversion = requires { static_assert(invalid_unit_conversion); #endif -static_assert(quantity(2. * km).number_in(km) == 2.); -static_assert(quantity(2. * km).number_in(m) == 2000.); -static_assert(quantity(2000. * m).number_in(km) == 2.); -static_assert(quantity(2 * km).number_in(km) == 2); -static_assert(quantity(2 * km).number_in(m) == 2000); +static_assert(quantity(2. * km).value_in(km) == 2.); +static_assert(quantity(2. * km).value_in(m) == 2000.); +static_assert(quantity(2000. * m).value_in(km) == 2.); +static_assert(quantity(2 * km).value_in(km) == 2); +static_assert(quantity(2 * km).value_in(m) == 2000); #if MP_UNITS_COMP_GCC != 10 || MP_UNITS_COMP_GCC_MINOR > 2 template typename Q> concept invalid_getter_with_unit_conversion = requires { - requires !requires { Q(2000 * m).number_in(km); }; // truncating conversion - requires !requires { Q(2 * m).number_in(s); }; // invalid unit + requires !requires { Q(2000 * m).value_in(km); }; // truncating conversion + requires !requires { Q(2 * m).value_in(s); }; // invalid unit }; static_assert(invalid_getter_with_unit_conversion); #endif @@ -302,28 +302,28 @@ static_assert([] { auto l1(1 * m), l2(2 * m); return l2 = l1; }() - .number() == 1); + .value() == 1); static_assert([] { const auto l1(1 * m); auto l2(2 * m); return l2 = l1; }() - .number() == 1); + .value() == 1); static_assert([]() { auto l1(1 * m), l2(2 * m); return l2 = std::move(l1); }() - .number() == 1); + .value() == 1); //////////////////// // unary operators //////////////////// -static_assert((+123 * m).number() == 123); -static_assert((-123 * m).number() == -123); -static_assert((+(-123 * m)).number() == -123); -static_assert((-(-123 * m)).number() == 123); +static_assert((+123 * m).value() == 123); +static_assert((-123 * m).value() == -123); +static_assert((+(-123 * m)).value() == -123); +static_assert((-(-123 * m)).value() == 123); static_assert([](auto v) { auto vv = v++; @@ -342,7 +342,7 @@ static_assert([](auto v) { return std::pair(v, vv); }(123 * m) == std::pair(122 * m, 122 * m)); -static_assert(is_same_v); +static_assert(is_same_v); //////////////////////// @@ -350,29 +350,29 @@ static_assert(is_same_v); //////////////////////// // same type -static_assert((1 * m += 1 * m).number() == 2); -static_assert((2 * m -= 1 * m).number() == 1); -static_assert((1 * m *= 2).number() == 2); -static_assert((2 * m /= 2).number() == 1); -static_assert((1 * m *= 2 * one).number() == 2); -static_assert((2 * m /= 2 * one).number() == 1); -static_assert((7 * m %= 2 * m).number() == 1); +static_assert((1 * m += 1 * m).value() == 2); +static_assert((2 * m -= 1 * m).value() == 1); +static_assert((1 * m *= 2).value() == 2); +static_assert((2 * m /= 2).value() == 1); +static_assert((1 * m *= 2 * one).value() == 2); +static_assert((2 * m /= 2 * one).value() == 1); +static_assert((7 * m %= 2 * m).value() == 1); // different types -static_assert((2.5 * m += 3 * m).number() == 5.5); -static_assert((123 * m += 1 * km).number() == 1123); -static_assert((5.5 * m -= 3 * m).number() == 2.5); -static_assert((1123 * m -= 1 * km).number() == 123); -static_assert((2.5 * m *= 3).number() == 7.5); -static_assert((7.5 * m /= 3).number() == 2.5); -static_assert((2.5 * m *= 3 * one).number() == 7.5); -static_assert((7.5 * m /= 3 * one).number() == 2.5); -static_assert((3500 * m %= 1 * km).number() == 500); +static_assert((2.5 * m += 3 * m).value() == 5.5); +static_assert((123 * m += 1 * km).value() == 1123); +static_assert((5.5 * m -= 3 * m).value() == 2.5); +static_assert((1123 * m -= 1 * km).value() == 123); +static_assert((2.5 * m *= 3).value() == 7.5); +static_assert((7.5 * m /= 3).value() == 2.5); +static_assert((2.5 * m *= 3 * one).value() == 7.5); +static_assert((7.5 * m /= 3 * one).value() == 2.5); +static_assert((3500 * m %= 1 * km).value() == 500); -// static_assert((std::uint8_t(255) * m %= 256 * m).number() != [] { std::uint8_t ui(255); return ui %= 256; }()); // +// static_assert((std::uint8_t(255) * m %= 256 * m).value() != [] { std::uint8_t ui(255); return ui %= 256; }()); // // UB // TODO: Fix -static_assert((std::uint8_t(255) * m %= 257 * m).number() != [] { +static_assert((std::uint8_t(255) * m %= 257 * m).value() != [] { std::uint8_t ui(255); return ui %= 257; }()); @@ -382,10 +382,10 @@ static_assert((std::uint8_t(255) * m %= 257 * m).number() != [] { #ifndef MP_UNITS_COMP_MSVC // next two lines trigger conversions warnings // (warning disabled in CMake for this file) -static_assert((22 * m *= 33.33).number() == 733); -static_assert((22 * m /= 3.33).number() == 6); -static_assert((22 * m *= 33.33 * one).number() == 733); -static_assert((22 * m /= 3.33 * one).number() == 6); +static_assert((22 * m *= 33.33).value() == 733); +static_assert((22 * m /= 3.33).value() == 6); +static_assert((22 * m *= 33.33 * one).value() == 733); +static_assert((22 * m /= 3.33 * one).value() == 6); #endif template typename Q> @@ -510,12 +510,12 @@ static_assert(is_of_type<1 * km % (300 * m), quantity>); static_assert(is_of_type<4 * one % (2 * one), quantity>); // check for integral types promotion -static_assert(is_same_v); -static_assert(is_same_v); -static_assert((std::uint8_t(128) * m + std::uint8_t(128) * m).number() == std::uint8_t(128) + std::uint8_t(128)); -static_assert((std::uint8_t(0) * m - std::uint8_t(1) * m).number() == std::uint8_t(0) - std::uint8_t(1)); +static_assert(is_same_v); +static_assert(is_same_v); +static_assert((std::uint8_t(128) * m + std::uint8_t(128) * m).value() == std::uint8_t(128) + std::uint8_t(128)); +static_assert((std::uint8_t(0) * m - std::uint8_t(1) * m).value() == std::uint8_t(0) - std::uint8_t(1)); -static_assert(is_same_v); // different representation types @@ -589,67 +589,67 @@ static_assert(is_of_type<1 * m / (1 * s), quantity>{}, int>>); static_assert(is_of_type<1 * min / (1 * m), quantity>{}, int>>); -static_assert((1 * m + 1 * m).number() == 2); -static_assert((1 * m + 1 * km).number() == 1001); -static_assert((1 * km + 1 * m).number() == 1001); -static_assert((2 * m - 1 * m).number() == 1); -static_assert((1 * km - 1 * m).number() == 999); -static_assert((2 * m * 2).number() == 4); -static_assert((2 * m * (2 * one)).number() == 4); -static_assert((2 * m * (2 * percent)).number() == 4); -static_assert((3 * 3 * m).number() == 9); -static_assert(((3 * one) * (3 * m)).number() == 9); -static_assert(((3 * percent) * (3 * m)).number() == 9); -static_assert((4 * m / 2).number() == 2); -static_assert((4 * m / (2 * one)).number() == 2); -static_assert((4 * m / (2 * percent)).number() == 2); -static_assert((4 * km / (2 * m)).number() == 2); -static_assert((4000 * m / (2 * m)).number() == 2000); +static_assert((1 * m + 1 * m).value() == 2); +static_assert((1 * m + 1 * km).value() == 1001); +static_assert((1 * km + 1 * m).value() == 1001); +static_assert((2 * m - 1 * m).value() == 1); +static_assert((1 * km - 1 * m).value() == 999); +static_assert((2 * m * 2).value() == 4); +static_assert((2 * m * (2 * one)).value() == 4); +static_assert((2 * m * (2 * percent)).value() == 4); +static_assert((3 * 3 * m).value() == 9); +static_assert(((3 * one) * (3 * m)).value() == 9); +static_assert(((3 * percent) * (3 * m)).value() == 9); +static_assert((4 * m / 2).value() == 2); +static_assert((4 * m / (2 * one)).value() == 2); +static_assert((4 * m / (2 * percent)).value() == 2); +static_assert((4 * km / (2 * m)).value() == 2); +static_assert((4000 * m / (2 * m)).value() == 2000); -static_assert((1.5 * m + 1 * m).number() == 2.5); -static_assert((1.5 * m + 1 * km).number() == 1001.5); -static_assert((1.5 * km + 1 * m).number() == 1501); -static_assert((2.5 * m - 1 * m).number() == 1.5); -static_assert((1.5 * km - 1 * m).number() == 1499); -static_assert((2.5 * m * 2).number() == 5); -static_assert((2.5 * m * (2 * one)).number() == 5); -static_assert((2.5 * m * (2 * percent)).number() == 5); -static_assert((2.5L * (2 * m)).number() == 5); -static_assert((2.5L * one * (2 * m)).number() == 5); -static_assert((2.5L * percent * (2 * m)).number() == 5); -static_assert((5. * m / 2).number() == 2.5); -static_assert((5. * m / (2 * one)).number() == 2.5); -static_assert((5. * m / (2 * percent)).number() == 2.5); -static_assert((5. * km / (2 * m)).number() == 2.5); -static_assert((5000. * m / (2 * m)).number() == 2500); +static_assert((1.5 * m + 1 * m).value() == 2.5); +static_assert((1.5 * m + 1 * km).value() == 1001.5); +static_assert((1.5 * km + 1 * m).value() == 1501); +static_assert((2.5 * m - 1 * m).value() == 1.5); +static_assert((1.5 * km - 1 * m).value() == 1499); +static_assert((2.5 * m * 2).value() == 5); +static_assert((2.5 * m * (2 * one)).value() == 5); +static_assert((2.5 * m * (2 * percent)).value() == 5); +static_assert((2.5L * (2 * m)).value() == 5); +static_assert((2.5L * one * (2 * m)).value() == 5); +static_assert((2.5L * percent * (2 * m)).value() == 5); +static_assert((5. * m / 2).value() == 2.5); +static_assert((5. * m / (2 * one)).value() == 2.5); +static_assert((5. * m / (2 * percent)).value() == 2.5); +static_assert((5. * km / (2 * m)).value() == 2.5); +static_assert((5000. * m / (2 * m)).value() == 2500); -static_assert((1 * m + 1.5 * m).number() == 2.5); -static_assert((1 * m + 1.5 * km).number() == 1501); -static_assert((1 * km + 1.5 * m).number() == 1001.5); -static_assert((2 * m - 1.5 * m).number() == 0.5); -static_assert((1 * km - 1.5 * m).number() == 998.5); -static_assert((2 * m * 2.5L).number() == 5); -static_assert((2 * m * (2.5L * one)).number() == 5); -static_assert((2 * m * (2.5L * percent)).number() == 5); -static_assert((2 * 2.5 * m).number() == 5); -static_assert((2 * one * (2.5 * m)).number() == 5); -static_assert((2 * percent * (2.5 * m)).number() == 5); -static_assert((5 * m / 2.5L).number() == 2); -static_assert((5 * m / (2.5L * one)).number() == 2); -static_assert((5 * m / (2.5L * percent)).number() == 2); -static_assert((5 * km / (2.5 * m)).number() == 2); -static_assert((5000 * m / (2.5 * m)).number() == 2000); +static_assert((1 * m + 1.5 * m).value() == 2.5); +static_assert((1 * m + 1.5 * km).value() == 1501); +static_assert((1 * km + 1.5 * m).value() == 1001.5); +static_assert((2 * m - 1.5 * m).value() == 0.5); +static_assert((1 * km - 1.5 * m).value() == 998.5); +static_assert((2 * m * 2.5L).value() == 5); +static_assert((2 * m * (2.5L * one)).value() == 5); +static_assert((2 * m * (2.5L * percent)).value() == 5); +static_assert((2 * 2.5 * m).value() == 5); +static_assert((2 * one * (2.5 * m)).value() == 5); +static_assert((2 * percent * (2.5 * m)).value() == 5); +static_assert((5 * m / 2.5L).value() == 2); +static_assert((5 * m / (2.5L * one)).value() == 2); +static_assert((5 * m / (2.5L * percent)).value() == 2); +static_assert((5 * km / (2.5 * m)).value() == 2); +static_assert((5000 * m / (2.5 * m)).value() == 2000); -static_assert((7 * m % (2 * m)).number() == 1); -static_assert((7 * km % (2000 * m)).number() == 1000); -static_assert((1300 * m % (1 * km)).number() == 300); -static_assert((7 * one % (2 * one)).number() == 1); +static_assert((7 * m % (2 * m)).value() == 1); +static_assert((7 * km % (2000 * m)).value() == 1000); +static_assert((1300 * m % (1 * km)).value() == 300); +static_assert((7 * one % (2 * one)).value() == 1); static_assert((10 * m2 * (10 * m2)) / (50 * m2) == 2 * m2); -static_assert((10 * km / (5 * m)).number() == 2); -static_assert((10 * km / (5 * m)).in(one).number() == 2000); -static_assert((10 * s * (2 * kHz)).number() == 20); +static_assert((10 * km / (5 * m)).value() == 2); +static_assert((10 * km / (5 * m)).in(one).value() == 2000); +static_assert((10 * s * (2 * kHz)).value() == 20); // commutativity and associativity static_assert(10 * isq::length[si::metre] / (2 * isq::time[s]) + 5 * isq::speed[m / s] == 10 * isq::speed[m / s]); @@ -733,12 +733,12 @@ static_assert(is_same_v); static_assert(1 * one - 30 * percent == (100 - 30) * percent); static_assert(1 * one + 30 * percent == (100 + 30) * percent); -static_assert(is_same_v); -static_assert(is_same_v); -static_assert((std::uint8_t(128) * one + std::uint8_t(128) * one).number() == std::uint8_t(128) + std::uint8_t(128)); -static_assert((std::uint8_t(0) * one - std::uint8_t(1) * one).number() == std::uint8_t(0) - std::uint8_t(1)); +static_assert(is_same_v); +static_assert(is_same_v); +static_assert((std::uint8_t(128) * one + std::uint8_t(128) * one).value() == std::uint8_t(128) + std::uint8_t(128)); +static_assert((std::uint8_t(0) * one - std::uint8_t(1) * one).value() == std::uint8_t(0) - std::uint8_t(1)); -static_assert(is_same_v); static_assert(2 * one * (1 * m) == 2 * m); @@ -872,20 +872,20 @@ static_assert(!(123 * km >= 321'000 * m)); static_assert(is_of_type<10 * km / (5 * km), quantity>); -static_assert((50. * m / (100. * m)).in(percent).number() == 50); +static_assert((50. * m / (100. * m)).in(percent).value() == 50); static_assert(50. * m / (100. * m) == 50 * percent); -static_assert((50. * percent).in(one).number() == 0.5); +static_assert((50. * percent).in(one).value() == 0.5); ////////////////// // value_cast ////////////////// -static_assert(value_cast(2 * km).number() == 2000); -static_assert(value_cast(2000 * m).number() == 2); -static_assert(value_cast(1.23 * m).number() == 1); -static_assert(value_cast(2000.0 * m / (3600.0 * s)).number() == 2); +static_assert(value_cast(2 * km).value() == 2000); +static_assert(value_cast(2000 * m).value() == 2); +static_assert(value_cast(1.23 * m).value() == 1); +static_assert(value_cast(2000.0 * m / (3600.0 * s)).value() == 2); ////////////////// // quantity_cast