diff --git a/src/naive/naive_vec4.h b/src/naive/naive_vec4.h index 1e37c52..8b53440 100644 --- a/src/naive/naive_vec4.h +++ b/src/naive/naive_vec4.h @@ -74,6 +74,11 @@ private: return std::sqrt(dot3(v, v)); } +[[nodiscard]] inline float magnitude3_sq(vec4 v) noexcept +{ + return dot3(v, v); +} + [[nodiscard]] inline vec4 norm3(vec4 v) noexcept { const float inv = 1.0f / magnitude3(v); // normalize xyz, keep w diff --git a/src/tests/naive_tests.cpp b/src/tests/naive_tests.cpp index 8378006..26caae5 100644 --- a/src/tests/naive_tests.cpp +++ b/src/tests/naive_tests.cpp @@ -123,6 +123,24 @@ TEST(naive_vec4, magnitude_b) EXPECT_FLOAT_EQ(check, result); } +TEST(naive_vec4, magnitude3_sq_a) +{ + vec4 a = { 1.0f, 0.0f, 0.0f, 0.0f }; + float check = 1.0f; + float result = magnitude3_sq(a); + + EXPECT_FLOAT_EQ(check, result); +} + +TEST(naive_vec4, magnitude3_sq_b) +{ + vec4 a = { 1.0f, 0.0f, 1.0f, 1.0f }; + float check = 2.0f; + float result = magnitude3_sq(a); + + EXPECT_FLOAT_EQ(check, result); +} + TEST(naive_vec4, expression_a) { vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f }; diff --git a/src/tests/vec4_tests.cpp b/src/tests/vec4_tests.cpp index 98f83a8..6b1b8b7 100644 --- a/src/tests/vec4_tests.cpp +++ b/src/tests/vec4_tests.cpp @@ -121,6 +121,24 @@ TEST(vec4, magnitude_b) EXPECT_FLOAT_EQ(check, result); } +TEST(vec4, magnitude3_sq_a) +{ + vec4 a = { 1.0f, 0.0f, 0.0f, 0.0f }; + float check = 1.0f; + float result = magnitude3_sq(a); + + EXPECT_FLOAT_EQ(check, result); +} + +TEST(vec4, magnitude3_sq_b) +{ + vec4 a = { 1.0f, 0.0f, 1.0f, 1.0f }; + float check = 2.0f; + float result = magnitude3_sq(a); + + EXPECT_FLOAT_EQ(check, result); +} + TEST(vec4, expression_a) { vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f };