Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2019-12-10 15:39:02 +0300
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>2022-11-06 22:50:26 +0300
commitf442a376a1d9cde5a7bc31aca056b0c2a57e2a48 (patch)
treef787f71db617717ef2604f4f6bd454c137743e9d
parenta4ba6e7d2c398bf6bccca85c5819b52ec579e89b (diff)
checkasm: float_dsp: Scale FLT/DBL_EPSILON sufficiently when comparingrelease/4.1
As the values generated by av_bmg_get can be arbitrarily large (only the stddev is specified), we can't use a fixed tolerance. This matches what was done for test_vector_dmul_scalar in 38f966b2222db. This fixes the float_dsp checkasm test for some seeds, when built with clang for mingw/x86_32. Signed-off-by: Martin Storsjö <martin@martin.st> (cherry picked from commit 8f70e261fa6ff1f3efda5dbcebf02dcf6dea13b4) Fixes ticket #10010
-rw-r--r--tests/checkasm/float_dsp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/tests/checkasm/float_dsp.c b/tests/checkasm/float_dsp.c
index 2abe4eccbd..a1616a61a8 100644
--- a/tests/checkasm/float_dsp.c
+++ b/tests/checkasm/float_dsp.c
@@ -51,7 +51,8 @@ static void test_vector_fmul(const float *src0, const float *src1)
call_ref(cdst, src0, src1, LEN);
call_new(odst, src0, src1, LEN);
for (i = 0; i < LEN; i++) {
- if (!float_near_abs_eps(cdst[i], odst[i], FLT_EPSILON)) {
+ double t = fabs(src0[i]) + fabs(src1[i]) + fabs(src0[i] * src1[i]) + 1.0;
+ if (!float_near_abs_eps(cdst[i], odst[i], t * 2 * FLT_EPSILON)) {
fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
i, cdst[i], odst[i], cdst[i] - odst[i]);
fail();
@@ -73,7 +74,8 @@ static void test_vector_dmul(const double *src0, const double *src1)
call_ref(cdst, src0, src1, LEN);
call_new(odst, src0, src1, LEN);
for (i = 0; i < LEN; i++) {
- if (!double_near_abs_eps(cdst[i], odst[i], DBL_EPSILON)) {
+ double t = fabs(src0[i]) + fabs(src1[i]) + fabs(src0[i] * src1[i]) + 1.0;
+ if (!double_near_abs_eps(cdst[i], odst[i], t * 2 * DBL_EPSILON)) {
fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
i, cdst[i], odst[i], cdst[i] - odst[i]);
fail();
@@ -117,7 +119,8 @@ static void test_vector_fmul_scalar(const float *src0, const float *src1)
call_ref(cdst, src0, src1[0], LEN);
call_new(odst, src0, src1[0], LEN);
for (i = 0; i < LEN; i++) {
- if (!float_near_abs_eps(cdst[i], odst[i], FLT_EPSILON)) {
+ double t = fabs(src0[i]) + fabs(src1[0]) + fabs(src0[i] * src1[0]) + 1.0;
+ if (!float_near_abs_eps(cdst[i], odst[i], t * 2 * FLT_EPSILON)) {
fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n",
i, cdst[i], odst[i], cdst[i] - odst[i]);
fail();