#include "jtest.h"
|
#include "matrix_test_data.h"
|
#include "arr_desc.h"
|
#include "arm_math.h" /* FUTs */
|
#include "ref.h" /* Reference Functions */
|
#include "test_templates.h"
|
#include "matrix_templates.h"
|
#include "type_abbrev.h"
|
|
JTEST_DEFINE_TEST(arm_mat_inverse_f32_test, arm_mat_inverse_f32)
|
{
|
TEMPLATE_DO_ARR_DESC(
|
mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_invertible_inputs
|
,
|
JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n",
|
(int)mat_ptr->numRows,
|
(int)mat_ptr->numCols);
|
|
if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f32 *, mat_ptr))
|
{
|
MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr);
|
|
/* arm_mat_inverse_f32() modifies its source input. Use the scratch
|
* buffer to store a copy of the intended input. */
|
{
|
float32_t * original_pdata_ptr = mat_ptr->pData;
|
|
memcpy(matrix_output_scratch,
|
mat_ptr->pData,
|
mat_ptr->numRows * mat_ptr->numCols * sizeof(float32_t));
|
mat_ptr->pData = (void*) &matrix_output_scratch;
|
|
JTEST_COUNT_CYCLES(arm_mat_inverse_f32(mat_ptr, &matrix_output_fut));
|
mat_ptr->pData = original_pdata_ptr;
|
}
|
|
ref_mat_inverse_f32(mat_ptr, &matrix_output_ref);
|
|
MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32,
|
float32_t);
|
});
|
|
return JTEST_TEST_PASSED;
|
}
|
|
JTEST_DEFINE_TEST(arm_mat_inverse_f64_test, arm_mat_inverse_f64)
|
{
|
TEMPLATE_DO_ARR_DESC(
|
mat_idx, arm_matrix_instance_f64 *, mat_ptr, matrix_f64_invertible_inputs
|
,
|
JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n",
|
(int)mat_ptr->numRows,
|
(int)mat_ptr->numCols);
|
|
if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f64 *, mat_ptr))
|
{
|
MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f64 *, mat_ptr);
|
|
/* arm_mat_inverse_f64() modifies its source input. Use the scratch
|
* buffer to store a copy of the intended input. */
|
{
|
float64_t * original_pdata_ptr = mat_ptr->pData;
|
|
memcpy(matrix_output_scratch,
|
mat_ptr->pData,
|
mat_ptr->numRows * mat_ptr->numCols * sizeof(float64_t));
|
mat_ptr->pData = (void*) &matrix_output_scratch;
|
|
JTEST_COUNT_CYCLES(arm_mat_inverse_f64(mat_ptr, &matrix_output_fut64));
|
mat_ptr->pData = original_pdata_ptr;
|
}
|
|
ref_mat_inverse_f64(mat_ptr, &matrix_output_ref64);
|
|
MATRIX_DBL_SNR_COMPARE_INTERFACE(arm_matrix_instance_f64);
|
});
|
|
return JTEST_TEST_PASSED;
|
}
|
|
/*--------------------------------------------------------------------------------*/
|
/* Collect all tests in a group. */
|
/*--------------------------------------------------------------------------------*/
|
|
JTEST_DEFINE_GROUP(mat_inverse_tests)
|
{
|
/*
|
To skip a test, comment it out.
|
*/
|
JTEST_TEST_CALL(arm_mat_inverse_f32_test);
|
JTEST_TEST_CALL(arm_mat_inverse_f64_test);
|
}
|