blob: 2ceb450a1bb28b9e780a7cc1091bd8ad0986e4df [file] [log] [blame]
#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_ */