diff -ur blobAndConquer-0.90/src/3d/CPlane.cpp blobAndConquer-0.90.new/src/3d/CPlane.cpp --- blobAndConquer-0.90/src/3d/CPlane.cpp 2006-12-05 21:40:52.000000000 +0100 +++ blobAndConquer-0.90.new/src/3d/CPlane.cpp 2007-05-22 19:09:18.000000000 +0200 @@ -49,12 +49,16 @@ float Plane::invSqrt(float x) /* Fast Invert Square Root */ { + union { + float f; + int i; + } u; + float xhalf = 0.5f * x; - int i = *(int*)&x; - - i = 0x5f3759df - (i >> 1); - x = * (float *)&i; + u.f = x; + u.i = 0x5f3759df - (u.i >> 1); + x = u.f; x = x * (1.5f - xhalf * x * x); return x; diff -ur blobAndConquer-0.90/src/3d/CVector.cpp blobAndConquer-0.90.new/src/3d/CVector.cpp --- blobAndConquer-0.90/src/3d/CVector.cpp 2006-12-01 22:19:31.000000000 +0100 +++ blobAndConquer-0.90.new/src/3d/CVector.cpp 2007-05-22 19:09:20.000000000 +0200 @@ -137,12 +137,16 @@ float Vector::invSqrt(float x) /* Fast Invert Square Root */ { + union { + float f; + int i; + } u; + float xhalf = 0.5f * x; - int i = *(int*)&x; - - i = 0x5f3759df - (i >> 1); - x = * (float *)&i; + u.f = x; + u.i = 0x5f3759df - (u.i >> 1); + x = u.f; x = x * (1.5f - xhalf * x * x); return x; diff -ur blobAndConquer-0.90/src/3d/CVectori.cpp blobAndConquer-0.90.new/src/3d/CVectori.cpp --- blobAndConquer-0.90/src/3d/CVectori.cpp 2006-12-10 11:07:28.000000000 +0100 +++ blobAndConquer-0.90.new/src/3d/CVectori.cpp 2007-05-22 19:09:20.000000000 +0200 @@ -116,12 +116,16 @@ float Vectori::invSqrt(float x) /* Fast Invert Square Root */ { + union { + float f; + int i; + } u; + float xhalf = 0.5f * x; - int i = *(int*)&x; - - i = 0x5f3759df - (i >> 1); - x = * (float *)&i; + u.f = x; + u.i = 0x5f3759df - (u.i >> 1); + x = u.f; x = x * (1.5f - xhalf * x * x); return x;