test in progress

This commit is contained in:
Sheikah
2023-01-19 00:11:51 +08:00
commit b5cdb2d335
1163 changed files with 636480 additions and 0 deletions

View File

@ -0,0 +1,62 @@
#include "jtest.h"
#include "basic_math_test_group.h"
#include "complex_math_test_group.h"
#include "controller_test_group.h"
#include "fast_math_test_group.h"
#include "filtering_test_group.h"
#include "matrix_test_group.h"
#include "statistics_test_group.h"
#include "support_test_group.h"
#include "transform_test_group.h"
#include "intrinsics_test_group.h"
JTEST_DEFINE_GROUP(all_tests)
{
/*
To skip a test, comment it out
*/
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_BASICMATH_TESTS)
JTEST_GROUP_CALL(basic_math_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_COMPLEXMATH_TESTS)
JTEST_GROUP_CALL(complex_math_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_CONTROLLER_TESTS)
JTEST_GROUP_CALL(controller_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_FASTMATH_TESTS)
JTEST_GROUP_CALL(fast_math_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_FILTERING_TESTS)
/* Biquad df2T_f32 will fail with Neon. The test must be updated.
Neon implementation is requiring a different initialization.
*/
JTEST_GROUP_CALL(filtering_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_MATRIX_TESTS)
JTEST_GROUP_CALL(matrix_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_STATISTICS_TESTS)
JTEST_GROUP_CALL(statistics_tests);
#endif()
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_SUPPORT_TESTS)
JTEST_GROUP_CALL(support_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_TRANSFORM_TESTS)
JTEST_GROUP_CALL(transform_tests);
#endif
#if !defined(CUSTOMIZE_TESTS) || defined(ENABLE_INTRINSICS_TESTS)
JTEST_GROUP_CALL(intrinsics_tests);
#endif
return;
}

View File

@ -0,0 +1,32 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_ABS_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
abs, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix))
JTEST_ARM_ABS_TEST(f32);
JTEST_ARM_ABS_TEST(q31);
JTEST_ARM_ABS_TEST(q15);
JTEST_ARM_ABS_TEST(q7 );
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(abs_tests)
{
JTEST_TEST_CALL(arm_abs_f32_test);
JTEST_TEST_CALL(arm_abs_q31_test);
JTEST_TEST_CALL(arm_abs_q15_test);
JTEST_TEST_CALL(arm_abs_q7_test);
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_ADD_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
add, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
BASIC_MATH_COMPARE_INTERFACE)
JTEST_ARM_ADD_TEST(f32);
JTEST_ARM_ADD_TEST(q31);
JTEST_ARM_ADD_TEST(q15);
JTEST_ARM_ADD_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(add_tests)
{
JTEST_TEST_CALL(arm_add_f32_test);
JTEST_TEST_CALL(arm_add_q31_test);
JTEST_TEST_CALL(arm_add_q15_test);
JTEST_TEST_CALL(arm_add_q7_test);
}

View File

@ -0,0 +1,101 @@
#include "basic_math_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE,
basic_math_output_fut,
BASIC_MATH_MAX_INPUT_ELEMENTS,
CURLY(0));
ARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE,
basic_math_output_ref,
BASIC_MATH_MAX_INPUT_ELEMENTS,
CURLY(0));
BASIC_MATH_BIGGEST_INPUT_TYPE
basic_math_output_f32_ref[BASIC_MATH_MAX_INPUT_ELEMENTS];
BASIC_MATH_BIGGEST_INPUT_TYPE
basic_math_output_f32_fut[BASIC_MATH_MAX_INPUT_ELEMENTS];
/*--------------------------------------------------------------------------------*/
/* Block Sizes */
/*--------------------------------------------------------------------------------*/
/*
To change test parameter values add/remove values inside CURLY and update
the preceeding parameter to reflect the number of values inside CURLY.
*/
ARR_DESC_DEFINE(uint32_t,
basic_math_block_sizes,
4,
CURLY( 2, 7, 15, 32));
/*--------------------------------------------------------------------------------*/
/* Numbers */
/*--------------------------------------------------------------------------------*/
/*
To change test parameter values add/remove values inside CURLY and update
the preceeding parameter to reflect the number of values inside CURLY.
*/
ARR_DESC_DEFINE(uint32_t,
basic_math_elts,
4,
CURLY( 0, 1, 0x80000000, 0x7fffffff));
ARR_DESC_DEFINE(int8_t,
basic_math_elts2,
5,
CURLY( 0, 3, -3, -7, 7));
ARR_DESC_DEFINE(float32_t,
basic_math_eltsf,
6,
CURLY( 0.0f, 1.0f, 1.254001, -1.665584, -127.435646, 245.34634267));
/*--------------------------------------------------------------------------------*/
/* Test Data */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(float32_t,
basic_math_f_32,
32,
CURLY(
-0.432565, -1.665584, 0.125332, 0.287676, -1.146471,
1.190915, 1.189164, -0.037633, 0.327292, 0.174639,
-0.186709, 0.725791, -0.588317, 2.183186, -0.136396,
0.113931, 1.066768, 0.059281, -0.095648, -0.832349,
0.294411, -1.336182, 0.714325, 1.623562, -0.691776,
0.857997, 1.254001, -1.593730, -1.440964, 0.571148,
-0.399886, 0.689997
));
/* Alias the 32 element array with wrappers that end sooner. */
ARR_DESC_DEFINE_SUBSET(basic_math_f_15,
basic_math_f_32,
15);
ARR_DESC_DEFINE_SUBSET(basic_math_f_2,
basic_math_f_32,
2);
ARR_DESC_DEFINE(float32_t,
basic_math_zeros,
32,
CURLY(0));
/* Aggregate all float datasets. */
ARR_DESC_DEFINE(ARR_DESC_t *,
basic_math_f_all,
4,
CURLY(
&basic_math_zeros,
&basic_math_f_2,
&basic_math_f_15,
&basic_math_f_32
));

View File

@ -0,0 +1,17 @@
#include "jtest.h"
#include "basic_math_tests.h"
JTEST_DEFINE_GROUP(basic_math_tests)
{
JTEST_GROUP_CALL(abs_tests);
JTEST_GROUP_CALL(add_tests);
JTEST_GROUP_CALL(dot_prod_tests);
JTEST_GROUP_CALL(mult_tests);
JTEST_GROUP_CALL(negate_tests);
JTEST_GROUP_CALL(offset_tests);
JTEST_GROUP_CALL(scale_tests);
JTEST_GROUP_CALL(shift_tests);
JTEST_GROUP_CALL(sub_tests);
return;
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_DOT_PROD_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
dot_prod, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
BASIC_MATH_SNR_ELT1_COMPARE_INTERFACE)
JTEST_ARM_DOT_PROD_TEST(f32);
JTEST_ARM_DOT_PROD_TEST(q31);
JTEST_ARM_DOT_PROD_TEST(q15);
JTEST_ARM_DOT_PROD_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(dot_prod_tests)
{
JTEST_TEST_CALL(arm_dot_prod_f32_test);
JTEST_TEST_CALL(arm_dot_prod_q31_test);
JTEST_TEST_CALL(arm_dot_prod_q15_test);
JTEST_TEST_CALL(arm_dot_prod_q7_test);
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_MULT_TEST(suffix, compare_interface) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
mult, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
compare_interface)
JTEST_ARM_MULT_TEST(f32, BASIC_MATH_COMPARE_INTERFACE);
JTEST_ARM_MULT_TEST(q31, BASIC_MATH_SNR_COMPARE_INTERFACE);
JTEST_ARM_MULT_TEST(q15, BASIC_MATH_COMPARE_INTERFACE);
JTEST_ARM_MULT_TEST(q7 , BASIC_MATH_COMPARE_INTERFACE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mult_tests)
{
JTEST_TEST_CALL(arm_mult_f32_test);
JTEST_TEST_CALL(arm_mult_q31_test);
JTEST_TEST_CALL(arm_mult_q15_test);
JTEST_TEST_CALL(arm_mult_q7_test);
}

View File

@ -0,0 +1,32 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_NEGATE_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
negate, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix))
JTEST_ARM_NEGATE_TEST(f32);
JTEST_ARM_NEGATE_TEST(q31);
JTEST_ARM_NEGATE_TEST(q15);
JTEST_ARM_NEGATE_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(negate_tests)
{
JTEST_TEST_CALL(arm_negate_f32_test);
JTEST_TEST_CALL(arm_negate_q31_test);
JTEST_TEST_CALL(arm_negate_q15_test);
JTEST_TEST_CALL(arm_negate_q7_test);
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_OFFSET_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK( \
offset, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix))
JTEST_ARM_OFFSET_TEST(f32);
JTEST_ARM_OFFSET_TEST(q31);
JTEST_ARM_OFFSET_TEST(q15);
JTEST_ARM_OFFSET_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(offset_tests)
{
JTEST_TEST_CALL(arm_offset_f32_test);
JTEST_TEST_CALL(arm_offset_q31_test);
JTEST_TEST_CALL(arm_offset_q15_test);
JTEST_TEST_CALL(arm_offset_q7_test);
}

View File

@ -0,0 +1,52 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_SCALE_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT2_BLK( \
scale, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), /*elt1_type*/ \
int8_t, /*elt2_type*/ \
TYPE_FROM_ABBREV(suffix))
/* float32_t defined separately because it has less arguments */
JTEST_DEFINE_TEST(arm_scale_f32_test,
arm_scale_f32)
{
TEST_TEMPLATE_BUF1_ELT1_BLK(
basic_math_f_all,
basic_math_eltsf,
basic_math_block_sizes,
float32_t,
float32_t,
float32_t,
arm_scale_f32,
ARM_scale_float_INPUT_INTERFACE,
ref_scale_f32,
REF_scale_float_INPUT_INTERFACE,
BASIC_MATH_COMPARE_INTERFACE);
}
JTEST_ARM_SCALE_TEST(q31);
JTEST_ARM_SCALE_TEST(q15);
JTEST_ARM_SCALE_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(scale_tests)
{
JTEST_TEST_CALL(arm_scale_f32_test);
JTEST_TEST_CALL(arm_scale_q31_test);
JTEST_TEST_CALL(arm_scale_q15_test);
JTEST_TEST_CALL(arm_scale_q7_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_SHIFT_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK( \
shift, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
int8_t, /*elt_type*/ \
TYPE_FROM_ABBREV(suffix))
JTEST_ARM_SHIFT_TEST(q31);
JTEST_ARM_SHIFT_TEST(q15);
JTEST_ARM_SHIFT_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(shift_tests)
{
JTEST_TEST_CALL(arm_shift_q31_test);
JTEST_TEST_CALL(arm_shift_q15_test);
JTEST_TEST_CALL(arm_shift_q7_test);
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "basic_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "basic_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_SUB_TEST(suffix) \
BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
sub, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
BASIC_MATH_COMPARE_INTERFACE)
JTEST_ARM_SUB_TEST(f32);
JTEST_ARM_SUB_TEST(q31);
JTEST_ARM_SUB_TEST(q15);
JTEST_ARM_SUB_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(sub_tests)
{
JTEST_TEST_CALL(arm_sub_f32_test);
JTEST_TEST_CALL(arm_sub_q31_test);
JTEST_TEST_CALL(arm_sub_q15_test);
JTEST_TEST_CALL(arm_sub_q7_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_CONJ_TEST(suffix) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
cmplx_conj, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE)
JTEST_ARM_CMPLX_CONJ_TEST(f32);
JTEST_ARM_CMPLX_CONJ_TEST(q31);
JTEST_ARM_CMPLX_CONJ_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_conj_tests)
{
JTEST_TEST_CALL(arm_cmplx_conj_f32_test);
JTEST_TEST_CALL(arm_cmplx_conj_q31_test);
JTEST_TEST_CALL(arm_cmplx_conj_q15_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_DOT_PROD_TEST(suffix, comparison_interface) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
cmplx_dot_prod, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
comparison_interface)
JTEST_ARM_CMPLX_DOT_PROD_TEST(f32, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);
JTEST_ARM_CMPLX_DOT_PROD_TEST(q31, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);
JTEST_ARM_CMPLX_DOT_PROD_TEST(q15, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_dot_prod_tests)
{
JTEST_TEST_CALL(arm_cmplx_dot_prod_f32_test);
JTEST_TEST_CALL(arm_cmplx_dot_prod_q31_test);
JTEST_TEST_CALL(arm_cmplx_dot_prod_q15_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_MAG_SQUARED_TEST(suffix) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
cmplx_mag_squared, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
COMPLEX_MATH_COMPARE_RE_INTERFACE)
JTEST_ARM_CMPLX_MAG_SQUARED_TEST(f32);
JTEST_ARM_CMPLX_MAG_SQUARED_TEST(q31);
JTEST_ARM_CMPLX_MAG_SQUARED_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_mag_squared_tests)
{
JTEST_TEST_CALL(arm_cmplx_mag_squared_f32_test);
JTEST_TEST_CALL(arm_cmplx_mag_squared_q31_test);
JTEST_TEST_CALL(arm_cmplx_mag_squared_q15_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_MAG_TEST(suffix, comparison_interface) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
cmplx_mag, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
comparison_interface)
JTEST_ARM_CMPLX_MAG_TEST(f32, COMPLEX_MATH_COMPARE_RE_INTERFACE);
JTEST_ARM_CMPLX_MAG_TEST(q31, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE);
JTEST_ARM_CMPLX_MAG_TEST(q15, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_mag_tests)
{
JTEST_TEST_CALL(arm_cmplx_mag_f32_test);
JTEST_TEST_CALL(arm_cmplx_mag_q31_test);
JTEST_TEST_CALL(arm_cmplx_mag_q15_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_MULT_CMPLX_TEST(suffix) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
cmplx_mult_cmplx, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
COMPLEX_MATH_COMPARE_CMPLX_INTERFACE)
JTEST_ARM_CMPLX_MULT_CMPLX_TEST(f32);
JTEST_ARM_CMPLX_MULT_CMPLX_TEST(q31);
JTEST_ARM_CMPLX_MULT_CMPLX_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_mult_cmplx_tests)
{
JTEST_TEST_CALL(arm_cmplx_mult_cmplx_f32_test);
JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q31_test);
JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q15_test);
}

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "complex_math_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "complex_math_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_CMPLX_MULT_REAL_TEST(suffix, comparison_interface) \
COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \
cmplx_mult_real, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
comparison_interface)
JTEST_ARM_CMPLX_MULT_REAL_TEST(f32, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE);
JTEST_ARM_CMPLX_MULT_REAL_TEST(q31, COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE);
JTEST_ARM_CMPLX_MULT_REAL_TEST(q15, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cmplx_mult_real_tests)
{
JTEST_TEST_CALL(arm_cmplx_mult_real_f32_test);
JTEST_TEST_CALL(arm_cmplx_mult_real_q31_test);
JTEST_TEST_CALL(arm_cmplx_mult_real_q15_test);
}

View File

@ -0,0 +1,114 @@
#include "complex_math_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,
complex_math_output_fut_a,
COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,
CURLY(0));
ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,
complex_math_output_fut_b,
COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,
CURLY(0));
ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,
complex_math_output_ref_a,
COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,
CURLY(0));
ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE,
complex_math_output_ref_b,
COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/,
CURLY(0));
COMPLEX_MATH_BIGGEST_INPUT_TYPE
complex_math_output_f32_ref_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];
COMPLEX_MATH_BIGGEST_INPUT_TYPE
complex_math_output_f32_ref_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];
COMPLEX_MATH_BIGGEST_INPUT_TYPE
complex_math_output_f32_fut_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];
COMPLEX_MATH_BIGGEST_INPUT_TYPE
complex_math_output_f32_fut_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2];
/*--------------------------------------------------------------------------------*/
/* Block Sizes */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(uint32_t,
complex_math_block_sizes,
4,
CURLY(1, 2, 15, 32));
/*--------------------------------------------------------------------------------*/
/* Test Data */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(float32_t,
complex_math_f_32,
32 * 2 /*Complex data has two parts*/,
CURLY(
-0.432564811528220680 , 0.815622288876143300,
-1.665584378238097000 , 0.711908323500893280,
0.125332306474830680 , 1.290249754932477000,
0.287676420358548850 , 0.668600505682040320,
-1.146471350681463700 , 1.190838074243369100,
1.190915465642998800 , -1.202457114773944000,
1.189164201652103100 , -0.019789557768770449,
-0.037633276593317645 , -0.156717298831980680,
0.327292361408654140 , -1.604085562001158500,
0.174639142820924520 , 0.257304234677489860,
-0.186708577681439360 , -1.056472928081482400,
0.725790548293302700 , 1.415141485872338600,
-0.588316543014188680 , -0.805090404196879830,
2.183185818197101100 , 0.528743010962224870,
-0.136395883086595700 , 0.219320672667622370,
0.113931313520809620 , -0.921901624355539130,
1.066768211359188800 , -2.170674494305262500,
0.059281460523605348 , -0.059187824521191180,
-0.095648405483669041 , -1.010633706474247400,
-0.832349463650022490 , 0.614463048895480980,
0.294410816392640380 , 0.507740785341985520,
-1.336181857937804000 , 1.692429870190521400,
0.714324551818952160 , 0.591282586924175900,
1.623562064446270700 , -0.643595202682526120,
-0.691775701702286750 , 0.380337251713910140,
0.857996672828262640 , -1.009115524340785000,
1.254001421602532400 , -0.019510669530289293,
-1.593729576447476800 , -0.048220789145312269,
-1.440964431901020000 , 0.000043191841625545,
0.571147623658177950 , -0.317859451247687890,
-0.399885577715363150 , 1.095003738787492500,
0.689997375464345140 , -1.873990257640960800
));
ARR_DESC_DEFINE_SUBSET(complex_math_f_15,
complex_math_f_32,
15 * 2 /*Complex data has two parts*/);
ARR_DESC_DEFINE_SUBSET(complex_math_f_2,
complex_math_f_32,
2 * 2 /*Complex data has two parts*/);
ARR_DESC_DEFINE(float32_t,
complex_math_zeros,
32 * 2 /*Complex data has two parts*/,
CURLY(0));
/* Aggregate all float datasets */
ARR_DESC_DEFINE(ARR_DESC_t *,
complex_math_f_all,
4,
CURLY(
&complex_math_zeros,
&complex_math_f_2,
&complex_math_f_15,
&complex_math_f_32
));

View File

@ -0,0 +1,14 @@
#include "jtest.h"
#include "complex_math_tests.h"
JTEST_DEFINE_GROUP(complex_math_tests)
{
JTEST_GROUP_CALL(cmplx_conj_tests);
JTEST_GROUP_CALL(cmplx_dot_prod_tests);
JTEST_GROUP_CALL(cmplx_mag_tests);
JTEST_GROUP_CALL(cmplx_mag_squared_tests);
JTEST_GROUP_CALL(cmplx_mult_cmplx_tests);
JTEST_GROUP_CALL(cmplx_mult_real_tests);
return;
}

View File

@ -0,0 +1,499 @@
#include "controller_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
float32_t controller_output_fut[CONTROLLER_MAX_LEN] = {0};
float32_t controller_output_ref[CONTROLLER_MAX_LEN] = {0};
float32_t controller_output_f32_fut[CONTROLLER_MAX_LEN] = {0};
float32_t controller_output_f32_ref[CONTROLLER_MAX_LEN] = {0};
const q31_t controller_q31_inputs[CONTROLLER_MAX_LEN] =
{
0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB, 0x41F6F6A,
0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8, 0x3D060524, 0x93D5E570,
0x97D7791D, 0xFFE0C38C, 0x26749841, 0xC0A6EE54, 0x218EC386, 0x39FF3726,
0x8DC1F7CA, 0x702F2CF5, 0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49,
0x3805DE7E, 0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF,
0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24, 0x6CE00F5C,
0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530, 0x73394127, 0x773FA6F4,
0x9805A980, 0x838DE587, 0x9CF597F4, 0xA2AD1691, 0xFA81A473, 0x7CDC7D7F,
0x4A5190D0, 0xED895BB9, 0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516,
0x2501A3E1, 0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E,
0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4, 0x24DB166C,
0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6, 0x419E0C75, 0x46BE9F38,
0x2432B9B2, 0x758D83E0, 0xDCE12926, 0x3F57CB74, 0x1F4458E2, 0xF1DD639,
0x83A1FB49, 0x173AFC76, 0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549,
0x5C314C9, 0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715,
0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F, 0x20BFDEB4,
0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE, 0x9858E3E1, 0xA36A9C4E,
0x88BD21F9, 0xAACF7A68, 0x773665E5, 0xCEDFDF66, 0x617A9610, 0x524FC968,
0xC2D086CD, 0x5F008079, 0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608,
0xA33A2EE5, 0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5,
0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4, 0xB358C0D8,
0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF, 0x33035831, 0x13D93987,
0xFC542094, 0x845F317E, 0xDDC4BF8B, 0x1379E50C, 0x5C20193F, 0xFDD58298,
0x9D482B82, 0x4A6BE062, 0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882,
0xE6F8EA35, 0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD,
0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677, 0xFB2E04F2,
0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8, 0x1A8C7F28, 0x861E452E,
0x932D3F78, 0x7652D852, 0x73357BBA, 0xEBBB0A58, 0x62536AFA, 0x3F6B65EF,
0x6DC57B58, 0x9EB798CE, 0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302,
0xA9FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3,
0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896, 0x6443A0FE,
0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820, 0xF18F0810, 0xE1548689,
0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B, 0xEA0C1BE0, 0xA1B785DB, 0x7086465D,
0x1CC10929, 0x1E1D716E, 0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4,
0x441F1E8B, 0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137,
0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615, 0x92593380,
0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7, 0x10E916B6, 0xE3BCFA68,
0x2ACB80BB, 0xE51C5590, 0x994714B5, 0xF30984EE, 0x59BBE1B4, 0xB4867DBC,
0xB91C706C, 0xBC16C218, 0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872,
0x4B167FD4, 0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55,
0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A, 0x9D2C662A,
0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C, 0x20306EDB, 0xE381AAE7,
0xA55DA748, 0x9B8B617B, 0x3E036FAD, 0x84E4C4A7, 0xD5A3F517, 0x669BA988,
0x98FDDE8C, 0x67BD85CE, 0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF,
0x205DB5C, 0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC,
0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693, 0xC42D12C0,
0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC, 0x8D874532, 0x5F5C9DD0,
0x5D167858, 0x8559FEA2, 0x9D821476, 0xD9654ED2, 0x594C0DC7, 0x1A87B506,
0x3F693200, 0x7A651AB5, 0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0,
0xB088C72F, 0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB,
0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D, 0x32581A06,
0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15, 0xBC79A9BC, 0xB7175917,
0x354E381C, 0x762AADD7, 0xF643DAC1, 0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4,
0xD7694875, 0x92D30822, 0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7,
0x58CE268, 0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1,
0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB, 0x8FF5534,
0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7, 0x419545EB, 0x993F7880,
0xAB246B20, 0x408AABC4, 0xCBF6EA49, 0xC0894C55, 0x4CAA6398, 0xA47856E9,
0xAF2AE47D, 0x22F55D33, 0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8,
0x9A77D48, 0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A,
0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071, 0x7F9930D4,
0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A, 0x144B2C12, 0x98E425C7,
0xBAA4B373, 0x18F0D03C, 0x99462AC0, 0xD8B4D2EF, 0x72473895, 0xA6BF5435,
0xEDAD53B, 0xE0912FA6, 0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929,
0xB89962F9, 0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0,
0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841, 0x73A60174,
0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095, 0x2B370837, 0x83DF6CE3,
0xDD08EEFA, 0x3F52A7C2, 0x191B4785, 0x60843D82, 0xB0DE11F1, 0x105EA26C,
0x6E1C7AA2, 0x47AADD14, 0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC,
0x744206A, 0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9,
0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F, 0x2E53E6C1,
0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5, 0x119725CC, 0x5406D347,
0x1B6FFAF1, 0xECCF71F1, 0x981117F2, 0x7167CA76, 0x74F4B880, 0x77A55F47,
0x59EADB62, 0x4A331D95, 0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1,
0x60D47AD5, 0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3,
0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E, 0x31109C58,
0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF, 0xBAF8D31E, 0xA4B31611,
0xED37F331, 0x7A832A22, 0xA22591C7, 0x722D1F89, 0x3B19CF18, 0x261B8A4D,
0xC3F6F6DB, 0xCF8CED61, 0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4,
0x3674E663, 0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD,
0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91, 0x4BF0C248,
0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26, 0x6C3B7B71, 0xD744B3ED,
0xFA25D2F6, 0x4CDE642D, 0xD65B8142, 0xA6F9207F, 0xE7A207BE, 0xDB506684,
0x44DA4780, 0x9175EA0C, 0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2,
0x5423D9C8, 0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1,
0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5, 0x1672BA91,
0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4, 0x32AFD40C, 0x99A5FB3B,
0xDD1D73A3, 0xA342CB3E, 0xA78445F5, 0x53979C3B, 0x427D7943, 0x5221B58C,
0xA6CE9A5E, 0xFB50ECA4, 0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04,
0xFBB65E0C, 0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920,
0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641, 0x4D6B1760,
0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF, 0x4E5F9493, 0x4C215DA5,
0x33A052B, 0x1A4D80C2, 0x40AEEBCA, 0x390D106B, 0xE9E8E018, 0x5AF3D6CF,
0xE35E1D4, 0xC4FB1C6, 0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6,
0x2227567D, 0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6,
0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1, 0xC9D06CBC,
0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47, 0x9D4804EA, 0x57DD9E67,
0xF89C7895, 0xF5336111, 0x25C122C8, 0x62742114, 0xCFBF6D26, 0xBF9F6482,
0xE6F02CD9, 0x11083202, 0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1,
0x3BF4DC25, 0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129,
0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA, 0x31C5A0AF,
0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98, 0x82C34882, 0x5D041F11,
0x8C613C57, 0xD398CFD1, 0x426F38AD, 0x5599AB1D, 0xFAFA078D, 0xAB25B413,
0xD94B32CF, 0xB288FE38, 0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D,
0x2174EBBE, 0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6,
0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02, 0xC20D47A4,
0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4, 0xC58612F4, 0xA2827F6F,
0xC49DCDBA, 0x679B7362, 0x4E495845, 0xCFD2F0D1, 0x395E76A0, 0x375A655E,
0x92E2058F, 0x73F9F0CA, 0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B,
0xA219E2E8, 0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF,
0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40, 0x157F6DDF,
0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58, 0xB2945F75, 0x4FA23A0E,
0x836EB8C0, 0xB3B18FD, 0x86114337, 0x24668ACB, 0x99BB82F0, 0x924C8A47,
0xBA959701, 0x81155ABF, 0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7,
0x7FC2802D, 0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719,
0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD, 0xEBA775AE,
0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D, 0xBBD34AB7, 0x2F85B12A,
0x16C5C2AD, 0x3990985D, 0x88DF3351, 0x82811AA5, 0x6D351F41, 0x4066A69D,
0x86B660BF, 0x6EDB4768, 0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687,
0x947CC9C9, 0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB,
0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B, 0xB7629C93,
0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66, 0xEC71B78C, 0xEAF4BB3A,
0x7C16225E, 0x668F337, 0xCBEE1608, 0x6D5B5552, 0x345DC590, 0x681209CC,
0x7B24A819, 0xD08A1416, 0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678,
0x20EECA0, 0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D,
0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960, 0x7CDF59F3,
0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110, 0xB8FCF3E3, 0xDEA059B2,
0x8229B6EA, 0x316486F6, 0x43919185, 0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9,
0x5CD41244, 0x2C9F0A7B, 0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0,
0xF105C20D, 0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763,
0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53, 0x2D2A85F6,
0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B, 0x9FC5AC5F, 0x11AE5DD7,
0xA0B9A5A9, 0xFC648AF4, 0x740009AC, 0xED0E0321, 0xB8E6A61, 0x8910C544,
0xC74F26C8, 0x9525CCF3, 0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D,
0xE1976DD4, 0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1,
0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB, 0xF5288568,
0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A, 0x1BC03B9, 0xB6BC3061,
0xBF30596E, 0xBE2AD27B, 0x8AC04220, 0x641979A3, 0x9ECCBB89, 0xA144FBC1,
0x4E8FAE26, 0x8C5A9D90, 0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D,
0xCEE81CDF, 0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA,
0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38, 0x2E77F2D,
0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017, 0x2D6B69A7, 0xFEDB63F9,
0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8, 0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6,
0xED193443, 0x7615EF1B, 0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022,
0x556E825C, 0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF,
0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC, 0x1E6A1101,
0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599, 0x54EB4809, 0x7839BE6D,
0xD50017DD, 0x39B1A0E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1,
0x3FCC0EFE, 0x47F3FE64, 0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8,
0x6BEAA655, 0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9,
0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B, 0x4DCD4EDB,
0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6, 0x502F41B0, 0x3616D3F1,
0x2E5B8E31, 0x2026EB19, 0x57E783D7, 0x467BBE00, 0x4703ABA3, 0x1F776B9C,
0xE2570A84, 0xFEC7DB48, 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6,
0x99D5D8ED, 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,
0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, 0x56186AA1,
0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, 0xAC18B207, 0x5FC78B3,
0x7F10621E, 0xA769E6B2, 0xEC9F4A11, 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD,
0x73D63FED, 0xE36E9F5E, 0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1,
0xCD476E86, 0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7,
0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78, 0xCC4BE4F6,
0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2, 0x55A8F5EC, 0xE81A9A75,
0x30A67E1B, 0x4A4A7D0C, 0x20F7F993, 0x1891805, 0x738976AD, 0xD426E7D6,
0x3C5CEEBF, 0x4499187F, 0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456,
0x421BCF29, 0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE,
0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46, 0x5D146234,
0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA, 0xB65530CC, 0x2DFAC48C,
0x1663D16F, 0x59B80AA, 0x950274EA, 0x92532D4A, 0x3CEF802D, 0x492FBDA5,
0xA63A2574, 0xEF8005C2, 0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646,
0xD2598516, 0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75,
0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F
};
/* The source data is random across the q31_t range. Accessing it by word should
remain random. */
const q15_t * controller_q15_inputs = (q15_t *) controller_q31_inputs;
const float32_t controller_f32_inputs[CONTROLLER_MAX_LEN] =
{
43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 ,
7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 ,
-129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 ,
55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 ,
29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 ,
83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 ,
12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 ,
37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 ,
-5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 ,
50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 ,
74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 ,
-6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 ,
41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158,
-57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 ,
37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 ,
36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 ,
-19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 ,
36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 ,
-103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 ,
49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 ,
-53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 ,
-125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,
-17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 ,
-191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 ,
2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 ,
-11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 ,
-70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 ,
46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 ,
66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 ,
-62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 ,
35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 ,
-47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,
12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158,
44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 ,
17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 ,
120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,
-49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 ,
-64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 ,
-50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 ,
-102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 ,
-113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 ,
107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 ,
46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 ,
-95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 ,
-30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 ,
-2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078,
-51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 ,
9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363,
-15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 ,
20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 ,
-111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 ,
28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 ,
-51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 ,
-103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 ,
1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846,
-51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 ,
49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 ,
148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 ,
39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 ,
-95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 ,
94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016,
-29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 ,
-16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 ,
53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 ,
5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 ,
-21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 ,
28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 ,
17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 ,
-65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 ,
19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 ,
-35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 ,
-5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 ,
54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 ,
6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 ,
38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 ,
-21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 ,
91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356,
-48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 ,
-34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 ,
-94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 ,
-23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 ,
-33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 ,
61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 ,
-91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 ,
70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 ,
-68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160,
-68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 ,
5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 ,
-16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 ,
13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 ,
-62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 ,
-33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 ,
144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 ,
-12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,
65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 ,
-26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 ,
-38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 ,
33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 ,
-9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 ,
-8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 ,
86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 ,
58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534,
-15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 ,
-32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 ,
-41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 ,
-32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,
-20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 ,
-1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 ,
36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 ,
21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 ,
50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 ,
-74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 ,
194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 ,
-43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 ,
-7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 ,
-50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 ,
22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 ,
62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 ,
18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 ,
-132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 ,
-24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 ,
18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 ,
66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 ,
22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 ,
18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 ,
121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 ,
-23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 ,
49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 ,
20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 ,
-13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 ,
8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 ,
-72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 ,
7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 ,
128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 ,
-8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 ,
-111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 ,
-34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 ,
-26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 ,
103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 ,
26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 ,
1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 ,
-32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,
59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 ,
124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 ,
-56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938,
44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 ,
151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 ,
-33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 ,
71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 ,
22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 ,
66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 ,
4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 ,
-48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 ,
-34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 ,
-4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 ,
-45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 ,
28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 ,
-32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 ,
-60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 ,
49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 ,
-22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 ,
-30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 ,
65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 ,
-95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 ,
68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 ,
-32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 ,
51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 ,
-38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 ,
-26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 ,
43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 ,
-18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 ,
-25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 ,
-87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 ,
-0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 ,
-50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 ,
-4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 ,
-25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 ,
113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,
43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 ,
-33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 ,
93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 ,
-12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 ,
44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 ,
207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 ,
83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 ,
-19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 ,
121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 ,
74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360,
81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 ,
-65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,
33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 ,
42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 ,
30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 ,
64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 ,
57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 ,
-79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 ,
66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353,
8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 ,
-68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 ,
90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 ,
16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 ,
-60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 ,
15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 ,
-42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 ,
-36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 ,
-61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 ,
22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 ,
-162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 ,
-16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 ,
-11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 ,
-119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 ,
-67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695,
-83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 ,
-22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464,
-5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 ,
46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 ,
-158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 ,
21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 ,
2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 ,
-10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 ,
-36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 ,
18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 ,
-59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 ,
-36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,
-54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 ,
51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 ,
105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 ,
-94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 ,
92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 ,
25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 ,
17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 ,
-35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 ,
22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 ,
-61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 ,
55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 ,
74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 ,
53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 ,
109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,
17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845,
40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 ,
-60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 ,
-17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 ,
-36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 ,
-35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 ,
-7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126,
-117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 ,
35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 ,
-84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460,
-2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 ,
76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 ,
-56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090,
0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 ,
27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 ,
1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 ,
52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 ,
7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957
};
const float32_t controller_f32_coeffs[CONTROLLER_MAX_COEFFS_LEN] =
{
/* S->Kp, S->Ki, S->Kd; */
0.0000000000 , -1.0336778293 , 56.7726390913 ,
0.3487447576 , 0.0000000000 , 27.4535327381 ,
-29.1580893235, 1.6981490570 , 0.0000000000 ,
0.0000000000 , 0.0000000000 , -2.4956545870 ,
0.0000000000 , 8.7065613044 , 0.0000000000 ,
0.0000000000 , 0.0000000000 , 0.0000000000 ,
18.1550954005 , -5.9782002429 , 2.0072717479 ,
33.1212995259 , -82.1480936443, -10.5479715135,
-23.6296332202, 49.1171161163 , 53.1636857935 ,
7.2830326091 , 66.8368719314 , 33.9778190671 ,
9.4452708243 , 5.3300080251 , 39.0483916714 ,
6.9915412654 , -8.9909197429 , -78.9165936808
};
const q31_t controller_q31_coeffs[CONTROLLER_MAX_COEFFS_LEN] =
{
0x00000000, 0xFEF760E4, 0x38C5CBAD,
0x00594756, 0x00000000, 0x1B741AB9,
0xE2D78775, 0x01B2B9E6, 0x00000000,
0x00000000, 0x00000000, 0xFD811CC8,
0x00000000, 0x08B4E134, 0x00000000,
0x00000000, 0x00000000, 0x00000000,
0x1227B455, 0xFA0594AB, 0x0201DC90,
0x211F0D7C, 0xADDA1689, 0xF573B824,
0xE85ED05B, 0x311DFB52, 0x3529E750,
0x074874D3, 0x42D63D3D, 0x21FA525A,
0x0971FD45, 0x05547B68, 0x270C6366,
0x06FDD5A6, 0xF7025315, 0xB1155A1E
};
const q15_t controller_q15_coeffs[CONTROLLER_MAX_COEFFS_LEN] =
{
0x0000, 0xFEF7, 0x38C6,
0x0059, 0x0000, 0x1B74,
0xE2D8, 0x01B3, 0x0000,
0x0000, 0x0000, 0xFD81,
0x0000, 0x08B5, 0x0000,
0x0000, 0x0000, 0x0000,
0x1228, 0xFA06, 0x0202,
0x211F, 0xADDA, 0xF574,
0xE85F, 0x311E, 0x352A,
0x0748, 0x42D6, 0x21FA,
0x0972, 0x0554, 0x270C,
0x06FE, 0xF702, 0xB115
};

