From b052b30fa65b81ab79611ff2017c015e8feb85fa Mon Sep 17 00:00:00 2001
From: Bruce Cowan <bruce@bcowan.me.uk>
Date: Fri, 14 Feb 2020 10:12:48 +0000
Subject: [PATCH] Add double->byte and byte->double test

---
 src/bytedouble.c | 32 ++++++++++++++++++++++++++++++++
 src/meson.build  |  4 ++--
 2 files changed, 34 insertions(+), 2 deletions(-)
 create mode 100644 src/bytedouble.c

diff --git a/src/bytedouble.c b/src/bytedouble.c
new file mode 100644
index 0000000..35b9f65
--- /dev/null
+++ b/src/bytedouble.c
@@ -0,0 +1,32 @@
+/*
+ * SPDX-FileCopyrightText: 2020 Bruce Cowan <bruce@bcowan.me.uk>
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#include <inttypes.h>
+#include <math.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define DOUBLE_TO_BYTES(d) ((uint8_t *) &(d))
+#define BYTES_TO_DOUBLE(b) (*((double *) (b)))
+
+int
+main (void)
+{
+    double pi = M_PI;
+
+    uint8_t *bytes = DOUBLE_TO_BYTES (pi);
+
+    printf ("Bytes are [");
+
+    for (int i = 0; i < 7; i++)
+        printf ("%02" PRIx8 ", ", bytes[i]);
+
+    printf ("%02" PRIx8 "]\n", bytes[7]);
+
+    double d = BYTES_TO_DOUBLE (bytes);
+    printf ("Converting back, the value is %f\n", d);
+
+    return 0;
+}
diff --git a/src/meson.build b/src/meson.build
index 10713c1..2682858 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,5 +1,4 @@
-# SPDX-FileCopyrightText: 2018, 2019 Bruce Cowan <bruce@bcowan.me.uk>
-#
+# SPDX-FileCopyrightText: 2018-2020 Bruce Cowan <bruce@bcowan.me.uk>
 # SPDX-License-Identifier: CC0-1.0
 
 executable('add', 'add.c', dependencies: utils_dep)
@@ -7,6 +6,7 @@ executable('angle', 'angle.c', dependencies: libm)
 executable('array-length', 'array-length.c', dependencies: types_dep)
 executable('binary', 'binary.c')
 executable('binary2', 'binary2.c', dependencies: utils_dep)
+executable('bytedouble', 'bytedouble.c')
 executable('complex', 'complex.c', dependencies: libm)
 executable('doubles', 'doubles.c')
 executable('einstein', 'einstein.c')
-- 
GitLab