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