View File

@ -0,0 +1,13 @@
#include "jtest.h"
#include "controller_tests.h"
JTEST_DEFINE_GROUP(controller_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_GROUP_CALL(pid_reset_tests);
JTEST_GROUP_CALL(pid_tests);
JTEST_GROUP_CALL(sin_cos_tests);
return;
}

View File

@ -0,0 +1,52 @@
#include "jtest.h"
#include "arr_desc.h"
#include "arm_math.h"
#include "type_abbrev.h"
#include "test_templates.h"
/* Bucket of zeros. For comparison with the output of arm_pid_reset_xxx. */
ARR_DESC_DEFINE(float32_t, zeroes, 3, CURLY(0));
/**
* Define a JTEST_TEST_t for the function arm_pid_reset_xxx function having
* suffix.
*/
#define ARM_PID_RESET_TEST(suffix) \
JTEST_DEFINE_TEST(arm_pid_reset_##suffix##_test, \
arm_pid_reset_##suffix) \
{ \
/* Initialise the pid_instance */ \
arm_pid_instance_##suffix pid_inst = { 0 }; \
pid_inst.state[0] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \
pid_inst.state[1] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \
pid_inst.state[2] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES(arm_pid_reset_##suffix(&pid_inst)); \
\
/* Test correctness */ \
TEST_ASSERT_BUFFERS_EQUAL( \
pid_inst.state, \
zeroes.data_ptr, \
3 * sizeof(TYPE_FROM_ABBREV(suffix))); \
\
return JTEST_TEST_PASSED; \
}
ARM_PID_RESET_TEST(f32);
ARM_PID_RESET_TEST(q31);
ARM_PID_RESET_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(pid_reset_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_pid_reset_f32_test);
JTEST_TEST_CALL(arm_pid_reset_q31_test);
JTEST_TEST_CALL(arm_pid_reset_q15_test);
}

View File

@ -0,0 +1,79 @@
#include "jtest.h"
#include "arr_desc.h"
#include "arm_math.h"
#include "ref.h"
#include "type_abbrev.h"
#include "test_templates.h"
#include "controller_test_data.h"
#include "controller_templates.h"
/**
* Define a JTEST_TEST_t for the function arm_pid_xxx function having
* suffix.
*/
#define ARM_PID_TEST(suffix,type) \
JTEST_DEFINE_TEST(arm_pid_##suffix##_test, arm_pid_##suffix) \
{ \
uint32_t i,j; \
\
arm_pid_instance_##suffix fut_pid_inst = { 0 }; \
arm_pid_instance_##suffix ref_pid_inst = { 0 }; \
\
for(i=0;i<CONTROLLER_MAX_COEFFS_LEN/3;i++) \
{ \
fut_pid_inst.Kp = controller_##suffix##_coeffs[i*3+0]; \
fut_pid_inst.Ki = controller_##suffix##_coeffs[i*3+1]; \
fut_pid_inst.Kd = controller_##suffix##_coeffs[i*3+2]; \
ref_pid_inst.Kp = controller_##suffix##_coeffs[i*3+0]; \
ref_pid_inst.Ki = controller_##suffix##_coeffs[i*3+1]; \
ref_pid_inst.Kd = controller_##suffix##_coeffs[i*3+2]; \
\
arm_pid_init_##suffix(&fut_pid_inst, 1); \
arm_pid_init_##suffix(&ref_pid_inst, 1); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n", \
(int)CONTROLLER_MAX_LEN); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
for(j=0;j<CONTROLLER_MAX_LEN;j++) \
{ \
*((type*)controller_output_fut + j) = \
arm_pid_##suffix(&fut_pid_inst, \
controller_##suffix##_inputs[j]); \
}); \
\
for(j=0;j<CONTROLLER_MAX_LEN;j++) \
{ \
*((type*)controller_output_ref + j) = \
ref_pid_##suffix(&ref_pid_inst, \
controller_##suffix##_inputs[j]); \
} \
\
/* Test correctness */ \
CONTROLLER_SNR_COMPARE_INTERFACE( \
CONTROLLER_MAX_LEN, \
type); \
} \
\
return JTEST_TEST_PASSED; \
}
ARM_PID_TEST(f32,float32_t);
ARM_PID_TEST(q31,q31_t);
ARM_PID_TEST(q15,q15_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(pid_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_pid_f32_test);
JTEST_TEST_CALL(arm_pid_q31_test);
JTEST_TEST_CALL(arm_pid_q15_test);
}

View File

@ -0,0 +1,151 @@
#include "jtest.h"
#include "arr_desc.h"
#include "arm_math.h"
#include "ref.h"
#include "type_abbrev.h"
#include "test_templates.h"
/*--------------------------------------------------------------------------------*/
/* Input Data */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(float32_t,
arm_sin_cos_degrees_f32,
9,
CURLY(
0,
17,
45,
90,
180,
360,
362,
-73,
-191.111
));
/* The Q31 version of the function maps numbers in the range [-1, 0.9999999]
* to degrees in the range [-180, 179]*/
ARR_DESC_DEFINE(q31_t,
arm_sin_cos_degrees_q31,
6,
CURLY(
0,
0x80000000, /* -1 */
0x7fffffff, /* 0.99999 */
/* Randoms */
0xf7badafa,
0x285954a1,
0xb9d09511
));
/*--------------------------------------------------------------------------------*/
/* Output Variables */
/*--------------------------------------------------------------------------------*/
float32_t sin_val_fut = 0;
float32_t cos_val_fut = 0;
float32_t sin_val_ref = 0;
float32_t cos_val_ref = 0;
/*--------------------------------------------------------------------------------*/
/* Test Definitions */
/*--------------------------------------------------------------------------------*/
#define MAX_DELTA_f32 50.0e-8f
#define ABS(x) ((x) > 0 ? (x) : -(x))
/*
Function to test correctness of sin_cos output by comparing it with reference library
*/
#define COMPARISON_INTERFACE(type, threshold) \
if ( (ABS((type) sin_val_ref - (type) sin_val_fut) > \
(type) threshold ) || \
(ABS((type) cos_val_ref - (type) cos_val_fut) > \
(type) threshold)) \
{ \
JTEST_DUMP_STRF("Error: %f %f\n", \
ABS((type) sin_val_ref - (type) sin_val_fut), \
ABS((type) cos_val_ref - (type) cos_val_fut)); \
return JTEST_TEST_FAILED; \
}
/*
Sine and cosine test function for float32_t input
*/
JTEST_DEFINE_TEST(arm_sin_cos_f32_test, arm_sin_cos_f32)
{
/* Test function for all input degree values */
TEMPLATE_DO_ARR_DESC(
degree_idx, TYPE_FROM_ABBREV(f32),
degree, arm_sin_cos_degrees_f32
,
/* Display cycle count and run test */
JTEST_COUNT_CYCLES(
arm_sin_cos_f32(
degree,
(TYPE_FROM_ABBREV(f32) *) &sin_val_fut,
(TYPE_FROM_ABBREV(f32) *) &cos_val_fut)
);
ref_sin_cos_f32(
degree,
(TYPE_FROM_ABBREV(f32) *) &sin_val_ref,
(TYPE_FROM_ABBREV(f32) *) &cos_val_ref);
/* Test correctness */
COMPARISON_INTERFACE(
TYPE_FROM_ABBREV(f32),
MAX_DELTA_f32));
return JTEST_TEST_PASSED;
}
/*
Sine and cosine test function for q31_t input
*/
JTEST_DEFINE_TEST(arm_sin_cos_q31_test,
arm_sin_cos_q31)
{
/* Test function for all input degree values */
TEMPLATE_DO_ARR_DESC(
degree_idx, TYPE_FROM_ABBREV(q31),
degree, arm_sin_cos_degrees_q31
,
/* Display cycle count and run test */
JTEST_COUNT_CYCLES(
arm_sin_cos_q31(
degree,
(TYPE_FROM_ABBREV(q31) *) &sin_val_fut,
(TYPE_FROM_ABBREV(q31) *) &cos_val_fut)
);
ref_sin_cos_q31(
degree,
(TYPE_FROM_ABBREV(q31) *) &sin_val_ref,
(TYPE_FROM_ABBREV(q31) *) &cos_val_ref);
/* Convert q31 numbers to float for comparison purposes. */
ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_fut, &sin_val_fut, 1);
ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_fut, &cos_val_fut, 1);
ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_ref, &sin_val_ref, 1);
ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_ref, &cos_val_ref, 1);
/* Test correctness */
COMPARISON_INTERFACE(
TYPE_FROM_ABBREV(f32),
MAX_DELTA_f32));
return JTEST_TEST_PASSED;
}
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(sin_cos_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_sin_cos_f32_test);
JTEST_TEST_CALL(arm_sin_cos_q31_test);
}

View File

@ -0,0 +1,38 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "fast_math_templates.h"
#include "fast_math_test_data.h"
#include "type_abbrev.h"
SQRT_TEST_TEMPLATE_ELT1(q31);
SQRT_TEST_TEMPLATE_ELT1(q15);
SIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, sin);
SIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, sin);
SIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, sin);
SIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, cos);
SIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, cos);
SIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, cos);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(fast_math_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_sqrt_q31_test);
JTEST_TEST_CALL(arm_sqrt_q15_test);
JTEST_TEST_CALL(arm_sin_f32_test);
JTEST_TEST_CALL(arm_sin_q31_test);
JTEST_TEST_CALL(arm_sin_q15_test);
JTEST_TEST_CALL(arm_cos_f32_test);
JTEST_TEST_CALL(arm_cos_q31_test);
JTEST_TEST_CALL(arm_cos_q15_test);
}

View File

@ -0,0 +1,370 @@
#include "fast_math_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
float32_t fast_math_output_fut[FAST_MATH_MAX_LEN] = {0};
float32_t fast_math_output_ref[FAST_MATH_MAX_LEN] = {0};
float32_t fast_math_output_f32_fut[FAST_MATH_MAX_LEN] = {0};
float32_t fast_math_output_f32_ref[FAST_MATH_MAX_LEN] = {0};
const q31_t fast_math_q31_inputs[FAST_MATH_MAX_LEN] =
{
0x414A5524, 0x4CAB5A17, 0x2D6F5B56, 0x7DAF4E3B, 0x29B226EB, 0x41F6F6A ,
0x25CE38BF, 0x3A970AFA, 0x3A44382A, 0x05540F8 , 0x3D060524, 0x13D56570,
0x17D7791D, 0x7FE0438C, 0x26741841, 0x40A66E54, 0x218E4386, 0x39FF3726,
0x0DC177CA, 0x702F2CF5, 0x41142FF1, 0x6C1476AB, 0x15F640DD, 0x662C4E49,
0x38055E7E, 0x770871FE, 0x4F8B5360, 0x0D1928A0, 0x57647821, 0x258558CF,
0x0C0C604D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0x36462E24, 0x6CE00F5C,
0x66D40948, 0x355B5831, 0x3B72150A, 0x1EB61530, 0x73394127, 0x773F26F4,
0x18052980, 0x038D6587, 0x1CF517F4, 0x22AD1691, 0x7A812473, 0x7CDC7D7F,
0x4A5110D0, 0x6D895BB9, 0x0FD60F35, 0x1A215530, 0x20EB6DDA, 0x3DE62516,
0x250123E1, 0x5ED813C8, 0x61E175B1, 0x2CBB32F3, 0x6D350907, 0x5B140D7E,
0x6EAE272D, 0x3E221841, 0x418B7B88, 0x26BB1B80, 0x3CF010E4, 0x24DB166C,
0x79AB7E42, 0x62DF28D1, 0x47004665, 0x63F56FC6, 0x419E0C75, 0x46BE1F38,
0x243239B2, 0x758D03E0, 0x5CE12926, 0x3F574B74, 0x1F4458E2, 0x71D5639 ,
0x03A17B49, 0x173A7C76, 0x06EF7531, 0x48D32F34, 0x7D3E3063, 0x0F2F3549,
0x5C314C9 , 0x18CB6B6D, 0x26F83697, 0x447B1E9C, 0x2E323A33, 0x50745715,
0x01AC5746, 0x655A4E04, 0x4891060F, 0x1DA36B4F, 0x60E6227F, 0x20BF5EB4,
0x50B3225B, 0x40C10544, 0x415656C , 0x15405EAE, 0x185863E1, 0x236A1C4E,
0x08BD21F9, 0x2ACF7A68, 0x773665E5, 0x4EDF5F66, 0x617A1610, 0x524F4968,
0x42D006CD, 0x5F000079, 0x24DC2447, 0x6A4F5599, 0x37064D4A, 0x1DE70608,
0x233A2EE5, 0x137E488E, 0x18061B7B, 0x4079569D, 0x24A817D5, 0x44CE48F5,
0x575F7883, 0x22406802, 0x71AD70BB, 0x1D4A5D79, 0x3CBC7CE4, 0x335840D8,
0x05792E47, 0x27AD2C05, 0x3D196EAB, 0x331A40AF, 0x33035831, 0x13D93987,
0x7C542094, 0x045F317E, 0x5DC43F8B, 0x1379650C, 0x5C20193F, 0x7DD50298,
0x1D482B82, 0x4A6B6062, 0x5C8A757B, 0x272917C1, 0x10E16FBC, 0x355A5882,
0x66F86A35, 0x604555A1, 0x7DF7FBB , 0x758A6216, 0x1A113463, 0x53541BAD,
0x21576756, 0x483B6D8D, 0x1F052FCC, 0x4EA63DFB, 0x55B84677, 0x7B2E04F2,
0x787A796C, 0x04A12CD3, 0x46029BD , 0x1DB22DD8, 0x1A8C7F28, 0x061E452E,
0x132D3F78, 0x76525852, 0x73357BBA, 0x6BBB0A58, 0x62536AFA, 0x3F6B65EF,
0x6DC57B58, 0x1EB718CE, 0x66B02740, 0x5FF60B47, 0x32477B8F, 0x7FF35302,
0x29FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018209D, 0x47E079C9, 0x4CF576D3,
0x28074E34, 0x5D6F58ED, 0x234045D1, 0x51CE35F9, 0x25297896, 0x644320FE,
0x0F4449A9, 0x54C361C6, 0x701D52F1, 0x4E094820, 0x718F0810, 0x61540689,
0x79DE5A1F, 0x52865C23, 0x48AC3A4B, 0x6A0C1BE0, 0x21B705DB, 0x7086465D,
0x1CC10929, 0x1E1D716E, 0x6D231D4C, 0x20495108, 0x38FF1971, 0x149C78D4,
0x441F1E8B, 0x43D95372, 0x69C324B4, 0x210B7DC9, 0x47815E78, 0x02476137,
0x6163DDF , 0x390D6EC2, 0x2F684E5B, 0x0E680ABD, 0x02232615, 0x12593380,
0x7B1465FE, 0x065A6957, 0x130F53EB, 0x6D772EF7, 0x10E916B6, 0x63BC7A68,
0x2ACB00BB, 0x651C5590, 0x194714B5, 0x730904EE, 0x59BB61B4, 0x34867DBC,
0x391C706C, 0x3C164218, 0x28931CD0, 0x129A66AB, 0x13171F4D, 0x62882872,
0x4B167FD4, 0x66902F4C, 0x7A794932, 0x54B152C , 0x30856EA9, 0x39466D55,
0x36696451, 0x0F5B1E8C, 0x077A3C6A, 0x51B956B4, 0x367E2D2A, 0x1D2C662A,
0x78FB6880, 0x4E6D40B6, 0x40706FDC, 0x4DF9679C, 0x20306EDB, 0x63812AE7,
0x255D2748, 0x1B8B617B, 0x3E036FAD, 0x04E444A7, 0x55A37517, 0x669B2988,
0x18FD5E8C, 0x67BD05CE, 0x34BB346C, 0x76994800, 0x05B958B6, 0x6DFA2FEF,
0x2055B5C , 0x1F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB90B61, 0x43235DAC,
0x31D424B4, 0x768C0D7E, 0x162F2F9D, 0x7B2A7A99, 0x79392693, 0x442D12C0,
0x0692273E, 0x59A16E80, 0x5D956856, 0x44E73DAC, 0x0D874532, 0x5F5C1DD0,
0x5D167858, 0x05597EA2, 0x1D821476, 0x59654ED2, 0x594C0DC7, 0x1A873506,
0x3F693200, 0x7A651AB5, 0x20CC3C8A, 0x1F9E662C, 0x78E7631 , 0x2A01DA0 ,
0x3088472F, 0x12EE0D42, 0x360D4D5F, 0x73337E48, 0x0D634C06, 0x233A0ACB,
0x706651ED, 0x7AA54079, 0x262239D1, 0x3EBB6BB6, 0x225A4F3D, 0x32581A06,
0x6E6F5780, 0x577377C7, 0x75ED1DDC, 0x10DF2D15, 0x3C7929BC, 0x37175917,
0x354E381C, 0x762A2DD7, 0x76435AC1, 0x73BB749E, 0x52FE4E7E, 0x6C8140F4,
0x57694875, 0x12D30822, 0x474227CF, 0x37926D98, 0x121C7E24, 0x204E1EE7,
0x58C6268 , 0x2152080 , 0x316C3323, 0x7AB14A31, 0x61C13C03, 0x7D8E74F1,
0x73F446D0, 0x6C6C6A0A, 0x3BFD79FB, 0x67242969, 0x3E5524EB, 0x0FF5534 ,
0x52F05F1C, 0x17102DE3, 0x540F4A21, 0x798468E7, 0x419545EB, 0x193F7880,
0x2B246B20, 0x408A2BC4, 0x4BF66A49, 0x40894C55, 0x4CAA6398, 0x247856E9,
0x2F2A647D, 0x22F55D33, 0x70D37915, 0x50634C72, 0x5983671 , 0x2BCC5AF8,
0x1A77D48 , 0x411B5CFA, 0x71074D7E, 0x3A6B3593, 0x61425F05, 0x6271012A,
0x5B830310, 0x3D8418CA, 0x10A50792, 0x239F7137, 0x213D5071, 0x7F9930D4,
0x2462664F, 0x54180F8E, 0x291505BA, 0x6586387A, 0x144B2C12, 0x18E425C7,
0x3AA43373, 0x18F0503C, 0x19462AC0, 0x58B452EF, 0x72473895, 0x26BF5435,
0x6DA553B , 0x60912FA6, 0x5C337331, 0x3D93CD7 , 0x4D035752, 0x20691929,
0x389962F9, 0x36E701E9, 0x758B642C, 0x5FCA69E3, 0x596027F4, 0x2D5A2FD0,
0x5F18324A, 0x3DB165AA, 0x76BA3876, 0x1BC21AF6, 0x3CC10841, 0x73A60174,
0x625B7F58, 0x67C57724, 0x4458653C, 0x61573095, 0x2B370837, 0x03DF6CE3,
0x5D086EFA, 0x3F5227C2, 0x191B4785, 0x60843D82, 0x30DE11F1, 0x105E226C,
0x6E1C7AA2, 0x47AA5D14, 0x36676D03, 0x3B8D4DF6, 0x7372694 , 0x409521DC,
0x744206A , 0x4722023F, 0x2BE46AD5, 0x63E11D76, 0x4A4A09AB, 0x5CF252B9,
0x31586916, 0x4DFD7D84, 0x32037634, 0x2D7329D4, 0x4524582F, 0x2E5366C1,
0x3B0E019B, 0x38530C6A, 0x6A2542D , 0x0A6A00E5, 0x119725CC, 0x54065347,
0x1B6F7AF1, 0x6CCF71F1, 0x181117F2, 0x71674A76, 0x74F43880, 0x77A55F47,
0x59EA5B62, 0x4A331D95, 0x3CBB276F, 0x245C4D50, 0x4718D5 , 0x07CE05D1,
0x60D47AD5, 0x25CA1C40, 0x30061766, 0x669B39DF, 0x3D5F1320, 0x19306AD3,
0x28B30325, 0x0DD090F , 0x6A6E6F37, 0x2DF16F66, 0x2B514C7E, 0x31101C58,
0x7D4847FC, 0x515341CA, 0x77AB0EA6, 0x41320DAF, 0x3AF8531E, 0x24B31611,
0x6D377331, 0x7A832A22, 0x222511C7, 0x722D1F89, 0x3B194F18, 0x261B0A4D,
0x43F676DB, 0x4F8C6D61, 0x190F2250, 0x202E72A9, 0x560D4EA2, 0x308E67B4,
0x36746663, 0x17CC3852, 0x27EB2EAC, 0x7FDE0AA8, 0x264719A , 0x23261EDD,
0x3C0B339E, 0x06284D40, 0x48D82ECB, 0x24D44CF8, 0x43631B91, 0x4BF04248,
0x36497B9B, 0x68273C58, 0x630B7AF9, 0x20CC3F26, 0x6C3B7B71, 0x574433ED,
0x7A2552F6, 0x4CDE642D, 0x565B0142, 0x26F9207F, 0x67A207BE, 0x5B506684,
0x44DA4780, 0x11756A0C, 0x156104AF, 0x415561B0, 0x6E3A6886, 0x1DBA1EA2,
0x542359C8, 0x4C024E22, 0x758F052A, 0x1DD6395 , 0x2D194BAD, 0x616475A1,
0x42084602, 0x09C274AD, 0x13CB5562, 0x57FE2D5B, 0x607A4EE5, 0x16723A91,
0x4F624CCF, 0x2E5E24A3, 0x28FE6FAF, 0x3DDA6EF4, 0x32AF540C, 0x19A57B3B,
0x5D1D73A3, 0x23424B3E, 0x278445F5, 0x53971C3B, 0x427D7943, 0x5221358C,
0x26CE1A5E, 0x7B506CA4, 0x3B86636E, 0x60831F6D, 0x45E142F3, 0x21B77B04,
0x7BB65E0C, 0x78B80F5E, 0x7D8D172B, 0x3BF33A90, 0x2D572D9 , 0x2B5B4920,
0x36A05E01, 0x52745306, 0x47C64855, 0x1CAA669B, 0x304A2641, 0x4D6B1760,
0x3E176D79, 0x523241B0, 0x24A67957, 0x4BDE76AF, 0x4E5F1493, 0x4C215DA5,
0x33A052B , 0x1A4D00C2, 0x40AE6BCA, 0x390D106B, 0x69E86018, 0x5AF356CF,
0x63561D4 , 0x44F31C6 , 0x14B6299B, 0x0D2E25F0, 0x4CBF132A, 0x45AC18B6,
0x2227567D, 0x06B54E2F, 0x26344534, 0x22C515EC, 0x2442370D, 0x6C3721C6,
0x34EF687D, 0x1C06323A, 0x6AF36A60, 0x60396F52, 0x6AE70AA1, 0x49D06CBC,
0x6F9576C8, 0x584C4258, 0x3A9A27BB, 0x66DF0D47, 0x1D4804EA, 0x57DD1E67,
0x789C7895, 0x75336111, 0x25C122C8, 0x62742114, 0x4FBF6D26, 0x3F9F6482,
0x66F02CD9, 0x11083202, 0x499E2618, 0x7EBC1351, 0x440112F1, 0x49DF7BC1,
0x3BF45C25, 0x31BA7FA0, 0x61AF1AED, 0x6B1F7D29, 0x2D865294, 0x63E01129,
0x7E9E77A5, 0x100435D7, 0x1FE3A71 , 0x08597C81, 0x722849FA, 0x31C520AF,
0x7BA178DC, 0x7F102D31, 0x5CA07864, 0x150E6F98, 0x02C34882, 0x5D041F11,
0x0C613C57, 0x53984FD1, 0x426F38AD, 0x55992B1D, 0x7AFA078D, 0x2B253413,
0x594B32CF, 0x32887E38, 0x28933B46, 0x1A0B4168, 0x291B4A94, 0x653A5E8D,
0x21746BBE, 0x5EFE6415, 0x30DA429C, 0x50C5640C, 0x34711AA4, 0x529C67A6,
0x105957CD, 0x4D287499, 0x03CA0AA7, 0x28385832, 0x25A04A02, 0x420D47A4,
0x35627556, 0x4BC11E4C, 0x59E215C7, 0x27E838B4, 0x458612F4, 0x22827F6F,
0x449D4DBA, 0x679B7362, 0x4E495845, 0x4FD270D1, 0x395E76A0, 0x375A655E,
0x12E2058F, 0x73F970CA, 0x61EF73B3, 0x51FF5362, 0x67410345, 0x7FDA0B3B,
0x221962E8, 0x17AB6543, 0x26557412, 0x4B30084D, 0x268E191D, 0x7E0D13DF,
0x73EF127D, 0x4DEC5DB1, 0x77FA745F, 0x56002898, 0x12DD0A40, 0x157F6DDF,
0x42A55F8E, 0x43597924, 0x7B630C3F, 0x338B6B58, 0x32945F75, 0x4FA23A0E,
0x036E38C0, 0x33B18FD , 0x06114337, 0x24660ACB, 0x19BB02F0, 0x124C0A47,
0x3A951701, 0x01155ABF, 0x0C612D71, 0x36074CA7, 0x51660C41, 0x635F58C7,
0x7FC2002D, 0x0E6A7CF3, 0x65B07D07, 0x015F6A6B, 0x791B70DD, 0x6E475719,
0x424314C7, 0x68426EB , 0x71942FEE, 0x464A2F52, 0x677579FD, 0x6BA775AE,
0x1F66EFF , 0x1A795237, 0x78D9545F, 0x1D0B344D, 0x3BD34AB7, 0x2F85312A,
0x16C542AD, 0x3990185D, 0x08DF3351, 0x02811AA5, 0x6D351F41, 0x4066269D,
0x06B660BF, 0x6EDB4768, 0x5DD70CF0, 0x35D74F6E, 0x689E220C, 0x11431687,
0x147C49C9, 0x385762BD, 0x302F0AE4, 0x1DAB67F8, 0x483256C9, 0x37D50FCB,
0x4EA82711, 0x4D7B2C98, 0x19DB78BC, 0x58DE0DC2, 0x6AFF7E7B, 0x37621C93,
0x792C6E19, 0x77001192, 0x7F88439D, 0x2E196A66, 0x6C71378C, 0x6AF43B3A,
0x7C16225E, 0x6687337 , 0x4BEE1608, 0x6D5B5552, 0x345D4590, 0x681209CC,
0x7B242819, 0x508A1416, 0x19880FE3, 0x1FC7288A, 0x24BD0502, 0x6A1D1678,
0x20E6CA0 , 0x59BE2057, 0x5ADE11EB, 0x5EA8649D, 0x7A200E6F, 0x1149481D,
0x72281E93, 0x0A5B0451, 0x67312D58, 0x63B849F1, 0x52217960, 0x7CDF59F3,
0x33C775C0, 0x1EBA0799, 0x7DF1506 , 0x34E96110, 0x38FC73E3, 0x5EA059B2,
0x022936EA, 0x316406F6, 0x43911185, 0x6C0D10F3, 0x1C6F3DF8, 0x38DB12A9,
0x5CD41244, 0x2C9F0A7B, 0x5F4A315F, 0x77CE1C66, 0x4C800860, 0x318D53E0,
0x7105420D, 0x575361F2, 0x750810BA, 0x217E4CA5, 0x2010140 , 0x4D884763,
0x42BB0DA7, 0x32D53A74, 0x141C6CD4, 0x087F5FC3, 0x464B53 , 0x2D2A05F6,
0x15532B45, 0x5D5C3CE1, 0x3EB9216A, 0x2214611B, 0x1FC52C5F, 0x11AE5DD7,
0x20B925A9, 0x7C640AF4, 0x740009AC, 0x6D0E0321, 0x38E6A61 , 0x09104544,
0x474F26C8, 0x15254CF3, 0x341A6B59, 0x661904CE, 0x598B2197, 0x2412659D,
0x61976DD4, 0x329B3E16, 0x08FD1FB0, 0x304006F3, 0x3456309 , 0x55CC15F1,
0x59DA7630, 0x5C801335, 0x0036D52 , 0x353775A5, 0x299476EB, 0x75280568,
0x766F5264, 0x2EA233A6, 0x647619F3, 0x7FB30C7A, 0x1BC03B9 , 0x36BC3061,
0x3F30596E, 0x3E2A527B, 0x0AC04220, 0x641979A3, 0x1ECC3B89, 0x21447BC1,
0x4E8F2E26, 0x0C5A1D90, 0x299E5467, 0x57C947E3, 0x1D4865ED, 0x76F31C3D,
0x4EE81CDF, 0x3479195E, 0x6FFB3AE1, 0x5C82398 , 0x300F7364, 0x47940AFA,
0x3B853E3E, 0x598C440D, 0x224A3D89, 0x3A674204, 0x22880A38, 0x2E77F2D ,
0x22841C9C, 0x4F0609C3, 0x1FE90922, 0x09335017, 0x2D6B69A7, 0x7EDB63F9,
0x099A74EF, 0x1F9F1B40, 0x24BE17E8, 0x251D2F7A, 0x16AC50D3, 0x28D7ED6 ,
0x6D193443, 0x76156F1B, 0x30DF6A4E, 0x64FF6794, 0x63DB2C9A, 0x74353022,
0x556E025C, 0x23802AF9, 0x425018A4, 0x675A18BB, 0x70B227B9, 0x7FB01BF ,
0x63E7910 , 0x6C661591, 0x65745D2B, 0x4F6E379D, 0x52B32FAC, 0x1E6A1101,
0x1DE22385, 0x2338191F, 0x469704B6, 0x4BAB4599, 0x54EB4809, 0x78393E6D,
0x550017DD, 0x39B120E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1,
0x3FCC0EFE, 0x47F37E64, 0x25177A90, 0x34BF5D4D, 0x5A8D3DCE, 0x6F7275A8,
0x6BEA2655, 0x2A1810FC, 0x64DB593A, 0x0A4D4BC0, 0x2C402E93, 0x71C077F9,
0x6F0C4577, 0x70412414, 0x752F1DC1, 0x582E38EA, 0x2C455F7B, 0x4DCD4EDB,
0x12BC2696, 0x7B037135, 0x4FCA1F8C, 0x3D5E75F6, 0x502F41B0, 0x361653F1,
0x2E5B0E31, 0x20266B19, 0x57E703D7, 0x467B3E00, 0x47032BA3, 0x1F776B9C,
0x62570A84, 0x7EC75B48, 0x1BD5012 , 0x7D0A2D5D, 0x7FCC29F2, 0x291304B6,
0x19D558ED, 0x47551C8 , 0x7D12738F, 0x3ADE0892, 0x5F741997, 0x25D2E2F ,
0x2B9F2269, 0x5C134FED, 0x15E92399, 0x54437F4E, 0x272D32AB, 0x56186AA1,
0x7E4D355C, 0x234D7836, 0x2A871760, 0x4637A94 , 0x2C183207, 0x5FC78B3 ,
0x7F10621E, 0x276966B2, 0x6C9F4A11, 0x4E3F182C, 0x62BA2EF5, 0x25F239CD,
0x73D63FED, 0x636E1F5E, 0x0AC15A0E, 0x3F3D33EB, 0x738326EA, 0x35C366B1,
0x4D476E86, 0x02F63208, 0x711A1FC1, 0x426A4396, 0x7E4D1B93, 0x75E46DB7,
0x2F3C44A7, 0x51A56F5C, 0x7AD2463D, 0x0A5639CA, 0x49952C78, 0x4C4B64F6,
0x3AFE7F8D, 0x66993D04, 0x43867F37, 0x4BC146C2, 0x55A875EC, 0x681A1A75,
0x30A67E1B, 0x4A4A7D0C, 0x20F77993, 0x1891805 , 0x738976AD, 0x542667D6,
0x3C5C6EBF, 0x4499187F, 0x2BF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456,
0x421B4F29, 0x76740F9C, 0x09163B8D, 0x3D72AAB , 0x1AD54DD7, 0x754946EE,
0x7317342B, 0x218546D4, 0x10563DA7, 0x54BB4CCE, 0x0CE63E46, 0x5D146234,
0x33BE6C63, 0x325044E5, 0x09D72335, 0x07C36BA , 0x365530CC, 0x2DFA448C,
0x1663516F, 0x59B00AA , 0x150274EA, 0x12532D4A, 0x3CEF002D, 0x492F3DA5,
0x263A2574, 0x6F8005C2, 0x14A10651, 0x2F627ABA, 0x68293238, 0x26987646,
0x52590516, 0x10144D36, 0x59B151B9, 0x2B2A4F05, 0x53953699, 0x27851C75,
0x180646F3, 0x2E970306, 0x32843145, 0x18F4FE8F
};
/* The source data is random across the q31_t range. Accessing it by word should
remain random. */
const q15_t * fast_math_q15_inputs = (q15_t *) fast_math_q31_inputs;
const float32_t fast_math_f32_inputs[FAST_MATH_MAX_LEN] =
{
/* Special values close to increments of pi/2 */
-0.0, 0.0, -1.5E-07, 1.5E-07, 1.5707964, 1.5707965,
-1.5707964, -1.5707965, 3.1415925, 3.1415927, -3.1415925, -3.1415927,
6.2831855, 6.283186, -6.2831855, -6.283186,
/* Test some slightly larger values too */
10.1, -13.2,
/* Random values (0, 2pi) */
-1.3684878, 1.1444261, 0.2627620, 0.6719343, 3.8732286, 5.9040643,
-2.2271110, 2.5800587, 6.1848498, 5.9412493, 4.2514839, 6.2096863,
-4.8181437, 2.1155439, 4.1618680, 1.5341357, 1.8567268, 4.2736867,
-3.3165594, 2.5861183, 3.7864876, 4.7156566, 3.6664471, 3.4670146,
-3.6666823, 3.2158594, 0.5189454, 4.5211925, 6.2590334, 2.2276047,
-6.1025991, 2.1768018, 5.5703194, 2.8569321, 2.5976403, 1.3680509,
-0.7895111, 1.9409676, 4.5622487, 4.9189303, 4.3591961, 0.0615894,
-5.2980657, 5.7951829, 4.8440482, 0.2680398, 2.3762136, 4.4254964,
-4.5836656, 1.4091744, 1.6905207, 4.2287795, 3.0001720, 3.9189258,
-1.4856273, 1.1129014, 5.2128031, 4.8187110, 5.8715002, 0.6778860,
-1.1449692, 0.6226340, 3.0772767, 1.2141962, 5.6290528, 0.6225986,
-0.2775005, 3.5015887, 4.8537297, 1.9599772, 1.1245801, 2.1297213,
-1.3203840, 3.2053828, 5.6948550, 3.9516457, 0.6379562, 2.4558128,
-0.3431663, 3.1496534, 2.7125841, 6.2678565, 5.0994494, 3.0514394,
-5.6199810, 0.8642307, 2.4504731, 5.8267510, 5.7647838, 4.4835177,
3.8851284, 2.1569414, 5.8812331, 0.7839784, 4.5904032, 4.0619375,
5.2348483, 2.5024810, 4.7112719, 5.2478452, 2.0260784, 3.4699621,
6.1520498, 3.4514073, 2.0761128, 3.8922546, 2.2659464, 4.7532896,
2.6006151, 3.0934955, 4.3652005, 6.1118673, 2.0593452, 5.2640727,
4.6437278, 5.9952549, 0.2005758, 2.2422740, 4.1635768, 1.7687265,
1.4475395, 4.4681525, 3.9243074, 3.7109036, 4.1496541, 0.2987948,
2.1914796, 2.8358565, 1.5136507, 4.4927603, 5.3795520, 1.7687650,
4.5933278, 0.8655898, 5.2572843, 0.8708603, 3.6958286, 2.3006310,
5.0690197, 3.1653480, 3.0762120, 5.5106597, 2.2188555, 2.8239372,
6.0540393, 0.2657649, 6.1132775, 1.1888217, 4.1916405, 3.6847088,
4.2418564, 2.2683684, 3.8973243, 5.0966113, 0.1209983, 0.5269928,
6.1248595, 4.0925498, 1.4529100, 2.5352096, 0.7666775, 1.6866509,
1.6200953, 2.0839142, 0.9565145, 2.1865966, 0.7644026, 5.5552975,
0.5923686, 5.8436176, 2.5071164, 0.2978322, 2.1511962, 4.6242118,
4.9931353, 3.4237447, 4.3116692, 5.6148598, 0.3442670, 1.9079607,
0.2902301, 1.2282167, 4.5249352, 4.5349096, 5.5153742, 3.6595342,
0.4441228, 5.7977751, 5.0288862, 1.7966571, 3.4159368, 6.1875316,
4.4967379, 5.2714014, 2.7222564, 2.9570223, 3.5230663, 1.6907520,
4.7062218, 3.1660203, 4.0640250, 1.9336225, 0.8716326, 2.9881129,
2.2773988, 4.9518627, 4.9027432, 4.2003861, 0.8388295, 0.1354396,
3.5175829, 1.8901016, 5.9024853, 6.1631993, 1.8008890, 5.0317023,
5.6304337, 3.7543702, 5.5544410, 5.9296402, 3.4504620, 4.5765894,
3.6238793, 0.1624673, 2.8056369, 4.0608350, 3.2748147, 2.3393094,
5.8881908, 5.2121085, 5.3349614, 2.3407017, 3.7270886, 5.4824095,
5.8653636, 4.2000849, 1.2992148, 4.1082644, 0.4527132, 2.5555406,
4.1904544, 5.8667713, 5.0953493, 3.0445066, 4.7547955, 2.6203864,
6.1059115, 6.2076281, 5.4295991, 2.4434288, 2.8572272, 1.5499814,
4.9286757, 5.5470323, 5.7410198, 3.5078076, 3.7627993, 0.9354200,
5.6530665, 2.8299063, 1.2922774, 5.6526739, 4.7914663, 5.5448250,
1.7903950, 4.2300036, 4.1737937, 0.7716694, 2.5592571, 1.7296789,
4.5029688, 1.7805566, 5.6309835, 5.1935484, 2.4506089, 3.1284165,
4.3655898, 5.2424950, 3.8304163, 3.6111801, 2.0485834, 2.8678003,
4.4849099, 5.5568808, 4.5292698, 0.1169475, 4.2397456, 2.7552322,
2.7509053, 0.7353640, 5.1187960, 2.0411269, 1.5470969, 2.1533307,
2.3605433, 3.4340988, 3.5306485, 2.4870244, 2.5015301, 3.2381477,
4.1313862, 5.9747764, 4.5386496, 2.5137752, 5.2268018, 0.8440727,
0.3799239, 0.5293398, 0.0000000, 2.0371338, 1.8958053, 0.0733938,
3.3923238, 0.5992443, 0.9205800, 3.9655772, 5.3992694, 6.1212150,
3.5866836, 6.2633946, 3.4780043, 3.2387210, 2.0777367, 2.7017810,
3.0901098, 0.4463392, 5.5778300, 0.4061048, 2.7406309, 5.1938664,
2.4789345, 3.8545764, 5.1436714, 5.5683790, 5.8503469, 1.1987353,
1.6247202, 5.6414565, 3.7282025, 3.1657206, 3.8503962, 5.1485818,
3.3419582, 1.2696753, 2.8518968, 2.6886436, 6.0698884, 3.8959208,
4.3692639, 4.5249277, 2.1796068, 3.2483466, 3.4978155, 0.9832885,
3.5315023, 4.3655778, 2.6794992, 5.2544420, 4.5954405, 2.2621418,
2.8539005, 2.4277593, 4.8729535, 4.6135614, 2.7035154, 4.3589760,
5.9389515, 4.9274787, 4.4332387, 0.6869673, 2.4500066, 3.7127639,
2.8863700, 0.3162955, 1.4368865, 5.2413645, 0.0982985, 5.4268554,
0.4905223, 4.2037186, 3.1429204, 1.3696954, 3.5915675, 0.7677371,
4.2170618, 3.7673071, 0.3517086, 0.3540136, 0.9581898, 0.1232828,
2.7342886, 5.2290017, 3.8791769, 3.2680695, 5.4278441, 0.6138541,
5.7054603, 0.6786889, 3.2483864, 0.8994758, 3.5146290, 0.0287746,
4.8172051, 5.3325973, 5.7605579, 6.2013046, 3.1738449, 1.7053924,
0.6330341, 3.1909083, 3.6794907, 4.7933610, 0.5212697, 4.1569315,
3.2482749, 1.0747264, 5.8971330, 3.7101152, 2.7685894, 5.9182512,
4.1212281, 2.8396586, 5.2759745, 3.3465722, 3.4801751, 4.2729777,
2.3071222, 1.5035072, 3.6374836, 5.4468120, 2.5558538, 0.7075818,
2.7887656, 1.8861142, 2.5219880, 5.2361777, 2.5360737, 2.4515477,
2.2647672, 0.8812504, 1.6344462, 0.5454754, 2.6979830, 1.6165554,
1.8695956, 2.6694641, 0.7490013, 3.1105972, 4.4384875, 1.5304166,
4.9327408, 0.4655185, 2.4748426, 0.0213259, 1.3865538, 0.0081717,
1.1886509, 0.8952537, 1.6843712, 1.0988793, 0.8711572, 3.7629093,
5.6615138, 5.9022971, 1.3897429, 3.0327137, 2.3625475, 3.2910070,
1.6642436, 0.4295011, 2.7415239, 1.0923508, 0.1640358, 5.9984205,
2.7055177, 6.0416507, 4.7903915, 0.0461730, 4.2728088, 4.4356194,
4.0534637, 3.4702651, 1.3704176, 4.8529200, 1.4327442, 2.3302118,
5.5978709, 5.3807748, 2.5285646, 1.9981730, 3.8241692, 5.7189253,
5.7120324, 3.7170973, 2.0896078, 5.3599569, 2.7796679, 5.6822331,
0.2084724, 3.3453343, 4.5018856, 1.1265867, 2.1144987, 1.1794352,
2.0227281, 2.5375066, 3.4467437, 0.3062336, 3.4729184, 1.7266910,
1.5174002, 1.5277262, 0.9686124, 6.0093412, 5.8789338, 5.1441345,
4.5758041, 1.1046577, 2.2642776, 1.1862024, 0.0075297, 1.9881224,
4.3958232, 3.9285942, 3.4121603, 2.7585521, 1.8059588, 3.1520171,
4.7849358, 4.7903511, 3.6194660, 4.6977042, 4.0560129, 0.7742111,
3.1692252, 2.1819072, 0.5789810, 0.9289656, 1.2451370, 4.2239985,
2.7112647, 4.3630684, 1.6134250, 0.0613154, 3.3444332, 1.7554715,
5.9453394, 5.6953510, 2.4673100, 0.1561700, 4.2187618, 5.2600982,
6.1041123, 0.3577199, 2.8294680, 3.6597688, 4.3142726, 4.5203293,
4.0843265, 4.5673388, 2.3489542, 3.6541880, 0.7295941, 0.3622530,
6.1560465, 1.7896003, 3.7383338, 6.0454361, 1.1672793, 1.2129049,
2.1466132, 5.8615704, 2.4546365, 1.7166712, 0.9547117, 2.4951084,
2.3544507, 0.8238180, 2.7334414, 0.5749942, 3.8618151, 0.0689837,
3.6019012, 4.9620190, 1.4788531, 2.8149909, 3.5773830, 0.3857966,
3.1182750, 4.0357856, 1.3902536, 5.2593808, 6.1014456, 5.3179177,
3.1792883, 1.7522271, 4.6911344, 1.4886775, 6.0151778, 3.8972087,
3.7715583, 1.0845061, 0.5676653, 1.6038597, 5.3945577, 5.7244031,
4.3959286, 4.5564551, 1.4444168, 3.6194506, 5.0933266, 2.5374227,
6.2105471, 0.5654792, 2.0165320, 3.2132771, 0.3808010, 4.5596317,
3.4969429, 3.3260664, 5.2149334, 5.3957421, 4.9576149, 1.9970040,
2.8413032, 4.7263877, 0.6902815, 0.6895316, 1.6957291, 3.2963937,
6.1113470, 4.4636294, 1.9594738, 1.8312791, 5.3429527, 5.7280497,
4.0166905, 1.6045389, 0.5571039, 5.2669152, 3.6738954, 5.9571429,
0.3834561, 3.6734096, 1.7913869, 5.2007946, 1.2000032, 2.7804978,
2.4718774, 5.1935175, 4.2529065, 1.3044083, 1.9987109, 0.8407592,
4.2189258, 3.5876427, 1.0666779, 0.9277486, 2.9912971, 5.7057758,
3.4694180, 0.2069675, 0.3384307, 5.0583614, 2.8360719, 2.4042372,
4.9614777, 2.2888819, 3.3448533, 4.4714710, 5.4756485, 2.0652177,
4.0848120, 6.1250762, 0.4773170, 3.6883502, 2.6005256, 1.9423615,
1.6577182, 4.7674690, 6.2531264, 1.1722630, 4.9080805, 1.2302350,
6.2351753, 5.0407581, 2.6654950, 4.5795867, 3.1312479, 5.0830358,
2.2400117, 0.4602021, 3.7133088, 5.7188788, 1.2174673, 2.7166470,
4.7071094, 0.2462034, 5.9459353, 4.7983010, 3.5111731, 1.1551193,
3.1287047, 3.2537199, 6.2470131, 5.3711915, 6.0469623, 4.2659122,
2.5352740, 5.8746469, 3.0126903, 1.4563896, 2.4899651, 4.4301324,
3.5095299, 4.7540509, 6.2547920, 6.0471349, 3.3619258, 6.0561746,
0.7264988, 0.3232592, 1.9122808, 3.6454528, 3.3361480, 5.6624574,
3.3963785, 2.7142142, 3.4096772, 4.4762342, 0.1047703, 5.0323343,
0.8954125, 3.0063438, 1.6137441, 2.3190715, 4.1579916, 1.0656836,
1.7516517, 1.2454643, 1.2256706, 2.0535941, 5.5313259, 2.9600203,
2.5382144, 1.1261446, 6.0879353, 2.5601199, 5.3060708, 3.8662016,
2.3663172, 5.5114955, 4.9313732, 2.9213939, 5.1143679, 5.6450910,
2.6969853, 2.1006537, 3.7488443, 5.6673754, 4.4112136, 2.3716204,
4.6178643, 5.9948046, 3.4105954, 3.3935850, 1.9547595, 0.4475800,
1.1434170, 0.5842667, 2.9121888, 0.0586379, 5.7492774, 4.0384655,
0.0089162, 0.1909163, 1.3098570, 2.8586366, 0.7996361, 0.0543350,
4.5683759, 2.2249794, 4.9036865, 2.7435946, 2.7429546, 0.3092155,
0.3118464, 0.5723993, 3.7324447, 1.5147758, 5.2864780, 5.3860266,
6.0545540, 3.0718480, 1.3842492, 1.4213108, 3.3727372, 4.7884765,
2.1838288, 2.8980046, 4.0169897, 5.7637923, 1.0151904, 4.4964699,
3.6300404, 2.7224978, 5.5558613, 2.4696170, 1.1245340, 3.9793522,
3.9207111, 2.0605178, 5.0451799, 6.2799046, 6.1636676, 0.7981966,
1.4592079, 0.1484872, 3.8166117, 0.6962355, 2.5601436, 5.5548184,
3.4440198, 2.3185147, 1.3090764, 2.7705283, 6.0079576, 0.7792778,
2.9578927, 5.3840384, 0.2726304, 4.3456090, 6.1511471, 1.7798247,
0.8405677, 4.3057392, 5.7142715, 3.8382030, 5.6547587, 1.2153801,
4.7401894, 2.1756202, 2.6303011, 0.9784166, 5.1459324, 3.9265103,
4.6405120, 5.0586705, 0.4223724, 5.9739917, 3.1263686, 4.7447217,
4.6646686, 5.2221411, 0.9833301, 2.8733554, 3.8836400, 5.8570808,
-5.2470141, 5.6261119, 3.6600718, 3.6615062, 5.3716581, 0.2190677,
-5.5632585, 2.5618482, 0.2285950, 4.6881858, 0.9728179, 0.9042027,
-3.8073530, 1.5989503, 2.0367209, 2.5245268, 2.5533189, 2.4265105,
-3.8314979, 1.0486053, 1.1818174, 0.5945707, 2.0306392, 4.8355201,
-1.4710068, 4.6518534, 4.3531065, 5.1778361, 5.2023364, 1.8432851,
-1.9438243, 3.2862931, 2.0439139, 5.2266206, 5.0912323, 3.4997233,
-1.6522518, 4.2761236, 1.4680860, 2.8678051, 2.4163051, 3.3841326,
-6.2310582, 4.7451897, 6.1603795, 1.4751828, 3.3210347, 0.3231823,
-4.7555888, 3.7823504, 5.3857498, 6.2095284, 5.8401232, 2.5730582,
-0.0021455, 3.3984387, 1.3052100, 1.3777994, 2.0471011, 0.6028680,
-4.6968925, 4.7030205, 3.4136510, 2.1245480, 5.2297066, 3.4719134,
-6.0164208, 5.6098372, 2.2399783, 3.4331443, 2.1782657, 3.9131853,
-5.0053405, 4.6864702, 0.7887674, 5.1672539, 0.1580253, 2.6039335,
-4.5955687, 4.9095176, 2.3077255, 4.6801428, 5.6062801, 1.5243220,
-0.8142818, 1.4141432, 2.1992023, 1.8038058, 5.8275790, 0.3224138,
-3.7238350, 1.0235240, 5.2678588, 1.0528164, 3.1554195, 6.2789723,
-2.2330890, 0.2957980, 1.3424690, 2.4996969, 2.0964990, 1.4426353,
-5.8818165, 4.2926017, 6.0451393, 2.7518666, 5.9083095, 0.0366581,
-3.8346722, 5.0333074, 1.4638661, 5.8588735, 4.7957215, 5.1927356,
-3.6031780, 4.9799375, 2.0674268, 1.4040530, 1.9627813, 3.6726693,
-5.2145043, 1.8250297, 2.5293238, 5.4164658, 3.8625225, 6.2278165,
-1.2798778, 5.1975080, 4.2465638, 1.5641957, 2.9894493, 2.5074636,
-3.7663816, 5.0298329, 0.6601666, 5.1612735, 5.2847013, 2.2274284,
-2.7022061, 3.5954850, 4.4034117, 4.6650751, 4.7619266, 2.4449681,
-2.6973871, 6.0088907, 3.6000853, 5.3389611
};

