Fix log2() accuracy.
Bug 28474248
Change-Id: I61bf28687623437c6b9b383dc189ffa28ad24c22
Reviewed-on: https://swiftshader-review.googlesource.com/5330
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Common/Math.hpp b/src/Common/Math.hpp
index 086c6c6..9e51850 100644
--- a/src/Common/Math.hpp
+++ b/src/Common/Math.hpp
@@ -158,9 +158,7 @@
inline float log2(float x)
{
- unsigned int y = (*(unsigned int*)&x);
-
- return (float)((y & 0x7F800000) >> 23) - 127 + (float)((*(unsigned int*)&x) & 0x007FFFFF) / 16777216.0f;
+ return logf(x) * 1.44269504f; // 1.0 / log[e](2)
}
inline bool isPow2(int x)