diff options
author | Aaron Franke <arnfranke@yahoo.com> | 2019-09-01 13:57:04 -0400 |
---|---|---|
committer | Aaron Franke <arnfranke@yahoo.com> | 2019-09-01 14:02:14 -0400 |
commit | f8b4cf0fc41b40601d90a44bd6d348a6c1e11fe5 (patch) | |
tree | 39e13df6f8132bcbfd8b93e55a6b881c62a6d9cf /core/math/math_funcs.h | |
parent | 62c0185cb3c2c808c78e9107333a3c4bdb6dadfd (diff) | |
download | redot-engine-f8b4cf0fc41b40601d90a44bd6d348a6c1e11fe5.tar.gz |
Check for exact equality before approximate equality
Diffstat (limited to 'core/math/math_funcs.h')
-rw-r--r-- | core/math/math_funcs.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index af845ca01e..9078abea68 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -300,6 +300,11 @@ public: } static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. real_t tolerance = CMP_EPSILON * abs(a); if (tolerance < CMP_EPSILON) { tolerance = CMP_EPSILON; @@ -308,6 +313,11 @@ public: } static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b, real_t tolerance) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. return abs(a - b) < tolerance; } |