View File

@ -0,0 +1,244 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
#define BIQUAD_DEFINE_TEST(suffix, instance_name, config_suffix, output_type) \
JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##_##suffix##_test, \
arm_biquad_cascade_##config_suffix##_##suffix) \
{ \
instance_name biquad_inst_fut = { 0 }; \
instance_name biquad_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numstages_idx, uint16_t, numStages, filtering_numstages \
, \
/* Initialize the BIQUAD Instances */ \
arm_biquad_cascade_##config_suffix##_init_##suffix( \
&biquad_inst_fut, numStages, \
(output_type*)filtering_coeffs_b_##suffix, \
(void *) filtering_pState); \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Stages: %d\n", \
(int)blockSize, \
(int)numStages); \
\
JTEST_COUNT_CYCLES( \
arm_biquad_cascade_##config_suffix##_##suffix( \
&biquad_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_biquad_cascade_##config_suffix##_init_##suffix( \
&biquad_inst_ref, numStages, \
(output_type*)filtering_coeffs_b_##suffix, \
(void *) filtering_pState); \
\
ref_biquad_cascade_##config_suffix##_##suffix( \
&biquad_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(suffix, config_suffix, speed, output_type) \
JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##speed##_##suffix##_test, \
arm_biquad_cascade_##config_suffix##speed##_##suffix) \
{ \
arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_fut = { 0 }; \
arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numstages_idx, uint16_t, numStages, filtering_numstages \
, \
TEMPLATE_DO_ARR_DESC( \
postshifts_idx, uint8_t, postShift, filtering_postshifts \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Stages: %d\n" \
"Post Shift: %d\n", \
(int)blockSize, \
(int)numStages, \
(int)postShift); \
\
/* Initialize the BIQUAD Instances */ \
arm_biquad_cascade_##config_suffix##_init_##suffix( \
&biquad_inst_fut, numStages, \
(output_type*)filtering_coeffs_b_##suffix, \
(void *) filtering_pState, postShift); \
\
JTEST_COUNT_CYCLES( \
arm_biquad_cascade_##config_suffix##speed##_##suffix( \
&biquad_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_biquad_cascade_##config_suffix##_init_##suffix( \
&biquad_inst_ref, numStages, \
(output_type*)filtering_coeffs_b_##suffix, \
(void *) filtering_pState, postShift); \
\
ref_biquad_cascade_##config_suffix##speed##_##suffix( \
&biquad_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type)))); \
\
return JTEST_TEST_PASSED; \
}
JTEST_DEFINE_TEST(arm_biquad_cas_df1_32x64_q31_test,
arm_biquad_cas_df1_32x64_q31)
{
arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_fut = { 0 };
arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_ref = { 0 };
TEMPLATE_DO_ARR_DESC(
blocksize_idx, uint32_t, blockSize, filtering_blocksizes
,
TEMPLATE_DO_ARR_DESC(
numstages_idx, uint16_t, numStages, filtering_numstages
,
TEMPLATE_DO_ARR_DESC(
postshifts_idx, uint8_t, postShift, filtering_postshifts
,
/* Initialize the BIQUAD Instances */
arm_biquad_cas_df1_32x64_init_q31(
&biquad_inst_fut, numStages,
(q31_t*)filtering_coeffs_b_q31,
(void *) filtering_pState, postShift);
/* Display test parameter values */
JTEST_DUMP_STRF("Block Size: %d\n"
"Number of Stages: %d\n",
(int)blockSize,
(int)numStages);
JTEST_COUNT_CYCLES(
arm_biquad_cas_df1_32x64_q31(
&biquad_inst_fut,
(void *) filtering_q31_inputs,
(void *) filtering_output_fut,
blockSize));
arm_biquad_cas_df1_32x64_init_q31(
&biquad_inst_ref, numStages,
(q31_t*)filtering_coeffs_b_q31,
(void *) filtering_pState, postShift);
ref_biquad_cas_df1_32x64_q31(
&biquad_inst_ref,
(void *) filtering_q31_inputs,
(void *) filtering_output_ref,
blockSize);
FILTERING_SNR_COMPARE_INTERFACE(
blockSize,
q31_t))));
return JTEST_TEST_PASSED;
}
JTEST_DEFINE_TEST(arm_biquad_cascade_df2T_f64_test,
arm_biquad_cascade_df2T_f64)
{
arm_biquad_cascade_df2T_instance_f64 biquad_inst_fut = { 0 };
arm_biquad_cascade_df2T_instance_f64 biquad_inst_ref = { 0 };
TEMPLATE_DO_ARR_DESC(
blocksize_idx, uint32_t, blockSize, filtering_blocksizes
,
TEMPLATE_DO_ARR_DESC(
numstages_idx, uint16_t, numStages, filtering_numstages
,
/* Display test parameter values */
JTEST_DUMP_STRF("Block Size: %d\n"
"Number of Stages: %d\n",
(int)blockSize,
(int)numStages);
/* Initialize the BIQUAD Instances */
arm_biquad_cascade_df2T_init_f64(
&biquad_inst_fut, numStages,
(float64_t*)filtering_coeffs_b_f64,
(void *) filtering_pState);
JTEST_COUNT_CYCLES(
arm_biquad_cascade_df2T_f64(
&biquad_inst_fut,
(void *) filtering_f64_inputs,
(void *) filtering_output_fut,
blockSize));
arm_biquad_cascade_df2T_init_f64(
&biquad_inst_ref, numStages,
(float64_t*)filtering_coeffs_b_f64,
(void *) filtering_pState);
ref_biquad_cascade_df2T_f64(
&biquad_inst_ref,
(void *) filtering_f64_inputs,
(void *) filtering_output_ref,
blockSize);
FILTERING_DBL_SNR_COMPARE_INTERFACE(
blockSize,
float64_t)));
return JTEST_TEST_PASSED;
}
BIQUAD_DEFINE_TEST(f32,arm_biquad_casd_df1_inst_f32, df1,float32_t);
BIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_df2T_instance_f32,df2T,float32_t);
BIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_stereo_df2T_instance_f32,stereo_df2T,float32_t);
BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,,q31_t);
BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,,q15_t);
BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,_fast,q31_t);
BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,_fast,q15_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(biquad_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_biquad_cascade_df1_f32_test);
JTEST_TEST_CALL(arm_biquad_cascade_df2T_f32_test);
JTEST_TEST_CALL(arm_biquad_cascade_stereo_df2T_f32_test);
JTEST_TEST_CALL(arm_biquad_cascade_df2T_f64_test);
JTEST_TEST_CALL(arm_biquad_cascade_df1_q31_test);
JTEST_TEST_CALL(arm_biquad_cascade_df1_q15_test);
JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q31_test);
JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q15_test);
JTEST_TEST_CALL(arm_biquad_cas_df1_32x64_q31_test);
}

View File

