1 /* C99 6.5.3 Unary operators. */
5 #define AUTO_INCREASE_DECREASE(TYPE,SUFFIX) \
8 _Decimal##TYPE in_de_d##TYPE = 0.0##SUFFIX; \
9 if (in_de_d##TYPE++) FAILURE \
10 if (--in_de_d##TYPE) FAILURE \
11 if (++in_de_d##TYPE == 0.0##SUFFIX) FAILURE \
12 if (in_de_d##TYPE-- == 0.0##SUFFIX) FAILURE \
15 #define UNARY_OPERATOR(TYPE,SUFFIX) \
18 _Decimal##TYPE unary_d##TYPE = 1.0##SUFFIX; \
19 _Decimal##TYPE* unary_dp##TYPE; \
21 unary_dp##TYPE = &(unary_d##TYPE); \
23 unary_d##TYPE = *(unary_dp##TYPE); \
25 unary_d##TYPE = -unary_d##TYPE; \
26 if (unary_d##TYPE != -1.0##SUFFIX) FAILURE \
28 unary_d##TYPE = +unary_d##TYPE; \
29 if (unary_d##TYPE != -1.0##SUFFIX) FAILURE \
30 if (!unary_d##TYPE) FAILURE /*! operator. */ \
36 /* C99 6.5.3.1 Prefix increment and decrement operators. */
37 AUTO_INCREASE_DECREASE(32, DF);
38 AUTO_INCREASE_DECREASE(64, DD);
39 AUTO_INCREASE_DECREASE(128, DL);
41 /* C99 6.5.3 Unary operators. */
42 UNARY_OPERATOR(32, DF);
43 UNARY_OPERATOR(64, DD);
44 UNARY_OPERATOR(128, DL);
46 /* C99 6.5.3 Unary operators for zero values. */
47 if (- +0.df != -0.df) FAILURE
48 if (+ -0.df != -0.df) FAILURE
49 if (- -0.df != +0.df) FAILURE