diff --git a/Source/Engine/Core/Math/Mathd.h b/Source/Engine/Core/Math/Mathd.h
index 8f7ac05b7..34f539811 100644
--- a/Source/Engine/Core/Math/Mathd.h
+++ b/Source/Engine/Core/Math/Mathd.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#pragma once
@@ -77,7 +77,7 @@ namespace Math
static FORCE_INLINE double InvSqrt(double value)
{
- return 1.0f / sqrt(value);
+ return 1.0 / sqrt(value);
}
static FORCE_INLINE double Log(const double value)
@@ -227,55 +227,19 @@ namespace Math
/// False if a almost equal to b, otherwise true
static bool NotNearEqual(double a, double b)
{
- // Check if the numbers are really close - needed when comparing numbers near zero
- if (IsZero(a - b))
- return false;
-
- // Original from Bruce Dawson: http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
- const int64 aInt = *(int64*)&a;
- const int64 bInt = *(int64*)&b;
-
- // Different signs means they do not match
- if (aInt < 0 != bInt < 0)
- return true;
-
- // Find the difference in ULPs
- const int64 ulp = Math::Abs(aInt - bInt);
-
- // Choose of maxUlp = 4
- // according to http://code.google.com/p/googletest/source/browse/trunk/include/gtest/internal/gtest-internal.h
- const int maxUlp = 4;
- return ulp > maxUlp;
+ return Abs(a - b) >= 2 * 2.2204460492503131e-016;
}
///
- /// Checks if a and b are almost equals, taking into account the magnitude of double precision floating point numbers
- ///
- /// The left value to compare
- /// The right value to compare
- /// True if a almost equal to b, otherwise false
- static bool NearEqual(double a, double b)
- {
- // Check if the numbers are really close - needed when comparing numbers near zero
- if (IsZero(a - b))
- return true;
-
- // Original from Bruce Dawson: http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
- const int64 aInt = *(int64*)&a;
- const int64 bInt = *(int64*)&b;
-
- // Different signs means they do not match
- if (aInt < 0 != bInt < 0)
- return false;
-
- // Find the difference in ULPs
- const int64 ulp = Abs(aInt - bInt);
-
- // Choose of maxUlp = 4
- // according to http://code.google.com/p/googletest/source/browse/trunk/include/gtest/internal/gtest-internal.h
- const int maxUlp = 4;
- return ulp <= maxUlp;
- }
+ /// Checks if a and b are almost equals, taking into account the magnitude of double precision floating point numbers
+ ///
+ /// The left value to compare
+ /// The right value to compare
+ /// True if a almost equal to b, otherwise false
+ static bool NearEqual(double a, double b)
+ {
+ return Abs(a - b) < 2 * 2.2204460492503131e-016;
+ }
///
/// Checks if a and b are almost equals within the given epsilon value.
@@ -381,10 +345,4 @@ namespace Math
const double fraction = (x - a) / (b - a);
return fraction * fraction * (3. - 2. * fraction);
}
-
-//TODO: When double vectors are implemented
- // Rotates position about the given axis by the given angle, in radians, and returns the offset to position
- //Vector3 FLAXENGINE_API RotateAboutAxis(const Vector3& normalizedRotationAxis, float angle, const Vector3& positionOnAxis, const Vector3& position);
-
- //Vector3 FLAXENGINE_API ExtractLargestComponent(const Vector3& v);
}