Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2 | mjames | 1 | #include "jtest.h" |
| 2 | #include "ref.h" |
||
| 3 | #include "arr_desc.h" |
||
| 4 | #include "transform_templates.h" |
||
| 5 | #include "transform_test_data.h" |
||
| 6 | #include "type_abbrev.h" |
||
| 7 | |||
| 8 | /* |
||
| 9 | FFT fast function test template. Arguments are: function configuration suffix |
||
| 10 | (q7/q15/q31/f32) and inverse-transform flag |
||
| 11 | */ |
||
| 12 | #define RFFT_FAST_DEFINE_TEST(config_suffix, ifft_flag) \ |
||
| 13 | JTEST_DEFINE_TEST(arm_rfft_fast_f32_##config_suffix##_test, \ |
||
| 14 | arm_fft_f32) \ |
||
| 15 | { \ |
||
| 16 | arm_rfft_fast_instance_f32 rfft_inst_fut = {{0}, 0, 0}; \ |
||
| 17 | arm_rfft_fast_instance_f32 rfft_inst_ref = {{0}, 0, 0}; \ |
||
| 18 | \ |
||
| 19 | /* Go through all FFT lengths */ \ |
||
| 20 | TEMPLATE_DO_ARR_DESC( \ |
||
| 21 | fftlen_idx, uint16_t, fftlen, transform_rfft_fast_fftlens \ |
||
| 22 | , \ |
||
| 23 | \ |
||
| 24 | /* Initialize the RFFT and CFFT Instances */ \ |
||
| 25 | arm_rfft_fast_init_f32( \ |
||
| 26 | &rfft_inst_fut, fftlen); \ |
||
| 27 | \ |
||
| 28 | arm_rfft_fast_init_f32( \ |
||
| 29 | &rfft_inst_ref, fftlen); \ |
||
| 30 | \ |
||
| 31 | TRANSFORM_COPY_INPUTS( \ |
||
| 32 | transform_fft_f32_inputs, \ |
||
| 33 | fftlen * \ |
||
| 34 | sizeof(float32_t)); \ |
||
| 35 | \ |
||
| 36 | /* Display parameter values */ \ |
||
| 37 | JTEST_DUMP_STRF("Block Size: %d\n" \ |
||
| 38 | "Inverse-transform flag: %d\n", \ |
||
| 39 | (int)fftlen, \ |
||
| 40 | (int)ifft_flag); \ |
||
| 41 | \ |
||
| 42 | /* Display cycle count and run test */ \ |
||
| 43 | JTEST_COUNT_CYCLES( \ |
||
| 44 | arm_rfft_fast_f32( \ |
||
| 45 | &rfft_inst_fut, \ |
||
| 46 | (void *) transform_fft_input_fut, \ |
||
| 47 | (void *) transform_fft_output_fut, \ |
||
| 48 | ifft_flag)); \ |
||
| 49 | \ |
||
| 50 | ref_rfft_fast_f32( \ |
||
| 51 | &rfft_inst_ref, \ |
||
| 52 | (void *) transform_fft_input_ref, \ |
||
| 53 | (void *) transform_fft_output_ref, \ |
||
| 54 | ifft_flag); \ |
||
| 55 | \ |
||
| 56 | /* Test correctness */ \ |
||
| 57 | TRANSFORM_SNR_COMPARE_INTERFACE( \ |
||
| 58 | fftlen, \ |
||
| 59 | float32_t)); \ |
||
| 60 | \ |
||
| 61 | return JTEST_TEST_PASSED; \ |
||
| 62 | } |
||
| 63 | |||
| 64 | RFFT_FAST_DEFINE_TEST(forward, 0U); |
||
| 65 | RFFT_FAST_DEFINE_TEST(inverse, 1U); |
||
| 66 | |||
| 67 | /*--------------------------------------------------------------------------------*/ |
||
| 68 | /* Collect all tests in a group */ |
||
| 69 | /*--------------------------------------------------------------------------------*/ |
||
| 70 | |||
| 71 | JTEST_DEFINE_GROUP(rfft_fast_tests) |
||
| 72 | { |
||
| 73 | JTEST_TEST_CALL(arm_rfft_fast_f32_forward_test); |
||
| 74 | JTEST_TEST_CALL(arm_rfft_fast_f32_inverse_test); |
||
| 75 | } |