From 8c8ebd9ca6c12b0d74b3ee975d8d14487f6dcbbc Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 8 Oct 2012 18:06:17 +0400 Subject: [PATCH] Fix sanity checks for arithmetic tests on CV_32S data --- modules/core/perf/perf_arithm.cpp | 66 ++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/modules/core/perf/perf_arithm.cpp b/modules/core/perf/perf_arithm.cpp index ea0536013f..df580f2cce 100644 --- a/modules/core/perf/perf_arithm.cpp +++ b/modules/core/perf/perf_arithm.cpp @@ -97,11 +97,16 @@ PERF_TEST_P(Size_MatType, absdiff, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: absdiff can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() absdiff(a, b, c); - //see ticket 1529: absdiff can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); } PERF_TEST_P(Size_MatType, absdiffScalar, TYPICAL_MATS_CORE_ARITHM) @@ -114,11 +119,16 @@ PERF_TEST_P(Size_MatType, absdiffScalar, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: absdiff can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() absdiff(a, b, c); - //see ticket 1529: absdiff can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); } PERF_TEST_P(Size_MatType, add, TYPICAL_MATS_CORE_ARITHM) @@ -131,11 +141,16 @@ PERF_TEST_P(Size_MatType, add, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: add can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() add(a, b, c); - //see ticket 1529: add can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); } PERF_TEST_P(Size_MatType, addScalar, TYPICAL_MATS_CORE_ARITHM) @@ -148,11 +163,16 @@ PERF_TEST_P(Size_MatType, addScalar, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: add can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() add(a, b, c); - //see ticket 1529: add can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); } PERF_TEST_P(Size_MatType, subtract, TYPICAL_MATS_CORE_ARITHM) @@ -165,11 +185,16 @@ PERF_TEST_P(Size_MatType, subtract, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: subtract can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() subtract(a, b, c); - //see ticket 1529: subtract can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); } PERF_TEST_P(Size_MatType, subtractScalar, TYPICAL_MATS_CORE_ARITHM) @@ -182,9 +207,14 @@ PERF_TEST_P(Size_MatType, subtractScalar, TYPICAL_MATS_CORE_ARITHM) declare.in(a, b, WARMUP_RNG).out(c); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: subtract can be without saturation on 32S + a /= 2; + b /= 2; + } + TEST_CYCLE() subtract(a, b, c); - //see ticket 1529: subtract can be without saturation on 32S - if (CV_MAT_DEPTH(type) != CV_32S) - SANITY_CHECK(c, 1e-8); + SANITY_CHECK(c, 1e-8); }