@ -0,0 +1,473 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
/*--------------------------------------------------------------------------------*/
/* Header Stuff */
/*--------------------------------------------------------------------------------*/
#define CONV_MAX_INPUT_ELTS 32
#define CONV_MAX_OUTPUT_ELTS (CONV_MAX_INPUT_ELTS * 2)
#define CONV_TEST_VALID_PARTIAL_PARAMS(input_a_len, input_b_len, \
first_index, num_points) \
(((((input_a_len) + (input_b_len) - 1)) >= num_points + first_index ) \
&& (num_points > 0))
/*--------------------------------------------------------------------------------*/
/* Input Interfaces */
/*--------------------------------------------------------------------------------*/
/*
* General:
* Input interfaces provide inputs to functions inside test templates. They
* ONLY provide the inputs. The output variables should be hard coded.
*
* The input interfaces must have the following format:
*
* ARM_xxx_INPUT_INTERFACE() or
* REF_xxx_INPUT_INTERFACE()
*
* The xxx must be lowercase, and is intended to be the indentifying substring
* in the function's name. Acceptable values are 'sub' or 'add' from the
* functions arm_add_q31.
*/
#define CONV_arm_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)
#define CONV_ref_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)
#define CONV_arm_conv_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_fut, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_ref_conv_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_ref, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_arm_conv_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)
#define CONV_ref_conv_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)
#define CONV_arm_conv_fast_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_fut, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_ref_conv_fast_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_ref, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_arm_conv_partial_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_fut, first_index, num_points)
#define CONV_ref_conv_partial_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_ref, first_index, num_points)
#define CONV_arm_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_fut, first_index, num_points)
#define CONV_ref_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_ref, first_index, num_points)
#define CONV_arm_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_fut, first_index, num_points, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_ref_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_ref, first_index, num_points, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_arm_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_fut, first_index, num_points, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CONV_ref_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len, \
first_index, num_points) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*)filtering_output_ref, first_index, num_points, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
/*--------------------------------------------------------------------------------*/
/* Convolution Inputs */
/*--------------------------------------------------------------------------------*/
/* The following symbols alias the filtering_q31_inputs array:
*
* - filtering_q15_inputs
* - filtering_q7_inputs
*
* The aliasing conflicts with the instantiation of #ARR_DESC_t structs.
*
* These macro-level aliases allow the #CONV_DEFINE_RAND_INPUT_ARR_DESCS() macro
* to correctly select the filtering_q31_input or filtering_f32_input array,
* within a template, by type_suffix.
*
*/
#define CONV_f32_INPUTS filtering_f32_inputs
#define CONV_q31_INPUTS filtering_q31_inputs
#define CONV_q15_INPUTS filtering_q31_inputs
#define CONV_q7_INPUTS filtering_q31_inputs
/**
* Defines #ARR_DESC_t objects that wrap existing, type-specific, common
* inputs.
*/
#define CONV_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix) \
ARR_DESC_DEFINE_USING_ARR( \
TYPE_FROM_ABBREV(type_suffix), \
conv_input_rand1_##type_suffix, \
CONV_##type_suffix##_INPUTS, \
0, \
CONV_MAX_INPUT_ELTS); \
\
ARR_DESC_DEFINE_USING_ARR( \
TYPE_FROM_ABBREV(type_suffix), \
conv_input_rand2_##type_suffix, \
CONV_##type_suffix##_INPUTS, \
1, \
CONV_MAX_INPUT_ELTS) /* Note the lacking semicolon */
CONV_DEFINE_RAND_INPUT_ARR_DESCS(f32);
CONV_DEFINE_RAND_INPUT_ARR_DESCS(q31);
CONV_DEFINE_RAND_INPUT_ARR_DESCS(q15);
CONV_DEFINE_RAND_INPUT_ARR_DESCS(q7);
ARR_DESC_DEFINE(float32_t, conv_input_zeros, CONV_MAX_INPUT_ELTS, CURLY(0));
/**
* Define Input #ARR_DESC_t arrays by type suffix.
*
* Taking inputs in parallel from the 'a' and 'b' arrays yields the following
* test cases (star is convolution):
*
* - zero_array * zero_array
* - zero_array * random_array
* - random_array * zero_array
* - random_array * different_random_arary
*/
#define CONV_DEFINE_ALL_INPUTS(type_suffix) \
ARR_DESC_DEFINE(ARR_DESC_t *, \
conv_##type_suffix##_a_inputs, \
4, \
CURLY( \
&conv_input_zeros, \
&conv_input_zeros, \
&conv_input_rand1_##type_suffix, \
&conv_input_rand1_##type_suffix \
)); \
ARR_DESC_DEFINE(ARR_DESC_t *, \
conv_##type_suffix##_b_inputs, \
4, \
CURLY( \
&conv_input_zeros, \
&conv_input_rand1_##type_suffix, \
&conv_input_zeros, \
&conv_input_rand2_##type_suffix \
)) /* Note the lacking semicolon */
CONV_DEFINE_ALL_INPUTS(f32);
CONV_DEFINE_ALL_INPUTS(q31);
CONV_DEFINE_ALL_INPUTS(q15);
CONV_DEFINE_ALL_INPUTS(q7);
/*--------------------------------------------------------------------------------*/
/* Convolution Lengths */
/*--------------------------------------------------------------------------------*/
/*
* The conv_lens_a and conv_lens_b #ARR_DESC_t objects are accessed in parallel
* to provide convolution-length pairs. Taken in parallel they provide the
* following cases:
*
* - 1 * 1 : Shortest convolution possible.
* - 1 * 2 : Short convolution , one side is degenerate .
* - 17 * 1 : Medium convolution , one side is degenerate .
* - 15 * MAX : Longest convolution , one side is degenerate .
* MAX * MAX : Longest convolution.
*/
ARR_DESC_DEFINE(uint32_t,
conv_lens_a,
5,
CURLY(
1,
1,
17,
15,
CONV_MAX_INPUT_ELTS
));
ARR_DESC_DEFINE(uint32_t,
conv_lens_b,
5,
CURLY(
1,
2,
1,
CONV_MAX_INPUT_ELTS,
CONV_MAX_INPUT_ELTS
));
/*--------------------------------------------------------------------------------*/
/* Partial Indexing */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(uint32_t,
first_index_arr_desc,
4,
CURLY(
0,
1,
CONV_MAX_INPUT_ELTS / 2,
CONV_MAX_INPUT_ELTS
));
ARR_DESC_DEFINE(uint32_t,
num_points_arr_desc,
3,
CURLY(
1,
CONV_MAX_OUTPUT_ELTS / 2,
CONV_MAX_OUTPUT_ELTS
));
/*--------------------------------------------------------------------------------*/
/* Convolution Tests */
/*--------------------------------------------------------------------------------*/
#define CONV_TEST_TEMPLATE(fut, fut_arg_interface, \
ref, ref_arg_interface, \
suffix, output_type) \
JTEST_DEFINE_TEST(fut##_tests, fut) \
{ \
TEMPLATE_DO_ARR_DESC( \
input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs \
, \
void * input_a_ptr = input_ptr->data_ptr; \
void * input_b_ptr = ARR_DESC_ELT( \
ARR_DESC_t *, input_idx, \
&(conv_##suffix##_b_inputs))->data_ptr; \
\
TEMPLATE_DO_ARR_DESC( \
conv_len_idx, uint32_t, conv_len_a, conv_lens_a \
, \
uint32_t conv_len_b = ARR_DESC_ELT( \
uint32_t, conv_len_idx, &(conv_lens_b)); \
\
JTEST_DUMP_STRF("Input A Length: %d\n" \
"Input B Length: %d\n", \
(int)conv_len_a, \
(int)conv_len_b); \
\
TEST_CALL_FUT_AND_REF( \
fut, fut_arg_interface( \
input_a_ptr, conv_len_a, input_b_ptr, conv_len_b), \
ref, ref_arg_interface( \
input_a_ptr, conv_len_a, input_b_ptr, conv_len_b)); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
conv_len_a + conv_len_b - 1, \
output_type))); \
\
return JTEST_TEST_PASSED; \
} \
\
#define CONV_PARTIAL_TEST_TEMPLATE(fut, fut_arg_interface, \
ref, ref_arg_interface, \
suffix, output_type) \
JTEST_DEFINE_TEST(fut##_tests, fut) \
{ \
TEMPLATE_DO_ARR_DESC( \
input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs \
, \
void * input_a_ptr = input_ptr->data_ptr; \
void * input_b_ptr = ARR_DESC_ELT( \
ARR_DESC_t *, input_idx, \
&(conv_##suffix##_b_inputs))->data_ptr; \
TEMPLATE_DO_ARR_DESC( \
conv_len_idx, uint32_t, conv_len_a, conv_lens_a \
, \
uint32_t conv_len_b = ARR_DESC_ELT( \
uint32_t, conv_len_idx, &(conv_lens_b)); \
\
TEMPLATE_DO_ARR_DESC( \
first_index_idx, uint32_t, first_index, \
first_index_arr_desc \
, \
TEMPLATE_DO_ARR_DESC( \
num_points_idx, uint32_t, num_points, \
num_points_arr_desc \
, \
if (CONV_TEST_VALID_PARTIAL_PARAMS( \
conv_len_a, conv_len_b, \
first_index, num_points)) \
{ \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Input A Length: %d\n" \
"Input B Length: %d\n" \
"First Sample Index: %d\n" \
"Number of Output Points: %d\n", \
(int)conv_len_a, \
(int)conv_len_b, \
(int)first_index, \
(int)num_points); \
\
memset(filtering_output_ref,0, \
(2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \
memset(filtering_output_fut,0, \
(2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \
\
TEST_CALL_FUT_AND_REF( \
fut, fut_arg_interface( \
input_a_ptr, conv_len_a, \
input_b_ptr, conv_len_b, \
first_index, num_points), \
ref, ref_arg_interface( \
input_a_ptr, conv_len_a, \
input_b_ptr, conv_len_b, \
first_index, num_points)); \
\
FILTERING_SNR_COMPARE_INTERFACE_OFFSET( \
first_index, \
num_points, \
output_type); \
} else { \
/* FUT should return ARM_MATH_ARGUMENT_ERROR*/ \
/* if first_index and num_points don't make */ \
/* sense*/ \
\
arm_status conv_test_retval; \
TEST_CALL_FUT( \
conv_test_retval = fut, \
fut_arg_interface( \
input_a_ptr, conv_len_a, \
input_b_ptr, conv_len_b, \
first_index, num_points)); \
\
if (conv_test_retval != ARM_MATH_ARGUMENT_ERROR) { \
JTEST_DUMP_STR("FUT failed to raise error."); \
/* return JTEST_TEST_FAILED; */ \
} \
})))); \
\
return JTEST_TEST_PASSED; \
}
#define CONV_DEFINE_TEST(fn_name, suffix, output_type, test_template) \
test_template( \
arm_##fn_name##_##suffix, \
CONV_arm_##fn_name##_INPUT_INTERFACE, \
ref_##fn_name##_##suffix, \
CONV_ref_##fn_name##_INPUT_INTERFACE, \
suffix, \
output_type \
) /* Note the lacking semicolon*/
/* Tests on functions without partial outputs */
CONV_DEFINE_TEST(conv , f32, float32_t, CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv , q31, q31_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv , q15, q15_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv , q7 , q7_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_opt , q15, q15_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_opt , q7 , q7_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_fast , q31, q31_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_fast , q15, q15_t , CONV_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_fast_opt , q15, q15_t , CONV_TEST_TEMPLATE);
/* Tests on functions with partial outputs */
CONV_DEFINE_TEST(conv_partial , f32, float32_t, CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial , q31, q31_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial , q7 , q7_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial_fast , q31, q31_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial_fast , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial_fast_opt , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial_opt , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE);
CONV_DEFINE_TEST(conv_partial_opt , q7 , q7_t , CONV_PARTIAL_TEST_TEMPLATE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(conv_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_conv_f32_tests);
JTEST_TEST_CALL(arm_conv_q31_tests);
JTEST_TEST_CALL(arm_conv_q15_tests);
JTEST_TEST_CALL(arm_conv_q7_tests);
JTEST_TEST_CALL(arm_conv_opt_q15_tests);
JTEST_TEST_CALL(arm_conv_opt_q7_tests);
JTEST_TEST_CALL(arm_conv_fast_q31_tests);
JTEST_TEST_CALL(arm_conv_fast_q15_tests);
JTEST_TEST_CALL(arm_conv_fast_opt_q15_tests);
JTEST_TEST_CALL(arm_conv_partial_f32_tests);
JTEST_TEST_CALL(arm_conv_partial_q31_tests);
JTEST_TEST_CALL(arm_conv_partial_q15_tests);
JTEST_TEST_CALL(arm_conv_partial_q7_tests);
JTEST_TEST_CALL(arm_conv_partial_fast_q31_tests);
JTEST_TEST_CALL(arm_conv_partial_fast_q15_tests);
JTEST_TEST_CALL(arm_conv_partial_fast_opt_q15_tests);
JTEST_TEST_CALL(arm_conv_partial_opt_q15_tests);
JTEST_TEST_CALL(arm_conv_partial_opt_q7_tests);
}

View File

@ -0,0 +1,310 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
/*--------------------------------------------------------------------------------*/
/* Header Stuff */
/*--------------------------------------------------------------------------------*/
#define CORRELATE_MAX_INPUT_ELTS 32
#define CORRELATE_MAX_OUTPUT_ELTS (CORRELATE_MAX_INPUT_ELTS * 2)
/*--------------------------------------------------------------------------------*/
/* Input Interfaces */
/*--------------------------------------------------------------------------------*/
/*
* General:
* Input interfaces provide inputs to functions inside test templates. They
* ONLY provide the inputs. The output variables should be hard coded.
*
* The input interfaces must have the following format:
*
* ARM_xxx_INPUT_INTERFACE() or
* REF_xxx_INPUT_INTERFACE()
*
* The xxx must be lowercase, and is intended to be the indentifying substring
* in the function's name. Acceptable values are 'sub' or 'add' from the
* functions arm_add_q31.
*/
#define CORRELATE_arm_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)
#define CORRELATE_ref_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)
#define CORRELATE_arm_correlate_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_fut, \
(void*) filtering_scratch)
#define CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_fut, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CORRELATE_ref_correlate_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_ref, \
(void*) filtering_scratch)
#define CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_ref, \
(void*) filtering_scratch, \
(void*) filtering_scratch2)
#define CORRELATE_arm_correlate_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut)
#define CORRELATE_ref_correlate_fast_INPUT_INTERFACE(input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref)
#define CORRELATE_arm_correlate_fast_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_fut, \
(void*) filtering_scratch)
#define CORRELATE_ref_correlate_fast_opt_INPUT_INTERFACE( \
input_a, input_a_len, \
input_b, input_b_len) \
PAREN(input_a, input_a_len, input_b, input_b_len, \
(void*) filtering_output_ref, \
(void*) filtering_scratch)
/*--------------------------------------------------------------------------------*/
/* Convolution Inputs */
/*--------------------------------------------------------------------------------*/
/* The following symbols alias the filtering_q31_inputs array:
*
* - filtering_q15_inputs
* - filtering_q7_inputs
*
* The aliasing conflicts with the instantiation of #ARR_DESC_t structs.
*
* These macro-level aliases allow the #CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS() macro
* to correctly select the filtering_q31_input or filtering_f32_input array,
* within a template, by type_suffix.
*
*/
#define CORRELATE_f32_INPUTS filtering_f32_inputs
#define CORRELATE_q31_INPUTS filtering_q31_inputs
#define CORRELATE_q15_INPUTS filtering_q31_inputs
#define CORRELATE_q7_INPUTS filtering_q31_inputs
/**
* Defines #ARR_DESC_t objects that wrap existing, type-specific, common
* inputs.
*/
#define CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix) \
ARR_DESC_DEFINE_USING_ARR( \
TYPE_FROM_ABBREV(type_suffix), \
correlate_input_rand1_##type_suffix, \
CORRELATE_##type_suffix##_INPUTS, \
0, \
CORRELATE_MAX_INPUT_ELTS); \
\
ARR_DESC_DEFINE_USING_ARR( \
TYPE_FROM_ABBREV(type_suffix), \
correlate_input_rand2_##type_suffix, \
CORRELATE_##type_suffix##_INPUTS, \
1, \
CORRELATE_MAX_INPUT_ELTS) /* Note the lacking semicolon */
CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(f32);
CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q31);
CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q15);
CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q7);
ARR_DESC_DEFINE(float32_t, correlate_input_zeros, CORRELATE_MAX_INPUT_ELTS, CURLY(0));
/**
* Define Input #ARR_DESC_t arrays by type suffix.
*
* Taking inputs in parallel from the 'a' and 'b' arrays yields the following
* test cases (star is correlate):
*
* - zero_array * zero_array
* - zero_array * random_array
* - random_array * zero_array
* - random_array * different_random_arary
*/
#define CORRELATE_DEFINE_ALL_INPUTS(type_suffix) \
ARR_DESC_DEFINE(ARR_DESC_t *, \
correlate_##type_suffix##_a_inputs, \
4, \
CURLY( \
&correlate_input_zeros, \
&correlate_input_zeros, \
&correlate_input_rand1_##type_suffix, \
&correlate_input_rand1_##type_suffix \
)); \
ARR_DESC_DEFINE(ARR_DESC_t *, \
correlate_##type_suffix##_b_inputs, \
4, \
CURLY( \
&correlate_input_zeros, \
&correlate_input_rand1_##type_suffix, \
&correlate_input_zeros, \
&correlate_input_rand2_##type_suffix \
)) /* Note the lacking semicolon */
CORRELATE_DEFINE_ALL_INPUTS(f32);
CORRELATE_DEFINE_ALL_INPUTS(q31);
CORRELATE_DEFINE_ALL_INPUTS(q15);
CORRELATE_DEFINE_ALL_INPUTS(q7);
/*--------------------------------------------------------------------------------*/
/* Convolution Lengths */
/*--------------------------------------------------------------------------------*/
/*
* The correlate_lens_a and correlate_lens_b #ARR_DESC_t objects are accessed in parallel
* to provide correlate-length pairs. Taken in parallel they provide the
* following cases:
*
* - 1 * 1 : Shortest correlate possible.
* - 1 * 2 : Short correlate , one side is degenerate.
* - 17 * 1 : Medium correlate, one side is degenerate.
* - 15 * MAX : Longest correlate.
* MAX * MAX : Longest correlate.
*/
ARR_DESC_DEFINE(uint32_t,
correlate_lens_a,
5,
CURLY(
1,
1,
17,
15,
CORRELATE_MAX_INPUT_ELTS
));
ARR_DESC_DEFINE(uint32_t,
correlate_lens_b,
5,
CURLY(
1,
2,
1,
CORRELATE_MAX_INPUT_ELTS,
CORRELATE_MAX_INPUT_ELTS
));
/*--------------------------------------------------------------------------------*/
/* Convolution Tests */
/*--------------------------------------------------------------------------------*/
#define CORRELATE_TEST_TEMPLATE(fut, fut_arg_interface, \
ref, ref_arg_interface, \
suffix, output_type) \
JTEST_DEFINE_TEST(fut##_tests, fut) \
{ \
TEMPLATE_DO_ARR_DESC( \
input_idx, ARR_DESC_t *, input_ptr, correlate_##suffix##_a_inputs \
, \
void * input_a_ptr = input_ptr->data_ptr; \
void * input_b_ptr = ARR_DESC_ELT( \
ARR_DESC_t *, input_idx, \
&(correlate_##suffix##_b_inputs))->data_ptr; \
\
TEMPLATE_DO_ARR_DESC( \
correlate_len_idx, uint32_t, correlate_len_a, correlate_lens_a \
, \
uint32_t correlate_len_b = ARR_DESC_ELT( \
uint32_t, correlate_len_idx, &(correlate_lens_b)); \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Input A Length: %d\n" \
"Input B Length: %d\n", \
(int)correlate_len_a, \
(int)correlate_len_b); \
\
memset(filtering_output_ref,0, \
(2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type)); \
memset(filtering_output_fut,0, \
(2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type)); \
\
TEST_CALL_FUT_AND_REF( \
fut, fut_arg_interface( \
input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b), \
ref, ref_arg_interface( \
input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b)); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
correlate_len_a + correlate_len_b - 2, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define CORRELATE_DEFINE_TEST(fn_name, suffix, output_type, test_template) \
test_template( \
arm_##fn_name##_##suffix, \
CORRELATE_arm_##fn_name##_INPUT_INTERFACE, \
ref_##fn_name##_##suffix, \
CORRELATE_ref_##fn_name##_INPUT_INTERFACE, \
suffix, \
output_type \
) /* Note the lacking semicolon*/
/* Tests on functions without partial outputs */
CORRELATE_DEFINE_TEST(correlate , f32, float32_t, CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate , q31, q31_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate , q15, q15_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate , q7 , q7_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate_opt , q15, q15_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_TEST_TEMPLATE(
arm_correlate_opt_q7,
CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE,
ref_correlate_opt_q7,
CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE,
q7,
q7_t
);
CORRELATE_DEFINE_TEST(correlate_fast , q31, q31_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate_fast , q15, q15_t , CORRELATE_TEST_TEMPLATE);
CORRELATE_DEFINE_TEST(correlate_fast_opt , q15, q15_t , CORRELATE_TEST_TEMPLATE);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(correlate_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_correlate_f32_tests);
JTEST_TEST_CALL(arm_correlate_q31_tests);
JTEST_TEST_CALL(arm_correlate_q15_tests);
JTEST_TEST_CALL(arm_correlate_q7_tests);
JTEST_TEST_CALL(arm_correlate_opt_q15_tests);
JTEST_TEST_CALL(arm_correlate_opt_q7_tests);
JTEST_TEST_CALL(arm_correlate_fast_q31_tests);
JTEST_TEST_CALL(arm_correlate_fast_q15_tests);
JTEST_TEST_CALL(arm_correlate_fast_opt_q15_tests);
}

View File

@ -0,0 +1,757 @@
#include "filtering_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
//must be max(LMS_MAX_BLOCKSIZE*2, FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_L)
float32_t filtering_output_fut[LMS_MAX_BLOCKSIZE*2] = {0};
float32_t filtering_output_ref[LMS_MAX_BLOCKSIZE*2] = {0};
float32_t filtering_output_f32_fut[LMS_MAX_BLOCKSIZE*2] = {0};
float32_t filtering_output_f32_ref[LMS_MAX_BLOCKSIZE*2] = {0};
float32_t filtering_input_lms[LMS_MAX_BLOCKSIZE*2] = {0};
__ALIGNED(8) float32_t filtering_pState[LMS_MAX_BLOCKSIZE + FILTERING_MAX_NUMTAPS] = {0};
float32_t filtering_scratch[FILTERING_MAX_BLOCKSIZE * 3] = {0};
float32_t filtering_scratch2[FILTERING_MAX_BLOCKSIZE * 3] = {0};
float32_t filtering_coeffs_lms[FILTERING_MAX_NUMTAPS];
const q31_t filtering_q31_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =
{
0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB,
0x41F6F6A, 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8,
0x3D060524, 0x93D5E570, 0x97D7791D, 0xFFE0C38C, 0x26749841,
0xC0A6EE54, 0x218EC386, 0x39FF3726, 0x8DC1F7CA, 0x702F2CF5,
0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, 0x3805DE7E,
0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF,
0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24,
0x6CE00F5C, 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530,
0x73394127, 0x773FA6F4, 0x9805A980, 0x838DE587, 0x9CF597F4,
0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, 0x4A5190D0, 0xED895BB9,
0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, 0x2501A3E1,
0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E,
0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4,
0x24DB166C, 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6,
0x419E0C75, 0x46BE9F38, 0x2432B9B2, 0x758D83E0, 0xDCE12926,
0x3F57CB74, 0x1F4458E2, 0xF1DD639, 0x83A1FB49, 0x173AFC76,
0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, 0x5C314C9,
0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715,
0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F,
0x20BFDEB4, 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE,
0x9858E3E1, 0xA36A9C4E, 0x88BD21F9, 0xAACF7A68, 0x773665E5,
0xCEDFDF66, 0x617A9610, 0x524FC968, 0xC2D086CD, 0x5F008079,
0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, 0xA33A2EE5,
0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5,
0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4,
0xB358C0D8, 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF,
0x33035831, 0x13D93987, 0xFC542094, 0x845F317E, 0xDDC4BF8B,
0x1379E50C, 0x5C20193F, 0xFDD58298, 0x9D482B82, 0x4A6BE062,
0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, 0xE6F8EA35,
0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD,
0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677,
0xFB2E04F2, 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8,
0x1A8C7F28, 0x861E452E, 0x932D3F78, 0x7652D852, 0x73357BBA,
0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, 0x6DC57B58, 0x9EB798CE,
0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, 0xA9FD3E40,
0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3,
0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896,
0x6443A0FE, 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820,
0xF18F0810, 0xE1548689, 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B,
0xEA0C1BE0, 0xA1B785DB, 0x7086465D, 0x1CC10929, 0x1E1D716E,
0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, 0x441F1E8B,
0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137,
0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615,
0x92593380, 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7,
0x10E916B6, 0xE3BCFA68, 0x2ACB80BB, 0xE51C5590, 0x994714B5,
0xF30984EE, 0x59BBE1B4, 0xB4867DBC, 0xB91C706C, 0xBC16C218,
0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, 0x4B167FD4,
0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55,
0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A,
0x9D2C662A, 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C,
0x20306EDB, 0xE381AAE7, 0xA55DA748, 0x9B8B617B, 0x3E036FAD,
0x84E4C4A7, 0xD5A3F517, 0x669BA988, 0x98FDDE8C, 0x67BD85CE,
0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, 0x205DB5C,
0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC,
0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693,
0xC42D12C0, 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC,
0x8D874532, 0x5F5C9DD0, 0x5D167858, 0x8559FEA2, 0x9D821476,
0xD9654ED2, 0x594C0DC7, 0x1A87B506, 0x3F693200, 0x7A651AB5,
0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, 0xB088C72F,
0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB,
0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D,
0x32581A06, 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15,
0xBC79A9BC, 0xB7175917, 0x354E381C, 0x762AADD7, 0xF643DAC1,
0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, 0xD7694875, 0x92D30822,
0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, 0x58CE268,
0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1,
0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB,
0x8FF5534, 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7,
0x419545EB, 0x993F7880, 0xAB246B20, 0x408AABC4, 0xCBF6EA49,
0xC0894C55, 0x4CAA6398, 0xA47856E9, 0xAF2AE47D, 0x22F55D33,
0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, 0x9A77D48,
0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A,
0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071,
0x7F9930D4, 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A,
0x144B2C12, 0x98E425C7, 0xBAA4B373, 0x18F0D03C, 0x99462AC0,
0xD8B4D2EF, 0x72473895, 0xA6BF5435, 0xEDAD53B, 0xE0912FA6,
0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, 0xB89962F9,
0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0,
0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841,
0x73A60174, 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095,
0x2B370837, 0x83DF6CE3, 0xDD08EEFA, 0x3F52A7C2, 0x191B4785,
0x60843D82, 0xB0DE11F1, 0x105EA26C, 0x6E1C7AA2, 0x47AADD14,
0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, 0x744206A,
0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9,
0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F,
0x2E53E6C1, 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5,
0x119725CC, 0x5406D347, 0x1B6FFAF1, 0xECCF71F1, 0x981117F2,
0x7167CA76, 0x74F4B880, 0x77A55F47, 0x59EADB62, 0x4A331D95,
0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, 0x60D47AD5,
0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3,
0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E,
0x31109C58, 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF,
0xBAF8D31E, 0xA4B31611, 0xED37F331, 0x7A832A22, 0xA22591C7,
0x722D1F89, 0x3B19CF18, 0x261B8A4D, 0xC3F6F6DB, 0xCF8CED61,
0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, 0x3674E663,
0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD,
0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91,
0x4BF0C248, 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26,
0x6C3B7B71, 0xD744B3ED, 0xFA25D2F6, 0x4CDE642D, 0xD65B8142,
0xA6F9207F, 0xE7A207BE, 0xDB506684, 0x44DA4780, 0x9175EA0C,
0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, 0x5423D9C8,
0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1,
0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5,
0x1672BA91, 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4,
0x32AFD40C, 0x99A5FB3B, 0xDD1D73A3, 0xA342CB3E, 0xA78445F5,
0x53979C3B, 0x427D7943, 0x5221B58C, 0xA6CE9A5E, 0xFB50ECA4,
0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, 0xFBB65E0C,
0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920,
0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641,
0x4D6B1760, 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF,
0x4E5F9493, 0x4C215DA5, 0x33A052B, 0x1A4D80C2, 0x40AEEBCA,
0x390D106B, 0xE9E8E018, 0x5AF3D6CF, 0xE35E1D4, 0xC4FB1C6,
0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, 0x2227567D,
0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6,
0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1,
0xC9D06CBC, 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47,
0x9D4804EA, 0x57DD9E67, 0xF89C7895, 0xF5336111, 0x25C122C8,
0x62742114, 0xCFBF6D26, 0xBF9F6482, 0xE6F02CD9, 0x11083202,
0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, 0x3BF4DC25,
0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129,
0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA,
0x31C5A0AF, 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98,
0x82C34882, 0x5D041F11, 0x8C613C57, 0xD398CFD1, 0x426F38AD,
0x5599AB1D, 0xFAFA078D, 0xAB25B413, 0xD94B32CF, 0xB288FE38,
0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, 0x2174EBBE,
0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6,
0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02,
0xC20D47A4, 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4,
0xC58612F4, 0xA2827F6F, 0xC49DCDBA, 0x679B7362, 0x4E495845,
0xCFD2F0D1, 0x395E76A0, 0x375A655E, 0x92E2058F, 0x73F9F0CA,
0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, 0xA219E2E8,
0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF,
0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40,
0x157F6DDF, 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58,
0xB2945F75, 0x4FA23A0E, 0x836EB8C0, 0xB3B18FD, 0x86114337,
0x24668ACB, 0x99BB82F0, 0x924C8A47, 0xBA959701, 0x81155ABF,
0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, 0x7FC2802D,
0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719,
0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD,
0xEBA775AE, 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D,
0xBBD34AB7, 0x2F85B12A, 0x16C5C2AD, 0x3990985D, 0x88DF3351,
0x82811AA5, 0x6D351F41, 0x4066A69D, 0x86B660BF, 0x6EDB4768,
0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, 0x947CC9C9,
0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB,
0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B,
0xB7629C93, 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66,
0xEC71B78C, 0xEAF4BB3A, 0x7C16225E, 0x668F337, 0xCBEE1608,
0x6D5B5552, 0x345DC590, 0x681209CC, 0x7B24A819, 0xD08A1416,
0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, 0x20EECA0,
0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D,
0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960,
0x7CDF59F3, 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110,
0xB8FCF3E3, 0xDEA059B2, 0x8229B6EA, 0x316486F6, 0x43919185,
0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, 0x5CD41244, 0x2C9F0A7B,
0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, 0xF105C20D,
0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763,
0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53,
0x2D2A85F6, 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B,
0x9FC5AC5F, 0x11AE5DD7, 0xA0B9A5A9, 0xFC648AF4, 0x740009AC,
0xED0E0321, 0xB8E6A61, 0x8910C544, 0xC74F26C8, 0x9525CCF3,
0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, 0xE1976DD4,
0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1,
0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB,
0xF5288568, 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A,
0x1BC03B9, 0xB6BC3061, 0xBF30596E, 0xBE2AD27B, 0x8AC04220,
0x641979A3, 0x9ECCBB89, 0xA144FBC1, 0x4E8FAE26, 0x8C5A9D90,
0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, 0xCEE81CDF,
0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA,
0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38,
0x2E77F2D, 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017,
0x2D6B69A7, 0xFEDB63F9, 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8,
0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, 0xED193443, 0x7615EF1B,
0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, 0x556E825C,
0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF,
0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC,
0x1E6A1101, 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599,
0x54EB4809, 0x7839BE6D, 0xD50017DD, 0x39B1A0E1, 0x288D52D3,
0x2D52668C, 0x20D22A68, 0x4E1207D1, 0x3FCC0EFE, 0x47F3FE64,
0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, 0x6BEAA655,
0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9,
0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B,
0x4DCD4EDB, 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6,
0x502F41B0, 0x3616D3F1, 0x2E5B8E31, 0x2026EB19, 0x57E783D7,
0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48,
0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED,
0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,
0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB,
0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94,
0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11,
0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x73D63FED, 0xE36E9F5E,
0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, 0xCD476E86,
0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7,
0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78,
0xCC4BE4F6, 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2,
0x55A8F5EC, 0xE81A9A75, 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993,
0x1891805, 0x738976AD, 0xD426E7D6, 0x3C5CEEBF, 0x4499187F,
0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, 0x421BCF29,
0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE,
0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46,
0x5D146234, 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA,
0xB65530CC, 0x2DFAC48C, 0x1663D16F, 0x59B80AA, 0x950274EA,
0x92532D4A, 0x3CEF802D, 0x492FBDA5, 0xA63A2574, 0xEF8005C2,
0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, 0xD2598516,
0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75,
0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F, 0xECDD35CC,
0xDDC1EE0E, 0xC4848865, 0x925826BD, 0x4078BE39, 0x68A8561A,
0x323045DC, 0xA933B37F, 0xBA2AEE2E, 0x4F24F65D, 0x349EE246,
0xF97B9D0E, 0x46DC5759, 0x4529F425, 0x80D17B42, 0x8E16F709,
0x1B42206A, 0x4934A526, 0x391BB6DE, 0xB52EF45C, 0x26C30290,
0xCBA23CAA, 0xA501A8C3, 0xD922C4F8, 0xE8824E53, 0x6F4255DC,
0x5960B544, 0x58BC69D6, 0xCA936323, 0xFDDF053C, 0xC2E002D6,
0x7D750755, 0x8A3F9CD1, 0x35F8F6F8, 0xFB7BD154, 0x65CFF94F,
0x390A58DD, 0xD97C4093, 0x501CA2A3, 0x8EA5DEBC, 0xCA93461F,
0xE02D984C, 0x126F8517, 0x39FDD887, 0x46241AE9, 0x777E854D,
0xE2B36349, 0x58E3FA9F, 0x971DEF1E, 0x8E156228, 0xC0E14E9,
0xA9A01BE6, 0xB318C990, 0x971680D6, 0xA1F359CE, 0x487E23F4,
0x7DE465B0, 0x4E4C905E, 0x2A652959, 0x116FF167, 0x5C74AAB9,
0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48,
0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED,
0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F,
0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB,
0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94,
0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11,
0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x4FEFC920, 0x28DF4EB8,
0x29EBF45A, 0x1E350CF6
};
/* The source data is random across the q31_t range. Accessing it by word should
remain random. */
const q15_t * filtering_q15_inputs = (q15_t *) filtering_q31_inputs;
const q7_t * filtering_q7_inputs = (q7_t *) filtering_q31_inputs;
const float32_t filtering_f32_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =
{
43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 ,
-129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 , 55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 ,
29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 , 83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 ,
12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 ,
-5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 , 50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 ,
74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 ,
41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 ,
37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 , 36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 ,
-19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 , 36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 ,
-103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 , 49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 ,
-53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,
-17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 , -191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 ,
2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 ,
-70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 , 46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 ,
66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 ,
35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,
12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158, 44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 ,
17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,
-49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 ,
-50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 , -102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 ,
-113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 ,
46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 ,
-30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078,
-51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 , 9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363,
-15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 , 20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 ,
-111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 , 28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 ,
-51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 , -103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 ,
1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846, -51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 ,
49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 , 148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 ,
39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 ,
94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 ,
-16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 ,
5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 ,
28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 ,
-65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 ,
-35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 , -5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 ,
54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 , 6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 ,
38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 , -21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 ,
91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 ,
-34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 , -94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 ,
-23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 ,
61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 ,
70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160,
-68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 ,
-16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 , 13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 ,
-62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 , -33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 ,
144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,
65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 , -26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 ,
-38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 , 33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 ,
-9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 , -8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 ,
86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 , 58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534,
-15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 , -32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 ,
-41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,
-20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 , -1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 ,
36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 , 21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 ,
50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 ,
194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 , -43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 ,
-7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 , -50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 ,
22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 , 62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 ,
18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 , -132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 ,
-24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 , 18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 ,
66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 ,
18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 ,
-23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 , 49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 ,
20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 ,
8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 , -72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 ,
7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 , 128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 ,
-8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 , -111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 ,
-34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 ,
103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 , 26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 ,
1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,
59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 , 124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 ,
-56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938, 44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 ,
151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 , -33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 ,
71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 , 22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 ,
66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 , 4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 ,
-48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 ,
-4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 , -45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 ,
28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 , -32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 ,
-60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 , 49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 ,
-22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 , -30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 ,
65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 ,
68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 ,
51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 , -38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 ,
-26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 , 43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 ,
-18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 ,
-87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 , -0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 ,
-50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 ,
-25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,
43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 ,
93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 , -12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 ,
44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 , 207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 ,
83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 , -19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 ,
121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 , 74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360,
81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,
33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 , 42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 ,
30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 , 64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 ,
57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 ,
66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353, 8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 ,
-68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 , 90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 ,
16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 , -60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 ,
15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 ,
-36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 ,
22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 ,
-16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 , -11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 ,
-119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 , -67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695,
-83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464,
-5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 , 46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 ,
-158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 , 21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 ,
2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 , -10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 ,
-36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 , 18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 ,
-59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,
-54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 , 51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 ,
105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 , -94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 ,
92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 , 25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 ,
17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 ,
22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 , -61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 ,
55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 , 74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 ,
53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,
17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845, 40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 ,
-60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 ,
-36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 ,
-7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 ,
35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 , -84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460,
-2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 , 76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 ,
-56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 ,
27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 , 1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 ,
52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 , 7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957 ,
66.8830091413 , 49.3523828287 , 54.0855375598 , 30.8570349345 , -10.9255375390 , 62.3910624674 , 30.9238561381 , 0.3352881853 ,
72.1022806197 , -28.8319885008 , 23.3335288806 , 46.8999035980 , -67.0984424822 , -164.7917209112, 42.5767681360 , -92.4668227688 ,
43.8491734282 , -17.1126540408 , 37.4819594334 , 69.0774409673 , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 ,
32.6689956840 , 15.3393042576 , -18.5529761307 , 97.3942151573 , -4.4462855745 , 13.7614349817 , 158.3358780719 , -44.7258299667 ,
-17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288 , -155.1423976144, 5.7070117893 , -22.7906543902 , -45.0633909283 ,
-13.9329987929 , -66.0848932507 , 1.1383038109 , 123.8386958483 , 67.6662401589 , 45.9152963554 , -27.4397697462 , 97.9596747354 ,
-6.3544655181 , 29.0832146722 , 96.3468162499 , 32.4535976137 , -91.0650399301 , 2.7293262791 , 70.7853483111 , -92.3655274571 ,
69.0359217256 , 83.1530567979 , 35.8375091111 , 7.3393552348 , -95.1770165365 , 76.4905790891 , 55.6253140577 , -29.5315327050 ,
-16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 ,
5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 ,
28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 ,
-65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 ,
-35.6802153684 , -19.6571455162
};
const float64_t filtering_f64_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] =
{
43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 ,
-129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 , 55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 ,
29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 , 83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 ,
12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 ,
-5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 , 50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 ,
74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 ,
41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 ,
37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 , 36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 ,
-19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 , 36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 ,
-103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 , 49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 ,
-53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 ,
-17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 , -191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 ,
2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 ,
-70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 , 46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 ,
66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 ,
35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 ,
12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158, 44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 ,
17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 ,
-49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 ,
-50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 , -102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 ,
-113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 ,
46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 ,
-30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078,
-51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 , 9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363,
-15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 , 20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 ,
-111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 , 28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 ,
-51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 , -103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 ,
1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846, -51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 ,
49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 , 148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 ,
39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 ,
94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 ,
-16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 ,
5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 ,
28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 ,
-65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 ,
-35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 , -5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 ,
54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 , 6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 ,
38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 , -21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 ,
91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 ,
-34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 , -94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 ,
-23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 ,
61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 ,
70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160,
-68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 ,
-16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 , 13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 ,
-62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 , -33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 ,
144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 ,
65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 , -26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 ,
-38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 , 33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 ,
-9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 , -8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 ,
86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 , 58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534,
-15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 , -32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 ,
-41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 ,
-20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 , -1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 ,
36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 , 21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 ,
50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 ,
194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 , -43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 ,
-7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 , -50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 ,
22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 , 62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 ,
18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 , -132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 ,
-24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 , 18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 ,
66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 ,
18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 ,
-23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 , 49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 ,
20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 ,
8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 , -72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 ,
7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 , 128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 ,
-8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 , -111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 ,
-34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 ,
103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 , 26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 ,
1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 ,
59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 , 124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 ,
-56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938, 44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 ,
151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 , -33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 ,
71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 , 22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 ,
66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 , 4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 ,
-48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 ,
-4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 , -45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 ,
28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 , -32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 ,
-60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 , 49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 ,
-22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 , -30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 ,
65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 ,
68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 ,
51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 , -38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 ,
-26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 , 43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 ,
-18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 ,
-87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 , -0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 ,
-50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 ,
-25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 ,
43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 ,
93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 , -12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 ,
44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 , 207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 ,
83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 , -19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 ,
121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 , 74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360,
81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 ,
33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 , 42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 ,
30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 , 64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 ,
57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 ,
66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353, 8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 ,
-68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 , 90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 ,
16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 , -60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 ,
15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 ,
-36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 ,
22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 ,
-16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 , -11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 ,
-119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 , -67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695,
-83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464,
-5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 , 46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 ,
-158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 , 21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 ,
2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 , -10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 ,
-36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 , 18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 ,
-59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 ,
-54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 , 51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 ,
105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 , -94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 ,
92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 , 25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 ,
17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 ,
22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 , -61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 ,
55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 , 74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 ,
53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 ,
17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845, 40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 ,
-60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 ,
-36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 ,
-7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 ,
35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 , -84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460,
-2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 , 76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 ,
-56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 ,
27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 , 1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 ,
52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 , 7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957 ,
66.8830091413 , 49.3523828287 , 54.0855375598 , 30.8570349345 , -10.9255375390 , 62.3910624674 , 30.9238561381 , 0.3352881853 ,
72.1022806197 , -28.8319885008 , 23.3335288806 , 46.8999035980 , -67.0984424822 , -164.7917209112, 42.5767681360 , -92.4668227688 ,
43.8491734282 , -17.1126540408 , 37.4819594334 , 69.0774409673 , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 ,
32.6689956840 , 15.3393042576 , -18.5529761307 , 97.3942151573 , -4.4462855745 , 13.7614349817 , 158.3358780719 , -44.7258299667 ,
-17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288 , -155.1423976144, 5.7070117893 , -22.7906543902 , -45.0633909283 ,
-13.9329987929 , -66.0848932507 , 1.1383038109 , 123.8386958483 , 67.6662401589 , 45.9152963554 , -27.4397697462 , 97.9596747354 ,
-6.3544655181 , 29.0832146722 , 96.3468162499 , 32.4535976137 , -91.0650399301 , 2.7293262791 , 70.7853483111 , -92.3655274571 ,
69.0359217256 , 83.1530567979 , 35.8375091111 , 7.3393552348 , -95.1770165365 , 76.4905790891 , 55.6253140577 , -29.5315327050 ,
-16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 ,
5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 ,
28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 ,
-65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 ,
-35.6802153684 , -19.6571455162
};
/*--------------------------------------------------------------------------------*/
/* Blocksizes */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(uint32_t,
filtering_blocksizes,
5,
CURLY(
1, 7, 14, 32, FILTERING_MAX_BLOCKSIZE));
ARR_DESC_DEFINE(uint32_t,
lms_blocksizes,
3,
CURLY(
128, 256, LMS_MAX_BLOCKSIZE));
ARR_DESC_DEFINE(uint16_t,
filtering_numtaps,
5,
CURLY(
4, 6, 14, 32, FILTERING_MAX_NUMTAPS));
ARR_DESC_DEFINE(uint16_t,
filtering_numtaps2,
5,
CURLY(
6, 12, 18, 24, 30));
ARR_DESC_DEFINE(uint16_t,
filtering_numstages,
3,
CURLY(
1, 7, FILTERING_MAX_NUMSTAGES));
ARR_DESC_DEFINE(uint8_t,
filtering_postshifts,
3,
CURLY(
0, 1, FILTERING_MAX_POSTSHIFT));
ARR_DESC_DEFINE(uint8_t,
filtering_Ls,
3,
CURLY(
1, 2, FILTERING_MAX_L));
ARR_DESC_DEFINE(uint8_t,
filtering_Ms,
6,
CURLY(
1, 2, 4, 7, 11, FILTERING_MAX_M));
/*--------------------------------------------------------------------------------*/
/* Coefficient Lists */
/*--------------------------------------------------------------------------------*/
// There must be at least max( FILTERING_MAX_NUMTAPS + 2 , FILTERING_MAX_NUMSTAGES * 6 + 2) coefficients
const float32_t filtering_coeffs_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] =
{
-13.0572f, 0.0f , -97.4724f, 8.4111f , -7.2193f , -53.7577f, 22.2630f ,
-1.0509f , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f ,
13.4595f , -6.7225f , -4.1313f , -38.5974f, 3.2700f , -51.6191f, -22.4314f,
0.2481f , 32.9779f , -37.6421f, 5.4469f , -7.0023f , 24.3657f , 9.9140f ,
0.2870f , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f , 35.3491f ,
-3.7134f , 0.8548f , 4.7469f , -10.5865f, -2.7285f , -1.5912f , -13.3502f,
6.8532f , -8.2304f , -8.1193f , 3.8257f , -2.1703f , 13.5727f , 14.2736f ,
-0.9855f , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f , 15.6191f ,
5.2121f , 10.8102f , -9.4171f , 6.0411f , -0.9131f , 10.6992f , -3.2634f ,
7.5849f , -4.9305f , -6.0549f , -7.9409f , 1.5827f , 13.3177f , 8.6727f ,
-13.2268f , 11.1239f , 0.2481f , 32.9779f , -37.6421f, 5.4469f , -13.8883f,
11.8430f , -2.2024f , 0.9795f , 15.6191f , 0.2481f , 32.9779f , -37.6421f,
3.2700f , -51.6191f
};
const float64_t filtering_coeffs_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] =
{
-13.0572f, 0.0f , -97.4724f, 8.4111f , -7.2193f , -53.7577f, 22.2630f ,
-1.0509f , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f ,
13.4595f , -6.7225f , -4.1313f , -38.5974f, 3.2700f , -51.6191f, -22.4314f,
0.2481f , 32.9779f , -37.6421f, 5.4469f , -7.0023f , 24.3657f , 9.9140f ,
0.2870f , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f , 35.3491f ,
-3.7134f , 0.8548f , 4.7469f , -10.5865f, -2.7285f , -1.5912f , -13.3502f,
6.8532f , -8.2304f , -8.1193f , 3.8257f , -2.1703f , 13.5727f , 14.2736f ,
-0.9855f , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f , 15.6191f ,
5.2121f , 10.8102f , -9.4171f , 6.0411f , -0.9131f , 10.6992f , -3.2634f ,
7.5849f , -4.9305f , -6.0549f , -7.9409f , 1.5827f , 13.3177f , 8.6727f ,
-13.2268f , 11.1239f , 0.2481f , 32.9779f , -37.6421f, 5.4469f , -13.8883f,
11.8430f , -2.2024f , 0.9795f , 15.6191f , 0.2481f , 32.9779f , -37.6421f,
3.2700f , -51.6191f
};
const float32_t filtering_coeffs_b_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] =
{
-0.0572f, 0.0f , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f ,
-0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f ,
0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f,
0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,
0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f ,
0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f,
-0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f ,
0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f ,
-0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f ,
0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f ,
0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f,
0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,
0.2369f , -0.5310f
};
const float64_t filtering_coeffs_b_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] =
{
-0.0572f, 0.0f , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f ,
-0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f ,
0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f,
0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,
0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f ,
0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f,
-0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f ,
0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f ,
-0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f ,
0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f ,
0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f,
0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f ,
0.2369f , -0.5310f
};
const float32_t *filtering_coeffs_c_f32 = filtering_coeffs_b_f32 + 1;
const q31_t filtering_coeffs_q31[FILTERING_MAX_NUMSTAGES * 6 + 2] =
{
0xEEDA759C, 0x00000000, 0x80000000, 0x0B0BA027, 0xF6850544, 0xB967E3EC,
0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0,
0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,
0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,
0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A,
0x268530EF, 0xBA37B050, 0x7FFFFFFF, 0xEF5CBB89, 0x00000000, 0x2B4E6639,
0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,
0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0,
0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,
0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A,
0xE28B1589, 0x0053690B, 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0xB967E3EC,
0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690,
0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A, 0xFFFFFFFF, 0xDDF65B14,
0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5,
0x2B4E6639, 0xCE919690
};
const q31_t *filtering_coeffs_b_q31 = filtering_coeffs_q31 + 1;
const q31_t *filtering_coeffs_c_q31 = filtering_coeffs_q31 + 2;
//fourth coefficient MUST be zero for arm_biquad_cascade_df1_fast_q15 to work
//every 6th coefficient after that must also be zero
const q15_t filtering_coeffs_q15[FILTERING_MAX_NUMSTAGES * 6 + 4] =
{
0xBA37, 0xEEDA, 0x8000, 0x0000, 0x0B0B, 0xF685, 0xB967,
0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897,
0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50,
0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,
0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,
0x2685, 0xBA37, 0x0000, 0xDDF6, 0x0000, 0x2B4E,
0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50,
0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897,
0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,
0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,
0xE28B, 0x0053, 0x0000, 0xBC36, 0xE28B, 0xB967,
0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,
0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91,
0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC,
0xE28B, 0x11AC, 0x0000,
};
const q15_t *filtering_coeffs_b_q15 = filtering_coeffs_q15 + 2;
const q15_t *filtering_coeffs_c_q15 = filtering_coeffs_q15 + 4;
const q7_t filtering_coeffs_q7[FILTERING_MAX_NUMSTAGES * 6 + 8] =
{
0xEE, 0x00, 0x80, 0x0B, 0xF6, 0xB9,
0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98,
0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD,
0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,
0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,
0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B,
0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD,
0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98,
0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,
0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,
0xE2, 0x00, 0x04, 0xBC, 0xE2, 0xB9,
0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE,
0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,
0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B,
0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,
0xFA, 0xCD
};
const q7_t *filtering_coeffs_b_q7 = filtering_coeffs_q7 + 4;
const q7_t *filtering_coeffs_c_q7 = filtering_coeffs_q7 + 8;
/*--------------------------------------------------------------------------------*/
/* Tap Delay Lists */
/*--------------------------------------------------------------------------------*/
//const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = {
// 0xEE, 0x00, 0x10, 0x0B, 0xF6, 0xD9,
// 0x1D, 0xFF, 0xDD, 0x1A, 0xEF, 0xE8,
// 0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xDD,
// 0x04, 0xEC, 0xE2, 0x00, 0x2B, 0xFE,
// 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE,
// 0x20, 0xDF, 0x21
//};
const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = {
0x00, 0x01, 0x10, 0x0B, 0x03, 0x05,
0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07,
0x20, 0x01, 0x10, 0x0B, 0x03, 0x05,
0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07,
0x00, 0x01, 0x10, 0x0B, 0x03, 0x05,
0x1D, 0x21, 0x11
};

View File

@ -0,0 +1,17 @@
#include "jtest.h"
#include "filtering_tests.h"
JTEST_DEFINE_GROUP(filtering_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_GROUP_CALL(biquad_tests);
JTEST_GROUP_CALL(conv_tests);
JTEST_GROUP_CALL(correlate_tests);
JTEST_GROUP_CALL(fir_tests);
JTEST_GROUP_CALL(iir_tests);
JTEST_GROUP_CALL(lms_tests);
return;
}

View File

@ -0,0 +1,402 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
#define FIR_DEFINE_TEST(suffix, config_suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir##config_suffix##_##suffix##_test, \
arm_fir##config_suffix##_##suffix) \
{ \
arm_fir_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
/* Initialize the FIR Instances */ \
arm_fir_init_##suffix( \
&fir_inst_fut, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n", \
(int)blockSize, \
(int)numTaps); \
\
JTEST_COUNT_CYCLES( \
arm_fir##config_suffix##_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_fir_init_##suffix( \
&fir_inst_ref, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_fir##config_suffix##_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define FIR_INTERPOLATE_DEFINE_TEST(suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir_interpolate_##suffix##_test, \
arm_fir_interpolate_##suffix) \
{ \
arm_fir_interpolate_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_interpolate_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps2 \
, \
TEMPLATE_DO_ARR_DESC( \
L_idx, uint8_t, L, filtering_Ls \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n" \
"Upsample factor: %d\n", \
(int)blockSize, \
(int)numTaps, \
(int)L); \
\
/* Initialize the FIR Instances */ \
arm_fir_interpolate_init_##suffix( \
&fir_inst_fut, L, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_fir_interpolate_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_fir_interpolate_init_##suffix( \
&fir_inst_ref, L, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_fir_interpolate_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize * (uint32_t)L, \
output_type)))); \
\
return JTEST_TEST_PASSED; \
}
#define FIR_DECIMATE_DEFINE_TEST(suffix, config_suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir_decimate##config_suffix##_##suffix##_test, \
arm_fir_decimate##config_suffix##_##suffix) \
{ \
arm_fir_decimate_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_decimate_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
TEMPLATE_DO_ARR_DESC( \
M_idx, uint8_t, M, filtering_Ms \
, \
if (blockSize % M == 0) \
{ \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n" \
"Decimation Factor: %d\n", \
(int)blockSize, \
(int)numTaps, \
(int)M); \
\
/* Initialize the FIR Instances */ \
arm_fir_decimate_init_##suffix( \
&fir_inst_fut, numTaps, M, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_fir_decimate##config_suffix##_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_fir_decimate_init_##suffix( \
&fir_inst_ref, numTaps, M, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_fir_decimate##config_suffix##_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize / M, \
output_type); \
}))); \
\
return JTEST_TEST_PASSED; \
}
#define FIR_LATTICE_DEFINE_TEST(suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir_lattice_##suffix##_test, \
arm_fir_lattice_##suffix) \
{ \
arm_fir_lattice_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_lattice_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numstages_idx, uint16_t, numStages, filtering_numstages \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Stages: %d\n", \
(int)blockSize, \
(int)numStages); \
\
/* Initialize the FIR Instances */ \
arm_fir_lattice_init_##suffix( \
&fir_inst_fut, numStages, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState); \
\
JTEST_COUNT_CYCLES( \
arm_fir_lattice_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_fir_lattice_init_##suffix( \
&fir_inst_ref, numStages, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState); \
\
ref_fir_lattice_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define FIR_SPARSE_DEFINE_TEST(suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test, \
arm_fir_sparse_##suffix) \
{ \
arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n" \
"Tap Delay: %d\n", \
(int)blockSize, \
(int)numTaps, \
(int)FILTERING_MAX_TAP_DELAY); \
\
/* Initialize the FIR Instances */ \
arm_fir_sparse_init_##suffix( \
&fir_inst_fut, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, \
(int32_t*)filtering_tap_delay, \
FILTERING_MAX_TAP_DELAY, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_fir_sparse_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
(void *) filtering_scratch, \
blockSize)); \
\
arm_fir_sparse_init_##suffix( \
&fir_inst_ref, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, \
(int32_t*)filtering_tap_delay, \
FILTERING_MAX_TAP_DELAY, blockSize); \
\
ref_fir_sparse_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
(void *) filtering_scratch, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define FIR_SPARSE2_DEFINE_TEST(suffix, output_type) \
JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test, \
arm_fir_sparse_##suffix) \
{ \
arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 }; \
arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n" \
"Tap Delay: %d\n", \
(int)blockSize, \
(int)numTaps, \
(int)FILTERING_MAX_TAP_DELAY); \
\
/* Initialize the FIR Instances */ \
arm_fir_sparse_init_##suffix( \
&fir_inst_fut, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, \
(int32_t*)filtering_tap_delay, \
FILTERING_MAX_TAP_DELAY, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_fir_sparse_##suffix( \
&fir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
(void *) filtering_scratch, \
(void *) filtering_scratch2, \
blockSize)); \
\
arm_fir_sparse_init_##suffix( \
&fir_inst_ref, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, \
(int32_t*)filtering_tap_delay, \
FILTERING_MAX_TAP_DELAY, blockSize); \
\
ref_fir_sparse_##suffix( \
&fir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
(void *) filtering_scratch, \
(void *) filtering_scratch2, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
FIR_DEFINE_TEST(f32,,float32_t);
FIR_DEFINE_TEST(q31,,q31_t);
FIR_DEFINE_TEST(q15,,q15_t);
FIR_DEFINE_TEST(q31,_fast,q31_t);
FIR_DEFINE_TEST(q15,_fast,q15_t);
FIR_DEFINE_TEST(q7,,q7_t);
FIR_LATTICE_DEFINE_TEST(f32,float32_t);
FIR_LATTICE_DEFINE_TEST(q31,q31_t);
FIR_LATTICE_DEFINE_TEST(q15,q15_t);
FIR_INTERPOLATE_DEFINE_TEST(f32,float32_t);
FIR_INTERPOLATE_DEFINE_TEST(q31,q31_t);
FIR_INTERPOLATE_DEFINE_TEST(q15,q15_t);
FIR_DECIMATE_DEFINE_TEST(f32,,float32_t);
FIR_DECIMATE_DEFINE_TEST(q31,,q31_t);
FIR_DECIMATE_DEFINE_TEST(q15,,q15_t);
FIR_DECIMATE_DEFINE_TEST(q31,_fast,q31_t);
FIR_DECIMATE_DEFINE_TEST(q15,_fast,q15_t);
FIR_SPARSE_DEFINE_TEST(f32,float32_t);
FIR_SPARSE_DEFINE_TEST(q31,q31_t);
FIR_SPARSE2_DEFINE_TEST(q15,q15_t);
FIR_SPARSE2_DEFINE_TEST(q7,q7_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(fir_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_fir_f32_test);
JTEST_TEST_CALL(arm_fir_q31_test);
JTEST_TEST_CALL(arm_fir_q15_test);
JTEST_TEST_CALL(arm_fir_q7_test);
JTEST_TEST_CALL(arm_fir_fast_q31_test);
JTEST_TEST_CALL(arm_fir_fast_q15_test);
JTEST_TEST_CALL(arm_fir_lattice_f32_test);
JTEST_TEST_CALL(arm_fir_lattice_q31_test);
JTEST_TEST_CALL(arm_fir_lattice_q15_test);
JTEST_TEST_CALL(arm_fir_interpolate_f32_test);
JTEST_TEST_CALL(arm_fir_interpolate_q31_test);
JTEST_TEST_CALL(arm_fir_interpolate_q15_test);
JTEST_TEST_CALL(arm_fir_decimate_f32_test);
JTEST_TEST_CALL(arm_fir_decimate_q31_test);
JTEST_TEST_CALL(arm_fir_decimate_q15_test);
JTEST_TEST_CALL(arm_fir_decimate_fast_q31_test);
JTEST_TEST_CALL(arm_fir_decimate_fast_q15_test);
JTEST_TEST_CALL(arm_fir_sparse_f32_test);
JTEST_TEST_CALL(arm_fir_sparse_q31_test);
JTEST_TEST_CALL(arm_fir_sparse_q15_test);
JTEST_TEST_CALL(arm_fir_sparse_q7_test);
}

