diff --git a/Userland/Libraries/LibGfx/VectorN.h b/Userland/Libraries/LibGfx/VectorN.h index 7913427d93..64b13f374f 100644 --- a/Userland/Libraries/LibGfx/VectorN.h +++ b/Userland/Libraries/LibGfx/VectorN.h @@ -193,12 +193,11 @@ public: [[nodiscard]] constexpr T length() const { - if constexpr (N == 2) - return AK::hypot(m_data[0] * m_data[0] + m_data[1] * m_data[1]); - else if constexpr (N == 3) - return AK::sqrt(m_data[0] * m_data[0] + m_data[1] * m_data[1] + m_data[2] * m_data[2]); - else - return AK::sqrt(m_data[0] * m_data[0] + m_data[1] * m_data[1] + m_data[2] * m_data[2] + m_data[3] * m_data[3]); + T squared_sum {}; + UNROLL_LOOP + for (auto i = 0u; i < N; ++i) + squared_sum += m_data[i] * m_data[i]; + return AK::sqrt(squared_sum); } [[nodiscard]] constexpr VectorN<2, T> xy() const requires(N >= 3)