|
|
|
@ -721,6 +721,7 @@ static void max64f( const double* src1, size_t step1, |
|
|
|
|
} |
|
|
|
|
if (i == sz.height) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
#endif |
|
|
|
|
vBinOp64<double, OpMax<double>, IF_SIMD(VMax<double>)>(src1, step1, src2, step2, dst, step, sz); |
|
|
|
|
} |
|
|
|
@ -841,6 +842,7 @@ static void min64f( const double* src1, size_t step1, |
|
|
|
|
} |
|
|
|
|
if (i == sz.height) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
#endif |
|
|
|
|
vBinOp64<double, OpMin<double>, IF_SIMD(VMin<double>)>(src1, step1, src2, step2, dst, step, sz); |
|
|
|
|
} |
|
|
|
@ -2013,9 +2015,12 @@ static void mul8u( const uchar* src1, size_t step1, const uchar* src2, size_t st |
|
|
|
|
{ |
|
|
|
|
float fscale = (float)*(const double*)scale; |
|
|
|
|
#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON && |
|
|
|
|
ippiMul_8u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON) |
|
|
|
|
{ |
|
|
|
|
if (ippiMul_8u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
mul_(src1, step1, src2, step2, dst, step, sz, fscale); |
|
|
|
|
} |
|
|
|
@ -2031,9 +2036,12 @@ static void mul16u( const ushort* src1, size_t step1, const ushort* src2, size_t |
|
|
|
|
{ |
|
|
|
|
float fscale = (float)*(const double*)scale; |
|
|
|
|
#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON && |
|
|
|
|
ippiMul_16u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON) |
|
|
|
|
{ |
|
|
|
|
if (ippiMul_16u_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
mul_(src1, step1, src2, step2, dst, step, sz, fscale); |
|
|
|
|
} |
|
|
|
@ -2043,9 +2051,12 @@ static void mul16s( const short* src1, size_t step1, const short* src2, size_t s |
|
|
|
|
{ |
|
|
|
|
float fscale = (float)*(const double*)scale; |
|
|
|
|
#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON && |
|
|
|
|
ippiMul_16s_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON) |
|
|
|
|
{ |
|
|
|
|
if (ippiMul_16s_C1RSfs(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz), 0) >= 0) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
mul_(src1, step1, src2, step2, dst, step, sz, fscale); |
|
|
|
|
} |
|
|
|
@ -2061,9 +2072,12 @@ static void mul32f( const float* src1, size_t step1, const float* src2, size_t s |
|
|
|
|
{ |
|
|
|
|
float fscale = (float)*(const double*)scale; |
|
|
|
|
#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON && |
|
|
|
|
ippiMul_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz)) >= 0) |
|
|
|
|
return; |
|
|
|
|
if (std::fabs(fscale - 1) <= FLT_EPSILON) |
|
|
|
|
{ |
|
|
|
|
if (ippiMul_32f_C1R(src1, (int)step1, src2, (int)step2, dst, (int)step, ippiSize(sz)) >= 0) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
mul_(src1, step1, src2, step2, dst, step, sz, fscale); |
|
|
|
|
} |
|
|
|
|