diff --git a/maths.hpp b/maths.hpp index 28b2d048..240be79c 100644 --- a/maths.hpp +++ b/maths.hpp @@ -88,11 +88,28 @@ almost_equal (const Ta &a, const Tb &b) { return a == b; } +// Useful for explictly ignore equality warnings +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +template +bool +exactly_equal (const T &a, const T &b) + { return a == b; } +#pragma GCC diagnostic pop + + template bool almost_zero (T a) { return almost_equal (a, 0); } + +template +bool +exactly_zero (T a) + { return exactly_equal (a, static_cast (0)); } + + const double PI = 3.141592653589793238462643; inline double @@ -116,15 +133,6 @@ bool almost_equal (const double &a, const double &b); -// Useful for explictly ignore equality warnings -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wfloat-equal" -template -bool -exactly_equal (const T &a, const T &b) - { return a == b; } -#pragma GCC diagnostic pop - /// Variadic minimum template const T&