View File

@ -0,0 +1,76 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
#define IIR_DEFINE_TEST(suffix, output_type) \
JTEST_DEFINE_TEST(arm_iir_lattice_##suffix##_test, \
arm_iir_lattice_##suffix) \
{ \
arm_iir_lattice_instance_##suffix iir_inst_fut = { 0 }; \
arm_iir_lattice_instance_##suffix iir_inst_ref = { 0 }; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, filtering_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numstages_idx, uint16_t, numStages, filtering_numstages \
, \
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Stages: %d\n", \
(int)blockSize, \
(int)numStages); \
\
/* Initialize the IIR Instances */ \
arm_iir_lattice_init_##suffix( \
&iir_inst_fut, numStages, (output_type*)filtering_coeffs_b_##suffix, \
(output_type*)filtering_coeffs_c_##suffix, \
(void *) filtering_pState, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_iir_lattice_##suffix( \
&iir_inst_fut, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_fut, \
blockSize)); \
\
arm_iir_lattice_init_##suffix( \
&iir_inst_ref, numStages, (output_type*)filtering_coeffs_b_##suffix, \
(output_type*)filtering_coeffs_c_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_iir_lattice_##suffix( \
&iir_inst_ref, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_output_ref, \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
IIR_DEFINE_TEST(f32, float32_t);
IIR_DEFINE_TEST(q31, q31_t);
IIR_DEFINE_TEST(q15, q15_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(iir_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_iir_lattice_f32_test);
JTEST_TEST_CALL(arm_iir_lattice_q31_test);
JTEST_TEST_CALL(arm_iir_lattice_q15_test);
}

View File

@ -0,0 +1,219 @@
#include "jtest.h"
#include "filtering_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "filtering_templates.h"
#include "type_abbrev.h"
static const float32_t mu_f32 = 0.00854f;//1.0f;
static const float32_t mu2_f32 = 1.0f;
static const q31_t mu_q31 = 0x7fffffff;
static const q15_t mu_q15 = 0x7fff;
#define LMS_DEFINE_TEST(suffix, config_suffix, output_type, mu) \
JTEST_DEFINE_TEST(arm_lms##config_suffix##_##suffix##_test, \
arm_lms##config_suffix##_##suffix) \
{ \
arm_lms##config_suffix##_instance_##suffix lms_inst_fut = { 0 }; \
arm_lms##config_suffix##_instance_##suffix lms_inst_ref = { 0 }; \
arm_fir_instance_##suffix fir_inst = { 0 }; \
uint32_t i; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, lms_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
/* Initialize the FIR Instances */ \
arm_fir_init_##suffix( \
&fir_inst, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_fir_##suffix( \
&fir_inst, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_input_lms, \
blockSize); \
\
for(i=0;i<numTaps;i++) \
{ \
*((output_type*)filtering_coeffs_lms + i) = (output_type)0; \
} \
\
for(i=0;i<blockSize;i++) \
{ \
/* scaled down so that lms will converge */ \
/* scaled down by almost the max of the abs(input) */ \
*((output_type*)filtering_input_lms + i) = \
*((output_type*)filtering_input_lms + i) / 200.0f; \
\
*((output_type*)filtering_output_f32_fut + i) = \
*((output_type*)filtering_##suffix##_inputs + i) / 200.0f; \
} \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n", \
(int)blockSize, \
(int)numTaps); \
\
/* Initialize the LMS Instances */ \
arm_lms##config_suffix##_init_##suffix( \
&lms_inst_fut, numTaps, \
(output_type*)filtering_coeffs_lms, \
(void *) filtering_pState, mu, blockSize); \
\
JTEST_COUNT_CYCLES( \
arm_lms##config_suffix##_##suffix( \
&lms_inst_fut, \
(void *) filtering_output_f32_fut, \
(void *) filtering_input_lms, \
(void *) filtering_output_fut, \
(void *) ((output_type*)filtering_output_fut+blockSize), \
blockSize)); \
\
for(i=0;i<numTaps;i++) \
{ \
*((output_type*)filtering_coeffs_lms + i) = (output_type)0; \
} \
\
arm_lms##config_suffix##_init_##suffix( \
&lms_inst_ref, numTaps, \
(output_type*)filtering_coeffs_lms, \
(void *) filtering_pState, mu, blockSize); \
\
ref_lms##config_suffix##_##suffix( \
&lms_inst_ref, \
(void *) filtering_output_f32_fut, \
(void *) filtering_input_lms, \
(void *) filtering_output_ref, \
(void *) ((output_type*)filtering_output_fut+blockSize), \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type))); \
\
return JTEST_TEST_PASSED; \
}
#define LMS_WITH_POSTSHIFT_DEFINE_TEST(suffix, config_suffix, output_type) \
JTEST_DEFINE_TEST(arm_lms##config_suffix##_##suffix##_test, \
arm_lms##config_suffix##_##suffix) \
{ \
arm_lms##config_suffix##_instance_##suffix lms_inst_fut = { 0 }; \
arm_lms##config_suffix##_instance_##suffix lms_inst_ref = { 0 }; \
arm_fir_instance_##suffix fir_inst = { 0 }; \
uint32_t i; \
\
TEMPLATE_DO_ARR_DESC( \
blocksize_idx, uint32_t, blockSize, lms_blocksizes \
, \
TEMPLATE_DO_ARR_DESC( \
numtaps_idx, uint16_t, numTaps, filtering_numtaps \
, \
TEMPLATE_DO_ARR_DESC( \
postshifts_idx, uint8_t, postShift, filtering_postshifts \
, \
/* Initialize the FIR Instances */ \
arm_fir_init_##suffix( \
&fir_inst, numTaps, \
(output_type*)filtering_coeffs_##suffix, \
(void *) filtering_pState, blockSize); \
\
ref_fir_##suffix( \
&fir_inst, \
(void *) filtering_##suffix##_inputs, \
(void *) filtering_input_lms, \
blockSize); \
\
for(i=0;i<numTaps;i++) \
{ \
*((output_type*)filtering_coeffs_lms + i) = (output_type)0; \
} \
\
for(i=0;i<blockSize;i++) \
{ \
/* scaled down so that lms will converge */ \
/* scaled down by log2(numTaps) bits */ \
*((output_type*)filtering_output_f32_fut + i) = \
*((output_type*)filtering_##suffix##_inputs + i) >> 6; \
} \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Number of Taps: %d\n" \
"Post Shift: %d\n", \
(int)blockSize, \
(int)numTaps, \
(int)postShift); \
\
/* Initialize the LMS Instances */ \
arm_lms##config_suffix##_init_##suffix( \
&lms_inst_fut, numTaps, \
(output_type*)filtering_coeffs_lms, \
(void *) filtering_pState, mu_##suffix, blockSize, postShift); \
\
JTEST_COUNT_CYCLES( \
arm_lms##config_suffix##_##suffix( \
&lms_inst_fut, \
(void *) filtering_output_f32_fut, \
(void *) filtering_input_lms, \
(void *) filtering_output_fut, \
(void *) ((output_type*)filtering_output_fut+blockSize), \
blockSize)); \
\
for(i=0;i<numTaps;i++) \
{ \
*((output_type*)filtering_coeffs_lms + i) = (output_type)0; \
} \
\
arm_lms##config_suffix##_init_##suffix( \
&lms_inst_ref, numTaps, \
(output_type*)filtering_coeffs_lms, \
(void *) filtering_pState, mu_##suffix, blockSize, postShift); \
\
ref_lms##config_suffix##_##suffix( \
&lms_inst_ref, \
(void *) filtering_output_f32_fut, \
(void *) filtering_input_lms, \
(void *) filtering_output_ref, \
(void *) ((output_type*)filtering_output_ref+blockSize), \
blockSize); \
\
FILTERING_SNR_COMPARE_INTERFACE( \
blockSize, \
output_type)))); \
\
return JTEST_TEST_PASSED; \
}
LMS_DEFINE_TEST(f32,,float32_t, mu_f32);
LMS_WITH_POSTSHIFT_DEFINE_TEST(q31,,q31_t);
LMS_WITH_POSTSHIFT_DEFINE_TEST(q15,,q15_t);
LMS_DEFINE_TEST(f32,_norm,float32_t, mu2_f32);
LMS_WITH_POSTSHIFT_DEFINE_TEST(q31,_norm,q31_t);
LMS_WITH_POSTSHIFT_DEFINE_TEST(q15,_norm,q15_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(lms_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_lms_f32_test);
JTEST_TEST_CALL(arm_lms_q31_test);
JTEST_TEST_CALL(arm_lms_q15_test);
JTEST_TEST_CALL(arm_lms_norm_f32_test);
JTEST_TEST_CALL(arm_lms_norm_q31_test);
JTEST_TEST_CALL(arm_lms_norm_q15_test);
}

View File

@ -0,0 +1,62 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "intrinsics_templates.h"
#include "intrinsics_test_data.h"
#include "type_abbrev.h"
INTRINSICS_TEST_TEMPLATE_ELT2(__QADD8, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QSUB8, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QADD16, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SHADD16, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QSUB16, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SHSUB16, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QASX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SHASX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QSAX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SHSAX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SMUSDX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SMUADX, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QADD, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__QSUB, q31);
INTRINSICS_TEST_TEMPLATE_ELT3(__SMLAD, q31);
INTRINSICS_TEST_TEMPLATE_ELT3(__SMLADX, q31);
INTRINSICS_TEST_TEMPLATE_ELT3(__SMLSDX, q31);
INTRINSICS_TEST_TEMPLATE_ELT4(__SMLALD, q31, q63);
INTRINSICS_TEST_TEMPLATE_ELT4(__SMLALDX, q31, q63);
INTRINSICS_TEST_TEMPLATE_ELT2(__SMUAD, q31);
INTRINSICS_TEST_TEMPLATE_ELT2(__SMUSD, q31);
INTRINSICS_TEST_TEMPLATE_ELT1(__SXTB16, q31);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(intrinsics_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(__QADD8_test);
JTEST_TEST_CALL(__QSUB8_test);
JTEST_TEST_CALL(__QADD16_test);
JTEST_TEST_CALL(__SHADD16_test);
JTEST_TEST_CALL(__QSUB16_test);
JTEST_TEST_CALL(__SHSUB16_test);
JTEST_TEST_CALL(__QASX_test);
JTEST_TEST_CALL(__SHASX_test);
JTEST_TEST_CALL(__QSAX_test);
JTEST_TEST_CALL(__SHSAX_test);
JTEST_TEST_CALL(__SMUSDX_test);
JTEST_TEST_CALL(__SMUADX_test);
JTEST_TEST_CALL(__QADD_test);
JTEST_TEST_CALL(__QSUB_test);
JTEST_TEST_CALL(__SMLAD_test);
JTEST_TEST_CALL(__SMLADX_test);
JTEST_TEST_CALL(__SMLSDX_test);
JTEST_TEST_CALL(__SMLALD_test);
JTEST_TEST_CALL(__SMLALDX_test);
JTEST_TEST_CALL(__SMUAD_test);
JTEST_TEST_CALL(__SMUSD_test);
JTEST_TEST_CALL(__SXTB16_test);
}

View File

@ -0,0 +1,189 @@
#include "intrinsics_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
q63_t intrinsics_output_fut[INTRINSICS_MAX_LEN] = {0};
q63_t intrinsics_output_ref[INTRINSICS_MAX_LEN] = {0};
float32_t intrinsics_output_f32_fut[INTRINSICS_MAX_LEN] = {0};
float32_t intrinsics_output_f32_ref[INTRINSICS_MAX_LEN] = {0};
const q63_t intrinsics_q63_inputs[INTRINSICS_MAX_LEN] =
{
0xF7D2D6F5414A5524, 0x5297DAF44CAB5A17, 0x54129B222D6F5B56, 0x54141F6F7DAF4E3B, 0x44C414A529B226EB, 0x22D4CAB541F6F6A ,
0x6053A44325CE38BF, 0x33D055403A970AFA, 0x0133D0603A44382A, 0x32513D5605540F8 , 0x03A25CE33D060524, 0x03A3A97013D56570,
0x3402674117D7791D, 0x72140A667FE0438C, 0x439218E426741841, 0x11739FF340A66E54, 0x67F17D77218E4386, 0x4267FE0439FF3726,
0x46C411420DC177CA, 0x7156C147702F2CF5, 0x26615F6441142FF1, 0x20D662C46C1476AB, 0x7700DC1715F640DD, 0x441702F2662C4E49,
0x50D4F8B538055E7E, 0x5570D192770871FE, 0x725576474F8B5360, 0x538258550D1928A0, 0x2773805557647821, 0x74F77087258558CF,
0x05066D230C0C604D, 0x63650FA350A46C19, 0x66C3646266D2370D, 0x30C6CE0050FA359A, 0x3500C0C636462E24, 0x26650A466CE00F5C,
0x21E3B72166D40948, 0x0731EB61355B5831, 0x577733943B72150A, 0x166773F21EB61530, 0x13566D4073394127, 0x43B355B5773F26F4,
0x7221CF5118052980, 0x27A22AD1038D6587, 0x67C7A8121CF517F4, 0x1187CDC722AD1691, 0x103180527A812473, 0x21C038D67CDC7D7F,
0x21A0FD604A5110D0, 0x1201A2156D895BB9, 0x53D20EB60FD60F35, 0x04A3DE621A215530, 0x56D4A51120EB6DDA, 0x60F6D8953DE62516,
0x02C61E17250123E1, 0x26D2CBB35ED813C8, 0x15B6D35061E175B1, 0x7255B1402CBB32F3, 0x35E250126D350907, 0x0615ED815B140D7E,
0x126418B76EAE272D, 0x23C26BB13E221841, 0x1243CF01418B7B88, 0x76E24DB126BB1B80, 0x13E6EAE23CF010E4, 0x1413E22124DB166C,
0x1634700479AB7E42, 0x74163F5662DF28D1, 0x246419E047004665, 0x47946BE163F56FC6, 0x66279AB7419E0C75, 0x04762DF246BE1F38,
0x63F5CE12243239B2, 0x31F3F574758D03E0, 0x0711F4455CE12926, 0x22471D563F574B74, 0x475243231F4458E2, 0x55C758D071D5639 ,
0x34806EF703A17B49, 0x77D48D32173A7C76, 0x70F7D3E306EF7531, 0x7030F2F348D32F34, 0x21703A177D3E3063, 0x306173A70F2F3549,
0x54426F835C314C9 , 0x42E447B118CB6B6D, 0x6502E32326F83697, 0x35C50745447B1E9C, 0x1185C3142E323A33, 0x32618CB650745715,
0x51D4891001AC5746, 0x5601DA36655A4E04, 0x42060E624891060F, 0x00120BF51DA36B4F, 0x66501AC560E6227F, 0x248655A420BF5EB4,
0x1154156550B3225B, 0x2181540540C10544, 0x02318586415656C , 0x550236A115405EAE, 0x54050B32185863E1, 0x64140C10236A1C4E,
0x44E7736608BD21F9, 0x2614EDF52ACF7A68, 0x752617A1773665E5, 0x608524F44EDF5F66, 0x52A08BD2617A1610, 0x1772ACF7524F4968,
0x06A24DC242D006CD, 0x0376A4F55F000079, 0x01D3706424DC2447, 0x2421DE706A4F5599, 0x55F42D0037064D4A, 0x4245F0001DE70608,
0x44018061233A2EE5, 0x22440795137E488E, 0x44424A8118061B7B, 0x12344CE44079569D, 0x513233A224A817D5, 0x118137E444CE48F5,
0x41D71AD7575F7883, 0x73C1D4A522406802, 0x6333CBC771AD70BB, 0x757335841D4A5D79, 0x522575F73CBC7CE4, 0x77122406335840D8,
0x3333D19605792E47, 0x233331A427AD2C05, 0x213330353D196EAB, 0x60513D93331A40AF, 0x4270579233035831, 0x53D27AD213D93987,
0x0135DC437C542094, 0x25C13796045F317E, 0x37D5C2015DC43F8B, 0x37C7DD501379650C, 0x6047C5425C20193F, 0x15D045F37DD50298,
0x5275C8A71D482B82, 0x210272914A6B6062, 0x63510E165C8A757B, 0x71D355A5272917C1, 0x14A1D48210E16FBC, 0x65C4A6B6355A5882,
0x1757DF7F66F86A35, 0x61A758A6604555A1, 0x5531A1137DF7FBB , 0xF6653541758A6216, 0x66066F861A113463, 0x37D6045553541BAD,
0x04E1F05221576756, 0x6554EA63483B6D8D, 0x67B55B841F052FCC, 0x2217B2E04EA63DFB, 0x3482157655B84677, 0x41F483B67B2E04F2,
0x41D46029787A796C, 0x71A1DB2204A12CD3, 0x2061A8C746029BD , 0x978061E41DB22DD8, 0x204787A71A8C7F28, 0x74604A12061E452E,
0x66B73357132D3F78, 0x3626BBB076525852, 0x53F6253673357BBA, 0x7133F6B66BBB0A58, 0x076132D362536AFA, 0x673765253F6B65EF,
0x55F66B026DC57B58, 0x7325FF601EB718CE, 0x17F3247766B02740, 0x26D7FF355FF60B47, 0x01E6DC5732477B8F, 0x7661EB717FF35302,
0x7206FF9529FD3E40, 0x34720182475A43D1, 0x44C47E076FF9528A, 0x5294CF572018209D, 0x24729FD347E079C9, 0x76F475A44CF576D3,
0x2512340428074E34, 0x42551CE35D6F58ED, 0x56425297234045D1, 0x4286443251CE35F9, 0x35D2807425297896, 0x7235D6F5644320FE,
0x04E701D50F4449A9, 0x4714E09454C361C6, 0x661718F0701D52F1, 0x50F615404E094820, 0x4540F444718F0810, 0x07054C3661540689,
0x46A48AC379DE5A1F, 0x5216A0C152865C23, 0x57021B7048AC3A4B, 0x379708646A0C1BE0, 0x15279DE521B705DB, 0x048528657086465D,
0x7206D2311CC10929, 0x038204951E1D716E, 0x71438FF16D231D4C, 0x11C149C720495108, 0x51E1CC1038FF1971, 0x16D1E1D7149C78D4,
0x62169C32441F1E8B, 0x147210B743D95372, 0x5024781569C324B4, 0x24402476210B7DC9, 0x743441F147815E78, 0x56943D9502476137,
0x30E2F6846163DDF , 0xD020E680390D6EC2, 0x612022322F684E5B, 0x461125930E680ABD, 0x0396163D02232615, 0x22F390D612593380,
0x76D130F57B1465FE, 0x6106D772065A6957, 0x66310E91130F53EB, 0x57B63BC76D772EF7, 0x2067B14610E916B6, 0x113065A663BC7A68,
0x773194712ACB00BB, 0x05973090651C5590, 0x53459BB6194714B5, 0x12A34867730904EE, 0x0652ACB059BB61B4, 0x619651C534867DBC,
0x21228931391C706C, 0x713129A63C164218, 0x4621317128931CD0, 0x13962882129A66AB, 0x63C391C713171F4D, 0x1283C16462882872,
0x6547A7944B167FD4, 0x73054B1566902F4C, 0x239308567A794932, 0x44B3946654B152C , 0x5664B16730856EA9, 0x67A6690239466D55,
0x651077A336696451, 0x63651B950F5B1E8C, 0x11D367E2077A3C6A, 0x3361D2C651B956B4, 0x50F36696367E2D2A, 0x2070F5B11D2C662A,
0x24D4070678FB6880, 0x6204DF964E6D40B6, 0x4632030640706FDC, 0x678638124DF9679C, 0x64E78FB620306EDB, 0x6404E6D463812AE7,
0x2043E036255D2748, 0x25504E441B8B617B, 0x66655A373E036FAD, 0x625669B204E444A7, 0x41B255D255A37517, 0x73E1B8B6669B2988,
0x27634BB318FD5E8C, 0x5057699467BD05CE, 0x06D05B9534BB346C, 0x3186DFA276994800, 0x46718FD505B958B6, 0x53467BD06DFA2FEF,
0x573727212055B5C , 0xB5F73EF61F843C4C, 0x3435FB9072721B52, 0x1204323573EF6B86, 0x61F2055B5FB90B61, 0x0721F84343235DAC,
0x17B162F231D424B4, 0x2797B2A7768C0D7E, 0x04479392162F2F9D, 0x231442D17B2A7A99, 0x77631D4279392693, 0x216768C0442D12C0,
0x1445D9560692273E, 0x20D44E7359A16E80, 0x65F0D8745D956856, 0x6065F5C144E73DAC, 0x359069220D874532, 0x45D59A165F5C1DD0,
0x3591D8215D167858, 0x7595965405597EA2, 0x71A594C01D821476, 0x15D1A87359654ED2, 0x4055D167594C0DC7, 0x01D055971A873506,
0xD1F20CC33F693200, 0x3781F9E67A651AB5, 0x12A78E7620CC3C8A, 0x33F2A01D1F9E662C, 0x67A3F69378E7631 , 0x6207A6512A01DA0 ,
0x073360D43088472F, 0x40D7333712EE0D42, 0x0230D634360D4D5F, 0x430233A073337E48, 0x712308840D634C06, 0x43612EE0233A0ACB,
0x13E26223706651ED, 0x5223EBB67AA54079, 0x432225A4262239D1, 0x370325813EBB6BB6, 0x67A70665225A4F3D, 0x4267AA5432581A06,
0x51075ED16E6F5780, 0x53C10DF2577377C7, 0x7373C79275ED1DDC, 0x16E3717510DF2D15, 0x2576E6F53C7929BC, 0x2755773737175917,
0x47376435354E381C, 0x35273BB7762A2DD7, 0x26C52FE476435AC1, 0x5356C81473BB749E, 0x776354E352FE4E7E, 0x476762A26C8140F4,
0x1374742257694875, 0x4123792612D30822, 0x020121C7474227CF, 0x257204E137926D98, 0x61257694121C7E24, 0x74712D30204E1EE7,
0x77A316C358C6268 , 0x2617AB142152080 , 0x07D61C13316C3323, 0x3587D8E77AB14A31, 0x42158C6261C13C03, 0x331215207D8E74F1,
0x5673BFD773F446D0, 0x43E672426C6C6A0A, 0x60F3E5523BFD79FB, 0x7730FF5567242969, 0x26C73F443E5524EB, 0x23B6C6C60FF5534 ,
0x779540F452F05F1C, 0x5417984617102DE3, 0x21941954540F4A21, 0x452193F7798468E7, 0x61752F05419545EB, 0x45417102193F7880,
0x5404BF662B246B20, 0x64C40894408A2BC4, 0x2244CAA64BF66A49, 0x62B2478540894C55, 0x4402B2464CAA6398, 0x64B408A2247856E9,
0x55070D372F2A647D, 0x6595063422F55D33, 0x52B5983670D37915, 0x72F2BCC550634C72, 0x4222F2A65983671 , 0x67022F552BCC5AF8,
0x03A710741A77D48 , 0xD613A6B3411B5CFA, 0x5626142571074D7E, 0x41A627103A6B3593, 0x3411A77D61425F05, 0x571411B56271012A,
0x32310A505B830310, 0x021239F73D8418CA, 0x17F213D510A50792, 0x05B7F993239F7137, 0x73D5B830213D5071, 0x5103D8417F9930D4,
0x265291502462664F, 0x6146586354180F8E, 0x018144B2291505BA, 0x02418E426586387A, 0x35424626144B2C12, 0x2295418018E425C7,
0x558194623AA43373, 0x37258B4518F0503C, 0x5267247319462AC0, 0x23A26BF558B452EF, 0x5183AA4372473895, 0x31918F0526BF5435,
0x13D5C3376DA553B , 0x54D3D93C60912FA6, 0x2204D0355C337331, 0x76D206913D93CD7 , 0xC606DA554D035752, 0x55C6091220691929,
0x25F758B6389962F9, 0x6595FCA636E701E9, 0x02D59602758B642C, 0x6382D5A25FCA69E3, 0x63638996596027F4, 0x27536E702D5A2FD0,
0x01B76BA35F18324A, 0x33C1BC213DB165AA, 0x6733CC1076BA3876, 0x35F73A601BC21AF6, 0x13D5F1833CC10841, 0x0763DB1673A60174,
0x66144586625B7F58, 0x72B6157367C57724, 0x7032B3704458653C, 0x66203DF661573095, 0x367625B72B370837, 0x04467C5703DF6CE3,
0x260191B45D086EFA, 0x630608433F5227C2, 0x21030DE1191B4785, 0x45D105E260843D82, 0x33F5D08630DE11F1, 0x1193F522105E226C,
0x23B366766E1C7AA2, 0x7733B8D447AA5D14, 0x5407372636676D03, 0x66E409523B8D4DF6, 0x4476E1C77372694 , 0x63647AA5409521DC,
0x5632BE46744206A , 0x04A63E114722023F, 0x05C4A4A02BE46AD5, 0x6745CF2563E11D76, 0x147744204A4A09AB, 0x02B472205CF252B9,
0x62D3203731586916, 0x6452D7324DFD7D84, 0x72E4524532037634, 0x7312E5362D7329D4, 0x24D315864524582F, 0x5324DFD72E5366C1,
0x50A6A2543B0E019B, 0x0110A6A038530C6A, 0x054119726A2542D , 0x43B540650A6A00E5, 0x0383B0E0119725CC, 0x26A3853054065347,
0x571181111B6F7AF1, 0x774716746CCF71F1, 0x77774F43181117F2, 0x11B77A5571674A76, 0x46C1B6F774F43880, 0x3186CCF777A55F47,
0x0243CBB259EA5B62, 0x547245C44A331D95, 0x1074718D3CBB276F, 0x25907CE0245C4D50, 0x44A59EA54718D5 , 0xD3C4A33107CE05D1,
0x6663006160D47AD5, 0x73D669B325CA1C40, 0x1193D5F130061766, 0x16019306669B39DF, 0x32560D473D5F1320, 0x13025CA119306AD3,
0x12D6A6E628B30325, 0x02B2DF160DD090F , 0x9312B5146A6E6F37, 0x628311012DF16F66, 0x60D28B302B514C7E, 0x46A0DD0931101C58,
0x14177AB07D4847FC, 0x43A41320515341CA, 0x4243AF8577AB0EA6, 0x07D24B3141320DAF, 0x0517D4843AF8531E, 0x5775153424B31611,
0x072222516D377331, 0x73B722D17A832A22, 0x2263B194222511C7, 0x16D261B0722D1F89, 0x17A6D3773B194F18, 0x4227A832261B0A4D,
0x620190F243F676DB, 0x756202E74F8C6D61, 0x630560D4190F2250, 0x243308E6202E72A9, 0x74F43F67560D4EA2, 0x4194F8C6308E67B4,
0x17F27EB236746663, 0x6267FDE017CC3852, 0x3232647127EB2EAC, 0x236232617FDE0AA8, 0x01736746264719A , 0x12717CC323261EDD,
0x42448D823C0B339E, 0x34324D4406284D40, 0x44B4363148D82ECB, 0x23C4BF0424D44CF8, 0x4063C0B343631B91, 0x148062844BF04248,
0x320630B736497B9B, 0x76C20CC368273C58, 0x3576C3B7630B7AF9, 0x7365744320CC3F26, 0x368364976C3B7B71, 0x76368273574433ED,
0x626565B07A2552F6, 0x56726F924CDE642D, 0x65B67A20565B0142, 0x07A5B50626F9207F, 0x24C7A25567A207BE, 0x0564CDE65B506684,
0x1411561044DA4780, 0x46E4155611756A0C, 0x61D6E3A6156104AF, 0x0441DBA1415561B0, 0x61144DA46E3A6886, 0x615117561DBA1EA2,
0x71D758F0542359C8, 0x52D1DD634C024E22, 0x4612D194758F052A, 0x054616471DD6395 , 0x34C542352D194BAD, 0x4754C024616475A1,
0x35713CB542084602, 0x46057FE209C274AD, 0x716607A413CB5562, 0x5421672357FE2D5B, 0x20942084607A4EE5, 0x41309C2716723A91,
0x73D28FE64F624CCF, 0x4323DDA62E5E24A3, 0x21932AF528FE6FAF, 0x64F19A573DDA6EF4, 0x62E4F62432AF540C, 0x5282E5E219A57B3B,
0x353278445D1D73A3, 0x7425397123424B3E, 0x452427D7278445F5, 0x45D5221353971C3B, 0x1235D1D7427D7943, 0x727234245221358C,
0x7603B86626CE1A5E, 0x145608317B506CA4, 0x62145E143B86636E, 0x62621B7760831F6D, 0x17B26CE145E142F3, 0x43B7B50621B77B04,
0x43B7D8D17BB65E0C, 0x52D3BF3378B80F5E, 0x02B2D5727D8D172B, 0x17B2B5B43BF33A90, 0x3787BB652D572D9 , 0x27D78B802B5B4920,
0x11C47C6436A05E01, 0x5301CAA652745306, 0x54D304A247C64855, 0x4364D6B11CAA669B, 0x65236A05304A2641, 0x247527454D6B1760,
0x54B24A673E176D79, 0x64E4BDE7523241B0, 0x44C4E5F124A67957, 0x73E4C2154BDE76AF, 0x7523E1764E5F1493, 0x124523244C215DA5,
0x53940AE633A052B , 0x569390D11A4D00C2, 0x05A69E8640AE6BCA, 0x6335AF35390D106B, 0x11A33A0569E86018, 0x6401A4D05AF356CF,
0x10D14B6263561D4 , 0x14C0D2E244F31C6 , 0x1454CBF114B6299B, 0x26345AC10D2E25F0, 0x244635614CBF132A, 0x11444F3145AC18B6,
0x222263442227567D, 0x52422C5106B54E2F, 0x46C2442326344534, 0x4226C37222C515EC, 0x106222752442370D, 0x32606B546C3721C6,
0x6606AF3634EF687D, 0x66A603961C06323A, 0x3496AE706AF36A60, 0x63449D0660396F52, 0x61C34EF66AE70AA1, 0x06A1C06349D06CBC,
0x1663A9A26F9576C8, 0x71D66DF0584C4258, 0x4571D4803A9A27BB, 0x26F57DD166DF0D47, 0x0586F9571D4804EA, 0x03A584C457DD1E67,
0x66225C12789C7895, 0x74F6274275336111, 0x63F4FBF625C122C8, 0x2783F9F662742114, 0x275789C74FBF6D26, 0x625753363F9F6482,
0x77E499E266F02CD9, 0x2447EBC111083202, 0x34944011499E2618, 0x26649DF77EBC1351, 0x11166F02440112F1, 0x1491108349DF7BC1,
0x16B61AF13BF45C25, 0x52D6B1F731BA7FA0, 0x7632D86561AF1AED, 0x13B63E016B1F7D29, 0x7313BF452D865294, 0x56131BA763E01129,
0x2081FE3A7E9E77A5, 0x77208597100435D7, 0x331722841FE3A71 , 0xA7E31C5208597C81, 0x7107E9E7722849FA, 0x41F1004331C520AF,
0x1155CA077BA178DC, 0x702150E67F102D31, 0x25D02C345CA07864, 0x77B5D041150E6F98, 0x67F7BA1702C34882, 0x45C7F1025D041F11,
0x355426F30C613C57, 0x37A5599253984FD1, 0x42B7AFA0426F38AD, 0x30C2B25355992B1D, 0x2530C6137AFA078D, 0x042539842B253413,
0x51A28933594B32CF, 0x3291A0B432887E38, 0x765291B428933B46, 0x359653A51A0B4168, 0x432594B3291B4A94, 0x42832887653A5E8D,
0x65030DA421746BBE, 0x63450C565EFE6415, 0x6523471130DA429C, 0x421529C650C5640C, 0x65E2174634711AA4, 0x1305EFE6529C67A6,
0x42803CA0105957CD, 0x525283854D287499, 0x74225A0403CA0AA7, 0x010420D428385832, 0x54D1059525A04A02, 0x4034D287420D47A4,
0x72759E2135627556, 0x74527E834BC11E4C, 0x1224586159E215C7, 0x1352282727E838B4, 0x34B35627458612F4, 0x1594BC1122827F6F,
0x64F4E495449D4DBA, 0x4394FD27679B7362, 0x737395E74E495845, 0x544375A64FD270D1, 0x767449D4395E76A0, 0x74E679B7375A655E,
0x05161EF712E2058F, 0x06751FF573F970CA, 0x77F6741061EF73B3, 0x7127FDA051FF5362, 0x57312E2067410345, 0x06173F977FDA0B3B,
0x14B26557221962E8, 0x6264B30017AB6543, 0x67E268E126557412, 0x7227E0D14B30084D, 0x01722196268E191D, 0x12617AB67E0D13DF,
0x65677FA773EF127D, 0x112560024DEC5DB1, 0x51512DD077FA745F, 0x773157F656002898, 0x24D73EF112DD0A40, 0x0774DEC5157F6DDF,
0x3337B63042A55F8E, 0x532338B643597924, 0x74F329457B630C3F, 0x0424FA23338B6B58, 0x64342A5532945F75, 0x57B435974FA23A0E,
0x02406114036E38C0, 0x3192466033B18FD , 0x81219BB006114337, 0x403124C024660ACB, 0x033036E319BB02F0, 0x00633B18124C0A47,
0x5360C6123A951701, 0x1513607401155ABF, 0x563516600C612D71, 0x23A635F536074CA7, 0x4013A95151660C41, 0x00C01155635F58C7,
0x50165B077FC2002D, 0x079015F60E6A7CF3, 0x76E791B765B07D07, 0x77F6E475015F6A6B, 0x60E7FC20791B70DD, 0x7650E6A76E475719,
0x74671942424314C7, 0x167464A268426EB , 0x66B6775771942FEE, 0x2426BA77464A2F52, 0x26842431677579FD, 0x771684266BA775AE,
0x31D78D951F66EFF , 0xE3B1D0B31A795237, 0x52F3BD3478D9545F, 0x51F2F8531D0B344D, 0x31A1F66E3BD34AB7, 0x4781A7952F85312A,
0x20208DF316C542AD, 0x46D028113990185D, 0x1406D35108DF3351, 0x3164066202811AA5, 0x13916C546D351F41, 0x108399014066269D,
0x1355DD7006B660BF, 0x66835D746EDB4768, 0x411689E25DD70CF0, 0x0061143135D74F6E, 0x46E06B66689E220C, 0x25D6EDB411431687,
0x01D302F0147C49C9, 0x4481DAB6385762BD, 0x63748325302F0AE4, 0x01437D501DAB67F8, 0x638147C4483256C9, 0x5303857637D50FCB,
0x15819DB74EA82711, 0x26A58DE04D7B2C98, 0x2376AFF719DB78BC, 0x74E3762158DE0DC2, 0x04D4EA826AFF7E7B, 0x7194D7B237621C93,
0x32E7F884792C6E19, 0x66C2E19677001192, 0x16A6C7137F88439D, 0x4796AF432E196A66, 0x677792C66C71378C, 0x37F770016AF43B3A,
0x06D4BEE17C16225E, 0x2346D5B56687337 , 0x368345D44BEE1608, 0x17C681206D5B5552, 0x5667C162345D4590, 0x44B66873681209CC,
0x11F198807B242819, 0x2241FC72508A1416, 0x16A24BD019880FE3, 0x07B6A1D11FC7288A, 0x2507B24224BD0502, 0x019508A16A1D1678,
0x45E5ADE120E6CA0 , 0xC7A5EA8659BE2057, 0x2117A2005ADE11EB, 0x120114945EA8649D, 0x65920E6C7A200E6F, 0x05A59BE21149481D,
0x5636731272281E93, 0x15263B840A5B0451, 0x07C5221767312D58, 0x2727CDF563B849F1, 0x40A7228152217960, 0x7670A5B07CDF59F3,
0x5347DF1533C775C0, 0x73834E961EBA0799, 0x05E38FC77DF1506 , 0x5335EA0534E96110, 0x61E33C7738FC73E3, 0x77D1EBA05EA059B2,
0x16C43911022936EA, 0x31C6C0D1316406F6, 0x0381C6F343911185, 0x10238DB16C0D10F3, 0x131022931C6F3DF8, 0x3433164038DB12A9,
0x5775F4A35CD41244, 0x14C77CE12C9F0A7B, 0x0314C8005F4A315F, 0x35C318D577CE1C66, 0x12C5CD414C800860, 0x05F2C9F0318D53E0,
0x421750817105420D, 0x420217E4575361F2, 0x64D20101750810BA, 0x1714D884217E4CA5, 0x457710542010140 , 0x175575364D884763,
0x008141C642BB0DA7, 0x046087F532D53A74, 0x32D464B5141C6CD4, 0x6422D2A0087F5FC3, 0x53242BB0464B53 , 0x51432D532D2A05F6,
0x5223EB9215532B45, 0x21F221465D5C3CE1, 0x3111FC523EB9216A, 0x21511AE52214611B, 0x65D155321FC52C5F, 0x23E5D5C311AE5DD7,
0x46D7400020B925A9, 0x2386D0E07C640AF4, 0x00938E6A740009AC, 0x020091046D0E0321, 0x07C20B9238E6A61 , 0xA747C64009104544,
0x666341A6474F26C8, 0x2596619015254CF3, 0x424598B2341A6B59, 0x64724126661904CE, 0x015474F2598B2197, 0x234152542412659D,
0x13008FD161976DD4, 0x63430400329B3E16, 0x3553456308FD1FB0, 0x16155CC1304006F3, 0x032619763456309 , 0x308329B355CC15F1,
0x0350036D59DA7630, 0x729353775C801335, 0x175299470036D52 , 0xD5975280353775A5, 0x75C59DA7299476EB, 0x7005C80175280568,
0x37F64761766F5264, 0x51B7FB302EA233A6, 0x3361BC03647619F3, 0x17636BC37FB30C7A, 0x02E766F51BC03B9 , 0x3642EA2336BC3061,
0x7640AC043F30596E, 0x51E641973E2A527B, 0x5211ECC30AC04220, 0x43F21447641979A3, 0x73E3F3051ECC3B89, 0x30A3E2A521447BC1,
0x157299E54E8F2E26, 0x21D57C940C5A1D90, 0x1761D486299E5467, 0x54E76F3157C947E3, 0x40C4E8F21D4865ED, 0x6290C5A176F31C3D,
0x05C6FFB34EE81CDF, 0x1305C8233479195E, 0x147300F76FFB3AE1, 0x34E479405C82398 , 0x3344EE81300F7364, 0x76F3479147940AFA,
0xF3A224A33B853E3E, 0x3223A674598C440D, 0x42E22880224A3D89, 0x33B2E77F3A674204, 0x4593B85322880A38, 0x022598C42E77F2D ,
0x6091FE9022841C9C, 0x12D093354F0609C3, 0x07E2D6B61FE90922, 0x0227EDB609335017, 0x54F228412D6B69A7, 0x61F4F0607EDB63F9,
0xE2524BE1099A74EF, 0x716251D21F9F1B40, 0x12816AC524BE17E8, 0x10928D7E251D2F7A, 0x21F099A716AC50D3, 0x5241F9F128D7ED6 ,
0x36430DF66D193443, 0x36364FF676156F1B, 0x67463DB230DF6A4E, 0x66D7435364FF6794, 0x6766D19363DB2C9A, 0x2307615674353022,
0x16742501556E025C, 0x070675A123802AF9, 0x27F70B22425018A4, 0x1557FB01675A18BB, 0x123556E070B227B9, 0x242238027FB01BF ,
0x14F6574563E7910 , 0x9524F6E36C661591, 0x11E52B3265745D2B, 0x5631E6A14F6E379D, 0x36C63E7952B32FAC, 0x2656C6611E6A1101,
0x34B469701DE22385, 0x2544BAB42338191F, 0x17854EB4469704B6, 0x01D783934BAB4599, 0x4231DE2254EB4809, 0x4462338178393E6D,
0x02D288D5550017DD, 0x1202D52639B120E1, 0x24E20D22288D52D3, 0x5554E1202D52668C, 0x6395500120D22A68, 0x22839B124E1207D1,
0x734251773FCC0EFE, 0x05A34BF547F37E64, 0x76F5A8D325177A90, 0x73F6F72734BF5D4D, 0x5473FCC05A8D3DCE, 0x32547F376F7275A8,
0x70A64DB56BEA2655, 0x22C0A4D42A1810FC, 0x1712C40264DB593A, 0x56B71C070A4D4BC0, 0x42A6BEA22C402E93, 0x2642A18171C077F9,
0x458752F16F0C4577, 0x42C582E370412414, 0x24D2C455752F1DC1, 0x16F4DCD4582E38EA, 0x3706F0C42C455F7B, 0x575704124DCD4EDB,
0x53D4FCA112BC2696, 0x2503D5E77B037135, 0x736502F44FCA1F8C, 0x112361653D5E75F6, 0x77B12BC2502F41B0, 0x44F7B037361653F1,
0x64657E702E5B0E31, 0x047467B320266B19, 0x61F4703257E703D7, 0x02E1F776467B3E00, 0x3202E5B047032BA3, 0x257202661F776B9C,
0x07D1BD5062570A84, 0x07F7D0A27EC75B48, 0x5297FCC21BD5012 , 0x062291307D0A2D5D, 0x27E625707FCC29F2, 0x21B7EC75291304B6,
0xE3A7D12719D558ED, 0x55F3ADE047551C8 , 0x1255F7417D12738F, 0x71925D2E3ADE0892, 0x04719D555F741997, 0x17D4755125D2E2F ,
0x65415E922B9F2269, 0x227544375C134FED, 0x456272D315E92399, 0x22B5618654437F4E, 0x75C2B9F2272D32AB, 0x3155C13456186AA1,
0x8462A8717E4D355C, 0x32C4637A234D7836, 0x75F2C1832A871760, 0x17E5FC784637A94 , 0xA237E4D32C183207, 0x32A234D75FC78B3 ,
0x34E6C9F47F10621E, 0x6624E3F1276966B2, 0x62562BA26C9F4A11, 0x47F25F234E3F182C, 0x1277F10662BA2EF5, 0x26C2769625F239CD,
0x63F0AC1573D63FED, 0x3733F3D3636E1F5E, 0x135738320AC15A0E, 0x57335C363F3D33EB, 0x36373D63738326EA, 0x20A636E135C366B1,
0x642711A14D476E86, 0x67E426A402F63208, 0x3757E4D1711A1FC1, 0x14D75E46426A4396, 0x4024D4767E4D1B93, 0x17102F6375E46DB7,
0x60A7AD242F3C44A7, 0x4490A56351A56F5C, 0x64C499527AD2463D, 0x42F4C4B60A5639CA, 0x3512F3C449952C78, 0x27A51A564C4B64F6,
0x14B438673AFE7F8D, 0x7554BC1466993D04, 0x36855A8743867F37, 0x73A681A14BC146C2, 0x4663AFE755A875EC, 0x74366993681A1A75,
0x61820F7730A67E1B, 0x773189184A4A7D0C, 0x7547389720F77993, 0x730542661891805 , 0x84A30A67738976AD, 0x7204A4A7542667D6,
0x6442BF173C5C6EBF, 0x668447C34499187F, 0x17A68D842BF17C97, 0x73C7AAB6447C317F, 0x3443C5C668D8419C, 0x42B449917AAB6456,
0x43D09163421B4F29, 0x41A3D72A76740F9C, 0x0751AD5409163B8D, 0x342754943D72AAB , 0xA76421B41AD54DD7, 0x40976740754946EE,
0x654105637317342B, 0x30C54BB4218546D4, 0x45D0CE6310563DA7, 0x3735D14654BB4CCE, 0x421731730CE63E46, 0x310218545D146234,
0x40709D7233BE6C63, 0x63607C36325044E5, 0x42D3655309D72335, 0x2332DFA407C36BA , 0x63233BE6365530CC, 0x309325042DFA448C,
0x312150271663516F, 0x53C1253259B00AA , 0x0493CEF0150274EA, 0x716492F312532D4A, 0x259166353CEF002D, 0x01559B00492F3DA5,
0x72F14A10263A2574, 0x2682F6276F8005C2, 0x0266829314A10651, 0x026269872F627ABA, 0x76F263A268293238, 0x3146F80026987646,
0x12B59B1552590516, 0x0532B2A410144D36, 0x4275395359B151B9, 0x552278512B2A4F05, 0x4105259053953699, 0x3591014427851C75,
0xF4F32843180646F3, 0x54718F4F2E970306, 0x6623953632843145, 0x318D315E18F4FE8F
};
/* The source data is random across the q63_t range. Accessing it by word should
remain random. */
const q31_t * intrinsics_q31_inputs = (q31_t *) intrinsics_q63_inputs;

View File

@ -0,0 +1,31 @@
#include "jtest.h"
#include "all_tests.h"
#include "arm_math.h"
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && !defined (__MICROLIB)
__asm(" .global __ARM_use_no_argv\n");
#endif
void debug_init(void)
{
uint32_t * SHCSR_ptr = (uint32_t *) 0xE000ED24; /* System Handler Control and State Register */
*SHCSR_ptr |= 0x70000; /* Enable UsageFault, BusFault, and MemManage fault*/
}
int main(void)
{
#if !defined(FILEIO)
debug_init();
#endif
JTEST_INIT(); /* Initialize test framework. */
JTEST_GROUP_CALL(all_tests); /* Run all tests. */
JTEST_ACT_EXIT_FW(); /* Exit test framework. */
#if !defined(FILEIO)
while (1); /* Never return. */
#endif
}

View File

@ -0,0 +1,509 @@
/* ----------------------------------------------------------------------
* Copyright (C) 2010 ARM Limited. All rights reserved.
*
* $Date: 29. November 2010
* $Revision: V1.0.3
*
* Project: CMSIS DSP Library
*
* Title: math_helper.c
*
* Description: Definition of all helper functions required.
*
* Target Processor: Cortex-M4/Cortex-M3
*
* Version 1.0.3 2010/11/29
* Re-organized the CMSIS folders and updated documentation.
*
* Version 1.0.2 2010/11/11
* Documentation updated.
*
* Version 1.0.1 2010/10/05
* Production release and review comments incorporated.
*
* Version 1.0.0 2010/09/20
* Production release and review comments incorporated.
*
* Version 0.0.7 2010/06/10
* Misra-C changes done
* -------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
* Include standard header files
* -------------------------------------------------------------------- */
#include<math.h>
/* ----------------------------------------------------------------------
* Include project header files
* -------------------------------------------------------------------- */
#include "math_helper.h"
/**
* @brief Caluclation of SNR
* @param float* Pointer to the reference buffer
* @param float* Pointer to the test buffer
* @param uint32_t total number of samples
* @return float SNR
* The function Caluclates signal to noise ratio for the reference output
* and test output
*/
float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
{
float EnergySignal = 0.0, EnergyError = 0.0;
uint32_t i;
float SNR;
int temp;
int *test;
for (i = 0; i < buffSize; i++)
{
/* Checking for a NAN value in pRef array */
test = (int *)(&pRef[i]);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
/* Checking for a NAN value in pTest array */
test = (int *)(&pTest[i]);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
EnergySignal += pRef[i] * pRef[i];
EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);
}
/* Checking for a NAN value in EnergyError */
test = (int *)(&EnergyError);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
SNR = 10 * log10f (EnergySignal / EnergyError);
/* Checking for a NAN value in SNR */
test = (int *)(&SNR);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
return (SNR);
}
double arm_snr_f64(double *pRef, double *pTest, uint32_t buffSize)
{
double EnergySignal = 0.0, EnergyError = 0.0;
uint32_t i;
double SNR;
int temp;
int *test;
for (i = 0; i < buffSize; i++)
{
/* Checking for a NAN value in pRef array */
test = (int *)(&pRef[i]);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
/* Checking for a NAN value in pTest array */
test = (int *)(&pTest[i]);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
EnergySignal += pRef[i] * pRef[i];
EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]);
}
/* Checking for a NAN value in EnergyError */
test = (int *)(&EnergyError);
temp = *test;
if (temp == 0x7FC00000)
{
return(100000.0);
}
SNR = 10 * log10 (EnergySignal / EnergyError);
/* Checking for a NAN value in SNR */
test = (int *)(&SNR);
temp = *test;
if (temp == 0x7FC00000)
{
return(10000.0);
}
return (SNR);
}
/**
* @brief Provide guard bits for Input buffer
* @param q15_t* Pointer to input buffer
* @param uint32_t blockSize
* @param uint32_t guard_bits
* @return none
* The function Provides the guard bits for the buffer
* to avoid overflow
*/
void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize,
uint32_t guard_bits)
{
uint32_t i;
for (i = 0; i < blockSize; i++)
{
input_buf[i] = input_buf[i] >> guard_bits;
}
}
/**
* @brief Converts float to fixed in q12.20 format
* @param uint32_t number of samples in the buffer
* @return none
* The function converts floating point values to fixed point(q12.20) values
*/
void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
/* 1048576.0f corresponds to pow(2, 20) */
pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
if (pIn[i] == (float) 1.0)
{
pOut[i] = 0x000FFFFF;
}
}
}
/**
* @brief Compare MATLAB Reference Output and ARM Test output
* @param q15_t* Pointer to Ref buffer
* @param q15_t* Pointer to Test buffer
* @param uint32_t number of samples in the buffer
* @return none
*/
uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
{
uint32_t i;
int32_t diff, diffCrnt = 0;
uint32_t maxDiff = 0;
for (i = 0; i < numSamples; i++)
{
diff = pIn[i] - pOut[i];
diffCrnt = (diff > 0) ? diff : -diff;
if (diffCrnt > maxDiff)
{
maxDiff = diffCrnt;
}
}
return(maxDiff);
}
/**
* @brief Compare MATLAB Reference Output and ARM Test output
* @param q31_t* Pointer to Ref buffer
* @param q31_t* Pointer to Test buffer
* @param uint32_t number of samples in the buffer
* @return none
*/
uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
{
uint32_t i;
int32_t diff, diffCrnt = 0;
uint32_t maxDiff = 0;
for (i = 0; i < numSamples; i++)
{
diff = pIn[i] - pOut[i];
diffCrnt = (diff > 0) ? diff : -diff;
if (diffCrnt > maxDiff)
{
maxDiff = diffCrnt;
}
}
return(maxDiff);
}
/**
* @brief Provide guard bits for Input buffer
* @param q31_t* Pointer to input buffer
* @param uint32_t blockSize
* @param uint32_t guard_bits
* @return none
* The function Provides the guard bits for the buffer
* to avoid overflow
*/
void arm_provide_guard_bits_q31 (q31_t * input_buf,
uint32_t blockSize,
uint32_t guard_bits)
{
uint32_t i;
for (i = 0; i < blockSize; i++)
{
input_buf[i] = input_buf[i] >> guard_bits;
}
}
/**
* @brief Provide guard bits for Input buffer
* @param q31_t* Pointer to input buffer
* @param uint32_t blockSize
* @param uint32_t guard_bits
* @return none
* The function Provides the guard bits for the buffer
* to avoid overflow
*/
void arm_provide_guard_bits_q7 (q7_t * input_buf,
uint32_t blockSize,
uint32_t guard_bits)
{
uint32_t i;
for (i = 0; i < blockSize; i++)
{
input_buf[i] = input_buf[i] >> guard_bits;
}
}
/**
* @brief Caluclates number of guard bits
* @param uint32_t number of additions
* @return none
* The function Caluclates the number of guard bits
* depending on the numtaps
*/
uint32_t arm_calc_guard_bits (uint32_t num_adds)
{
uint32_t i = 1, j = 0;
if (num_adds == 1)
{
return (0);
}
while (i < num_adds)
{
i = i * 2;
j++;
}
return (j);
}
/**
* @brief Converts Q15 to floating-point
* @param uint32_t number of samples in the buffer
* @return none
*/
void arm_apply_guard_bits (float32_t * pIn,
uint32_t numSamples,
uint32_t guard_bits)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
pIn[i] = pIn[i] * arm_calc_2pow(guard_bits);
}
}
/**
* @brief Calculates pow(2, numShifts)
* @param uint32_t number of shifts
* @return pow(2, numShifts)
*/
uint32_t arm_calc_2pow(uint32_t numShifts)
{
uint32_t i, val = 1;
for (i = 0; i < numShifts; i++)
{
val = val * 2;
}
return(val);
}
/**
* @brief Converts float to fixed q14
* @param uint32_t number of samples in the buffer
* @return none
* The function converts floating point values to fixed point values
*/
void arm_float_to_q14 (float *pIn, q15_t * pOut,
uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
/* 16384.0f corresponds to pow(2, 14) */
pOut[i] = (q15_t) (pIn[i] * 16384.0f);
pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
if (pIn[i] == (float) 2.0)
{
pOut[i] = 0x7FFF;
}
}
}
/**
* @brief Converts float to fixed q30 format
* @param uint32_t number of samples in the buffer
* @return none
* The function converts floating point values to fixed point values
*/
void arm_float_to_q30 (float *pIn, q31_t * pOut,
uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
/* 1073741824.0f corresponds to pow(2, 30) */
pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
if (pIn[i] == (float) 2.0)
{
pOut[i] = 0x7FFFFFFF;
}
}
}
/**
* @brief Converts float to fixed q30 format
* @param uint32_t number of samples in the buffer
* @return none
* The function converts floating point values to fixed point values
*/
void arm_float_to_q29 (float *pIn, q31_t * pOut,
uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
/* 1073741824.0f corresponds to pow(2, 30) */
pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
if (pIn[i] == (float) 4.0)
{
pOut[i] = 0x7FFFFFFF;
}
}
}
/**
* @brief Converts float to fixed q28 format
* @param uint32_t number of samples in the buffer
* @return none
* The function converts floating point values to fixed point values
*/
void arm_float_to_q28 (float *pIn, q31_t * pOut,
uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
/* 268435456.0f corresponds to pow(2, 28) */
pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
if (pIn[i] == (float) 8.0)
{
pOut[i] = 0x7FFFFFFF;
}
}
}
/**
* @brief Clip the float values to +/- 1
* @param pIn input buffer
* @param numSamples number of samples in the buffer
* @return none
* The function converts floating point values to fixed point values
*/
void arm_clip_f32 (float *pIn, uint32_t numSamples)
{
uint32_t i;
for (i = 0; i < numSamples; i++)
{
if (pIn[i] > 1.0f)
{
pIn[i] = 1.0;
}
else if ( pIn[i] < -1.0f)
{
pIn[i] = -1.0;
}
}
}

