core: fix absdiff (non-optimized, fp) to prevent "-0" results

This commit is contained in:
Alexander Alekhin 2016-11-23 13:43:08 +03:00
parent 8019498c6e
commit 0bdea2b714

View File

@ -97,6 +97,22 @@ template<typename T> struct OpAbsDiff
T operator()(T a, T b) const { return a > b ? a - b : b - a; }
};
// specializations to prevent "-0" results
template<> struct OpAbsDiff<float>
{
typedef float type1;
typedef float type2;
typedef float rtype;
float operator()(float a, float b) const { return std::abs(a - b); }
};
template<> struct OpAbsDiff<double>
{
typedef double type1;
typedef double type2;
typedef double rtype;
double operator()(double a, double b) const { return std::abs(a - b); }
};
template<typename T> struct OpAnd
{
typedef T type1;