summaryrefslogtreecommitdiff
path: root/fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c')
-rw-r--r--fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c b/fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c
new file mode 100644
index 0000000..6fbc8e6
--- /dev/null
+++ b/fw/midi-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c
@@ -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);
+}