1436 lines
65 KiB
C++
1436 lines
65 KiB
C++
/*
|
|
AUTOMATICALLY GENERATED FILE - DO NOT EDIT!
|
|
Please change MatrixNxN.py and re-run it
|
|
*/
|
|
/* Generated with ./MatrixNxN.py n = 4, TYPE = float */
|
|
|
|
#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_Mat44fAdd();
|
|
static const char* testSST_Math_Mat44fAddLocal();
|
|
static const char* testSST_Math_Mat44fSubtract();
|
|
static const char* testSST_Math_Mat44fSubtractLocal();
|
|
static const char* testSST_Math_Mat44fMultiplyElementwise();
|
|
static const char* testSST_Math_Mat44fMultiplyElementwiseLocal();
|
|
static const char* testSST_Math_Mat44fMultiplyScalar();
|
|
static const char* testSST_Math_Mat44fMultiplyScalarLocal();
|
|
static const char* testSST_Math_Mat44fMultiplyMatrix();
|
|
static const char* testSST_Math_Mat44fMultiplyMatrixLocal();
|
|
static const char* testSST_Math_Mat44fMultiplyVector();
|
|
static const char* testSST_Math_Mat44fMultiplyVectorLocal();
|
|
static const char* testSST_Math_Mat44fTranspose();
|
|
static const char* testSST_Math_Mat44fTransposeLocal();
|
|
static const char* testSST_Math_Mat44fDeterminant();
|
|
static const char* testSST_Math_Mat44fCheckOrthonormal();
|
|
static const char* testSST_Math_Mat44fInvert();
|
|
static const char* testSST_Math_Mat44fInvertLocal();
|
|
static const char* testSST_Math_Mat44fCreateLU();
|
|
static const char* testSST_Math_Mat44fCreateLULocal();
|
|
static const char* testSST_Math_Mat44fApplyLUMat();
|
|
static const char* testSST_Math_Mat44fApplyLUMatLocal();
|
|
static const char* testSST_Math_Mat44fApplyLUVec();
|
|
static const char* testSST_Math_Mat44fApplyLUVecLocal();
|
|
// List of unit tests
|
|
ZUnitTest SST_Math_Mat44fUnitTests[] =
|
|
{
|
|
{ "testSST_Math_Mat44fAdd " , testSST_Math_Mat44fAdd },
|
|
{ "testSST_Math_Mat44fAddLocal " , testSST_Math_Mat44fAddLocal },
|
|
{ "testSST_Math_Mat44fSubtract " , testSST_Math_Mat44fSubtract },
|
|
{ "testSST_Math_Mat44fSubtractLocal " , testSST_Math_Mat44fSubtractLocal },
|
|
{ "testSST_Math_Mat44fMultiplyElementwise " , testSST_Math_Mat44fMultiplyElementwise },
|
|
{ "testSST_Math_Mat44fMultiplyElementwiseLocal " , testSST_Math_Mat44fMultiplyElementwiseLocal },
|
|
{ "testSST_Math_Mat44fMultiplyScalar " , testSST_Math_Mat44fMultiplyScalar },
|
|
{ "testSST_Math_Mat44fMultiplyScalarLocal " , testSST_Math_Mat44fMultiplyScalarLocal },
|
|
{ "testSST_Math_Mat44fMultiplyMatrix " , testSST_Math_Mat44fMultiplyMatrix },
|
|
{ "testSST_Math_Mat44fMultiplyMatrixLocal " , testSST_Math_Mat44fMultiplyMatrixLocal },
|
|
{ "testSST_Math_Mat44fMultiplyVector " , testSST_Math_Mat44fMultiplyVector },
|
|
{ "testSST_Math_Mat44fMultiplyVectorLocal " , testSST_Math_Mat44fMultiplyVectorLocal },
|
|
{ "testSST_Math_Mat44fDeterminant " , testSST_Math_Mat44fDeterminant },
|
|
{ "testSST_Math_Mat44fCheckOrthonormal " , testSST_Math_Mat44fCheckOrthonormal },
|
|
{ "testSST_Math_Mat44fInvert " , testSST_Math_Mat44fInvert },
|
|
{ "testSST_Math_Mat44fInvertLocal " , testSST_Math_Mat44fInvertLocal },
|
|
{ "testSST_Math_Mat44fCreateLU " , testSST_Math_Mat44fCreateLU },
|
|
{ "testSST_Math_Mat44fCreateLULocal " , testSST_Math_Mat44fCreateLULocal },
|
|
{ "testSST_Math_Mat44fApplyLUMat " , testSST_Math_Mat44fApplyLUMat },
|
|
{ "testSST_Math_Mat44fApplyLUMatLocal " , testSST_Math_Mat44fApplyLUMatLocal },
|
|
{ "testSST_Math_Mat44fApplyLUVec " , testSST_Math_Mat44fApplyLUVec },
|
|
{ "testSST_Math_Mat44fApplyLUVecLocal " , testSST_Math_Mat44fApplyLUVecLocal },
|
|
{ "testSST_Math_Mat44fTranspose " , testSST_Math_Mat44fTranspose },
|
|
{ "testSST_Math_Mat44fTransposeLocal " , testSST_Math_Mat44fTransposeLocal }
|
|
};
|
|
DECLARE_ZTESTBLOCK(SST_Math_Mat44f)
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fAdd(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 3.000000f;
|
|
X.v[1] = -19.000000f;
|
|
X.v[2] = -16.000000f;
|
|
X.v[3] = 9.000000f;
|
|
X.v[4] = 4.000000f;
|
|
X.v[5] = -8.000000f;
|
|
X.v[6] = 13.000000f;
|
|
X.v[7] = 4.000000f;
|
|
X.v[8] = 11.000000f;
|
|
X.v[9] = 16.000000f;
|
|
X.v[10] = -14.000000f;
|
|
X.v[11] = 12.000000f;
|
|
X.v[12] = -19.000000f;
|
|
X.v[13] = 4.000000f;
|
|
X.v[14] = -10.000000f;
|
|
X.v[15] = 0.000000f;
|
|
Y.v[0] = 6.000000f;
|
|
Y.v[1] = -6.000000f;
|
|
Y.v[2] = -19.000000f;
|
|
Y.v[3] = 11.000000f;
|
|
Y.v[4] = -10.000000f;
|
|
Y.v[5] = 17.000000f;
|
|
Y.v[6] = 6.000000f;
|
|
Y.v[7] = -18.000000f;
|
|
Y.v[8] = -2.000000f;
|
|
Y.v[9] = -16.000000f;
|
|
Y.v[10] = -3.000000f;
|
|
Y.v[11] = -17.000000f;
|
|
Y.v[12] = -2.000000f;
|
|
Y.v[13] = -18.000000f;
|
|
Y.v[14] = 1.000000f;
|
|
Y.v[15] = -17.000000f;
|
|
/*
|
|
[[ 3. 4. 11. -19.]
|
|
[-19. -8. 16. 4.]
|
|
[-16. 13. -14. -10.]
|
|
[ 9. 4. 12. 0.]]
|
|
[[ 6. -10. -2. -2.]
|
|
[ -6. 17. -16. -18.]
|
|
[-19. 6. -3. 1.]
|
|
[ 11. -18. -17. -17.]]
|
|
[[ 9. -6. 9. -21.]
|
|
[-25. 9. 0. -14.]
|
|
[-35. 19. -17. -9.]
|
|
[ 20. -14. -5. -17.]]
|
|
*/
|
|
SST_Math_Mat44fAdd(&X,&Y,&A);
|
|
TASSERT(fabsf((A.v[0])-(9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(-6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(-21.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(-25.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(-35.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(-9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(20.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(-5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fAddLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 0.000000f;
|
|
X.v[1] = -6.000000f;
|
|
X.v[2] = 16.000000f;
|
|
X.v[3] = 19.000000f;
|
|
X.v[4] = 2.000000f;
|
|
X.v[5] = -2.000000f;
|
|
X.v[6] = -7.000000f;
|
|
X.v[7] = 10.000000f;
|
|
X.v[8] = 13.000000f;
|
|
X.v[9] = 19.000000f;
|
|
X.v[10] = -11.000000f;
|
|
X.v[11] = -5.000000f;
|
|
X.v[12] = 18.000000f;
|
|
X.v[13] = -3.000000f;
|
|
X.v[14] = 18.000000f;
|
|
X.v[15] = 19.000000f;
|
|
Y.v[0] = 8.000000f;
|
|
Y.v[1] = 1.000000f;
|
|
Y.v[2] = -12.000000f;
|
|
Y.v[3] = 7.000000f;
|
|
Y.v[4] = 6.000000f;
|
|
Y.v[5] = 18.000000f;
|
|
Y.v[6] = -6.000000f;
|
|
Y.v[7] = 19.000000f;
|
|
Y.v[8] = -10.000000f;
|
|
Y.v[9] = -10.000000f;
|
|
Y.v[10] = 15.000000f;
|
|
Y.v[11] = 3.000000f;
|
|
Y.v[12] = 1.000000f;
|
|
Y.v[13] = -14.000000f;
|
|
Y.v[14] = 6.000000f;
|
|
Y.v[15] = 3.000000f;
|
|
/*
|
|
[[ 0. 2. 13. 18.]
|
|
[ -6. -2. 19. -3.]
|
|
[ 16. -7. -11. 18.]
|
|
[ 19. 10. -5. 19.]]
|
|
[[ 8. 6. -10. 1.]
|
|
[ 1. 18. -10. -14.]
|
|
[-12. -6. 15. 6.]
|
|
[ 7. 19. 3. 3.]]
|
|
[[ 8. 8. 3. 19.]
|
|
[ -5. 16. 9. -17.]
|
|
[ 4. -13. 4. 24.]
|
|
[ 26. 29. -2. 22.]]
|
|
*/
|
|
SST_Math_Mat44fAddLocal(&X,&Y); /* for accuracy */
|
|
TASSERT(fabsf((X.v[0])-(8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(-5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(-13.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(24.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(26.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(29.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(22.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fSubtract(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 3.000000f;
|
|
X.v[1] = 15.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 3.000000f;
|
|
X.v[4] = 7.000000f;
|
|
X.v[5] = -17.000000f;
|
|
X.v[6] = -20.000000f;
|
|
X.v[7] = -16.000000f;
|
|
X.v[8] = 1.000000f;
|
|
X.v[9] = 2.000000f;
|
|
X.v[10] = 4.000000f;
|
|
X.v[11] = 3.000000f;
|
|
X.v[12] = 0.000000f;
|
|
X.v[13] = -12.000000f;
|
|
X.v[14] = 0.000000f;
|
|
X.v[15] = -6.000000f;
|
|
Y.v[0] = -11.000000f;
|
|
Y.v[1] = -4.000000f;
|
|
Y.v[2] = -13.000000f;
|
|
Y.v[3] = -9.000000f;
|
|
Y.v[4] = 8.000000f;
|
|
Y.v[5] = 8.000000f;
|
|
Y.v[6] = 17.000000f;
|
|
Y.v[7] = -11.000000f;
|
|
Y.v[8] = 5.000000f;
|
|
Y.v[9] = -9.000000f;
|
|
Y.v[10] = 10.000000f;
|
|
Y.v[11] = -18.000000f;
|
|
Y.v[12] = 16.000000f;
|
|
Y.v[13] = -12.000000f;
|
|
Y.v[14] = -14.000000f;
|
|
Y.v[15] = -9.000000f;
|
|
/*
|
|
[[ 3. 7. 1. 0.]
|
|
[ 15. -17. 2. -12.]
|
|
[ 0. -20. 4. 0.]
|
|
[ 3. -16. 3. -6.]]
|
|
[[-11. 8. 5. 16.]
|
|
[ -4. 8. -9. -12.]
|
|
[-13. 17. 10. -14.]
|
|
[ -9. -11. -18. -9.]]
|
|
[[ 14. -1. -4. -16.]
|
|
[ 19. -25. 11. 0.]
|
|
[ 13. -37. -6. 14.]
|
|
[ 12. -5. 21. 3.]]
|
|
*/
|
|
SST_Math_Mat44fSubtract(&X,&Y,&A);
|
|
TASSERT(fabsf((A.v[0])-(14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(-16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(-25.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(11.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(13.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(-37.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(-6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(12.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(21.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fSubtractLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -17.000000f;
|
|
X.v[1] = 2.000000f;
|
|
X.v[2] = 19.000000f;
|
|
X.v[3] = -9.000000f;
|
|
X.v[4] = 12.000000f;
|
|
X.v[5] = -10.000000f;
|
|
X.v[6] = -16.000000f;
|
|
X.v[7] = -7.000000f;
|
|
X.v[8] = -15.000000f;
|
|
X.v[9] = -17.000000f;
|
|
X.v[10] = -7.000000f;
|
|
X.v[11] = 5.000000f;
|
|
X.v[12] = 15.000000f;
|
|
X.v[13] = -11.000000f;
|
|
X.v[14] = 16.000000f;
|
|
X.v[15] = 13.000000f;
|
|
Y.v[0] = -9.000000f;
|
|
Y.v[1] = -9.000000f;
|
|
Y.v[2] = -11.000000f;
|
|
Y.v[3] = -12.000000f;
|
|
Y.v[4] = 14.000000f;
|
|
Y.v[5] = -17.000000f;
|
|
Y.v[6] = -6.000000f;
|
|
Y.v[7] = -9.000000f;
|
|
Y.v[8] = -14.000000f;
|
|
Y.v[9] = -17.000000f;
|
|
Y.v[10] = 7.000000f;
|
|
Y.v[11] = 6.000000f;
|
|
Y.v[12] = -17.000000f;
|
|
Y.v[13] = -5.000000f;
|
|
Y.v[14] = -2.000000f;
|
|
Y.v[15] = 6.000000f;
|
|
/*
|
|
[[-17. 12. -15. 15.]
|
|
[ 2. -10. -17. -11.]
|
|
[ 19. -16. -7. 16.]
|
|
[ -9. -7. 5. 13.]]
|
|
[[ -9. 14. -14. -17.]
|
|
[ -9. -17. -17. -5.]
|
|
[-11. -6. 7. -2.]
|
|
[-12. -9. 6. 6.]]
|
|
[[ -8. -2. -1. 32.]
|
|
[ 11. 7. 0. -6.]
|
|
[ 30. -10. -14. 18.]
|
|
[ 3. 2. -1. 7.]]
|
|
*/
|
|
SST_Math_Mat44fSubtractLocal(&X,&Y); /* for accuracy */
|
|
TASSERT(fabsf((X.v[0])-(-8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(-2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(32.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(11.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(7.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(30.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(-10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(7.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyElementwise(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -17.000000f;
|
|
X.v[1] = -15.000000f;
|
|
X.v[2] = 19.000000f;
|
|
X.v[3] = -18.000000f;
|
|
X.v[4] = -18.000000f;
|
|
X.v[5] = 6.000000f;
|
|
X.v[6] = -1.000000f;
|
|
X.v[7] = 8.000000f;
|
|
X.v[8] = -11.000000f;
|
|
X.v[9] = -19.000000f;
|
|
X.v[10] = -17.000000f;
|
|
X.v[11] = -12.000000f;
|
|
X.v[12] = -4.000000f;
|
|
X.v[13] = 1.000000f;
|
|
X.v[14] = 9.000000f;
|
|
X.v[15] = 0.000000f;
|
|
Y.v[0] = 2.000000f;
|
|
Y.v[1] = 10.000000f;
|
|
Y.v[2] = -12.000000f;
|
|
Y.v[3] = 1.000000f;
|
|
Y.v[4] = -8.000000f;
|
|
Y.v[5] = 3.000000f;
|
|
Y.v[6] = -16.000000f;
|
|
Y.v[7] = -5.000000f;
|
|
Y.v[8] = -13.000000f;
|
|
Y.v[9] = -18.000000f;
|
|
Y.v[10] = -1.000000f;
|
|
Y.v[11] = -15.000000f;
|
|
Y.v[12] = 4.000000f;
|
|
Y.v[13] = -17.000000f;
|
|
Y.v[14] = 4.000000f;
|
|
Y.v[15] = -7.000000f;
|
|
/*
|
|
[[-17. -18. -11. -4.]
|
|
[-15. 6. -19. 1.]
|
|
[ 19. -1. -17. 9.]
|
|
[-18. 8. -12. 0.]]
|
|
[[ 2. -8. -13. 4.]
|
|
[ 10. 3. -18. -17.]
|
|
[-12. -16. -1. 4.]
|
|
[ 1. -5. -15. -7.]]
|
|
[[ -34. 144. 143. -16.]
|
|
[-150. 18. 342. -17.]
|
|
[-228. 16. 17. 36.]
|
|
[ -18. -40. 180. -0.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyElementwise(&X, &Y, &A);
|
|
TASSERT(fabsf((A.v[0])-(-34.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(144.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(143.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(-16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(-150.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(342.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(-228.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(36.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(-18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-40.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(180.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(-0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyElementwiseLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 11.000000f;
|
|
X.v[1] = -1.000000f;
|
|
X.v[2] = -19.000000f;
|
|
X.v[3] = 2.000000f;
|
|
X.v[4] = -17.000000f;
|
|
X.v[5] = 5.000000f;
|
|
X.v[6] = -3.000000f;
|
|
X.v[7] = -8.000000f;
|
|
X.v[8] = 3.000000f;
|
|
X.v[9] = 11.000000f;
|
|
X.v[10] = 7.000000f;
|
|
X.v[11] = -16.000000f;
|
|
X.v[12] = -17.000000f;
|
|
X.v[13] = -19.000000f;
|
|
X.v[14] = 12.000000f;
|
|
X.v[15] = 18.000000f;
|
|
Y.v[0] = -6.000000f;
|
|
Y.v[1] = 10.000000f;
|
|
Y.v[2] = -19.000000f;
|
|
Y.v[3] = -7.000000f;
|
|
Y.v[4] = 0.000000f;
|
|
Y.v[5] = -5.000000f;
|
|
Y.v[6] = 8.000000f;
|
|
Y.v[7] = -15.000000f;
|
|
Y.v[8] = -5.000000f;
|
|
Y.v[9] = 13.000000f;
|
|
Y.v[10] = 7.000000f;
|
|
Y.v[11] = 9.000000f;
|
|
Y.v[12] = -7.000000f;
|
|
Y.v[13] = 17.000000f;
|
|
Y.v[14] = -6.000000f;
|
|
Y.v[15] = 8.000000f;
|
|
/*
|
|
[[ 11. -17. 3. -17.]
|
|
[ -1. 5. 11. -19.]
|
|
[-19. -3. 7. 12.]
|
|
[ 2. -8. -16. 18.]]
|
|
[[ -6. 0. -5. -7.]
|
|
[ 10. -5. 13. 17.]
|
|
[-19. 8. 7. -6.]
|
|
[ -7. -15. 9. 8.]]
|
|
[[ -66. -0. -15. 119.]
|
|
[ -10. -25. 143. -323.]
|
|
[ 361. -24. 49. -72.]
|
|
[ -14. 120. -144. 144.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyElementwiseLocal(&X,&Y);
|
|
TASSERT(fabsf((X.v[0])-(-66.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(-0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-15.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(119.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(-10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(-25.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(143.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-323.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(361.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(-24.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(49.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(-72.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(120.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-144.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(144.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyScalar(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 12.000000f;
|
|
X.v[1] = 5.000000f;
|
|
X.v[2] = 17.000000f;
|
|
X.v[3] = -19.000000f;
|
|
X.v[4] = -18.000000f;
|
|
X.v[5] = -1.000000f;
|
|
X.v[6] = -13.000000f;
|
|
X.v[7] = -9.000000f;
|
|
X.v[8] = 0.000000f;
|
|
X.v[9] = -17.000000f;
|
|
X.v[10] = 4.000000f;
|
|
X.v[11] = -11.000000f;
|
|
X.v[12] = 14.000000f;
|
|
X.v[13] = -14.000000f;
|
|
X.v[14] = 15.000000f;
|
|
X.v[15] = -12.000000f;
|
|
/*
|
|
[[ 12. -18. 0. 14.]
|
|
[ 5. -1. -17. -14.]
|
|
[ 17. -13. 4. 15.]
|
|
[-19. -9. -11. -12.]]
|
|
[[ 24. -36. 0. 28.]
|
|
[ 10. -2. -34. -28.]
|
|
[ 34. -26. 8. 30.]
|
|
[-38. -18. -22. -24.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyScalar(&X,2.000000f,&A);
|
|
TASSERT(fabsf((A.v[0])-(24.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(-36.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(28.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(-2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(-34.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(-28.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(34.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(-26.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(30.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(-38.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(-22.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(-24.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyScalarLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -18.000000f;
|
|
X.v[1] = 8.000000f;
|
|
X.v[2] = -11.000000f;
|
|
X.v[3] = -10.000000f;
|
|
X.v[4] = 1.000000f;
|
|
X.v[5] = -18.000000f;
|
|
X.v[6] = 4.000000f;
|
|
X.v[7] = 4.000000f;
|
|
X.v[8] = -6.000000f;
|
|
X.v[9] = 6.000000f;
|
|
X.v[10] = -13.000000f;
|
|
X.v[11] = -2.000000f;
|
|
X.v[12] = -8.000000f;
|
|
X.v[13] = -8.000000f;
|
|
X.v[14] = 3.000000f;
|
|
X.v[15] = 8.000000f;
|
|
/*
|
|
[[-18. 1. -6. -8.]
|
|
[ 8. -18. 6. -8.]
|
|
[-11. 4. -13. 3.]
|
|
[-10. 4. -2. 8.]]
|
|
[[-36. 2. -12. -16.]
|
|
[ 16. -36. 12. -16.]
|
|
[-22. 8. -26. 6.]
|
|
[-20. 8. -4. 16.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyScalarLocal(&X,2.000000f);
|
|
TASSERT(fabsf((X.v[0])-(-36.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-12.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(-16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(-36.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(12.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(-22.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(-26.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(-20.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(8.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyMatrix(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -8.000000f;
|
|
X.v[1] = -19.000000f;
|
|
X.v[2] = -18.000000f;
|
|
X.v[3] = 1.000000f;
|
|
X.v[4] = -9.000000f;
|
|
X.v[5] = 18.000000f;
|
|
X.v[6] = 14.000000f;
|
|
X.v[7] = -16.000000f;
|
|
X.v[8] = -19.000000f;
|
|
X.v[9] = 3.000000f;
|
|
X.v[10] = -15.000000f;
|
|
X.v[11] = 8.000000f;
|
|
X.v[12] = 7.000000f;
|
|
X.v[13] = -5.000000f;
|
|
X.v[14] = 11.000000f;
|
|
X.v[15] = 17.000000f;
|
|
Y.v[0] = 2.000000f;
|
|
Y.v[1] = -15.000000f;
|
|
Y.v[2] = -1.000000f;
|
|
Y.v[3] = -3.000000f;
|
|
Y.v[4] = 9.000000f;
|
|
Y.v[5] = 11.000000f;
|
|
Y.v[6] = -1.000000f;
|
|
Y.v[7] = 1.000000f;
|
|
Y.v[8] = -4.000000f;
|
|
Y.v[9] = 5.000000f;
|
|
Y.v[10] = -18.000000f;
|
|
Y.v[11] = -2.000000f;
|
|
Y.v[12] = -14.000000f;
|
|
Y.v[13] = -12.000000f;
|
|
Y.v[14] = -3.000000f;
|
|
Y.v[15] = -13.000000f;
|
|
/*
|
|
X
|
|
[[ -8. -9. -19. 7.]
|
|
[-19. 18. 3. -5.]
|
|
[-18. 14. -15. 11.]
|
|
[ 1. -16. 8. 17.]]
|
|
Y
|
|
[[ 2. 9. -4. -14.]
|
|
[-15. 11. 5. -12.]
|
|
[ -1. -1. -18. -3.]
|
|
[ -3. 1. -2. -13.]]
|
|
[[ 117. -145. 315. 186.]
|
|
[-296. 19. 122. 106.]
|
|
[-264. 18. 390. -14.]
|
|
[ 183. -158. -262. -67.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyMatrix(&X,&Y,&A);
|
|
TASSERT(fabsf((A.v[0])-(117.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(-145.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(315.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(186.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(-296.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(122.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(106.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(-264.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(390.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(183.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-158.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(-262.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(-67.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyMatrixLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = -8.000000f;
|
|
X.v[2] = 4.000000f;
|
|
X.v[3] = -9.000000f;
|
|
X.v[4] = 9.000000f;
|
|
X.v[5] = 4.000000f;
|
|
X.v[6] = 12.000000f;
|
|
X.v[7] = -18.000000f;
|
|
X.v[8] = -5.000000f;
|
|
X.v[9] = 1.000000f;
|
|
X.v[10] = 0.000000f;
|
|
X.v[11] = -3.000000f;
|
|
X.v[12] = -10.000000f;
|
|
X.v[13] = -8.000000f;
|
|
X.v[14] = 18.000000f;
|
|
X.v[15] = 18.000000f;
|
|
Y.v[0] = 16.000000f;
|
|
Y.v[1] = -2.000000f;
|
|
Y.v[2] = -18.000000f;
|
|
Y.v[3] = -20.000000f;
|
|
Y.v[4] = -17.000000f;
|
|
Y.v[5] = 8.000000f;
|
|
Y.v[6] = -18.000000f;
|
|
Y.v[7] = -6.000000f;
|
|
Y.v[8] = 9.000000f;
|
|
Y.v[9] = 17.000000f;
|
|
Y.v[10] = 0.000000f;
|
|
Y.v[11] = -6.000000f;
|
|
Y.v[12] = 1.000000f;
|
|
Y.v[13] = 2.000000f;
|
|
Y.v[14] = -6.000000f;
|
|
Y.v[15] = 18.000000f;
|
|
/*
|
|
X
|
|
[[ 2. 9. -5. -10.]
|
|
[ -8. 4. 1. -8.]
|
|
[ 4. 12. 0. 18.]
|
|
[ -9. -18. -3. 18.]]
|
|
Y
|
|
[[ 16. -17. 9. 1.]
|
|
[ -2. 8. 17. 2.]
|
|
[-18. -18. 0. -6.]
|
|
[-20. -6. -6. 18.]]
|
|
X
|
|
[[ 304. 188. 231. -130.]
|
|
[ 6. 198. 44. -150.]
|
|
[-320. -80. 132. 352.]
|
|
[-414. -45. -495. 297.]]
|
|
*/
|
|
SST_Math_Mat44fMultiplyMatrixLocal(&X,&Y);
|
|
TASSERT(fabsf((X.v[0])-(304.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(188.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(231.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(-130.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(198.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(44.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-150.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(-320.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(-80.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(132.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(352.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(-414.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(-45.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-495.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(297.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyVector(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Vec4f v; /* 4 vector */
|
|
SST_Vec4f w; /* 4 vector */
|
|
/* Resetting test vectors / mats */
|
|
v.v[0] = 13.000000f;
|
|
v.v[1] = 7.000000f;
|
|
v.v[2] = 11.000000f;
|
|
v.v[3] = 14.000000f;
|
|
X.v[0] = -8.000000f;
|
|
X.v[1] = -12.000000f;
|
|
X.v[2] = 18.000000f;
|
|
X.v[3] = -14.000000f;
|
|
X.v[4] = 13.000000f;
|
|
X.v[5] = -19.000000f;
|
|
X.v[6] = 10.000000f;
|
|
X.v[7] = -8.000000f;
|
|
X.v[8] = -20.000000f;
|
|
X.v[9] = -10.000000f;
|
|
X.v[10] = 13.000000f;
|
|
X.v[11] = -1.000000f;
|
|
X.v[12] = -14.000000f;
|
|
X.v[13] = -12.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = -11.000000f;
|
|
/*
|
|
X
|
|
[[ -8. 13. -20. -14.]
|
|
[-12. -19. -10. -12.]
|
|
[ 18. 10. 13. 1.]
|
|
[-14. -8. -1. -11.]]
|
|
v
|
|
[ 13. 7. 11. 14.]
|
|
w
|
|
[-429. -567. 461. -403.]
|
|
*/
|
|
SST_Math_Mat44fMultiplyVector(&X,&v,&w);
|
|
TASSERT(fabsf((w.v[0])-(-429.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[0] failed!");
|
|
TASSERT(fabsf((w.v[1])-(-567.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[1] failed!");
|
|
TASSERT(fabsf((w.v[2])-(461.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[2] failed!");
|
|
TASSERT(fabsf((w.v[3])-(-403.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[3] failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fMultiplyVectorLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Vec4f v; /* 4 vector */
|
|
/* Resetting test vectors / mats */
|
|
v.v[0] = 11.000000f;
|
|
v.v[1] = 4.000000f;
|
|
v.v[2] = -15.000000f;
|
|
v.v[3] = -19.000000f;
|
|
X.v[0] = 3.000000f;
|
|
X.v[1] = -4.000000f;
|
|
X.v[2] = 12.000000f;
|
|
X.v[3] = 19.000000f;
|
|
X.v[4] = 4.000000f;
|
|
X.v[5] = 17.000000f;
|
|
X.v[6] = 4.000000f;
|
|
X.v[7] = 3.000000f;
|
|
X.v[8] = 14.000000f;
|
|
X.v[9] = 8.000000f;
|
|
X.v[10] = 4.000000f;
|
|
X.v[11] = 17.000000f;
|
|
X.v[12] = 15.000000f;
|
|
X.v[13] = -4.000000f;
|
|
X.v[14] = -7.000000f;
|
|
X.v[15] = 17.000000f;
|
|
/*
|
|
X
|
|
[[ 3. 4. 14. 15.]
|
|
[ -4. 17. 8. -4.]
|
|
[ 12. 4. 4. -7.]
|
|
[ 19. 3. 17. 17.]]
|
|
v
|
|
[ 11. 4. -15. -19.]
|
|
v
|
|
[-446. -20. 221. -357.]
|
|
*/
|
|
SST_Math_Mat44fMultiplyVectorLocal(&X,&v);
|
|
TASSERT(fabsf((v.v[0])-(-446.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[0] failed!");
|
|
TASSERT(fabsf((v.v[1])-(-20.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[1] failed!");
|
|
TASSERT(fabsf((v.v[2])-(221.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[2] failed!");
|
|
TASSERT(fabsf((v.v[3])-(-357.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry .v[3] failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fTranspose(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f A; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -5.000000f;
|
|
X.v[1] = 18.000000f;
|
|
X.v[2] = -7.000000f;
|
|
X.v[3] = -18.000000f;
|
|
X.v[4] = 11.000000f;
|
|
X.v[5] = -10.000000f;
|
|
X.v[6] = -9.000000f;
|
|
X.v[7] = -10.000000f;
|
|
X.v[8] = 14.000000f;
|
|
X.v[9] = -11.000000f;
|
|
X.v[10] = 12.000000f;
|
|
X.v[11] = 18.000000f;
|
|
X.v[12] = -14.000000f;
|
|
X.v[13] = -15.000000f;
|
|
X.v[14] = 6.000000f;
|
|
X.v[15] = -13.000000f;
|
|
SST_Math_Mat44fTranspose(&X,&A);
|
|
TASSERT(fabsf((A.v[0])-(-5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((A.v[4])-(18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((A.v[8])-(-7.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((A.v[12])-(-18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((A.v[1])-(11.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((A.v[5])-(-10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((A.v[9])-(-9.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((A.v[13])-(-10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((A.v[2])-(14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((A.v[6])-(-11.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((A.v[10])-(12.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((A.v[14])-(18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((A.v[3])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((A.v[7])-(-15.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((A.v[11])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((A.v[15])-(-13.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fTransposeLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 19.000000f;
|
|
X.v[1] = 5.000000f;
|
|
X.v[2] = -16.000000f;
|
|
X.v[3] = -14.000000f;
|
|
X.v[4] = -17.000000f;
|
|
X.v[5] = 19.000000f;
|
|
X.v[6] = -10.000000f;
|
|
X.v[7] = -20.000000f;
|
|
X.v[8] = 15.000000f;
|
|
X.v[9] = 15.000000f;
|
|
X.v[10] = -5.000000f;
|
|
X.v[11] = -18.000000f;
|
|
X.v[12] = -17.000000f;
|
|
X.v[13] = 17.000000f;
|
|
X.v[14] = 2.000000f;
|
|
X.v[15] = 16.000000f;
|
|
SST_Math_Mat44fTransposeLocal(&X);
|
|
TASSERT(fabsf((X.v[0])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(-14.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(19.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(-10.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(-20.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(15.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(15.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(-5.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(-18.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(-17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(17.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(16.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fCheckOrthonormal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Y; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 6.000000f;
|
|
X.v[1] = 3.000000f;
|
|
X.v[2] = -16.000000f;
|
|
X.v[3] = 11.000000f;
|
|
X.v[4] = -20.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 14.000000f;
|
|
X.v[7] = 12.000000f;
|
|
X.v[8] = 3.000000f;
|
|
X.v[9] = -12.000000f;
|
|
X.v[10] = -16.000000f;
|
|
X.v[11] = 6.000000f;
|
|
X.v[12] = 3.000000f;
|
|
X.v[13] = 13.000000f;
|
|
X.v[14] = 10.000000f;
|
|
X.v[15] = 1.000000f;
|
|
Y.v[0] = -12.000000f;
|
|
Y.v[1] = 0.000000f;
|
|
Y.v[2] = -1.000000f;
|
|
Y.v[3] = -6.000000f;
|
|
Y.v[4] = 18.000000f;
|
|
Y.v[5] = 9.000000f;
|
|
Y.v[6] = -13.000000f;
|
|
Y.v[7] = -1.000000f;
|
|
Y.v[8] = -4.000000f;
|
|
Y.v[9] = -4.000000f;
|
|
Y.v[10] = 12.000000f;
|
|
Y.v[11] = 19.000000f;
|
|
Y.v[12] = -13.000000f;
|
|
Y.v[13] = -4.000000f;
|
|
Y.v[14] = 2.000000f;
|
|
Y.v[15] = 10.000000f;
|
|
/*
|
|
[[-0.29207543 0.67485899 -0.19610436 0.64869124]
|
|
[-0.14603771 -0.05987867 -0.94425398 -0.2889151 ]
|
|
[ 0.77886784 -0.23687853 -0.26374456 0.51738989]
|
|
[-0.53547162 -0.69632494 -0.01913862 0.47753054]]
|
|
[[ 1.00000000e+00 -2.98023224e-08 -2.42143869e-08 5.96046448e-08]
|
|
[ -2.98023224e-08 1.00000000e+00 1.49011612e-08 -2.98023224e-08]
|
|
[ -2.42143869e-08 1.49011612e-08 9.99999940e-01 7.45058060e-09]
|
|
[ 5.96046448e-08 -2.98023224e-08 7.45058060e-09 1.00000000e+00]]
|
|
*/
|
|
/* Set X to orthogonal matrix Q */
|
|
X.v[0] = (float)-0.292075f;
|
|
X.v[1] = (float)-0.146038f;
|
|
X.v[2] = (float)0.778868f;
|
|
X.v[3] = (float)-0.535472f;
|
|
X.v[4] = (float)0.674859f;
|
|
X.v[5] = (float)-0.059879f;
|
|
X.v[6] = (float)-0.236879f;
|
|
X.v[7] = (float)-0.696325f;
|
|
X.v[8] = (float)-0.196104f;
|
|
X.v[9] = (float)-0.944254f;
|
|
X.v[10] = (float)-0.263745f;
|
|
X.v[11] = (float)-0.019139f;
|
|
X.v[12] = (float)0.648691f;
|
|
X.v[13] = (float)-0.288915f;
|
|
X.v[14] = (float)0.517390f;
|
|
X.v[15] = (float)0.477531f;
|
|
/* Check Positive Test */
|
|
TASSERT(SST_Math_Mat44fCheckOrthonormal(&X),"CheckOrthonormal failed when it should have passed");
|
|
/* Check Negative Test */
|
|
TASSERT(!SST_Math_Mat44fCheckOrthonormal(&Y),"CheckOrthonormal succeeded when it should have failed");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fDeterminant(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -6.000000f;
|
|
X.v[1] = -8.000000f;
|
|
X.v[2] = 17.000000f;
|
|
X.v[3] = -17.000000f;
|
|
X.v[4] = 3.000000f;
|
|
X.v[5] = -1.000000f;
|
|
X.v[6] = 14.000000f;
|
|
X.v[7] = -17.000000f;
|
|
X.v[8] = 5.000000f;
|
|
X.v[9] = 12.000000f;
|
|
X.v[10] = -1.000000f;
|
|
X.v[11] = 16.000000f;
|
|
X.v[12] = 18.000000f;
|
|
X.v[13] = 13.000000f;
|
|
X.v[14] = 0.000000f;
|
|
X.v[15] = 13.000000f;
|
|
/* det(X) =
|
|
21323.0
|
|
*/
|
|
float result = SST_Math_Mat44fDeterminant(&X);
|
|
TASSERT(fabsf( (result)/(21323.000000f) - 1.000000f ) <= 100*FLT_EPSILON,"Determinant failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fInvert(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f B; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = -19.000000f;
|
|
X.v[1] = 3.000000f;
|
|
X.v[2] = 17.000000f;
|
|
X.v[3] = 5.000000f;
|
|
X.v[4] = -2.000000f;
|
|
X.v[5] = 16.000000f;
|
|
X.v[6] = 14.000000f;
|
|
X.v[7] = 3.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -11.000000f;
|
|
X.v[10] = -16.000000f;
|
|
X.v[11] = -7.000000f;
|
|
X.v[12] = 5.000000f;
|
|
X.v[13] = 12.000000f;
|
|
X.v[14] = 9.000000f;
|
|
X.v[15] = 9.000000f;
|
|
/*
|
|
[[-0.05553644 -0.000757 -0.01768633 0.04954924]
|
|
[-0.03282637 0.0999243 -0.02904136 -0.08595417]
|
|
[-0.11416971 0.12112036 -0.17018788 0.07212167]
|
|
[-0.04700296 0.06131718 -0.11286215 0.16832978]]
|
|
*/
|
|
SST_Math_Mat44fInvert(&X,&B);
|
|
TASSERT(fabsf((B.v[0])-(-0.055536f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((B.v[1])-(-0.032826f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((B.v[2])-(-0.114170f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((B.v[3])-(-0.047003f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((B.v[4])-(-0.000757f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((B.v[5])-(0.099924f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((B.v[6])-(0.121120f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((B.v[7])-(0.061317f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((B.v[8])-(-0.017686f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((B.v[9])-(-0.029041f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((B.v[10])-(-0.170188f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((B.v[11])-(-0.112862f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((B.v[12])-(0.049549f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((B.v[13])-(-0.085954f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((B.v[14])-(0.072122f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((B.v[15])-(0.168330f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fInvertLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
/* Resetting test vectors / mats */
|
|
X.v[0] = 1.000000f;
|
|
X.v[1] = 7.000000f;
|
|
X.v[2] = 9.000000f;
|
|
X.v[3] = -2.000000f;
|
|
X.v[4] = 10.000000f;
|
|
X.v[5] = -3.000000f;
|
|
X.v[6] = -10.000000f;
|
|
X.v[7] = 8.000000f;
|
|
X.v[8] = -2.000000f;
|
|
X.v[9] = -2.000000f;
|
|
X.v[10] = -9.000000f;
|
|
X.v[11] = 16.000000f;
|
|
X.v[12] = 7.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = -9.000000f;
|
|
X.v[15] = 3.000000f;
|
|
/*
|
|
()
|
|
[[ 0.04525488 0.0651752 0.06680968 0.05138421]
|
|
[ 0.11124732 -0.10389213 0.07845541 0.04505057]
|
|
[-0.04341608 0.03228113 -0.00766166 0.05679845]
|
|
[-0.03493717 0.14832976 -0.12381244 -0.05547043]]
|
|
*/
|
|
SST_Math_Mat44fInvertLocal(&X);
|
|
TASSERT(fabsf((X.v[0])-(0.045255f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a11 failed!");
|
|
TASSERT(fabsf((X.v[1])-(0.111247f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a21 failed!");
|
|
TASSERT(fabsf((X.v[2])-(-0.043416f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a31 failed!");
|
|
TASSERT(fabsf((X.v[3])-(-0.034937f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a41 failed!");
|
|
TASSERT(fabsf((X.v[4])-(0.065175f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a12 failed!");
|
|
TASSERT(fabsf((X.v[5])-(-0.103892f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a22 failed!");
|
|
TASSERT(fabsf((X.v[6])-(0.032281f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a32 failed!");
|
|
TASSERT(fabsf((X.v[7])-(0.148330f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a42 failed!");
|
|
TASSERT(fabsf((X.v[8])-(0.066810f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a13 failed!");
|
|
TASSERT(fabsf((X.v[9])-(0.078455f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a23 failed!");
|
|
TASSERT(fabsf((X.v[10])-(-0.007662f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a33 failed!");
|
|
TASSERT(fabsf((X.v[11])-(-0.123812f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a43 failed!");
|
|
TASSERT(fabsf((X.v[12])-(0.051384f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a14 failed!");
|
|
TASSERT(fabsf((X.v[13])-(0.045051f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a24 failed!");
|
|
TASSERT(fabsf((X.v[14])-(0.056798f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a34 failed!");
|
|
TASSERT(fabsf((X.v[15])-(-0.055470f)) <=100*FLT_EPSILON /* yes this is bad */,"Entry _a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
|
|
/******************************************************************************/
|
|
|
|
static const char* testSST_Math_Mat44fCreateLU(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f LU; /* 4 x 4 matrix */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
SST_Math_Mat44fCreateLU(&X,&LU);
|
|
/*
|
|
[[ 2 -1 -1 1]
|
|
[ 1 0 -1 2]
|
|
[ 0 2 1 1]
|
|
[ 4 2 0 0]]
|
|
*/
|
|
/*
|
|
[[ 2. 0. 0. 0. ]
|
|
[ 1. 0.5 0. 0. ]
|
|
[ 0. 2. 3. 0. ]
|
|
[ 4. 4. 6. -4. ]]
|
|
*/
|
|
/*
|
|
[[ 1. -0.5 -0.5 0.5 ]
|
|
[ 0. 1. -1. 3. ]
|
|
[ 0. 0. 1. -1.66666667]
|
|
[ 0. 0. 0. 1. ]]
|
|
*/
|
|
TASSERT(fabsf((LU.v[0])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a11 failed!");
|
|
TASSERT(fabsf((LU.v[4])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a12 failed!");
|
|
TASSERT(fabsf((LU.v[8])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a13 failed!");
|
|
TASSERT(fabsf((LU.v[12])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a14 failed!");
|
|
TASSERT(fabsf((LU.v[1])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a21 failed!");
|
|
TASSERT(fabsf((LU.v[5])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a22 failed!");
|
|
TASSERT(fabsf((LU.v[9])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a23 failed!");
|
|
TASSERT(fabsf((LU.v[13])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a24 failed!");
|
|
TASSERT(fabsf((LU.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a31 failed!");
|
|
TASSERT(fabsf((LU.v[6])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a32 failed!");
|
|
TASSERT(fabsf((LU.v[10])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a33 failed!");
|
|
TASSERT(fabsf((LU.v[14])-(-1.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a34 failed!");
|
|
TASSERT(fabsf((LU.v[3])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a41 failed!");
|
|
TASSERT(fabsf((LU.v[7])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a42 failed!");
|
|
TASSERT(fabsf((LU.v[11])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a43 failed!");
|
|
TASSERT(fabsf((LU.v[15])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
static const char* testSST_Math_Mat44fCreateLULocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
SST_Math_Mat44fCreateLULocal(&X);
|
|
TASSERT(fabsf((X.v[0])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(-1.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
static const char* testSST_Math_Mat44fApplyLUMat(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f LU; /* 4 x 4 matrix */
|
|
SST_Mat44f I; /* 4 x 4 matrix */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
SST_Math_Mat44fCreateLU(&X,&LU);
|
|
/*
|
|
[[ 2 -1 -1 1]
|
|
[ 1 0 -1 2]
|
|
[ 0 2 1 1]
|
|
[ 4 2 0 0]]
|
|
*/
|
|
/*
|
|
[[ 2. 0. 0. 0. ]
|
|
[ 1. 0.5 0. 0. ]
|
|
[ 0. 2. 3. 0. ]
|
|
[ 4. 4. 6. -4. ]]
|
|
*/
|
|
/*
|
|
[[ 1. -0.5 -0.5 0.5 ]
|
|
[ 0. 1. -1. 3. ]
|
|
[ 0. 0. 1. -1.66666667]
|
|
[ 0. 0. 0. 1. ]]
|
|
*/
|
|
TASSERT(fabsf((LU.v[0])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a11 failed!");
|
|
TASSERT(fabsf((LU.v[4])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a12 failed!");
|
|
TASSERT(fabsf((LU.v[8])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a13 failed!");
|
|
TASSERT(fabsf((LU.v[12])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a14 failed!");
|
|
TASSERT(fabsf((LU.v[1])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a21 failed!");
|
|
TASSERT(fabsf((LU.v[5])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a22 failed!");
|
|
TASSERT(fabsf((LU.v[9])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a23 failed!");
|
|
TASSERT(fabsf((LU.v[13])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a24 failed!");
|
|
TASSERT(fabsf((LU.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a31 failed!");
|
|
TASSERT(fabsf((LU.v[6])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a32 failed!");
|
|
TASSERT(fabsf((LU.v[10])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a33 failed!");
|
|
TASSERT(fabsf((LU.v[14])-(-1.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a34 failed!");
|
|
TASSERT(fabsf((LU.v[3])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a41 failed!");
|
|
TASSERT(fabsf((LU.v[7])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a42 failed!");
|
|
TASSERT(fabsf((LU.v[11])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a43 failed!");
|
|
TASSERT(fabsf((LU.v[15])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a44 failed!");
|
|
SST_Math_Mat44fApplyLUMat(&LU,&X,&I);
|
|
TASSERT(fabsf((I.v[0])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a11 failed!");
|
|
TASSERT(fabsf((I.v[1])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a21 failed!");
|
|
TASSERT(fabsf((I.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a31 failed!");
|
|
TASSERT(fabsf((I.v[3])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a41 failed!");
|
|
TASSERT(fabsf((I.v[4])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a12 failed!");
|
|
TASSERT(fabsf((I.v[5])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a22 failed!");
|
|
TASSERT(fabsf((I.v[6])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a32 failed!");
|
|
TASSERT(fabsf((I.v[7])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a42 failed!");
|
|
TASSERT(fabsf((I.v[8])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a13 failed!");
|
|
TASSERT(fabsf((I.v[9])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a23 failed!");
|
|
TASSERT(fabsf((I.v[10])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a33 failed!");
|
|
TASSERT(fabsf((I.v[11])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a43 failed!");
|
|
TASSERT(fabsf((I.v[12])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a14 failed!");
|
|
TASSERT(fabsf((I.v[13])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a24 failed!");
|
|
TASSERT(fabsf((I.v[14])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a34 failed!");
|
|
TASSERT(fabsf((I.v[15])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"I:Entry I_a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
static const char* testSST_Math_Mat44fApplyLUMatLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f Xinv; /* 4 x 4 matrix */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
Xinv.v[0] = 2.000000f;
|
|
Xinv.v[1] = 1.000000f;
|
|
Xinv.v[2] = 0.000000f;
|
|
Xinv.v[3] = 4.000000f;
|
|
Xinv.v[4] = -1.000000f;
|
|
Xinv.v[5] = 0.000000f;
|
|
Xinv.v[6] = 2.000000f;
|
|
Xinv.v[7] = 2.000000f;
|
|
Xinv.v[8] = -1.000000f;
|
|
Xinv.v[9] = -1.000000f;
|
|
Xinv.v[10] = 1.000000f;
|
|
Xinv.v[11] = 0.000000f;
|
|
Xinv.v[12] = 1.000000f;
|
|
Xinv.v[13] = 2.000000f;
|
|
Xinv.v[14] = 1.000000f;
|
|
Xinv.v[15] = 0.000000f;
|
|
SST_Math_Mat44fCreateLULocal(&X);
|
|
TASSERT(fabsf((X.v[0])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a11 failed!");
|
|
TASSERT(fabsf((X.v[4])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a12 failed!");
|
|
TASSERT(fabsf((X.v[8])-(-0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a13 failed!");
|
|
TASSERT(fabsf((X.v[12])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a14 failed!");
|
|
TASSERT(fabsf((X.v[1])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a21 failed!");
|
|
TASSERT(fabsf((X.v[5])-(0.500000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a22 failed!");
|
|
TASSERT(fabsf((X.v[9])-(-1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a23 failed!");
|
|
TASSERT(fabsf((X.v[13])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a24 failed!");
|
|
TASSERT(fabsf((X.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a31 failed!");
|
|
TASSERT(fabsf((X.v[6])-(2.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a32 failed!");
|
|
TASSERT(fabsf((X.v[10])-(3.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a33 failed!");
|
|
TASSERT(fabsf((X.v[14])-(-1.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"U:Entry B_a34 failed!");
|
|
TASSERT(fabsf((X.v[3])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a41 failed!");
|
|
TASSERT(fabsf((X.v[7])-(4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a42 failed!");
|
|
TASSERT(fabsf((X.v[11])-(6.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a43 failed!");
|
|
TASSERT(fabsf((X.v[15])-(-4.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"L:Entry A_a44 failed!");
|
|
SST_Math_Mat44fApplyLUMatLocal(&X,&Xinv);
|
|
TASSERT(fabsf((Xinv.v[0])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a11 failed!");
|
|
TASSERT(fabsf((Xinv.v[1])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a21 failed!");
|
|
TASSERT(fabsf((Xinv.v[2])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a31 failed!");
|
|
TASSERT(fabsf((Xinv.v[3])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a41 failed!");
|
|
TASSERT(fabsf((Xinv.v[4])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a12 failed!");
|
|
TASSERT(fabsf((Xinv.v[5])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a22 failed!");
|
|
TASSERT(fabsf((Xinv.v[6])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a32 failed!");
|
|
TASSERT(fabsf((Xinv.v[7])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a42 failed!");
|
|
TASSERT(fabsf((Xinv.v[8])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a13 failed!");
|
|
TASSERT(fabsf((Xinv.v[9])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a23 failed!");
|
|
TASSERT(fabsf((Xinv.v[10])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a33 failed!");
|
|
TASSERT(fabsf((Xinv.v[11])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a43 failed!");
|
|
TASSERT(fabsf((Xinv.v[12])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a14 failed!");
|
|
TASSERT(fabsf((Xinv.v[13])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a24 failed!");
|
|
TASSERT(fabsf((Xinv.v[14])-(0.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a34 failed!");
|
|
TASSERT(fabsf((Xinv.v[15])-(1.000000f)) <=100*FLT_EPSILON /* yes this is bad */,"Xinv:Entry Xinv_a44 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
static const char* testSST_Math_Mat44fApplyLUVec(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f LU; /* 4 x 4 matrix */
|
|
SST_Vec4f b; /* 4 x 4 vector */
|
|
SST_Vec4f x; /* 4 x 4 vector */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
b.v[0] = 2.000000f;
|
|
b.v[1] = -1.000000f;
|
|
b.v[2] = 1.000000f;
|
|
b.v[3] = 1.000000f;
|
|
SST_Math_Mat44fCreateLU(&X,&LU);
|
|
SST_Math_Mat44fApplyLUVec(&LU,&b,&x);
|
|
TASSERT(fabsf((x.v[0])-(1.583333f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a1 failed!");
|
|
TASSERT(fabsf((x.v[1])-(-2.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a2 failed!");
|
|
TASSERT(fabsf((x.v[2])-(5.083333f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a3 failed!");
|
|
TASSERT(fabsf((x.v[3])-(1.250000f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a4 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|
|
static const char* testSST_Math_Mat44fApplyLUVecLocal(){
|
|
SST_Mat44f X; /* 4 x 4 matrix */
|
|
SST_Mat44f LU; /* 4 x 4 matrix */
|
|
SST_Vec4f b; /* 4 x 4 vector */
|
|
X.v[0] = 2.000000f;
|
|
X.v[1] = 1.000000f;
|
|
X.v[2] = 0.000000f;
|
|
X.v[3] = 4.000000f;
|
|
X.v[4] = -1.000000f;
|
|
X.v[5] = 0.000000f;
|
|
X.v[6] = 2.000000f;
|
|
X.v[7] = 2.000000f;
|
|
X.v[8] = -1.000000f;
|
|
X.v[9] = -1.000000f;
|
|
X.v[10] = 1.000000f;
|
|
X.v[11] = 0.000000f;
|
|
X.v[12] = 1.000000f;
|
|
X.v[13] = 2.000000f;
|
|
X.v[14] = 1.000000f;
|
|
X.v[15] = 0.000000f;
|
|
b.v[0] = 2.000000f;
|
|
b.v[1] = -1.000000f;
|
|
b.v[2] = 1.000000f;
|
|
b.v[3] = 1.000000f;
|
|
SST_Math_Mat44fCreateLU(&X,&LU);
|
|
SST_Math_Mat44fApplyLUVecLocal(&LU,&b);
|
|
TASSERT(fabsf((b.v[0])-(1.583333f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a1 failed!");
|
|
TASSERT(fabsf((b.v[1])-(-2.666667f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a2 failed!");
|
|
TASSERT(fabsf((b.v[2])-(5.083333f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a3 failed!");
|
|
TASSERT(fabsf((b.v[3])-(1.250000f)) <=100*FLT_EPSILON /* yes this is bad */,"x:Entry x_a4 failed!");
|
|
return ZTEST_SUCCESS;
|
|
}
|