-union __float_repr { float __f; __uint32_t __i; };
-union __double_repr { double __f; __uint64_t __i; };
-
-#define __FLOAT_BITS(f) (((union __float_repr){ (float)(f) }).__i)
-#define __DOUBLE_BITS(f) (((union __double_repr){ (double)(f) }).__i)
+static __inline unsigned __FLOAT_BITS(float __f)
+{
+ union {float __f; unsigned __i;} __u;
+ __u.__f = __f;
+ return __u.__i;
+}
+static __inline unsigned long long __DOUBLE_BITS(double __f)
+{
+ union {double __f; unsigned long long __i;} __u;
+ __u.__f = __f;
+ return __u.__i;
+}