diff --git a/Base/Math/Numeric.cpp b/Base/Math/Numeric.cpp index 3f1f4eb829fbdbc7fa93d68a3c7d53bf5d73b86c..0e514680d7ac257728256006dbed74eea53d77cd 100644 --- a/Base/Math/Numeric.cpp +++ b/Base/Math/Numeric.cpp @@ -46,3 +46,8 @@ bool Numeric::almostEqual(const R3& a, const R3& b, int ulp) return almostEqual(a.x(), b.x(), ulp) && almostEqual(a.y(), b.y(), ulp) && almostEqual(a.z(), b.z(), ulp); } + +double Numeric::ignoreDenormalized(double value) +{ + return (std::fpclassify(value) == FP_SUBNORMAL) ? 0.0 : value; +} diff --git a/Base/Math/Numeric.h b/Base/Math/Numeric.h index 9659cc18db74a8805e8f1e93e3751719f17ac9af..f49c7240d8686be030f2e8bc3f45ea3bf49110b1 100644 --- a/Base/Math/Numeric.h +++ b/Base/Math/Numeric.h @@ -32,6 +32,7 @@ double relativeDifference(double a, double b); bool almostEqual(double a, double b, int ulp); bool almostEqual(const R3& a, const R3& b, int ulp); +double ignoreDenormalized(double value); } // namespace Numeric