]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/float_bits.hpp
audio.engine.test: cleanup using
[factor.git] / vm / float_bits.hpp
index 2db5b70fbadf08e75fd0c178769cd10403221d0a..3a2e1474c4db98ec22e922f6c8f6775129dd4422 100644 (file)
@@ -1,19 +1,40 @@
 namespace factor {
 
+// Some functions for converting floating point numbers to binary
+// representations and vice versa
+
+union double_bits_pun {
+  double x;
+  uint64_t y;
+};
+
 inline static uint64_t double_bits(double x) {
-  return *(reinterpret_cast<uint64_t*>(&x));
+  double_bits_pun b;
+  b.x = x;
+  return b.y;
 }
 
 inline static double bits_double(uint64_t y) {
-  return *(reinterpret_cast<double*>(&y));
+  double_bits_pun b;
+  b.y = y;
+  return b.x;
 }
 
+union float_bits_pun {
+  float x;
+  uint32_t y;
+};
+
 inline static uint32_t float_bits(float x) {
-  return *(reinterpret_cast<uint32_t*>(&x));
+  float_bits_pun b;
+  b.x = x;
+  return b.y;
 }
 
 inline static float bits_float(uint32_t y) {
-  return *(reinterpret_cast<float*>(&y));
+  float_bits_pun b;
+  b.y = y;
+  return b.x;
 }
 
 }