Subversion Repositories testOled

Rev

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
}