diff --git a/test/unit_test/runtime/linear_algebra_test.cpp b/test/unit_test/runtime/linear_algebra_test.cpp index ad9fb31f..77f023ef 100644 --- a/test/unit_test/runtime/linear_algebra_test.cpp +++ b/test/unit_test/runtime/linear_algebra_test.cpp @@ -58,21 +58,21 @@ using namespace mp_units::si::unit_symbols; template Q> requires(Q::quantity_spec.character == quantity_character::vector) && (QS.character == quantity_character::scalar) -[[nodiscard]] QuantityOf auto get_magnitude(const Q& q) +[[nodiscard]] constexpr QuantityOf auto get_magnitude(const Q& q) { const auto& v = q.numerical_value_ref_in(q.unit); - return hypot(v(0) * QS[q.unit], v(1) * QS[q.unit], v(2) * QS[q.unit]); + return hypot(v(0) * QS[Q::unit], v(1) * QS[Q::unit], v(2) * QS[Q::unit]); } template T> requires(T::quantity_spec.character == quantity_character::vector) && (QS.character == quantity_character::scalar) -[[nodiscard]] QuantityOf auto get_magnitude(const vector& v) +[[nodiscard]] constexpr QuantityOf auto get_magnitude(const vector& v) { return hypot(QS(v(0)), QS(v(1)), QS(v(2))); } template -[[nodiscard]] vector cross_product(const vector& a, const vector& b) +[[nodiscard]] constexpr vector cross_product(const vector& a, const vector& b) { return {a(1) * b(2) - a(2) * b(1), a(2) * b(0) - a(0) * b(2), a(0) * b(1) - a(1) * b(0)}; } @@ -80,7 +80,7 @@ template template requires is_vector && is_vector && requires(typename Q1::rep v1, typename Q2::rep v2) { cross_product(v1, v2); } -[[nodiscard]] QuantityOf auto cross_product(const Q1& q1, const Q2& q2) +[[nodiscard]] constexpr QuantityOf auto cross_product(const Q1& q1, const Q2& q2) { return cross_product(q1.numerical_value_ref_in(q1.unit), q2.numerical_value_ref_in(q2.unit)) * (Q1::reference * Q2::reference);