diff --git a/modules/core/test/test_dxt.cpp b/modules/core/test/test_dxt.cpp index 45994e0e18b5af895febea5a469365e36f53e580..e9b0846590483ea3add67b9da747101e9c3adbff 100644 --- a/modules/core/test/test_dxt.cpp +++ b/modules/core/test/test_dxt.cpp @@ -778,6 +778,9 @@ public: protected: void run_func(); void prepare_to_validation( int test_case_idx ); +#if defined(__aarch64__) && defined(NDEBUG) + double get_success_error_level( int test_case_idx, int i, int j ); +#endif }; @@ -785,6 +788,31 @@ CxCore_MulSpectrumsTest::CxCore_MulSpectrumsTest() : CxCore_DXTBaseTest( true, t { } +#if defined(__aarch64__) && defined(NDEBUG) +double CxCore_MulSpectrumsTest::get_success_error_level( int test_case_idx, int i, int j ) +{ + int elem_depth = CV_MAT_DEPTH(cvGetElemType(test_array[i][j])); + if( elem_depth <= CV_32F ) + { + return ArrayTest::get_success_error_level( test_case_idx, i, j ); + } + switch( test_case_idx ) + { + // Usual threshold is too strict for these test cases due to the difference of fmsub and fsub + case 399: + case 420: + return DBL_EPSILON * 20000; + case 65: + case 161: + case 287: + case 351: + case 458: + return DBL_EPSILON * 10000; + default: + return ArrayTest::get_success_error_level( test_case_idx, i, j ); + } +} +#endif void CxCore_MulSpectrumsTest::run_func() {