]> git.mxchange.org Git - simgear.git/commitdiff
Make at least the header aliasing safe.
authorfrohlich <frohlich>
Sat, 17 Jun 2006 16:04:28 +0000 (16:04 +0000)
committerfrohlich <frohlich>
Sat, 17 Jun 2006 16:04:28 +0000 (16:04 +0000)
simgear/math/fastmath.hxx

index f78fddc52c009ee65a0eae0ce3d31499f595029c..b84f3e92ef6640f09db3cc97dc1060323f76ab83 100644 (file)
@@ -97,19 +97,34 @@ inline float fast_pow(const float val1, const float val2)
  */
 inline float fast_abs(float f)
 {
-    int i=((*(int*)&f)&0x7fffffff);
-    return (*(float*)&i);
+    union {
+        float f;
+        int i;
+    } v;
+    v.f = f;
+    v.i = v.i&0x7fffffff;
+    return v.f;
 }
 
 inline float fast_neg(float f)
 {
-    int i=((*(int*)&f)^0x80000000);
-    return (*(float*)&i);
+    union {
+        float f;
+        int i;
+    } v;
+    v.f = f;
+    v.i = v.i^0x80000000;
+    return v.f;
 }
 
 inline int fast_sgn(float f)
 {
-    return 1+(((*(int*)&f)>>31)<<1);
+    union {
+        float f;
+        int i;
+    } v;
+    v.f = f;
+    return 1+((v.i>>31)<<1);
 }