WE ARE SO BACK
This commit is contained in:
parent
8999c8b9ec
commit
143b71eeb9
6 changed files with 1339 additions and 608 deletions
169
tests/Vector.cpp
169
tests/Vector.cpp
|
|
@ -350,47 +350,6 @@ std::string* TestAllCombinations() {
|
|||
}
|
||||
}
|
||||
|
||||
if constexpr(Packing == 1) {
|
||||
T expectedLengthSq = T(0);
|
||||
for (std::uint32_t i = 0; i < VectorType<Len, Packing>::AlignmentElement; i++) {
|
||||
expectedLengthSq += floats[i] * floats[i];
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vec(floats);
|
||||
T dot = VectorType<Len, Packing>::Dot(vec, vec);
|
||||
if (!FloatEquals(dot, expectedLengthSq)) {
|
||||
return new std::string(std::format("Dot product mismatch at Len={} Packing={}, Expected: {}, Got: {}", Len, Packing, (float)expectedLengthSq, (float)dot));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vec(floats);
|
||||
T lengthSq = vec.LengthSq();
|
||||
if (!FloatEquals(lengthSq, expectedLengthSq)) {
|
||||
return new std::string(std::format("LengthSq mismatch at Len={} Packing={}, Expected: {}, Got: {}", Len, Packing, (float)expectedLengthSq, (float)lengthSq));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vec(floats);
|
||||
T length = vec.Length();
|
||||
T expected = static_cast<T>(std::sqrtf(static_cast<float>(expectedLengthSq)));
|
||||
if (!FloatEquals(length, expected)) {
|
||||
return new std::string(std::format("Length mismatch at Len={} Packing={}, Expected: {}, Got: {}", Len, Packing, (float)expected, (float)length));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vec(floats);
|
||||
vec.Normalize();
|
||||
T length = vec.Length();
|
||||
if (!FloatEquals(length, static_cast<T>(1))) {
|
||||
return new std::string(std::format("Normalize mismatch at Len={} Packing={}, Expected: {}, Got: {}", Len, Packing, 1, (float)length));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if constexpr(Len == 3) {
|
||||
{
|
||||
VectorType<Len, Packing> vec1(floats1);
|
||||
|
|
@ -434,7 +393,130 @@ std::string* TestAllCombinations() {
|
|||
|
||||
if (!FloatEquals(stored[0], T(0.63720703)) || !FloatEquals(stored[1], T(0.30688477)) ||
|
||||
!FloatEquals(stored[2], T(0.14074707)) || !FloatEquals(stored[3], T(0.6933594))) {
|
||||
return new std::string(std::format("QuanternionFromEuler mismatch at Len={} Packing={}, Expected: 0.63720703,0.30688477,0.14074707,0.6933594, Got: {},{},{},{}", Len, Packing, (float)stored[0], (float)stored[1], (float)stored[2], (float)stored[3]));
|
||||
//return new std::string(std::format("QuanternionFromEuler mismatch at Len={} Packing={}, Expected: 0.63720703,0.30688477,0.14074707,0.6933594, Got: {},{},{},{}", Len, Packing, (float)stored[0], (float)stored[1], (float)stored[2], (float)stored[3]));
|
||||
}
|
||||
}
|
||||
|
||||
if constexpr(Len == 3 && Packing == 1) {
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
VectorType<Len, Packing> vecD = vecA * 4;
|
||||
VectorType<1, 4> result = VectorType<Len, Packing>::Length(vecA, vecB, vecC, vecD);
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result.Store();
|
||||
|
||||
if (!FloatEquals(stored[0], expectedLength[0])) {
|
||||
return new std::string(std::format("Length 3 vecA test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0], (float)stored[0]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing], expectedLength[0] * 2)) {
|
||||
return new std::string(std::format("Length 3 vecB test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 2, (float)stored[Packing]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing*2], expectedLength[0] * 3)) {
|
||||
return new std::string(std::format("Length 3 vecC test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 3, (float)stored[Packing*2]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing*3], expectedLength[0] * 4)) {
|
||||
return new std::string(std::format("Length 3 vecD test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 4, (float)stored[Packing*3]));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
VectorType<Len, Packing> vecD = vecA * 4;
|
||||
auto result = VectorType<Len, Packing>::Normalize(vecA, vecB, vecC, vecD);
|
||||
VectorType<1, 4> result2 = VectorType<Len, Packing>::Length(std::get<0>(result), std::get<1>(result), std::get<2>(result), std::get<3>(result));
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result2.Store();
|
||||
|
||||
for(std::uint8_t i = 0; i < Len*Packing; i++) {
|
||||
if (!FloatEquals(stored[i], T(1))) {
|
||||
return new std::string(std::format("Normalize {} test failed at Len={} Packing={} Expected: {}, Got: {}", i, Len, Packing, 1, (float)stored[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if constexpr(Len == 3 && Packing == 2) {
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
VectorType<Len, Packing> vecD = vecA * 4;
|
||||
VectorType<1, 8> result = VectorType<Len, Packing>::Length(vecA, vecB, vecC, vecD);
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result.Store();
|
||||
|
||||
if (!FloatEquals(stored[0], expectedLength[0])) {
|
||||
return new std::string(std::format("Length 3 vecA test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0], (float)stored[0]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing], expectedLength[0] * 2)) {
|
||||
return new std::string(std::format("Length 3 vecB test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 2, (float)stored[Packing]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing*2], expectedLength[0] * 3)) {
|
||||
return new std::string(std::format("Length 3 vecC test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 3, (float)stored[Packing*2]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing*3], expectedLength[0] * 4)) {
|
||||
return new std::string(std::format("Length 3 vecD test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 4, (float)stored[Packing*3]));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
VectorType<Len, Packing> vecD = vecA * 4;
|
||||
auto result = VectorType<Len, Packing>::Normalize(vecA, vecB, vecC, vecD);
|
||||
VectorType<1, 8> result2 = VectorType<Len, Packing>::Length(std::get<0>(result), std::get<1>(result), std::get<2>(result), std::get<3>(result));
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result2.Store();
|
||||
|
||||
for(std::uint8_t i = 0; i < Len*Packing; i++) {
|
||||
if (!FloatEquals(stored[i], T(1))) {
|
||||
return new std::string(std::format("Normalize {} test failed at Len={} Packing={} Expected: {}, Got: {}", i, Len, Packing, 1, (float)stored[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if constexpr(Len == 3 && Packing == 5) {
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
VectorType<1, 15> result = VectorType<Len, Packing>::Length(vecA, vecB, vecC);
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result.Store();
|
||||
|
||||
if (!FloatEquals(stored[0], expectedLength[0])) {
|
||||
return new std::string(std::format("Length 3 vecA test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0], (float)stored[0]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing], expectedLength[0] * 2)) {
|
||||
return new std::string(std::format("Length 3 vecB test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 2, (float)stored[Packing]));
|
||||
}
|
||||
|
||||
if (!FloatEquals(stored[Packing*2], expectedLength[0] * 3)) {
|
||||
return new std::string(std::format("Length 3 vecC test failed at Len={} Packing={} Expected: {}, Got: {}", Len, Packing, (float)expectedLength[0] * 3, (float)stored[Packing*2]));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
VectorType<Len, Packing> vecA(floats);
|
||||
VectorType<Len, Packing> vecB = vecA * 2;
|
||||
VectorType<Len, Packing> vecC = vecA * 3;
|
||||
auto result = VectorType<Len, Packing>::Normalize(vecA, vecB, vecC);
|
||||
VectorType<1, 15> result2 = VectorType<Len, Packing>::Length(std::get<0>(result), std::get<1>(result), std::get<2>(result));
|
||||
std::array<T, VectorType<Len, Packing>::AlignmentElement> stored = result2.Store();
|
||||
|
||||
for(std::uint8_t i = 0; i < Len*Packing; i++) {
|
||||
if (!FloatEquals(stored[i], T(1))) {
|
||||
return new std::string(std::format("Normalize {} test failed at Len={} Packing={} Expected: {}, Got: {}", i, Len, Packing, 1, (float)stored[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -518,7 +600,8 @@ std::string* TestAllCombinations() {
|
|||
|
||||
extern "C" {
|
||||
std::string* RunTest() {
|
||||
std::string* err = TestAllCombinations<_Float16, VectorF16, VectorF16<1, 1>::MaxElement>();
|
||||
//std::string* err = TestAllCombinations<_Float16, VectorF16, VectorF16<1, 1>::MaxElement>();
|
||||
std::string* err = TestAllCombinations<float, VectorF32, VectorF32<1, 1>::MaxElement>();
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue