fuzzyEqual handle zero better
This commit is contained in:
parent
01d35d71f3
commit
35eeb79a7b
|
|
@ -26,19 +26,27 @@ namespace sta {
|
||||||
using std::max;
|
using std::max;
|
||||||
using std::abs;
|
using std::abs;
|
||||||
|
|
||||||
|
constexpr static float float_equal_tolerance = 1E-15F;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
fuzzyEqual(float v1,
|
fuzzyEqual(float v1,
|
||||||
float v2)
|
float v2)
|
||||||
{
|
{
|
||||||
return v1 == v2
|
if (v1 == v2)
|
||||||
|| abs(v1 - v2) < 1E-6F * max(abs(v1), abs(v2));
|
return true;
|
||||||
|
else if (v1 == 0.0)
|
||||||
|
return abs(v2) < float_equal_tolerance;
|
||||||
|
else if (v2 == 0.0)
|
||||||
|
return abs(v1) < float_equal_tolerance;
|
||||||
|
else
|
||||||
|
return abs(v1 - v2) < 1E-6F * max(abs(v1), abs(v2));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
fuzzyZero(float v)
|
fuzzyZero(float v)
|
||||||
{
|
{
|
||||||
return v == 0.0
|
return v == 0.0
|
||||||
|| abs(v) < 1E-15F;
|
|| abs(v) < float_equal_tolerance;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue