diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index cc5088d71..51830db4c 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -238,6 +238,12 @@ float cubeRoot( float value ) static void Magnitude_32f(const float* x, const float* y, float* mag, int len) { +#ifdef HAVE_IPP + IppStatus status = ippsMagnitude_32f(x, y, mag, len); + if (status == ippStsNoErr) + return; +#endif + int i = 0; #if CV_SSE @@ -264,6 +270,12 @@ static void Magnitude_32f(const float* x, const float* y, float* mag, int len) static void Magnitude_64f(const double* x, const double* y, double* mag, int len) { +#ifdef HAVE_IPP + IppStatus status = ippsMagnitude_64f(x, y, mag, len); + if (status == ippStsNoErr) + return; +#endif + int i = 0; #if CV_SSE2 diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 0e3d44ed6..c507779e3 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -2016,6 +2016,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) size_t total_size = src.total(); int rows = src.size[0], cols = (int)(total_size/rows); + if( (src.dims == 2 || (src.isContinuous() && mask.isContinuous())) && cols > 0 && (size_t)rows*cols == total_size && (normType == NORM_INF || normType == NORM_L1 ||