Index: /libmpc/trunk/include/mpc/mpcmath.h
===================================================================
--- /libmpc/trunk/include/mpc/mpcmath.h	(revision 348)
+++ /libmpc/trunk/include/mpc/mpcmath.h	(revision 349)
@@ -24,4 +24,10 @@
 	mpc_int32_t n;
 } mpc_floatint;
+
+typedef union mpc_doubleint
+{
+	double   d;
+	mpc_int32_t n[2];
+} mpc_doubleint;
 
 static mpc_inline mpc_int32_t mpc_lrintf(float fVal)
Index: /libmpc/trunk/libmpcpsy/cvd.c
===================================================================
--- /libmpc/trunk/libmpcpsy/cvd.c	(revision 348)
+++ /libmpc/trunk/libmpcpsy/cvd.c	(revision 349)
@@ -227,8 +227,9 @@
 logfast ( float x )
 {
-    double  y = x * x;
-    y *= y;
-    y *= y;
-    return (((int*)(&y))[1] + (45127.5 - 1072693248.)) * ( M_LN2 / (1L<<23) );
+	mpc_doubleint y;
+	y.d = x * x;
+    y.d *= y.d;
+    y.d *= y.d;
+	return (y.n[1] + (45127.5 - 1072693248.)) * ( M_LN2 / (1L<<23) );
 }
 
