From c31e4fa1e8dcf0648165f1d95c1cd122f585d216 Mon Sep 17 00:00:00 2001 From: igor-m Date: Fri, 11 Apr 2014 20:13:51 +0200 Subject: [PATCH] Was within untracked files ?? --- include/ieee.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 include/ieee.h diff --git a/include/ieee.h b/include/ieee.h new file mode 100644 index 0000000..56ea4ec --- /dev/null +++ b/include/ieee.h @@ -0,0 +1,47 @@ +typedef union // LITTLE ENDIAN +{ + double value; + struct + { + unsigned long lsw; + unsigned long msw; + } parts; +} ieee_double_shape_type; + +/* Get two 32 bit ints from a double. */ + +#define EXTRACT_WORDS(ix0,ix1,d) \ +do { \ + ieee_double_shape_type ew_u; \ + ew_u.value = (d); \ + (ix0) = ew_u.parts.msw; \ + (ix1) = ew_u.parts.lsw; \ +} while (0) + +/* Get the more significant 32 bit int from a double. */ + +#define GET_HIGH_WORD(i,d) \ +do { \ + ieee_double_shape_type gh_u; \ + gh_u.value = (d); \ + (i) = gh_u.parts.msw; \ +} while (0) + +/* Set a double from two 32 bit ints. */ + +#define INSERT_WORDS(d,ix0,ix1) \ +do { \ + ieee_double_shape_type iw_u; \ + iw_u.parts.msw = (ix0); \ + iw_u.parts.lsw = (ix1); \ + (d) = iw_u.value; \ +} while (0) + +#define SET_HIGH_WORD(d,v) \ +do { \ + ieee_double_shape_type sh_u; \ + sh_u.value = (d); \ + sh_u.parts.msw = (v); \ + (d) = sh_u.value; \ +} while (0) +