• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef DFP_UTILS_H
2 #define DFP_UTILS_H
3 
4 #include <stddef.h>      /* size_t */
5 #include <stdio.h>       /* printf */
6 
7 /* convinience macros to print DFP values to avoid linking libdfp to
8    DFP testcases */
9 
10 #define DFP_VAL_PRINT(op, type)                                         \
11   {                                                                     \
12     size_t n = sizeof(type);                                            \
13     if (n == 4)                                                         \
14       printf("%x", *((unsigned int *) &op));                            \
15     else if (n == 8)                                                    \
16       printf("%lx", *((unsigned long *) &op));                          \
17     else                                                                \
18       printf("%lx%08lx", *((unsigned long *) &op),                      \
19              *(((unsigned long *) &op) + 1));                           \
20   }
21 
22 #define DFP_BINOP_PRINT(op1, op2, result, type, op, cc)                 \
23   {                                                                     \
24     DFP_VAL_PRINT(op1, type);                                           \
25     printf(" "op" ");                                                   \
26     DFP_VAL_PRINT(op2, type);                                           \
27     printf(" = ");                                                      \
28     DFP_VAL_PRINT(result, type);                                        \
29     printf(" cc = %d\n", cc);                                           \
30   }
31 
32 #endif /* DFP_UTILS_H */
33