Subversion Repositories FuelGauge

Rev

Blame | Last modification | View Log | Download | RSS feed

  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. }
  76.