View File

@ -0,0 +1,31 @@
#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"
#define JTEST_ARM_MAT_ADD_TEST(suffix) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \
mat_add, \
suffix, \
MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT, \
MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS, \
MATRIX_COMPARE_INTERFACE)
JTEST_ARM_MAT_ADD_TEST(f32);
JTEST_ARM_MAT_ADD_TEST(q31);
JTEST_ARM_MAT_ADD_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_add_tests)
{
JTEST_TEST_CALL(arm_mat_add_f32_test);
JTEST_TEST_CALL(arm_mat_add_q31_test);
JTEST_TEST_CALL(arm_mat_add_q15_test);
}

View File

@ -0,0 +1,59 @@
#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"
#define JTEST_ARM_MAT_CMPLX_MULT_TEST(suffix, comparison_interface) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \
mat_cmplx_mult, \
suffix, \
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \
comparison_interface)
JTEST_ARM_MAT_CMPLX_MULT_TEST(f32, MATRIX_SNR_COMPARE_INTERFACE);
JTEST_ARM_MAT_CMPLX_MULT_TEST(q31, MATRIX_COMPARE_INTERFACE);
/*--------------------------------------------------------------------------------*/
/* Q15 Uses a Different interface than the others. */
/*--------------------------------------------------------------------------------*/
#define ARM_mat_cmplx_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \
PAREN(input_a_ptr, input_b_ptr, \
(void *) &matrix_output_fut, \
(q15_t *) matrix_output_scratch)
JTEST_DEFINE_TEST(arm_mat_cmplx_mult_q15_test, arm_mat_cmplx_mult_q15)
{
MATRIX_TEST_TEMPLATE_ELT2(
matrix_q15_a_inputs,
matrix_q15_b_inputs,
arm_matrix_instance_q15 * ,
arm_matrix_instance_q15,
TYPE_FROM_ABBREV(q15),
arm_mat_cmplx_mult_q15,
ARM_mat_cmplx_mult_q15_INPUT_INTERFACE,
ref_mat_cmplx_mult_q15,
REF_mat_cmplx_mult_INPUT_INTERFACE,
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,
MATRIX_COMPARE_INTERFACE);
}
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_cmplx_mult_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_cmplx_mult_f32_test);
JTEST_TEST_CALL(arm_mat_cmplx_mult_q31_test);
JTEST_TEST_CALL(arm_mat_cmplx_mult_q15_test);
}

