guowenxue
2024-06-25 8b691b645fb73d244b46dfa6f094ec299b202f67
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#ifndef _FAST_MATH_TEMPLATES_H_
#define _FAST_MATH_TEMPLATES_H_
 
/*--------------------------------------------------------------------------------*/
/* Includes */
/*--------------------------------------------------------------------------------*/
 
#include "test_templates.h"
#include <string.h>             /* memcpy() */
 
/*--------------------------------------------------------------------------------*/
/* Group Specific Templates */
/*--------------------------------------------------------------------------------*/
 
/**
 * Comparison SNR thresholds for the data types used in transform_tests.
 */
#define FAST_MATH_SNR_THRESHOLD_float32_t 95
#define FAST_MATH_SNR_THRESHOLD_q31_t     95
#define FAST_MATH_SNR_THRESHOLD_q15_t     45
 
/**
 *  Compare the outputs from the function under test and the reference
 *  function using SNR.
 */
#define FAST_MATH_SNR_COMPARE_INTERFACE(block_size,     \
                                        output_type)    \
    do                                                  \
    {                                                   \
        TEST_CONVERT_AND_ASSERT_SNR(                    \
            fast_math_output_f32_ref,                   \
            (output_type *) fast_math_output_ref,       \
            fast_math_output_f32_fut,                   \
            (output_type *) fast_math_output_fut,       \
            block_size,                                 \
            output_type,                                \
            FAST_MATH_SNR_THRESHOLD_##output_type       \
            );                                          \
    } while (0)
 
 
/*--------------------------------------------------------------------------------*/
/* TEST Templates */
/*--------------------------------------------------------------------------------*/
 
#define SQRT_TEST_TEMPLATE_ELT1(suffix)                             \
                                                                    \
    JTEST_DEFINE_TEST(arm_sqrt_##suffix##_test, arm_sqrt_##suffix)  \
    {                                                               \
        uint32_t i;                                                 \
                                                                    \
        JTEST_COUNT_CYCLES(                                         \
            for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \
            {                                                       \
                arm_sqrt_##suffix(                                  \
                    (suffix##_t)fast_math_##suffix##_inputs[i]      \
                    ,(suffix##_t*)fast_math_output_fut + i);        \
            });                                                     \
                                                                    \
        for(i=0;i<FAST_MATH_MAX_LEN;i++)                            \
        {                                                           \
            ref_sqrt_##suffix(                                      \
                (suffix##_t)fast_math_##suffix##_inputs[i]          \
                ,(suffix##_t*)fast_math_output_ref + i);            \
        }                                                           \
                                                                    \
        FAST_MATH_SNR_COMPARE_INTERFACE(                            \
            FAST_MATH_MAX_LEN,                                      \
            suffix##_t);                                            \
                                                                    \
        return JTEST_TEST_PASSED;                                   \
    }
 
 
#define SIN_COS_TEST_TEMPLATE_ELT1(suffix, type, func)                  \
                                                                        \
        JTEST_DEFINE_TEST(arm_##func##_##suffix##_test, arm_##func##_##suffix) \
        {                                                               \
            uint32_t i;                                                 \
                                                                        \
            JTEST_COUNT_CYCLES(                                         \
                for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \
                {                                                       \
                    *((type*)fast_math_output_fut + i) = arm_##func##_##suffix( \
                        fast_math_##suffix##_inputs[i]);                \
                });                                                     \
                                                                        \
            JTEST_COUNT_CYCLES(                                         \
                for(i=0;i<FAST_MATH_MAX_LEN;i++)                        \
                {                                                       \
                    *((type*)fast_math_output_ref + i) = ref_##func##_##suffix( \
                        fast_math_##suffix##_inputs[i]);                \
                });                                                     \
                                                                        \
            FAST_MATH_SNR_COMPARE_INTERFACE(                            \
                FAST_MATH_MAX_LEN,                                      \
                type);                                                  \
                                                                        \
            return JTEST_TEST_PASSED;                                   \
        }
 
#endif /* _FAST_MATH_TEMPLATES_H_ */