/* 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 #include #include #include #include #include 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; } /******************************************************************************/