View File

@ -0,0 +1,58 @@
#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"
#define JTEST_ARM_MAT_INIT_TEST(suffix) \
JTEST_DEFINE_TEST(arm_mat_init_##suffix##_test, \
arm_mat_init_##suffix) \
{ \
const uint16_t rows = 4; \
const uint16_t cols = 2; \
arm_matrix_instance_##suffix matrix = {0}; \
/* TYPE_FROM_ABBREV(suffix) data[rows*cols] = {0}; */ \
TYPE_FROM_ABBREV(suffix) data[4*2] = {0}; \
\
arm_mat_init_##suffix(&matrix, \
rows, \
cols, \
data); \
\
JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", \
(int)matrix.numRows, \
(int)matrix.numCols); \
\
if ((matrix.numRows == rows) && \
(matrix.numCols == cols) && \
(matrix.pData == data)) \
{ \
return JTEST_TEST_PASSED; \
} \
else \
{ \
return JTEST_TEST_FAILED; \
} \
\
}
JTEST_ARM_MAT_INIT_TEST(f32);
JTEST_ARM_MAT_INIT_TEST(q31);
JTEST_ARM_MAT_INIT_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_init_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_init_f32_test);
JTEST_TEST_CALL(arm_mat_init_q31_test);
JTEST_TEST_CALL(arm_mat_init_q15_test);
}

View File

@ -0,0 +1,92 @@
#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);
}

View File

@ -0,0 +1,57 @@
#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"
#define JTEST_ARM_MAT_MULT_FAST_TEST(suffix) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \
mat_mult_fast, \
suffix, \
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \
MATRIX_SNR_COMPARE_INTERFACE)
JTEST_ARM_MAT_MULT_FAST_TEST(q31);
/*--------------------------------------------------------------------------------*/
/* Q15 Uses a Different interface than the others. */
/*--------------------------------------------------------------------------------*/
#define ARM_mat_mult_fast_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \
PAREN(input_a_ptr, input_b_ptr, \
(void *) &matrix_output_fut, \
(q15_t *) matrix_output_scratch)
JTEST_DEFINE_TEST(arm_mat_mult_fast_q15_test, arm_mat_mult_fast_q15)
{
MATRIX_TEST_TEMPLATE_ELT2(
matrix_q15_a_inputs,
matrix_q15_b_inputs,
arm_matrix_instance_q15 * ,
arm_matrix_instance_q15,
TYPE_FROM_ABBREV(q15),
arm_mat_mult_fast_q15,
ARM_mat_mult_fast_q15_INPUT_INTERFACE,
ref_mat_mult_fast_q15,
REF_mat_mult_fast_INPUT_INTERFACE,
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,
MATRIX_SNR_COMPARE_INTERFACE);
}
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_mult_fast_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_mult_fast_q31_test);
JTEST_TEST_CALL(arm_mat_mult_fast_q15_test);
}

View File

@ -0,0 +1,59 @@
#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"
#define JTEST_ARM_MAT_MULT_TEST(suffix) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \
mat_mult, \
suffix, \
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \
MATRIX_COMPARE_INTERFACE)
JTEST_ARM_MAT_MULT_TEST(f32);
JTEST_ARM_MAT_MULT_TEST(q31);
/*--------------------------------------------------------------------------------*/
/* Q15 Uses a Different interface than the others. */
/*--------------------------------------------------------------------------------*/
#define ARM_mat_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \
PAREN(input_a_ptr, input_b_ptr, \
(void *) &matrix_output_fut, \
(q15_t *) matrix_output_scratch)
JTEST_DEFINE_TEST(arm_mat_mult_q15_test, arm_mat_mult_q15)
{
MATRIX_TEST_TEMPLATE_ELT2(
matrix_q15_a_inputs,
matrix_q15_b_inputs,
arm_matrix_instance_q15 * ,
arm_matrix_instance_q15,
TYPE_FROM_ABBREV(q15),
arm_mat_mult_q15,
ARM_mat_mult_q15_INPUT_INTERFACE,
ref_mat_mult_q15,
REF_mat_mult_INPUT_INTERFACE,
MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT,
MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS,
MATRIX_COMPARE_INTERFACE);
}
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_mult_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_mult_f32_test);
JTEST_TEST_CALL(arm_mat_mult_q31_test);
JTEST_TEST_CALL(arm_mat_mult_q15_test);
}

View File

@ -0,0 +1,90 @@
#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"
/* This is for the two fixed point cases */
#define JTEST_ARM_MAT_SCALE_TEST(suffix,type) \
JTEST_DEFINE_TEST(arm_mat_scale_##suffix##_test, arm_mat_scale_##suffix) \
{ \
uint32_t i,j; \
\
TEMPLATE_DO_ARR_DESC( \
mat_idx, arm_matrix_instance_##suffix *, \
mat_ptr, matrix_##suffix##_b_inputs \
, \
MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT( \
arm_matrix_instance_##suffix *, mat_ptr); \
\
for(i=0;i<MATRIX_MAX_COEFFS_LEN;i++) \
{ \
for(j=0;j<MATRIX_MAX_SHIFTS_LEN;j++) \
{ \
JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", \
(int)mat_ptr->numRows, \
(int)mat_ptr->numCols); \
\
JTEST_COUNT_CYCLES( \
arm_mat_scale_##suffix(mat_ptr, \
matrix_##suffix##_scale_values[i], \
matrix_shift_values[j], \
(arm_matrix_instance_##suffix*) &matrix_output_fut)); \
\
ref_mat_scale_##suffix(mat_ptr, \
matrix_##suffix##_scale_values[i], \
matrix_shift_values[j], \
(arm_matrix_instance_##suffix*) &matrix_output_ref); \
\
MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_##suffix, \
type); \
} \
}); \
\
return JTEST_TEST_PASSED; \
}
JTEST_DEFINE_TEST(arm_mat_scale_f32_test, arm_mat_scale_f32)
{
uint32_t i;
TEMPLATE_DO_ARR_DESC(
mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_b_inputs
,
MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr);
for(i=0;i<MATRIX_MAX_COEFFS_LEN;i++)
{
JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n",
(int)mat_ptr->numRows,
(int)mat_ptr->numCols);
JTEST_COUNT_CYCLES(arm_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_fut));
ref_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_ref);
MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32,
float32_t);
});
return JTEST_TEST_PASSED;
}
JTEST_ARM_MAT_SCALE_TEST(q31,q31_t);
JTEST_ARM_MAT_SCALE_TEST(q15,q15_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_scale_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_scale_f32_test);
JTEST_TEST_CALL(arm_mat_scale_q31_test);
JTEST_TEST_CALL(arm_mat_scale_q15_test);
}

View File

@ -0,0 +1,34 @@
#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"
#define JTEST_ARM_MAT_SUB_TEST(suffix) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \
mat_sub, \
suffix, \
MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT, \
MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS, \
MATRIX_COMPARE_INTERFACE)
JTEST_ARM_MAT_SUB_TEST(f32);
JTEST_ARM_MAT_SUB_TEST(q31);
JTEST_ARM_MAT_SUB_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_sub_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_sub_f32_test);
JTEST_TEST_CALL(arm_mat_sub_q31_test);
JTEST_TEST_CALL(arm_mat_sub_q15_test);
}

View File

@ -0,0 +1,33 @@
#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"
#define JTEST_ARM_MAT_TRANS_TEST(suffix) \
MATRIX_DEFINE_TEST_TEMPLATE_ELT1( \
mat_trans, \
suffix, \
MATRIX_TEST_CONFIG_TRANSPOSE_OUTPUT, \
MATRIX_TEST_VALID_DIMENSIONS_ALWAYS)
JTEST_ARM_MAT_TRANS_TEST(f32);
JTEST_ARM_MAT_TRANS_TEST(q31);
JTEST_ARM_MAT_TRANS_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mat_trans_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mat_trans_f32_test);
JTEST_TEST_CALL(arm_mat_trans_q31_test);
JTEST_TEST_CALL(arm_mat_trans_q15_test);
}

View File

@ -0,0 +1,259 @@
#include "arm_math.h"
#include "matrix_test_data.h"
#include "type_abbrev.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_fut_data[2*MATRIX_TEST_MAX_ELTS] = {0};
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_ref_data[2*MATRIX_TEST_MAX_ELTS] = {0};
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_scratch[MATRIX_TEST_MAX_ELTS] = {0};
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_fut[MATRIX_TEST_MAX_ELTS];
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_ref[MATRIX_TEST_MAX_ELTS];
arm_matrix_instance_f32 matrix_output_fut = {
0,
0,
(float32_t *) &matrix_output_fut_data
};
arm_matrix_instance_f32 matrix_output_ref = {
0,
0,
(float32_t *) &matrix_output_ref_data
};
arm_matrix_instance_f64 matrix_output_fut64 = {
0,
0,
(float64_t *) &matrix_output_fut_data
};
arm_matrix_instance_f64 matrix_output_ref64 = {
0,
0,
(float64_t *) &matrix_output_ref_data
};
/*--------------------------------------------------------------------------------*/
/* Data Buckets */
/*--------------------------------------------------------------------------------*/
/**
* Pool of random data to base matrix inputs from.
*/
float32_t matrix_f32_100_rand[100] = {
/* -45.0345569674258, first number negativ causes fault in 1x1 multiplay with 0.
AC6 DSP_Lib calculatas a -0.0 which is not a 0.0 in memcmp!
*/
45.0345569674258, -11.0261163038747, -14.6841428777929,
0.0345569674258, -11.0261163038747, -14.6841428777929,
-20.3679194392227, 27.5712678608402, -12.1390617339732,
-19.8753669720509, 42.3379642103244, -23.7788252219155,
-23.7517765301667, 40.2716109915281, -25.8308714086167,
32.1194040197959, 24.4692807074156, -1.32083675968276,
31.1580458282477, -2.90766514824093, -6.97926086704160,
10.2843089382083, 30.1014622769739, 44.4787189721646,
-9.60878544118853, -48.4596562348445, -31.1044984967456,
-6.41414114190809, 3.28255887994549, -26.9511839788442,
-31.5183679875864, 21.1215780433683, -47.0779722437854,
-0.913590753192006, -40.3545474831611, -45.6976198342192,
18.6775433365315, -5.32162505701938, -14.9272896423117,
34.4308792695389, 40.4880968679893, -27.8253265982760,
42.8854139478045, -1.07473615999811, -36.8026707393665,
-33.1009970537296, -31.6488844262730, -19.3650527983443,
43.9001561999887, -30.5235710432951, 47.9748378356085,
-38.2582349144194, 23.0330862855453, -16.2280590178623,
44.2050590775485, 14.9115474956452, -13.1515403509664,
0.850865538112700, 37.5942811492984, -27.4078219027601,
-6.11300268738968, -20.3324126781673, -1.13910261964209,
40.0053846417662, 45.6134540229802, 23.1722385658670,
12.5618560729690, 1.07715641721097, 5.01563428984222,
-32.9291952852141, -38.8880776559401, -18.1221698074118,
7.85250610234389, -13.0753218879785, 7.52085950784656,
14.7745963136307, 28.0227435151377, 31.7627708322262,
12.2475086001227, -27.2335702183447, -24.1935304087933,
-7.58332402861928, -26.2716420228479, -38.8797244706213,
-44.0220457052844, -4.90762935690551, -41.8874231134215,
29.4831416883453, 8.70447045314168, -6.43013158961009,
-9.12801538874479, 0.785828466111815, -4.11511718200689,
28.0252068321138, -26.5220086627594, 4.70088922863450,
42.9385970968730, 14.4318130193692, -29.2257707266972,
46.3088539286913
};
float64_t matrix_f64_100_rand[100] = {
// -45.0345569674258, -11.0261163038747, -14.6841428777929,
45.0345569674258, -11.0261163038747, -14.6841428777929,
0.0345569674258, -11.0261163038747, -14.6841428777929,
-20.3679194392227, 27.5712678608402, -12.1390617339732,
-19.8753669720509, 42.3379642103244, -23.7788252219155,
-23.7517765301667, 40.2716109915281, -25.8308714086167,
32.1194040197959, 24.4692807074156, -1.32083675968276,
31.1580458282477, -2.90766514824093, -6.97926086704160,
10.2843089382083, 30.1014622769739, 44.4787189721646,
-9.60878544118853, -48.4596562348445, -31.1044984967456,
-6.41414114190809, 3.28255887994549, -26.9511839788442,
-31.5183679875864, 21.1215780433683, -47.0779722437854,
-0.913590753192006, -40.3545474831611, -45.6976198342192,
18.6775433365315, -5.32162505701938, -14.9272896423117,
34.4308792695389, 40.4880968679893, -27.8253265982760,
42.8854139478045, -1.07473615999811, -36.8026707393665,
-33.1009970537296, -31.6488844262730, -19.3650527983443,
43.9001561999887, -30.5235710432951, 47.9748378356085,
-38.2582349144194, 23.0330862855453, -16.2280590178623,
44.2050590775485, 14.9115474956452, -13.1515403509664,
0.850865538112700, 37.5942811492984, -27.4078219027601,
-6.11300268738968, -20.3324126781673, -1.13910261964209,
40.0053846417662, 45.6134540229802, 23.1722385658670,
12.5618560729690, 1.07715641721097, 5.01563428984222,
-32.9291952852141, -38.8880776559401, -18.1221698074118,
7.85250610234389, -13.0753218879785, 7.52085950784656,
14.7745963136307, 28.0227435151377, 31.7627708322262,
12.2475086001227, -27.2335702183447, -24.1935304087933,
-7.58332402861928, -26.2716420228479, -38.8797244706213,
-44.0220457052844, -4.90762935690551, -41.8874231134215,
29.4831416883453, 8.70447045314168, -6.43013158961009,
-9.12801538874479, 0.785828466111815, -4.11511718200689,
28.0252068321138, -26.5220086627594, 4.70088922863450,
42.9385970968730, 14.4318130193692, -29.2257707266972,
46.3088539286913
};
MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_zeros[MATRIX_TEST_MAX_ELTS] = {0};
const float32_t matrix_f32_scale_values[MATRIX_MAX_COEFFS_LEN] =
{
43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 ,
7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 ,
-129.6077797465, -14.6420815368 , 18.0239223278 , 1.0000000000 ,
55.0375037651 , 1.8674609862 , 0.00000000000 , -33.5750364909
};
const q31_t matrix_q31_scale_values[MATRIX_MAX_COEFFS_LEN] =
{
0x0201DC90, 0x211F0D7C, 0x80000000, 0xF573B824,
0xE85ED05B, 0x311DFB52, 0x3529E750, 0x00000000,
0x7FFFFFFF, 0x21FA525A, 0x0971FD45, 0x05547B68,
0x270C6366, 0x06FDD5A6, 0xF7025315, 0xB1155A1E
};
const q15_t matrix_q15_scale_values[MATRIX_MAX_COEFFS_LEN] =
{
0x0201, 0x211F, 0x8000, 0xF573,
0xE85E, 0x311D, 0x3529, 0x0000,
0x7FFF, 0x21FA, 0x0971, 0x0554,
0x270C, 0x06FD, 0xF702, 0xB115
};
const int32_t matrix_shift_values[MATRIX_MAX_SHIFTS_LEN] =
{
-16, -7, 0, 7, 16
};
/*--------------------------------------------------------------------------------*/
/* Matrix Definitions */
/*--------------------------------------------------------------------------------*/
/**
* Define matrices by suffix (f32, q31, q15) for use in test cases.
*
* The rand1 and rand2 suffixes get their data from the same pool of random
* data, but their starting points differ by 1 element.
*
* Makes available:
* - matrix_`suffix`_1x1_rand1/2
* - matrix_`suffix`_1x4_rand1/2
* - matrix_`suffix`_2x4_rand1/2
* - matrix_`suffix`_4x4_rand1/2
*/
#define MATRIX_DEFINE_MATRICES(suffix) \
arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand1 = \
{1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \
arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand2 = \
{1, 1, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \
arm_matrix_instance_##suffix matrix_##suffix##_1x1_zeros = \
{1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \
\
arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand1 = \
{1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \
arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand2 = \
{1, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \
arm_matrix_instance_##suffix matrix_##suffix##_1x4_zeros = \
{1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \
\
arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand1 = \
{2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \
arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand2 = \
{2, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \
arm_matrix_instance_##suffix matrix_##suffix##_2x4_zeros = \
{2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \
\
arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand1 = \
{4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \
arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand2 = \
{4, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \
arm_matrix_instance_##suffix matrix_##suffix##_4x4_zeros = \
{4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}
MATRIX_DEFINE_MATRICES(f64);
MATRIX_DEFINE_MATRICES(f32);
MATRIX_DEFINE_MATRICES(q31);
MATRIX_DEFINE_MATRICES(q15);
/*--------------------------------------------------------------------------------*/
/* Matrix-Input Arrays */
/*--------------------------------------------------------------------------------*/
/* Define Input #ARR_DESC_t by suffix.
*
* Taking inputs in parallel from the 'a' and 'b' arrays yields the following
* test cases:
* - 1x1 multiplication by zero
* - 1x1 multiplication between random numbers
* - 1x1 * 1x4 valid dimension interaction
* - 1x1 * 2x4 invalid dimension interaction
* - 2x4 * 4x4 larger valid dimension interaction
* - 4x4 * 4x4 larger valid dimension interaction
*/
#define MATRIX_DEFINE_INPUTS(suffix) \
ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \
matrix_##suffix##_a_inputs, \
6, \
CURLY( \
&matrix_##suffix##_1x1_rand1, \
&matrix_##suffix##_1x1_rand1, \
&matrix_##suffix##_1x1_rand1, \
&matrix_##suffix##_1x1_rand1, \
&matrix_##suffix##_2x4_rand1, \
&matrix_##suffix##_4x4_rand1 \
)); \
\
ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \
matrix_##suffix##_b_inputs, \
6, \
CURLY( \
&matrix_##suffix##_1x1_zeros, \
&matrix_##suffix##_1x1_rand2, \
&matrix_##suffix##_1x4_rand2, \
&matrix_##suffix##_2x4_rand2, \
&matrix_##suffix##_4x4_rand2, \
&matrix_##suffix##_4x4_rand2 \
)); \
\
ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \
matrix_##suffix##_invertible_inputs, \
4, \
CURLY( \
&matrix_##suffix##_1x1_rand1, \
&matrix_##suffix##_1x1_rand2, \
&matrix_##suffix##_4x4_rand1, \
&matrix_##suffix##_4x4_rand2 \
)) \
MATRIX_DEFINE_INPUTS(f64);
MATRIX_DEFINE_INPUTS(f32);
MATRIX_DEFINE_INPUTS(q31);
MATRIX_DEFINE_INPUTS(q15);

View File

@ -0,0 +1,19 @@
#include "jtest.h"
#include "matrix_tests.h"
JTEST_DEFINE_GROUP(matrix_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_GROUP_CALL(mat_add_tests);
JTEST_GROUP_CALL(mat_cmplx_mult_tests);
JTEST_GROUP_CALL(mat_init_tests);
JTEST_GROUP_CALL(mat_inverse_tests);
JTEST_GROUP_CALL(mat_mult_tests);
JTEST_GROUP_CALL(mat_mult_fast_tests);
JTEST_GROUP_CALL(mat_sub_tests);
JTEST_GROUP_CALL(mat_trans_tests);
JTEST_GROUP_CALL(mat_scale_tests);
return;
}

View File

@ -0,0 +1,36 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_MAX_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
max, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_COMPARE_INTERFACE)
JTEST_ARM_MAX_TEST(f32);
JTEST_ARM_MAX_TEST(q31);
JTEST_ARM_MAX_TEST(q15);
JTEST_ARM_MAX_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(max_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_max_f32_test);
JTEST_TEST_CALL(arm_max_q31_test);
JTEST_TEST_CALL(arm_max_q15_test);
JTEST_TEST_CALL(arm_max_q7_test);
}

View File

@ -0,0 +1,36 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_MEAN_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
mean, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_COMPARE_INTERFACE)
JTEST_ARM_MEAN_TEST(f32);
JTEST_ARM_MEAN_TEST(q31);
JTEST_ARM_MEAN_TEST(q15);
JTEST_ARM_MEAN_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(mean_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_mean_f32_test);
JTEST_TEST_CALL(arm_mean_q31_test);
JTEST_TEST_CALL(arm_mean_q15_test);
JTEST_TEST_CALL(arm_mean_q7_test);
}

View File

@ -0,0 +1,36 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_MIN_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
min, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_COMPARE_INTERFACE)
JTEST_ARM_MIN_TEST(f32);
JTEST_ARM_MIN_TEST(q31);
JTEST_ARM_MIN_TEST(q15);
JTEST_ARM_MIN_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(min_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_min_f32_test);
JTEST_TEST_CALL(arm_min_q31_test);
JTEST_TEST_CALL(arm_min_q15_test);
JTEST_TEST_CALL(arm_min_q7_test);
}

View File

@ -0,0 +1,36 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_POWER_TEST(suffix, output_type) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
power, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_SNR_COMPARE_INTERFACE)
JTEST_ARM_POWER_TEST(f32, float32_t);
JTEST_ARM_POWER_TEST(q31, q63_t);
JTEST_ARM_POWER_TEST(q15, q63_t);
JTEST_ARM_POWER_TEST(q7, q31_t);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(power_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_power_f32_test);
JTEST_TEST_CALL(arm_power_q31_test);
JTEST_TEST_CALL(arm_power_q15_test);
JTEST_TEST_CALL(arm_power_q7_test);
}

View File

@ -0,0 +1,34 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_RMS_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
rms, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_SNR_COMPARE_INTERFACE)
JTEST_ARM_RMS_TEST(f32);
JTEST_ARM_RMS_TEST(q31);
JTEST_ARM_RMS_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(rms_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_rms_f32_test);
JTEST_TEST_CALL(arm_rms_q31_test);
JTEST_TEST_CALL(arm_rms_q15_test);
}

View File

@ -0,0 +1,94 @@
#include "statistics_test_data.h"
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE,
statistics_output_fut,
STATISTICS_MAX_INPUT_ELEMENTS,
CURLY(0));
ARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE,
statistics_output_ref,
STATISTICS_MAX_INPUT_ELEMENTS,
CURLY(0));
uint32_t statistics_idx_fut = 0;
uint32_t statistics_idx_ref = 0;
STATISTICS_BIGGEST_INPUT_TYPE
statistics_output_f32_ref[STATISTICS_MAX_INPUT_ELEMENTS];
STATISTICS_BIGGEST_INPUT_TYPE
statistics_output_f32_fut[STATISTICS_MAX_INPUT_ELEMENTS];
/*--------------------------------------------------------------------------------*/
/* Block Sizes */
/*--------------------------------------------------------------------------------*/
/*
To change test parameter values add/remove values inside CURLY and update
the preceeding parameter to reflect the number of values inside CURLY.
*/
ARR_DESC_DEFINE(uint32_t,
statistics_block_sizes,
4,
CURLY(1, 2, 15, 32));
/*--------------------------------------------------------------------------------*/
/* Test Data */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(float32_t,
statistics_f_32,
32,
CURLY(
-0.0865129623056441 , -0.3331168756476194,
0.0250664612949661 , 0.0575352840717098,
-0.2292942701362928 , 0.2381830931285998,
0.2378328403304206 , -0.0075266553186635,
0.0654584722817308 , 0.0349278285641849,
-0.0373417155362879 , 0.1451581096586606,
-0.1176633086028378 , 0.4366371636394202,
-0.0272791766173191 , 0.0227862627041619,
0.2133536422718378 , 0.0118562921047211,
-0.0191296810967338 , -0.1664698927300045,
0.0588821632785281 , -0.2672363715875608,
0.1428649103637904 , 0.3247124128892542,
-0.1383551403404573 , 0.1715993345656525,
0.2508002843205065 , -0.3187459152894954,
-0.2881928863802040 , 0.1142295247316356,
-0.0799771155430726 , 0.1379994750928690
));
ARR_DESC_DEFINE_SUBSET(statistics_f_31,
statistics_f_32,
31);
ARR_DESC_DEFINE_SUBSET(statistics_f_15,
statistics_f_32,
15);
ARR_DESC_DEFINE_SUBSET(statistics_f_2,
statistics_f_32,
2);
ARR_DESC_DEFINE(float32_t,
statistics_zeros,
32,
CURLY(0));
/* Aggregate all float datasets */
ARR_DESC_DEFINE(ARR_DESC_t *,
statistics_f_all,
4,
CURLY(
&statistics_zeros,
&statistics_f_2,
&statistics_f_15,
&statistics_f_32
));

