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