2015-10-17 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / c-c++-common / dfp / usual-arith-conv.c
blobbaff06bc175838802de359d22c435c442f09ae9c
1 /* { dg-options "-O0" } */
3 /* N1150 5.4: Usual arithmetic conversions.
4 C99 6.3.1.8[1] (New).
6 Test arithmetic operators with different decimal float types, and
7 between decimal float types and integer types. */
9 #include "dfp-dbg.h"
11 volatile _Decimal32 d32a, d32b, d32c;
12 volatile _Decimal64 d64a, d64b, d64c;
13 volatile _Decimal128 d128a, d128b, d128c;
14 volatile int i;
16 void
17 init ()
19 d32b = 123.456e94df;
20 d64b = 12.3456789012345e383dd;
21 d128b = 12345.6789012345678901e4000dl;
23 d32c = 1.3df;
24 d64c = 1.2dd;
25 d128c = 1.1dl;
27 i = 2;
30 int
31 main ()
33 init ();
35 /* Usual arithmetic conversions between decimal float types; addition. */
36 d128a = d128b + d32b;
37 if (d128a < d128b)
38 FAILURE
39 d128a = d32b + d128b;
40 if (d128a < d128b)
41 FAILURE
42 d128a = d128b + d64b;
43 if (d128a < d128b)
44 FAILURE
45 d128a = d64b + d128b;
46 if (d128a < d128b)
47 FAILURE
48 d64a = d64b + d32b;
49 if (d64a < d64b)
50 FAILURE
51 d64a = d32b + d64b;
52 if (d64a < d64b)
53 FAILURE
55 /* Usual arithmetic conversions between decimal float types;
56 multiplication. */
57 d128a = d128b * d32c;
58 if (d128a < d128b)
59 FAILURE
60 d128a = d32c * d128b;
61 if (d128a < d128b)
62 FAILURE
63 d128a = d128b * d64c;
64 if (d128a < d128b)
65 FAILURE
66 d128a = d64c * d128b;
67 if (d128a < d128b)
68 FAILURE
69 d64a = d64b * d32c;
70 if (d64a < d64b)
71 FAILURE
72 d64a = d32c * d64b;
73 if (d64a < d64b)
74 FAILURE
76 /* Usual arithmetic conversions between decimal float and integer types. */
77 d32a = d32c + i;
78 if (d32a != d32c + 2.0df)
79 FAILURE
80 d32a = d32c - i;
81 if (d32a != d32c - 2.0df)
82 FAILURE
83 d32a = i * d32c;
84 if (d32a != d32c + d32c)
85 FAILURE
86 d32a = d32c / i;
87 if (d32a != d32c / 2.0df)
88 FAILURE
90 d64a = i + d64c;
91 if (d64a != d64c + 2.0dd)
92 FAILURE
93 d64a = d64c - i;
94 if (d64a != d64c - 2.0dd)
95 FAILURE
96 d64a = d64c * i;
97 if (d64a != d64c + d64c)
98 FAILURE
99 d64a = d64c / i;
100 if (d64a != d64c / 2.0dd)
101 FAILURE
103 d128a = d128c + i;
104 if (d128a != d128c + 2.0dl)
105 FAILURE
106 d128a = d128c - i;
107 if (d128a != d128c - 2.0dl)
108 FAILURE
109 d128a = i * d128c;
110 if (d128a != d128c + d128c)
111 FAILURE
112 d128a = d128c / i;
113 if (d128a != d128c / 2.0dl)
114 FAILURE
116 FINISH