Add naive implementation and tests
This commit is contained in:
parent
7f0d686a64
commit
0047c7b6c6
@ -74,6 +74,11 @@ private:
|
|||||||
return std::sqrt(dot3(v, v));
|
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
|
[[nodiscard]] inline vec4 norm3(vec4 v) noexcept
|
||||||
{
|
{
|
||||||
const float inv = 1.0f / magnitude3(v); // normalize xyz, keep w
|
const float inv = 1.0f / magnitude3(v); // normalize xyz, keep w
|
||||||
|
|||||||
@ -123,6 +123,24 @@ TEST(naive_vec4, magnitude_b)
|
|||||||
EXPECT_FLOAT_EQ(check, result);
|
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)
|
TEST(naive_vec4, expression_a)
|
||||||
{
|
{
|
||||||
vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f };
|
vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f };
|
||||||
|
|||||||
@ -121,6 +121,24 @@ TEST(vec4, magnitude_b)
|
|||||||
EXPECT_FLOAT_EQ(check, result);
|
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)
|
TEST(vec4, expression_a)
|
||||||
{
|
{
|
||||||
vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f };
|
vec4 a = { 1.0f, 1.0f, 1.0f, 1.0f };
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user