View File

@ -0,0 +1,14 @@
#include "jtest.h"
#include "statistics_tests.h"
JTEST_DEFINE_GROUP(statistics_tests)
{
JTEST_GROUP_CALL(max_tests);
JTEST_GROUP_CALL(mean_tests);
JTEST_GROUP_CALL(min_tests);
JTEST_GROUP_CALL(power_tests);
JTEST_GROUP_CALL(rms_tests);
JTEST_GROUP_CALL(std_tests);
JTEST_GROUP_CALL(var_tests);
return;
}

View File

@ -0,0 +1,34 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_STD_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
std, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_SNR_COMPARE_INTERFACE)
JTEST_ARM_STD_TEST(f32);
JTEST_ARM_STD_TEST(q31);
JTEST_ARM_STD_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(std_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_std_f32_test);
JTEST_TEST_CALL(arm_std_q31_test);
JTEST_TEST_CALL(arm_std_q15_test);
}

View File

@ -0,0 +1,34 @@
#include "jtest.h"
#include "statistics_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "statistics_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_VAR_TEST(suffix) \
STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
var, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
STATISTICS_SNR_COMPARE_INTERFACE)
JTEST_ARM_VAR_TEST(f32);
JTEST_ARM_VAR_TEST(q31);
JTEST_ARM_VAR_TEST(q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(var_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_var_f32_test);
JTEST_TEST_CALL(arm_var_q31_test);
JTEST_TEST_CALL(arm_var_q15_test);
}

View File

@ -0,0 +1,33 @@
#include "jtest.h"
#include "support_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "support_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_COPY_TEST(suffix) \
SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK( \
copy, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
SUPPORT_COMPARE_INTERFACE)
JTEST_ARM_COPY_TEST(f32);
JTEST_ARM_COPY_TEST(q31);
JTEST_ARM_COPY_TEST(q15);
JTEST_ARM_COPY_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(copy_tests)
{
JTEST_TEST_CALL(arm_copy_f32_test);
JTEST_TEST_CALL(arm_copy_q31_test);
JTEST_TEST_CALL(arm_copy_q15_test);
JTEST_TEST_CALL(arm_copy_q7_test);
}

View File

@ -0,0 +1,36 @@
#include "jtest.h"
#include "support_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "support_templates.h"
#include "type_abbrev.h"
#define JTEST_ARM_FILL_TEST(suffix) \
SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK( \
fill, \
suffix, \
TYPE_FROM_ABBREV(suffix), \
TYPE_FROM_ABBREV(suffix), \
SUPPORT_COMPARE_INTERFACE)
JTEST_ARM_FILL_TEST(f32);
JTEST_ARM_FILL_TEST(q31);
JTEST_ARM_FILL_TEST(q15);
JTEST_ARM_FILL_TEST(q7);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(fill_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_fill_f32_test);
JTEST_TEST_CALL(arm_fill_q31_test);
JTEST_TEST_CALL(arm_fill_q15_test);
JTEST_TEST_CALL(arm_fill_q7_test);
}

View File

@ -0,0 +1,85 @@
#include "arm_math.h"
#include "support_test_data.h"
#define MAX_INPUT_ELEMENTS 32
#define BIGGEST_INPUT_TYPE float32_t
/*--------------------------------------------------------------------------------*/
/* Input/Output Buffers */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(BIGGEST_INPUT_TYPE,
support_output_fut,
MAX_INPUT_ELEMENTS,
CURLY(0));
ARR_DESC_DEFINE(BIGGEST_INPUT_TYPE,
support_output_ref,
MAX_INPUT_ELEMENTS,
CURLY(0));
/*--------------------------------------------------------------------------------*/
/* Block Sizes */
/*--------------------------------------------------------------------------------*/
/*
To change test parameter values add/remove values inside CURLY and update
the preceeding parameter to reflect the number of values inside CURLY.
*/
ARR_DESC_DEFINE(uint32_t,
support_block_sizes,
4,
CURLY( 2, 7, 15, 32));
/*--------------------------------------------------------------------------------*/
/* Numbers */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(uint32_t,
support_elts,
4,
CURLY( 0, 1, 0x80000000, 0x7fffffff));
/*--------------------------------------------------------------------------------*/
/* Test Data */
/*--------------------------------------------------------------------------------*/
ARR_DESC_DEFINE(float32_t,
support_f_32,
32,
CURLY(
0.24865986 , -0.13364227, -0.27233250 , -7.33488200,
0.42190653 , 1.17435880 , -0.49824914 , 0.87883663,
0.63066370 , 1.80275680 , -84.83916000, -2.06773800,
7.63452500 , 1.01487610 , -0.65785825 , 1.78019030,
-0.34160388, 0.68546050 , -1.81721590 , -0.10340453,
-4.48600340, -1.69763480, -1.26022340 , -1.58457480,
0.51993870 , 2.83526470 , -0.21502694 , -0.57690346,
-0.22945681, 0.79509383 , 0.07275216 , -2.16279080
));
/* Alias the 32 element array with wrappers that end sooner. */
ARR_DESC_DEFINE_SUBSET(support_f_15,
support_f_32,
15);
ARR_DESC_DEFINE_SUBSET(support_f_2,
support_f_32,
2);
ARR_DESC_DEFINE(float32_t,
support_zeros,
32,
CURLY(0));
/* Aggregate all float datasets. */
ARR_DESC_DEFINE(ARR_DESC_t *,
support_f_all,
4,
CURLY(
&support_zeros,
&support_f_2,
&support_f_15,
&support_f_32
));

View File

@ -0,0 +1,10 @@
#include "jtest.h"
#include "support_tests.h"
JTEST_DEFINE_GROUP(support_tests)
{
JTEST_GROUP_CALL(copy_tests);
JTEST_GROUP_CALL(fill_tests);
JTEST_GROUP_CALL(x_to_y_tests);
return;
}

View File

@ -0,0 +1,80 @@
#include "jtest.h"
#include "support_test_data.h"
#include "arr_desc.h"
#include "arm_math.h" /* FUTs */
#include "ref.h" /* Reference Functions */
#include "test_templates.h"
#include "support_templates.h"
#include "type_abbrev.h"
/* Aliases to play nicely with templates. */
#define arm_f32_to_q31 arm_float_to_q31
#define arm_f32_to_q15 arm_float_to_q15
#define arm_f32_to_q7 arm_float_to_q7
#define arm_q31_to_f32 arm_q31_to_float
#define arm_q15_to_f32 arm_q15_to_float
#define arm_q7_to_f32 arm_q7_to_float
#define ref_f32_to_q31 ref_float_to_q31
#define ref_f32_to_q15 ref_float_to_q15
#define ref_f32_to_q7 ref_float_to_q7
#define ref_q31_to_f32 ref_q31_to_float
#define ref_q15_to_f32 ref_q15_to_float
#define ref_q7_to_f32 ref_q7_to_float
#define JTEST_ARM_X_TO_Y_TEST(prefix, suffix) \
JTEST_DEFINE_TEST(arm_##prefix##_to_##suffix##_test, \
arm_##prefix##_to_##suffix) \
{ \
TEST_TEMPLATE_BUF1_BLK( \
support_f_all, \
support_block_sizes, \
TYPE_FROM_ABBREV(prefix), \
TYPE_FROM_ABBREV(suffix), \
arm_##prefix##_to_##suffix, \
ARM_x_to_y_INPUT_INTERFACE, \
ref_##prefix##_to_##suffix, \
REF_x_to_y_INPUT_INTERFACE, \
SUPPORT_COMPARE_INTERFACE); \
}
JTEST_ARM_X_TO_Y_TEST(f32, q31);
JTEST_ARM_X_TO_Y_TEST(f32, q15);
JTEST_ARM_X_TO_Y_TEST(f32, q7);
JTEST_ARM_X_TO_Y_TEST(q31, f32);
JTEST_ARM_X_TO_Y_TEST(q31, q15);
JTEST_ARM_X_TO_Y_TEST(q31, q7);
JTEST_ARM_X_TO_Y_TEST(q15, f32);
JTEST_ARM_X_TO_Y_TEST(q15, q31);
JTEST_ARM_X_TO_Y_TEST(q15, q7);
JTEST_ARM_X_TO_Y_TEST(q7, f32);
JTEST_ARM_X_TO_Y_TEST(q7, q31);
JTEST_ARM_X_TO_Y_TEST(q7, q15);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group. */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(x_to_y_tests)
{
/*
To skip a test, comment it out.
*/
JTEST_TEST_CALL(arm_f32_to_q31_test);
JTEST_TEST_CALL(arm_f32_to_q15_test);
JTEST_TEST_CALL(arm_f32_to_q7_test);
JTEST_TEST_CALL(arm_q31_to_f32_test);
JTEST_TEST_CALL(arm_q31_to_q15_test);
JTEST_TEST_CALL(arm_q31_to_q7_test);
JTEST_TEST_CALL(arm_q15_to_f32_test);
JTEST_TEST_CALL(arm_q15_to_q31_test);
JTEST_TEST_CALL(arm_q15_to_q7_test);
JTEST_TEST_CALL(arm_q7_to_f32_test);
JTEST_TEST_CALL(arm_q7_to_q31_test);
JTEST_TEST_CALL(arm_q7_to_q15_test);
}

View File

@ -0,0 +1,183 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "transform_templates.h"
#include "transform_test_data.h"
#include "type_abbrev.h"
/*--------------------------------------------------------------------------------*/
/* Macros and Defines */
/*--------------------------------------------------------------------------------*/
#define CFFT_FN_NAME(fn_specifier, type_suffix) \
arm_cfft_##fn_specifier##_##type_suffix \
#define CFFT_TEST_NAME(fn_specifier, type_suffix, config_suffix) \
arm_cfft_##fn_specifier##_##type_suffix##_##config_suffix##_test \
/*--------------------------------------------------------------------------------*/
/* Function Aliases */
/*--------------------------------------------------------------------------------*/
/* These aliases allow expansions in the CFFT_FAMILY_DEFINE_TEST() template to
make sense */
#define arm_cfft_mag_init_f32 arm_cfft_radix4_init_f32
#define arm_cfft_mag_init_q31 arm_cfft_radix4_init_q31
#define arm_cfft_mag_init_q15 arm_cfft_radix4_init_q15
#define arm_cfft_mag_instance_f32 arm_cfft_radix4_instance_f32
#define arm_cfft_mag_instance_q31 arm_cfft_radix4_instance_q31
#define arm_cfft_mag_instance_q15 arm_cfft_radix4_instance_q15
#define transform_mag_fftlens transform_radix4_fftlens
/*--------------------------------------------------------------------------------*/
/* Test Definition */
/*--------------------------------------------------------------------------------*/
/**
* Defines a test for the family of CFFT transforms.
*
* The family of CFFT transforms includes:
*
* - arm_cfft_radix4_xxx
* - arm_cfft_radix2_xxx
* - arm_cfft_mag_xxx
*
* Where xxx can be f32, q31, or q15.
*
* @param fn_specifier Allowed values: radix4, radix2, mag.
* @param type_suffix Allowed values: f32, q31, q15.
*
* @param config_suffix Used to differentiate test names based configuration
* (in this case whether the ifft_flag is set or not.)
* @param comparison_interface Macro name used to compare reference and fut
* outputs.
*
* @param output_tpe The type of variable contained in the output
* (e.g. float32_t, uint32_t, etc).
*
* @param ifft_flag Determines whether the arm_cfft_instance_xxx is configured
* for an inverse FFT.
*/
#define CFFT_FAMILY_DEFINE_TEST(fn_specifier, \
type_suffix, \
config_suffix, /* Delineate between test configs*/ \
comparison_interface, \
output_type, \
ifft_flag) \
JTEST_DEFINE_TEST(CFFT_TEST_NAME(fn_specifier, type_suffix, \
config_suffix), \
CFFT_FN_NAME(fn_specifier, type_suffix)) \
{ \
arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_fut; \
arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_ref; \
\
TEMPLATE_DO_ARR_DESC( \
fftlen_idx, uint16_t, fftlen, transform_##fn_specifier##_fftlens \
, \
\
/* Initialize the cfft instance */ \
arm_cfft_##fn_specifier##_init_##type_suffix( \
&cfft_inst_fut, fftlen, ifft_flag, (uint8_t)1); \
arm_cfft_##fn_specifier##_init_##type_suffix( \
&cfft_inst_ref, fftlen, ifft_flag, (uint8_t)1); \
\
TRANSFORM_PREPARE_INPLACE_INPUTS( \
transform_fft_##type_suffix##_inputs, \
fftlen * \
sizeof(TYPE_FROM_ABBREV(type_suffix)) * \
2 /*complex_inputs*/); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Inverse-transform flag: %d\n", \
(int)fftlen, \
(int)ifft_flag); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
arm_cfft_##fn_specifier##_##type_suffix( \
&cfft_inst_fut, \
(void*) transform_fft_inplace_input_fut)); \
\
ref_cfft_##fn_specifier##_##type_suffix( \
&cfft_inst_ref, \
(void *) transform_fft_inplace_input_ref); \
\
/* Test correctness */ \
comparison_interface( \
fftlen, \
output_type)); \
\
return JTEST_TEST_PASSED; \
}
/**
* Bulk wrapper for all tests instantiated using #CFFT_FAMILY_DEFINE_TEST().
*
* This macro allows several test definitions to share the same config_suffix
* and ifft_flag settings.
*/
#define CFFT_FAMILY_DEFINE_ALL_TESTS(config_suffix, ifft_flag) \
/* Radix2 tests*/ \
CFFT_FAMILY_DEFINE_TEST(radix2, q31, config_suffix, \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \
TYPE_FROM_ABBREV(q31), \
ifft_flag); \
CFFT_FAMILY_DEFINE_TEST(radix2, q15, config_suffix, \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \
TYPE_FROM_ABBREV(q15), \
ifft_flag); \
/* Radix4 tests*/ \
CFFT_FAMILY_DEFINE_TEST(radix4, q31, config_suffix, \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \
TYPE_FROM_ABBREV(q31), \
ifft_flag); \
CFFT_FAMILY_DEFINE_TEST(radix4, q15, config_suffix, \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \
TYPE_FROM_ABBREV(q15), \
ifft_flag)
/* /\* Mag tests*\/ \ */
/* CFFT_FAMILY_DEFINE_TEST(mag, f32, config_suffix, \ */
/* TRANSFORM_SNR_COMPARE_INTERFACE, \ */
/* TYPE_FROM_ABBREV(f32), \ */
/* ifft_flag); \ */
/* CFFT_FAMILY_DEFINE_TEST(mag, q31, config_suffix, \ */
/* TRANSFORM_SNR_COMPARE_INTERFACE, \ */
/* TYPE_FROM_ABBREV(q31), \ */
/* ifft_flag); \ */
/* CFFT_FAMILY_DEFINE_TEST(mag, q15, config_suffix, \ */
/* TRANSFORM_SNR_COMPARE_INTERFACE, \ */
/* TYPE_FROM_ABBREV(q15), \ */
/* ifft_flag) */
CFFT_FAMILY_DEFINE_ALL_TESTS(forward, 0U);
CFFT_FAMILY_DEFINE_ALL_TESTS(inverse, 1U);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cfft_family_tests)
{
/* Forward FFT tests */
JTEST_TEST_CALL(arm_cfft_radix2_q31_forward_test);
JTEST_TEST_CALL(arm_cfft_radix2_q15_forward_test);
JTEST_TEST_CALL(arm_cfft_radix4_q31_forward_test);
JTEST_TEST_CALL(arm_cfft_radix4_q15_forward_test);
/* Inverse FFT Tests */
JTEST_TEST_CALL(arm_cfft_radix2_q31_inverse_test);
JTEST_TEST_CALL(arm_cfft_radix2_q15_inverse_test);
JTEST_TEST_CALL(arm_cfft_radix4_q31_inverse_test);
JTEST_TEST_CALL(arm_cfft_radix4_q15_inverse_test);
/* Magnitude tests removed from the DSP Library. Keeping them here in case
minds are changed. */
/* JTEST_TEST_CALL(arm_cfft_mag_f32_forward_test); */
/* JTEST_TEST_CALL(arm_cfft_mag_q31_forward_test); */
/* JTEST_TEST_CALL(arm_cfft_mag_q15_forward_test); */
/* JTEST_TEST_CALL(arm_cfft_mag_f32_inverse_test); */
/* JTEST_TEST_CALL(arm_cfft_mag_q31_inverse_test); */
/* JTEST_TEST_CALL(arm_cfft_mag_q15_inverse_test); */
}

View File

@ -0,0 +1,144 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "transform_templates.h"
#include "transform_test_data.h"
#define CFFT_SNR_THRESHOLD 120
/*
CFFT function test template. Arguments are: inverse-transform flag, function
suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
*/
#define CFFT_TEST_BODY(ifft_flag, suffix, output_type) \
do \
{ \
/* Go through all arm_cfft_instances */ \
TEMPLATE_DO_ARR_DESC( \
cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \
transform_cfft_##suffix##_structs \
, \
\
TRANSFORM_PREPARE_INPLACE_INPUTS( \
transform_fft_##suffix##_inputs, \
cfft_inst_ptr->fftLen * \
sizeof(output_type) * \
2 /*complex_inputs*/); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Inverse-transform flag: %d\n", \
(int)cfft_inst_ptr->fftLen, \
(int)ifft_flag); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
arm_cfft_##suffix(cfft_inst_ptr, \
(void *) transform_fft_inplace_input_fut, \
ifft_flag, /* IFFT Flag */ \
1)); /* Bitreverse flag */ \
ref_cfft_##suffix(cfft_inst_ptr, \
(void *) transform_fft_inplace_input_ref, \
ifft_flag, /* IFFT Flag */ \
1); /* Bitreverse flag */ \
\
/* Test correctness */ \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \
cfft_inst_ptr->fftLen, \
output_type)); \
\
return JTEST_TEST_PASSED; \
} while (0)
/*
CFFT function with downshift test template. Arguments are: inverse-transform flag,
function suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
*/
#define CFFT_DOWNSHIFT_INPUT_TEST_BODY(ifft_flag, suffix, output_type) \
do \
{ \
/* Go through all arm_cfft_instances */ \
TEMPLATE_DO_ARR_DESC( \
cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \
transform_cfft_##suffix##_structs \
, \
\
TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT( \
transform_fft_##suffix##_inputs, \
cfft_inst_ptr->fftLen * \
sizeof(output_type) * \
2 /*complex_inputs*/, output_type); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Inverse-transform flag: %d\n", \
(int)cfft_inst_ptr->fftLen, \
(int)ifft_flag); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
arm_cfft_##suffix(cfft_inst_ptr, \
(void *) transform_fft_inplace_input_fut, \
ifft_flag, /* IFFT Flag */ \
1)); /* Bitreverse flag */ \
ref_cfft_##suffix(cfft_inst_ptr, \
(void *) transform_fft_inplace_input_ref, \
ifft_flag, /* IFFT Flag */ \
1); /* Bitreverse flag */ \
\
/* Test correctness */ \
TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \
cfft_inst_ptr->fftLen, \
output_type)); \
\
return JTEST_TEST_PASSED; \
} while (0)
/* Test declarations */
JTEST_DEFINE_TEST(cfft_f32_test, cfft_f32)
{
CFFT_TEST_BODY((uint8_t) 0, f32, float32_t);
}
JTEST_DEFINE_TEST(cfft_f32_ifft_test, cfft_f32)
{
CFFT_TEST_BODY((uint8_t) 1, f32, float32_t);
}
JTEST_DEFINE_TEST(cfft_q31_test, cfft_q31)
{
CFFT_TEST_BODY((uint8_t) 0, q31, q31_t);
}
JTEST_DEFINE_TEST(cfft_q31_ifft_test, cfft_q31)
{
CFFT_TEST_BODY((uint8_t) 1, q31, q31_t);
}
JTEST_DEFINE_TEST(cfft_q15_test, cfft_q15)
{
CFFT_TEST_BODY((uint8_t) 0, q15, q15_t);
}
JTEST_DEFINE_TEST(cfft_q15_ifft_test, cfft_q15)
{
CFFT_TEST_BODY((uint8_t) 1, q15, q15_t);
}
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(cfft_tests)
{
JTEST_TEST_CALL(cfft_f32_test);
JTEST_TEST_CALL(cfft_f32_ifft_test);
JTEST_TEST_CALL(cfft_q31_test);
JTEST_TEST_CALL(cfft_q31_ifft_test);
JTEST_TEST_CALL(cfft_q15_test);
JTEST_TEST_CALL(cfft_q15_ifft_test);
}

View File

@ -0,0 +1,197 @@
#include "jtest.h"
#include "ref.h"
#include "arm_math.h"
#include "arr_desc.h"
#include "transform_templates.h"
#include "transform_test_data.h"
#include "type_abbrev.h"
#include <math.h> /* sqrtf() */
/*--------------------------------------------------------------------------------*/
/* Aliases to aid macro expansion */
/*--------------------------------------------------------------------------------*/
#define ref_sqrt_f32(x) sqrtf(x)
/*--------------------------------------------------------------------------------*/
/* Test Definitions */
/*--------------------------------------------------------------------------------*/
/*
DCT function test template. Arguments are: function configuration suffix
(q7/q15/q31/f32) and input type (q7_t/q15_t/q31_t/float32_t)
*/
#define DCT4_DEFINE_TEST(suffix, input_type) \
JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix) \
{ \
CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut = {0}; \
CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut = {0}; \
CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0}; \
\
CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref = {0}; \
CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref = {0}; \
CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0}; \
\
/* Go through all dct lengths */ \
TEMPLATE_DO_ARR_DESC( \
fftlen_idx, uint16_t, fftlen, transform_dct_fftlens \
, \
\
float32_t normalize_f32 = \
ref_sqrt_f32((2.0f/(float32_t)fftlen)); \
input_type normalize; \
\
/* Calculate normalized DCT4 value for input_type. */ \
TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize, \
1, input_type); \
\
/* Initialize the DCT4, RFFT, and CFFT instances */ \
arm_dct4_init_##suffix( \
&dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut, \
fftlen, \
fftlen/2, \
normalize); \
\
arm_dct4_init_##suffix( \
&dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref, \
fftlen, \
fftlen/2, \
normalize); \
\
memset( transform_fft_input_fut,0, \
fftlen*sizeof(input_type)); \
\
TRANSFORM_PREPARE_INPLACE_INPUTS( \
transform_fft_##suffix##_inputs, \
fftlen * sizeof(input_type)); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n", \
(int)fftlen); \
\
/* Input provided as a scratch buffer. Inplace input is \
* actual input. Display cycle count and run test*/ \
JTEST_COUNT_CYCLES( \
arm_dct4_##suffix( \
&dct4_inst_fut, \
(void *) transform_fft_input_fut, \
(void *) transform_fft_inplace_input_fut)); \
\
memset( transform_fft_input_ref,0, \
fftlen*sizeof(input_type)); \
\
/* Input provided as a scratch buffer. Inplace input is */ \
/* actual input. */ \
ref_dct4_##suffix( \
&dct4_inst_ref, \
(void *) transform_fft_input_ref, \
(void *) transform_fft_inplace_input_ref); \
\
/* Test correctness */ \
DCT_TRANSFORM_SNR_COMPARE_INTERFACE( \
fftlen, \
input_type)); \
\
return JTEST_TEST_PASSED; \
}
/*
DCT function test template for fixed point data. Arguments are: function
suffix (q7/q15/q31/f32), input type (q7_t/q15_t/q31_t/float32_t) and prefix
(dct_4)
*/
#define DCT4_FIXED_POINT_DEFINE_TEST(suffix, input_type, prefix) \
JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix) \
{ \
CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut = {0}; \
CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut = {0}; \
CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0}; \
\
CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref = {0}; \
CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref = {0}; \
CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0}; \
\
TEMPLATE_DO_ARR_DESC( \
fftlen_idx, uint16_t, fftlen, transform_dct_fftlens \
, \
uint32_t i; \
float32_t normalize_f32 = \
ref_sqrt_f32((2.0f/(float32_t)fftlen)); \
input_type normalize; \
\
/* Calculate normalized DCT4 value for input_type. */ \
TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize, \
1, input_type); \
\
/* Initialize the DCT4, RFFT, and CFFT instances */ \
arm_dct4_init_##suffix( \
&dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut, \
fftlen, \
fftlen/2, \
normalize); \
\
arm_dct4_init_##suffix( \
&dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref, \
fftlen, \
fftlen/2, \
normalize); \
\
/* Input samples need to be downscaled by 1 bit to \
* avoid saturations in the Q31 DCT process, \
* as the conversion from DCT2 to DCT4 involves \
* one subtraction. \
*/ \
for(i=0; i < fftlen; i++) \
{ \
((input_type*)transform_fft_inplace_input_fut)[i] = \
prefix##transform_fft_##suffix##_inputs[i] >> 1; \
((input_type*)transform_fft_inplace_input_ref)[i] = \
prefix##transform_fft_##suffix##_inputs[i] >> 1; \
} \
\
memset( transform_fft_input_fut,0, \
fftlen*sizeof(input_type)); \
\
/* Display test parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n", \
(int)fftlen); \
\
/* Input provided as a scratch buffer. Inplace input is \
* actual input. */ \
JTEST_COUNT_CYCLES( \
arm_dct4_##suffix( \
&dct4_inst_fut, \
(void *) transform_fft_input_fut, \
(void *) transform_fft_inplace_input_fut)); \
\
memset( transform_fft_input_ref,0, \
fftlen*sizeof(input_type)); \
\
/* Input provided as a scratch buffer. Inplace input is */ \
/* actual input. */ \
ref_dct4_##suffix( \
&dct4_inst_ref, \
(void *) transform_fft_input_ref, \
(void *) transform_fft_inplace_input_ref); \
\
/* Test correctness */ \
DCT_TRANSFORM_SNR_COMPARE_INTERFACE( \
fftlen, \
input_type)); \
\
return JTEST_TEST_PASSED; \
}
DCT4_DEFINE_TEST(f32, float32_t);
DCT4_FIXED_POINT_DEFINE_TEST(q31, q31_t,);
DCT4_FIXED_POINT_DEFINE_TEST(q15, q15_t, dct4_);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(dct4_tests)
{
JTEST_TEST_CALL(arm_dct4_f32_test);
JTEST_TEST_CALL(arm_dct4_q31_test);
JTEST_TEST_CALL(arm_dct4_q15_test);
}

View File

@ -0,0 +1,75 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "transform_templates.h"
#include "transform_test_data.h"
#include "type_abbrev.h"
/*
FFT fast function test template. Arguments are: function configuration suffix
(q7/q15/q31/f32) and inverse-transform flag
*/
#define RFFT_FAST_DEFINE_TEST(config_suffix, ifft_flag) \
JTEST_DEFINE_TEST(arm_rfft_fast_f32_##config_suffix##_test, \
arm_fft_f32) \
{ \
arm_rfft_fast_instance_f32 rfft_inst_fut = {{0}, 0, 0}; \
arm_rfft_fast_instance_f32 rfft_inst_ref = {{0}, 0, 0}; \
\
/* Go through all FFT lengths */ \
TEMPLATE_DO_ARR_DESC( \
fftlen_idx, uint16_t, fftlen, transform_rfft_fast_fftlens \
, \
\
/* Initialize the RFFT and CFFT Instances */ \
arm_rfft_fast_init_f32( \
&rfft_inst_fut, fftlen); \
\
arm_rfft_fast_init_f32( \
&rfft_inst_ref, fftlen); \
\
TRANSFORM_COPY_INPUTS( \
transform_fft_f32_inputs, \
fftlen * \
sizeof(float32_t)); \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Inverse-transform flag: %d\n", \
(int)fftlen, \
(int)ifft_flag); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
arm_rfft_fast_f32( \
&rfft_inst_fut, \
(void *) transform_fft_input_fut, \
(void *) transform_fft_output_fut, \
ifft_flag)); \
\
ref_rfft_fast_f32( \
&rfft_inst_ref, \
(void *) transform_fft_input_ref, \
(void *) transform_fft_output_ref, \
ifft_flag); \
\
/* Test correctness */ \
TRANSFORM_SNR_COMPARE_INTERFACE( \
fftlen, \
float32_t)); \
\
return JTEST_TEST_PASSED; \
}
RFFT_FAST_DEFINE_TEST(forward, 0U);
RFFT_FAST_DEFINE_TEST(inverse, 1U);
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(rfft_fast_tests)
{
JTEST_TEST_CALL(arm_rfft_fast_f32_forward_test);
JTEST_TEST_CALL(arm_rfft_fast_f32_inverse_test);
}

View File

@ -0,0 +1,94 @@
#include "jtest.h"
#include "ref.h"
#include "arr_desc.h"
#include "transform_templates.h"
#include "transform_test_data.h"
#include "type_abbrev.h"
/*
FFT function test template. Arguments are: function suffix (q7/q15/q31/f32)
function configuration suffix (same as function suffix), inverse-transform flag,
input and output type (both q7_t/q15_t/q31_t/float32_t)
*/
#define RFFT_DEFINE_TEST(suffix, config_suffix, \
ifft_flag, input_type, output_type) \
JTEST_DEFINE_TEST(arm_rfft_##suffix##_##config_suffix##_test, \
arm_rfft_##suffix) \
{ \
CONCAT(arm_rfft_instance_, suffix) rfft_inst_fut = {0}; \
CONCAT(arm_rfft_instance_, suffix) rfft_inst_ref = {0}; \
\
/* Go through all arm_rfft lengths */ \
TEMPLATE_DO_ARR_DESC( \
fftlen_idx, uint16_t, fftlen, transform_rfft_fftlens \
, \
\
/* Initialize the RFFT and CFFT Instances */ \
arm_rfft_init_##suffix( \
&rfft_inst_fut, \
(uint32_t) fftlen, ifft_flag, 1U); \
\
arm_rfft_init_##suffix( \
&rfft_inst_ref, \
(uint32_t) fftlen, ifft_flag, 1U); \
\
if (ifft_flag) \
{ \
TRANSFORM_PREPARE_INVERSE_INPUTS( \
transform_fft_##suffix##_inputs, \
fftlen, input_type, \
fftlen * \
sizeof(input_type)); \
} \
else \
{ \
TRANSFORM_COPY_INPUTS( \
transform_fft_##suffix##_inputs, \
fftlen * \
sizeof(input_type)); \
} \
\
/* Display parameter values */ \
JTEST_DUMP_STRF("Block Size: %d\n" \
"Inverse-transform flag: %d\n", \
(int)fftlen, \
(int)ifft_flag); \
\
/* Display cycle count and run test */ \
JTEST_COUNT_CYCLES( \
arm_rfft_##suffix( \
&rfft_inst_fut, \
(void *) transform_fft_input_fut, \
(void *) transform_fft_output_fut)); \
\
ref_rfft_##suffix( \
&rfft_inst_ref, \
(void *) transform_fft_input_ref, \
(void *) transform_fft_output_ref); \
\
/* Test correctness */ \
TRANSFORM_SNR_COMPARE_INTERFACE( \
fftlen, \
output_type)); \
\
return JTEST_TEST_PASSED; \
}
RFFT_DEFINE_TEST(q31, forward, 0U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));
RFFT_DEFINE_TEST(q15, forward, 0U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));
//RFFT_DEFINE_TEST(f32, inverse, 1U, TYPE_FROM_ABBREV(f32), TYPE_FROM_ABBREV(f32));
RFFT_DEFINE_TEST(q31, inverse, 1U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));
RFFT_DEFINE_TEST(q15, inverse, 1U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));
/*--------------------------------------------------------------------------------*/
/* Collect all tests in a group */
/*--------------------------------------------------------------------------------*/
JTEST_DEFINE_GROUP(rfft_tests)
{
JTEST_TEST_CALL(arm_rfft_q31_forward_test);
JTEST_TEST_CALL(arm_rfft_q15_forward_test);
//JTEST_TEST_CALL(arm_rfft_f32_inverse_test);
JTEST_TEST_CALL(arm_rfft_q31_inverse_test);
JTEST_TEST_CALL(arm_rfft_q15_inverse_test);
}

View File

@ -0,0 +1,11 @@
#include "jtest.h"
#include "transform_tests.h"
JTEST_DEFINE_GROUP(transform_tests)
{
JTEST_GROUP_CALL(cfft_tests);
JTEST_GROUP_CALL(cfft_family_tests);
JTEST_GROUP_CALL(rfft_tests);
JTEST_GROUP_CALL(rfft_fast_tests);
JTEST_GROUP_CALL(dct4_tests);
}