From d453a598f86be055745024c54f1d2d0b31cff62e Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sun, 13 Apr 2014 15:59:32 +0400 Subject: [PATCH] cv::min/cv::max CV_64F --- modules/core/src/arithm.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 966db7106b..d9e1eadf5e 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -705,6 +705,23 @@ static void max64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, Size sz, void* ) { +#if ARITHM_USE_IPP == 1 + double* s1 = (double*)src1; + double* s2 = (double*)src2; + double* d = dst; + fixSteps(sz, sizeof(dst[0]), step1, step2, step); + int i = 0; + for(; i < sz.height; i++) + { + if (0 > ippsMaxEvery_64f(s1, s2, d, sz.width)) + break; + s1 = (double*)((uchar*)s1 + step1); + s2 = (double*)((uchar*)s2 + step2); + d = (double*)((uchar*)d + step); + } + if (i == sz.height) + return; +#endif vBinOp64, IF_SIMD(VMax)>(src1, step1, src2, step2, dst, step, sz); } @@ -808,6 +825,23 @@ static void min64f( const double* src1, size_t step1, const double* src2, size_t step2, double* dst, size_t step, Size sz, void* ) { +#if ARITHM_USE_IPP == 1 + double* s1 = (double*)src1; + double* s2 = (double*)src2; + double* d = dst; + fixSteps(sz, sizeof(dst[0]), step1, step2, step); + int i = 0; + for(; i < sz.height; i++) + { + if (0 > ippsMinEvery_64f(s1, s2, d, sz.width)) + break; + s1 = (double*)((uchar*)s1 + step1); + s2 = (double*)((uchar*)s2 + step2); + d = (double*)((uchar*)d + step); + } + if (i == sz.height) + return; +#endif vBinOp64, IF_SIMD(VMin)>(src1, step1, src2, step2, dst, step, sz); }