#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);
|
}
|