diff --git a/decimal128.h b/decimal128.h
index df72acf..8f6b315 100644
@@ -49,8 +49,13 @@
#endif
/* Decimal 128-bit type, accessible by bytes */
- typedef struct {
+ typedef union {
uint8_t bytes[DECIMAL128_Bytes]; /* decimal128: 1, 5, 12, 110 bits*/
+ uint16_t shorts[DECIMAL128_Bytes/2];
+ uint32_t words[DECIMAL128_Bytes/4];
+ #if DECUSE64
+ uint64_t longs[DECIMAL128_Bytes/8];
+ #endif
} decimal128;
/* special values [top byte excluding sign bit; last two bits are */
diff --git a/decimal32.h b/decimal32.h
index faaf9a9..233f7a8 100644
@@ -49,8 +49,10 @@
#endif
/* Decimal 32-bit type, accessible by bytes */
- typedef struct {
+ typedef union {
uint8_t bytes[DECIMAL32_Bytes]; /* decimal32: 1, 5, 6, 20 bits*/
+ uint16_t shorts[DECIMAL32_Bytes/2];
+ uint32_t words[DECIMAL32_Bytes/4];
} decimal32;
/* special values [top byte excluding sign bit; last two bits are */
diff --git a/decimal64.h b/decimal64.h
index d2782a3..8b5308c 100644
@@ -51,8 +51,13 @@
#endif
/* Decimal 64-bit type, accessible by bytes */
- typedef struct {
+ typedef union {
uint8_t bytes[DECIMAL64_Bytes]; /* decimal64: 1, 5, 8, 50 bits*/
+ uint16_t shorts[DECIMAL64_Bytes/2];
+ uint32_t words[DECIMAL64_Bytes/4];
+ #if DECUSE64
+ uint64_t longs[DECIMAL64_Bytes/8];
+ #endif
} decimal64;
/* special values [top byte excluding sign bit; last two bits are */