Files
libsst/ZTestSuite/Test-SST_Mat44i.cpp
2026-04-03 00:22:39 -05:00

1027 lines
28 KiB
C++

/*
AUTOMATICALLY GENERATED FILE - DO NOT EDIT!
Please change MatrixNxN.py and re-run it
*/
/* Generated with ./MatrixNxN.py n = 4, TYPE = int */
#include "ZUnitTest.hpp"
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <SST/SST_Mat44.h>
#include <SST/SST_Vec4.h>
static const char* testSST_Math_Mat44iAdd();
static const char* testSST_Math_Mat44iAddLocal();
static const char* testSST_Math_Mat44iSubtract();
static const char* testSST_Math_Mat44iSubtractLocal();
static const char* testSST_Math_Mat44iMultiplyElementwise();
static const char* testSST_Math_Mat44iMultiplyElementwiseLocal();
static const char* testSST_Math_Mat44iMultiplyScalar();
static const char* testSST_Math_Mat44iMultiplyScalarLocal();
static const char* testSST_Math_Mat44iMultiplyMatrix();
static const char* testSST_Math_Mat44iMultiplyMatrixLocal();
static const char* testSST_Math_Mat44iMultiplyVector();
static const char* testSST_Math_Mat44iMultiplyVectorLocal();
static const char* testSST_Math_Mat44iTranspose();
static const char* testSST_Math_Mat44iTransposeLocal();
static const char* testSST_Math_Mat44iDeterminant();
static const char* testSST_Math_Mat44iCheckOrthonormal();
// List of unit tests
ZUnitTest SST_Math_Mat44iUnitTests[] =
{
{ "testSST_Math_Mat44iAdd " , testSST_Math_Mat44iAdd },
{ "testSST_Math_Mat44iAddLocal " , testSST_Math_Mat44iAddLocal },
{ "testSST_Math_Mat44iSubtract " , testSST_Math_Mat44iSubtract },
{ "testSST_Math_Mat44iSubtractLocal " , testSST_Math_Mat44iSubtractLocal },
{ "testSST_Math_Mat44iMultiplyElementwise " , testSST_Math_Mat44iMultiplyElementwise },
{ "testSST_Math_Mat44iMultiplyElementwiseLocal " , testSST_Math_Mat44iMultiplyElementwiseLocal },
{ "testSST_Math_Mat44iMultiplyScalar " , testSST_Math_Mat44iMultiplyScalar },
{ "testSST_Math_Mat44iMultiplyScalarLocal " , testSST_Math_Mat44iMultiplyScalarLocal },
{ "testSST_Math_Mat44iMultiplyMatrix " , testSST_Math_Mat44iMultiplyMatrix },
{ "testSST_Math_Mat44iMultiplyMatrixLocal " , testSST_Math_Mat44iMultiplyMatrixLocal },
{ "testSST_Math_Mat44iMultiplyVector " , testSST_Math_Mat44iMultiplyVector },
{ "testSST_Math_Mat44iMultiplyVectorLocal " , testSST_Math_Mat44iMultiplyVectorLocal },
{ "testSST_Math_Mat44iDeterminant " , testSST_Math_Mat44iDeterminant },
{ "testSST_Math_Mat44iCheckOrthonormal " , testSST_Math_Mat44iCheckOrthonormal },
{ "testSST_Math_Mat44iTranspose " , testSST_Math_Mat44iTranspose },
{ "testSST_Math_Mat44iTransposeLocal " , testSST_Math_Mat44iTransposeLocal }
};
DECLARE_ZTESTBLOCK(SST_Math_Mat44i)
/******************************************************************************/
static const char* testSST_Math_Mat44iAdd(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -18;
X.v[1] = -6;
X.v[2] = -4;
X.v[3] = 2;
X.v[4] = -1;
X.v[5] = 18;
X.v[6] = 1;
X.v[7] = -19;
X.v[8] = -5;
X.v[9] = 7;
X.v[10] = -15;
X.v[11] = -20;
X.v[12] = -20;
X.v[13] = 19;
X.v[14] = 15;
X.v[15] = 2;
Y.v[0] = -5;
Y.v[1] = 5;
Y.v[2] = 19;
Y.v[3] = -11;
Y.v[4] = 1;
Y.v[5] = -16;
Y.v[6] = 9;
Y.v[7] = 15;
Y.v[8] = -20;
Y.v[9] = -20;
Y.v[10] = -15;
Y.v[11] = -14;
Y.v[12] = -10;
Y.v[13] = -3;
Y.v[14] = 16;
Y.v[15] = 13;
/*
[[-18 -1 -5 -20]
[ -6 18 7 19]
[ -4 1 -15 15]
[ 2 -19 -20 2]]
[[ -5 1 -20 -10]
[ 5 -16 -20 -3]
[ 19 9 -15 16]
[-11 15 -14 13]]
[[-23 0 -25 -30]
[ -1 2 -13 16]
[ 15 10 -30 31]
[ -9 -4 -34 15]]
*/
SST_Math_Mat44iAdd(&X,&Y,&A);
TASSERT((A.v[0])==(-23),"Entry _a11 failed!");
TASSERT((A.v[4])==(0),"Entry _a12 failed!");
TASSERT((A.v[8])==(-25),"Entry _a13 failed!");
TASSERT((A.v[12])==(-30),"Entry _a14 failed!");
TASSERT((A.v[1])==(-1),"Entry _a21 failed!");
TASSERT((A.v[5])==(2),"Entry _a22 failed!");
TASSERT((A.v[9])==(-13),"Entry _a23 failed!");
TASSERT((A.v[13])==(16),"Entry _a24 failed!");
TASSERT((A.v[2])==(15),"Entry _a31 failed!");
TASSERT((A.v[6])==(10),"Entry _a32 failed!");
TASSERT((A.v[10])==(-30),"Entry _a33 failed!");
TASSERT((A.v[14])==(31),"Entry _a34 failed!");
TASSERT((A.v[3])==(-9),"Entry _a41 failed!");
TASSERT((A.v[7])==(-4),"Entry _a42 failed!");
TASSERT((A.v[11])==(-34),"Entry _a43 failed!");
TASSERT((A.v[15])==(15),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iAddLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -3;
X.v[1] = 8;
X.v[2] = -15;
X.v[3] = 2;
X.v[4] = 7;
X.v[5] = 17;
X.v[6] = 7;
X.v[7] = -4;
X.v[8] = 0;
X.v[9] = 8;
X.v[10] = 13;
X.v[11] = -6;
X.v[12] = 6;
X.v[13] = -1;
X.v[14] = -6;
X.v[15] = -11;
Y.v[0] = 16;
Y.v[1] = -4;
Y.v[2] = 17;
Y.v[3] = 2;
Y.v[4] = -5;
Y.v[5] = 3;
Y.v[6] = -5;
Y.v[7] = -4;
Y.v[8] = -12;
Y.v[9] = -8;
Y.v[10] = 7;
Y.v[11] = -6;
Y.v[12] = 8;
Y.v[13] = 15;
Y.v[14] = 12;
Y.v[15] = 10;
/*
[[ -3 7 0 6]
[ 8 17 8 -1]
[-15 7 13 -6]
[ 2 -4 -6 -11]]
[[ 16 -5 -12 8]
[ -4 3 -8 15]
[ 17 -5 7 12]
[ 2 -4 -6 10]]
[[ 13 2 -12 14]
[ 4 20 0 14]
[ 2 2 20 6]
[ 4 -8 -12 -1]]
*/
SST_Math_Mat44iAddLocal(&X,&Y); /* for accuracy */
TASSERT((X.v[0])==(13),"Entry _a11 failed!");
TASSERT((X.v[4])==(2),"Entry _a12 failed!");
TASSERT((X.v[8])==(-12),"Entry _a13 failed!");
TASSERT((X.v[12])==(14),"Entry _a14 failed!");
TASSERT((X.v[1])==(4),"Entry _a21 failed!");
TASSERT((X.v[5])==(20),"Entry _a22 failed!");
TASSERT((X.v[9])==(0),"Entry _a23 failed!");
TASSERT((X.v[13])==(14),"Entry _a24 failed!");
TASSERT((X.v[2])==(2),"Entry _a31 failed!");
TASSERT((X.v[6])==(2),"Entry _a32 failed!");
TASSERT((X.v[10])==(20),"Entry _a33 failed!");
TASSERT((X.v[14])==(6),"Entry _a34 failed!");
TASSERT((X.v[3])==(4),"Entry _a41 failed!");
TASSERT((X.v[7])==(-8),"Entry _a42 failed!");
TASSERT((X.v[11])==(-12),"Entry _a43 failed!");
TASSERT((X.v[15])==(-1),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iSubtract(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -3;
X.v[1] = -5;
X.v[2] = -8;
X.v[3] = -4;
X.v[4] = -1;
X.v[5] = 17;
X.v[6] = 16;
X.v[7] = 8;
X.v[8] = 14;
X.v[9] = -5;
X.v[10] = 18;
X.v[11] = 12;
X.v[12] = -20;
X.v[13] = -13;
X.v[14] = -4;
X.v[15] = 10;
Y.v[0] = -13;
Y.v[1] = -11;
Y.v[2] = -2;
Y.v[3] = 15;
Y.v[4] = -4;
Y.v[5] = -6;
Y.v[6] = 12;
Y.v[7] = 11;
Y.v[8] = -13;
Y.v[9] = -4;
Y.v[10] = 17;
Y.v[11] = -9;
Y.v[12] = -17;
Y.v[13] = 12;
Y.v[14] = 14;
Y.v[15] = 6;
/*
[[ -3 -1 14 -20]
[ -5 17 -5 -13]
[ -8 16 18 -4]
[ -4 8 12 10]]
[[-13 -4 -13 -17]
[-11 -6 -4 12]
[ -2 12 17 14]
[ 15 11 -9 6]]
[[ 10 3 27 -3]
[ 6 23 -1 -25]
[ -6 4 1 -18]
[-19 -3 21 4]]
*/
SST_Math_Mat44iSubtract(&X,&Y,&A);
TASSERT((A.v[0])==(10),"Entry _a11 failed!");
TASSERT((A.v[4])==(3),"Entry _a12 failed!");
TASSERT((A.v[8])==(27),"Entry _a13 failed!");
TASSERT((A.v[12])==(-3),"Entry _a14 failed!");
TASSERT((A.v[1])==(6),"Entry _a21 failed!");
TASSERT((A.v[5])==(23),"Entry _a22 failed!");
TASSERT((A.v[9])==(-1),"Entry _a23 failed!");
TASSERT((A.v[13])==(-25),"Entry _a24 failed!");
TASSERT((A.v[2])==(-6),"Entry _a31 failed!");
TASSERT((A.v[6])==(4),"Entry _a32 failed!");
TASSERT((A.v[10])==(1),"Entry _a33 failed!");
TASSERT((A.v[14])==(-18),"Entry _a34 failed!");
TASSERT((A.v[3])==(-19),"Entry _a41 failed!");
TASSERT((A.v[7])==(-3),"Entry _a42 failed!");
TASSERT((A.v[11])==(21),"Entry _a43 failed!");
TASSERT((A.v[15])==(4),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iSubtractLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -11;
X.v[1] = -11;
X.v[2] = 15;
X.v[3] = 2;
X.v[4] = 11;
X.v[5] = 17;
X.v[6] = -17;
X.v[7] = 1;
X.v[8] = -13;
X.v[9] = -18;
X.v[10] = -3;
X.v[11] = 6;
X.v[12] = 17;
X.v[13] = -10;
X.v[14] = 16;
X.v[15] = 4;
Y.v[0] = -7;
Y.v[1] = 15;
Y.v[2] = -13;
Y.v[3] = -10;
Y.v[4] = -5;
Y.v[5] = 10;
Y.v[6] = 10;
Y.v[7] = -3;
Y.v[8] = 0;
Y.v[9] = -16;
Y.v[10] = -6;
Y.v[11] = -13;
Y.v[12] = -1;
Y.v[13] = -16;
Y.v[14] = 7;
Y.v[15] = 5;
/*
[[-11 11 -13 17]
[-11 17 -18 -10]
[ 15 -17 -3 16]
[ 2 1 6 4]]
[[ -7 -5 0 -1]
[ 15 10 -16 -16]
[-13 10 -6 7]
[-10 -3 -13 5]]
[[ -4 16 -13 18]
[-26 7 -2 6]
[ 28 -27 3 9]
[ 12 4 19 -1]]
*/
SST_Math_Mat44iSubtractLocal(&X,&Y); /* for accuracy */
TASSERT((X.v[0])==(-4),"Entry _a11 failed!");
TASSERT((X.v[4])==(16),"Entry _a12 failed!");
TASSERT((X.v[8])==(-13),"Entry _a13 failed!");
TASSERT((X.v[12])==(18),"Entry _a14 failed!");
TASSERT((X.v[1])==(-26),"Entry _a21 failed!");
TASSERT((X.v[5])==(7),"Entry _a22 failed!");
TASSERT((X.v[9])==(-2),"Entry _a23 failed!");
TASSERT((X.v[13])==(6),"Entry _a24 failed!");
TASSERT((X.v[2])==(28),"Entry _a31 failed!");
TASSERT((X.v[6])==(-27),"Entry _a32 failed!");
TASSERT((X.v[10])==(3),"Entry _a33 failed!");
TASSERT((X.v[14])==(9),"Entry _a34 failed!");
TASSERT((X.v[3])==(12),"Entry _a41 failed!");
TASSERT((X.v[7])==(4),"Entry _a42 failed!");
TASSERT((X.v[11])==(19),"Entry _a43 failed!");
TASSERT((X.v[15])==(-1),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyElementwise(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -2;
X.v[1] = 16;
X.v[2] = -15;
X.v[3] = 2;
X.v[4] = -16;
X.v[5] = -3;
X.v[6] = -9;
X.v[7] = 18;
X.v[8] = -7;
X.v[9] = 12;
X.v[10] = -14;
X.v[11] = -7;
X.v[12] = 6;
X.v[13] = -7;
X.v[14] = 15;
X.v[15] = 3;
Y.v[0] = 14;
Y.v[1] = 18;
Y.v[2] = -15;
Y.v[3] = 18;
Y.v[4] = -6;
Y.v[5] = 7;
Y.v[6] = 5;
Y.v[7] = -15;
Y.v[8] = -4;
Y.v[9] = -16;
Y.v[10] = -8;
Y.v[11] = 15;
Y.v[12] = 4;
Y.v[13] = -3;
Y.v[14] = 18;
Y.v[15] = -17;
/*
[[ -2 -16 -7 6]
[ 16 -3 12 -7]
[-15 -9 -14 15]
[ 2 18 -7 3]]
[[ 14 -6 -4 4]
[ 18 7 -16 -3]
[-15 5 -8 18]
[ 18 -15 15 -17]]
[[ -28 96 28 24]
[ 288 -21 -192 21]
[ 225 -45 112 270]
[ 36 -270 -105 -51]]
*/
SST_Math_Mat44iMultiplyElementwise(&X, &Y, &A);
TASSERT((A.v[0])==(-28),"Entry _a11 failed!");
TASSERT((A.v[4])==(96),"Entry _a12 failed!");
TASSERT((A.v[8])==(28),"Entry _a13 failed!");
TASSERT((A.v[12])==(24),"Entry _a14 failed!");
TASSERT((A.v[1])==(288),"Entry _a21 failed!");
TASSERT((A.v[5])==(-21),"Entry _a22 failed!");
TASSERT((A.v[9])==(-192),"Entry _a23 failed!");
TASSERT((A.v[13])==(21),"Entry _a24 failed!");
TASSERT((A.v[2])==(225),"Entry _a31 failed!");
TASSERT((A.v[6])==(-45),"Entry _a32 failed!");
TASSERT((A.v[10])==(112),"Entry _a33 failed!");
TASSERT((A.v[14])==(270),"Entry _a34 failed!");
TASSERT((A.v[3])==(36),"Entry _a41 failed!");
TASSERT((A.v[7])==(-270),"Entry _a42 failed!");
TASSERT((A.v[11])==(-105),"Entry _a43 failed!");
TASSERT((A.v[15])==(-51),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyElementwiseLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -11;
X.v[1] = 5;
X.v[2] = 6;
X.v[3] = -1;
X.v[4] = 18;
X.v[5] = -6;
X.v[6] = -6;
X.v[7] = -10;
X.v[8] = -10;
X.v[9] = -5;
X.v[10] = 11;
X.v[11] = -19;
X.v[12] = 15;
X.v[13] = -2;
X.v[14] = -13;
X.v[15] = 16;
Y.v[0] = 4;
Y.v[1] = -2;
Y.v[2] = -8;
Y.v[3] = -4;
Y.v[4] = 6;
Y.v[5] = -7;
Y.v[6] = 11;
Y.v[7] = 19;
Y.v[8] = -1;
Y.v[9] = 17;
Y.v[10] = 15;
Y.v[11] = -17;
Y.v[12] = 17;
Y.v[13] = -5;
Y.v[14] = -2;
Y.v[15] = -17;
/*
[[-11 18 -10 15]
[ 5 -6 -5 -2]
[ 6 -6 11 -13]
[ -1 -10 -19 16]]
[[ 4 6 -1 17]
[ -2 -7 17 -5]
[ -8 11 15 -2]
[ -4 19 -17 -17]]
[[ -44 108 10 255]
[ -10 42 -85 10]
[ -48 -66 165 26]
[ 4 -190 323 -272]]
*/
SST_Math_Mat44iMultiplyElementwiseLocal(&X,&Y);
TASSERT((X.v[0])==(-44),"Entry _a11 failed!");
TASSERT((X.v[4])==(108),"Entry _a12 failed!");
TASSERT((X.v[8])==(10),"Entry _a13 failed!");
TASSERT((X.v[12])==(255),"Entry _a14 failed!");
TASSERT((X.v[1])==(-10),"Entry _a21 failed!");
TASSERT((X.v[5])==(42),"Entry _a22 failed!");
TASSERT((X.v[9])==(-85),"Entry _a23 failed!");
TASSERT((X.v[13])==(10),"Entry _a24 failed!");
TASSERT((X.v[2])==(-48),"Entry _a31 failed!");
TASSERT((X.v[6])==(-66),"Entry _a32 failed!");
TASSERT((X.v[10])==(165),"Entry _a33 failed!");
TASSERT((X.v[14])==(26),"Entry _a34 failed!");
TASSERT((X.v[3])==(4),"Entry _a41 failed!");
TASSERT((X.v[7])==(-190),"Entry _a42 failed!");
TASSERT((X.v[11])==(323),"Entry _a43 failed!");
TASSERT((X.v[15])==(-272),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyScalar(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = 5;
X.v[1] = -18;
X.v[2] = -4;
X.v[3] = 6;
X.v[4] = -18;
X.v[5] = -11;
X.v[6] = -5;
X.v[7] = 19;
X.v[8] = -8;
X.v[9] = -18;
X.v[10] = 0;
X.v[11] = 10;
X.v[12] = 6;
X.v[13] = 8;
X.v[14] = -5;
X.v[15] = -2;
/*
[[ 5 -18 -8 6]
[-18 -11 -18 8]
[ -4 -5 0 -5]
[ 6 19 10 -2]]
[[ 10 -36 -16 12]
[-36 -22 -36 16]
[ -8 -10 0 -10]
[ 12 38 20 -4]]
*/
SST_Math_Mat44iMultiplyScalar(&X,2,&A);
TASSERT((A.v[0])==(10),"Entry _a11 failed!");
TASSERT((A.v[4])==(-36),"Entry _a12 failed!");
TASSERT((A.v[8])==(-16),"Entry _a13 failed!");
TASSERT((A.v[12])==(12),"Entry _a14 failed!");
TASSERT((A.v[1])==(-36),"Entry _a21 failed!");
TASSERT((A.v[5])==(-22),"Entry _a22 failed!");
TASSERT((A.v[9])==(-36),"Entry _a23 failed!");
TASSERT((A.v[13])==(16),"Entry _a24 failed!");
TASSERT((A.v[2])==(-8),"Entry _a31 failed!");
TASSERT((A.v[6])==(-10),"Entry _a32 failed!");
TASSERT((A.v[10])==(0),"Entry _a33 failed!");
TASSERT((A.v[14])==(-10),"Entry _a34 failed!");
TASSERT((A.v[3])==(12),"Entry _a41 failed!");
TASSERT((A.v[7])==(38),"Entry _a42 failed!");
TASSERT((A.v[11])==(20),"Entry _a43 failed!");
TASSERT((A.v[15])==(-4),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyScalarLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -13;
X.v[1] = -8;
X.v[2] = 9;
X.v[3] = 3;
X.v[4] = -18;
X.v[5] = -2;
X.v[6] = -2;
X.v[7] = 3;
X.v[8] = 3;
X.v[9] = 12;
X.v[10] = 5;
X.v[11] = 5;
X.v[12] = 19;
X.v[13] = -14;
X.v[14] = 12;
X.v[15] = 13;
/*
[[-13 -18 3 19]
[ -8 -2 12 -14]
[ 9 -2 5 12]
[ 3 3 5 13]]
[[-26 -36 6 38]
[-16 -4 24 -28]
[ 18 -4 10 24]
[ 6 6 10 26]]
*/
SST_Math_Mat44iMultiplyScalarLocal(&X,2);
TASSERT((X.v[0])==(-26),"Entry _a11 failed!");
TASSERT((X.v[4])==(-36),"Entry _a12 failed!");
TASSERT((X.v[8])==(6),"Entry _a13 failed!");
TASSERT((X.v[12])==(38),"Entry _a14 failed!");
TASSERT((X.v[1])==(-16),"Entry _a21 failed!");
TASSERT((X.v[5])==(-4),"Entry _a22 failed!");
TASSERT((X.v[9])==(24),"Entry _a23 failed!");
TASSERT((X.v[13])==(-28),"Entry _a24 failed!");
TASSERT((X.v[2])==(18),"Entry _a31 failed!");
TASSERT((X.v[6])==(-4),"Entry _a32 failed!");
TASSERT((X.v[10])==(10),"Entry _a33 failed!");
TASSERT((X.v[14])==(24),"Entry _a34 failed!");
TASSERT((X.v[3])==(6),"Entry _a41 failed!");
TASSERT((X.v[7])==(6),"Entry _a42 failed!");
TASSERT((X.v[11])==(10),"Entry _a43 failed!");
TASSERT((X.v[15])==(26),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyMatrix(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -9;
X.v[1] = -18;
X.v[2] = 16;
X.v[3] = 10;
X.v[4] = -18;
X.v[5] = 9;
X.v[6] = -17;
X.v[7] = 19;
X.v[8] = 10;
X.v[9] = 6;
X.v[10] = -4;
X.v[11] = -12;
X.v[12] = 14;
X.v[13] = -2;
X.v[14] = -9;
X.v[15] = -15;
Y.v[0] = -15;
Y.v[1] = -3;
Y.v[2] = 2;
Y.v[3] = 7;
Y.v[4] = -18;
Y.v[5] = -20;
Y.v[6] = -12;
Y.v[7] = -13;
Y.v[8] = 5;
Y.v[9] = -7;
Y.v[10] = -4;
Y.v[11] = 3;
Y.v[12] = 7;
Y.v[13] = -4;
Y.v[14] = 8;
Y.v[15] = 9;
/*
X
[[ -9 -18 10 14]
[-18 9 6 -2]
[ 16 -17 -4 -9]
[ 10 19 -12 -15]]
Y
[[-15 -18 5 7]
[ -3 -20 -7 -4]
[ 2 -12 -4 8]
[ 7 -13 3 9]]
[[ 307 220 83 215]
[ 241 98 -183 -132]
[-260 217 188 67]
[-336 -221 -80 -237]]
*/
SST_Math_Mat44iMultiplyMatrix(&X,&Y,&A);
TASSERT((A.v[0])==(307),"Entry _a11 failed!");
TASSERT((A.v[4])==(220),"Entry _a12 failed!");
TASSERT((A.v[8])==(83),"Entry _a13 failed!");
TASSERT((A.v[12])==(215),"Entry _a14 failed!");
TASSERT((A.v[1])==(241),"Entry _a21 failed!");
TASSERT((A.v[5])==(98),"Entry _a22 failed!");
TASSERT((A.v[9])==(-183),"Entry _a23 failed!");
TASSERT((A.v[13])==(-132),"Entry _a24 failed!");
TASSERT((A.v[2])==(-260),"Entry _a31 failed!");
TASSERT((A.v[6])==(217),"Entry _a32 failed!");
TASSERT((A.v[10])==(188),"Entry _a33 failed!");
TASSERT((A.v[14])==(67),"Entry _a34 failed!");
TASSERT((A.v[3])==(-336),"Entry _a41 failed!");
TASSERT((A.v[7])==(-221),"Entry _a42 failed!");
TASSERT((A.v[11])==(-80),"Entry _a43 failed!");
TASSERT((A.v[15])==(-237),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyMatrixLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -3;
X.v[1] = -19;
X.v[2] = 4;
X.v[3] = -1;
X.v[4] = 11;
X.v[5] = 15;
X.v[6] = 11;
X.v[7] = 4;
X.v[8] = -2;
X.v[9] = 2;
X.v[10] = -4;
X.v[11] = -13;
X.v[12] = -17;
X.v[13] = -10;
X.v[14] = -15;
X.v[15] = 1;
Y.v[0] = 16;
Y.v[1] = -9;
Y.v[2] = 2;
Y.v[3] = -2;
Y.v[4] = -19;
Y.v[5] = -20;
Y.v[6] = 15;
Y.v[7] = 6;
Y.v[8] = 7;
Y.v[9] = -16;
Y.v[10] = 11;
Y.v[11] = 7;
Y.v[12] = -11;
Y.v[13] = -3;
Y.v[14] = -18;
Y.v[15] = 12;
/*
X
[[ -3 11 -2 -17]
[-19 15 2 -10]
[ 4 11 -4 -15]
[ -1 4 -13 1]]
Y
[[ 16 -19 7 -11]
[ -9 -20 -16 -3]
[ 2 15 11 -18]
[ -2 6 7 12]]
X
[[-117 -295 -338 -168]
[-415 31 -421 8]
[ -13 -446 -297 -185]
[ -80 -250 -207 245]]
*/
SST_Math_Mat44iMultiplyMatrixLocal(&X,&Y);
TASSERT((X.v[0])==(-117),"Entry _a11 failed!");
TASSERT((X.v[4])==(-295),"Entry _a12 failed!");
TASSERT((X.v[8])==(-338),"Entry _a13 failed!");
TASSERT((X.v[12])==(-168),"Entry _a14 failed!");
TASSERT((X.v[1])==(-415),"Entry _a21 failed!");
TASSERT((X.v[5])==(31),"Entry _a22 failed!");
TASSERT((X.v[9])==(-421),"Entry _a23 failed!");
TASSERT((X.v[13])==(8),"Entry _a24 failed!");
TASSERT((X.v[2])==(-13),"Entry _a31 failed!");
TASSERT((X.v[6])==(-446),"Entry _a32 failed!");
TASSERT((X.v[10])==(-297),"Entry _a33 failed!");
TASSERT((X.v[14])==(-185),"Entry _a34 failed!");
TASSERT((X.v[3])==(-80),"Entry _a41 failed!");
TASSERT((X.v[7])==(-250),"Entry _a42 failed!");
TASSERT((X.v[11])==(-207),"Entry _a43 failed!");
TASSERT((X.v[15])==(245),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyVector(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Vec4i v; /* 4 vector */
SST_Vec4i w; /* 4 vector */
/* Resetting test vectors / mats */
v.v[0] = -15;
v.v[1] = -17;
v.v[2] = 14;
v.v[3] = -16;
X.v[0] = -13;
X.v[1] = 8;
X.v[2] = 17;
X.v[3] = 13;
X.v[4] = 6;
X.v[5] = -11;
X.v[6] = -7;
X.v[7] = 14;
X.v[8] = 11;
X.v[9] = -2;
X.v[10] = -19;
X.v[11] = 18;
X.v[12] = -7;
X.v[13] = -2;
X.v[14] = 5;
X.v[15] = -11;
/*
X
[[-13 6 11 -7]
[ 8 -11 -2 -2]
[ 17 -7 -19 5]
[ 13 14 18 -11]]
v
[-15 -17 14 -16]
w
[ 359 71 -482 -5]
*/
SST_Math_Mat44iMultiplyVector(&X,&v,&w);
TASSERT((w.v[0])==(359),"Entry .v[0] failed!");
TASSERT((w.v[1])==(71),"Entry .v[1] failed!");
TASSERT((w.v[2])==(-482),"Entry .v[2] failed!");
TASSERT((w.v[3])==(-5),"Entry .v[3] failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iMultiplyVectorLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Vec4i v; /* 4 vector */
/* Resetting test vectors / mats */
v.v[0] = 7;
v.v[1] = -1;
v.v[2] = 11;
v.v[3] = -12;
X.v[0] = 0;
X.v[1] = 9;
X.v[2] = -19;
X.v[3] = -17;
X.v[4] = 11;
X.v[5] = -18;
X.v[6] = -11;
X.v[7] = -13;
X.v[8] = -1;
X.v[9] = 13;
X.v[10] = -11;
X.v[11] = 2;
X.v[12] = 11;
X.v[13] = -14;
X.v[14] = -15;
X.v[15] = 4;
/*
X
[[ 0 11 -1 11]
[ 9 -18 13 -14]
[-19 -11 -11 -15]
[-17 -13 2 4]]
v
[ 7 -1 11 -12]
v
[-154 392 -63 -132]
*/
SST_Math_Mat44iMultiplyVectorLocal(&X,&v);
TASSERT((v.v[0])==(-154),"Entry .v[0] failed!");
TASSERT((v.v[1])==(392),"Entry .v[1] failed!");
TASSERT((v.v[2])==(-63),"Entry .v[2] failed!");
TASSERT((v.v[3])==(-132),"Entry .v[3] failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iTranspose(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i A; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = 5;
X.v[1] = 3;
X.v[2] = 8;
X.v[3] = 0;
X.v[4] = -14;
X.v[5] = -19;
X.v[6] = -5;
X.v[7] = 6;
X.v[8] = 4;
X.v[9] = -12;
X.v[10] = -10;
X.v[11] = -1;
X.v[12] = -14;
X.v[13] = 15;
X.v[14] = -2;
X.v[15] = -15;
SST_Math_Mat44iTranspose(&X,&A);
TASSERT((A.v[0])==(5),"Entry _a11 failed!");
TASSERT((A.v[4])==(3),"Entry _a12 failed!");
TASSERT((A.v[8])==(8),"Entry _a13 failed!");
TASSERT((A.v[12])==(0),"Entry _a14 failed!");
TASSERT((A.v[1])==(-14),"Entry _a21 failed!");
TASSERT((A.v[5])==(-19),"Entry _a22 failed!");
TASSERT((A.v[9])==(-5),"Entry _a23 failed!");
TASSERT((A.v[13])==(6),"Entry _a24 failed!");
TASSERT((A.v[2])==(4),"Entry _a31 failed!");
TASSERT((A.v[6])==(-12),"Entry _a32 failed!");
TASSERT((A.v[10])==(-10),"Entry _a33 failed!");
TASSERT((A.v[14])==(-1),"Entry _a34 failed!");
TASSERT((A.v[3])==(-14),"Entry _a41 failed!");
TASSERT((A.v[7])==(15),"Entry _a42 failed!");
TASSERT((A.v[11])==(-2),"Entry _a43 failed!");
TASSERT((A.v[15])==(-15),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iTransposeLocal(){
SST_Mat44i X; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = 1;
X.v[1] = -15;
X.v[2] = 18;
X.v[3] = 2;
X.v[4] = 8;
X.v[5] = -18;
X.v[6] = 17;
X.v[7] = -5;
X.v[8] = 1;
X.v[9] = 13;
X.v[10] = -1;
X.v[11] = 4;
X.v[12] = -1;
X.v[13] = -17;
X.v[14] = 19;
X.v[15] = -13;
SST_Math_Mat44iTransposeLocal(&X);
TASSERT((X.v[0])==(1),"Entry _a11 failed!");
TASSERT((X.v[4])==(-15),"Entry _a12 failed!");
TASSERT((X.v[8])==(18),"Entry _a13 failed!");
TASSERT((X.v[12])==(2),"Entry _a14 failed!");
TASSERT((X.v[1])==(8),"Entry _a21 failed!");
TASSERT((X.v[5])==(-18),"Entry _a22 failed!");
TASSERT((X.v[9])==(17),"Entry _a23 failed!");
TASSERT((X.v[13])==(-5),"Entry _a24 failed!");
TASSERT((X.v[2])==(1),"Entry _a31 failed!");
TASSERT((X.v[6])==(13),"Entry _a32 failed!");
TASSERT((X.v[10])==(-1),"Entry _a33 failed!");
TASSERT((X.v[14])==(4),"Entry _a34 failed!");
TASSERT((X.v[3])==(-1),"Entry _a41 failed!");
TASSERT((X.v[7])==(-17),"Entry _a42 failed!");
TASSERT((X.v[11])==(19),"Entry _a43 failed!");
TASSERT((X.v[15])==(-13),"Entry _a44 failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iCheckOrthonormal(){
SST_Mat44i X; /* 4 x 4 matrix */
SST_Mat44i Y; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = -17;
X.v[1] = 12;
X.v[2] = -20;
X.v[3] = -11;
X.v[4] = 4;
X.v[5] = 12;
X.v[6] = 0;
X.v[7] = 17;
X.v[8] = 6;
X.v[9] = -14;
X.v[10] = -7;
X.v[11] = 1;
X.v[12] = -19;
X.v[13] = 18;
X.v[14] = 13;
X.v[15] = -11;
Y.v[0] = 7;
Y.v[1] = 0;
Y.v[2] = 7;
Y.v[3] = -14;
Y.v[4] = 0;
Y.v[5] = 7;
Y.v[6] = -13;
Y.v[7] = -14;
Y.v[8] = -16;
Y.v[9] = -13;
Y.v[10] = 16;
Y.v[11] = 9;
Y.v[12] = 2;
Y.v[13] = 5;
Y.v[14] = 6;
Y.v[15] = -7;
X.v[0] = (int)1;
X.v[1] = (int)0;
X.v[2] = (int)0;
X.v[3] = (int)0;
X.v[4] = (int)0;
X.v[5] = (int)1;
X.v[6] = (int)0;
X.v[7] = (int)0;
X.v[8] = (int)0;
X.v[9] = (int)0;
X.v[10] = (int)1;
X.v[11] = (int)0;
X.v[12] = (int)0;
X.v[13] = (int)0;
X.v[14] = (int)0;
X.v[15] = (int)1;
Y.v[0] = (int)1;
Y.v[1] = (int)0;
Y.v[2] = (int)0;
Y.v[3] = (int)0;
Y.v[4] = (int)0;
Y.v[5] = (int)1;
Y.v[6] = (int)0;
Y.v[7] = (int)0;
Y.v[8] = (int)0;
Y.v[9] = (int)0;
Y.v[10] = (int)1;
Y.v[11] = (int)0;
Y.v[12] = (int)0;
Y.v[13] = (int)0;
Y.v[14] = (int)0;
Y.v[15] = (int)1;
Y.v[3] = (int)1; /* Will cause Y to be fail */
/* Check Positive Test */
TASSERT(SST_Math_Mat44iCheckOrthonormal(&X),"CheckOrthonormal failed when it should have passed");
/* Check Negative Test */
TASSERT(!SST_Math_Mat44iCheckOrthonormal(&Y),"CheckOrthonormal succeeded when it should have failed");
return ZTEST_SUCCESS;
}
/******************************************************************************/
static const char* testSST_Math_Mat44iDeterminant(){
SST_Mat44i X; /* 4 x 4 matrix */
/* Resetting test vectors / mats */
X.v[0] = 13;
X.v[1] = -8;
X.v[2] = -17;
X.v[3] = -8;
X.v[4] = 15;
X.v[5] = -12;
X.v[6] = 4;
X.v[7] = -14;
X.v[8] = 16;
X.v[9] = -4;
X.v[10] = 4;
X.v[11] = 18;
X.v[12] = 4;
X.v[13] = 5;
X.v[14] = 17;
X.v[15] = -15;
/* det(X) =
123298.0
*/
int result = SST_Math_Mat44iDeterminant(&X);
TASSERT(abs( (result)/(123297) - 1 ) <= 100*0,"Determinant failed!");
return ZTEST_SUCCESS;
}
/******************************************************************************/