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)