annotate gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-options "-O0" } */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 /* N1150 5.4: Usual arithmetic conversions.
kono
parents:
diff changeset
4 C99 6.3.1.8[1] (New).
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 Test arithmetic operators with different decimal float types, and
kono
parents:
diff changeset
7 between decimal float types and integer types. */
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 #include "dfp-dbg.h"
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 volatile _Decimal32 d32a, d32b, d32c;
kono
parents:
diff changeset
12 volatile _Decimal64 d64a, d64b, d64c;
kono
parents:
diff changeset
13 volatile _Decimal128 d128a, d128b, d128c;
kono
parents:
diff changeset
14 volatile int i;
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 void
kono
parents:
diff changeset
17 init ()
kono
parents:
diff changeset
18 {
kono
parents:
diff changeset
19 d32b = 123.456e94df;
kono
parents:
diff changeset
20 d64b = 12.3456789012345e383dd;
kono
parents:
diff changeset
21 d128b = 12345.6789012345678901e4000dl;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 d32c = 1.3df;
kono
parents:
diff changeset
24 d64c = 1.2dd;
kono
parents:
diff changeset
25 d128c = 1.1dl;
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 i = 2;
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int
kono
parents:
diff changeset
31 main ()
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 init ();
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 /* Usual arithmetic conversions between decimal float types; addition. */
kono
parents:
diff changeset
36 d128a = d128b + d32b;
kono
parents:
diff changeset
37 if (d128a < d128b)
kono
parents:
diff changeset
38 FAILURE
kono
parents:
diff changeset
39 d128a = d32b + d128b;
kono
parents:
diff changeset
40 if (d128a < d128b)
kono
parents:
diff changeset
41 FAILURE
kono
parents:
diff changeset
42 d128a = d128b + d64b;
kono
parents:
diff changeset
43 if (d128a < d128b)
kono
parents:
diff changeset
44 FAILURE
kono
parents:
diff changeset
45 d128a = d64b + d128b;
kono
parents:
diff changeset
46 if (d128a < d128b)
kono
parents:
diff changeset
47 FAILURE
kono
parents:
diff changeset
48 d64a = d64b + d32b;
kono
parents:
diff changeset
49 if (d64a < d64b)
kono
parents:
diff changeset
50 FAILURE
kono
parents:
diff changeset
51 d64a = d32b + d64b;
kono
parents:
diff changeset
52 if (d64a < d64b)
kono
parents:
diff changeset
53 FAILURE
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 /* Usual arithmetic conversions between decimal float types;
kono
parents:
diff changeset
56 multiplication. */
kono
parents:
diff changeset
57 d128a = d128b * d32c;
kono
parents:
diff changeset
58 if (d128a < d128b)
kono
parents:
diff changeset
59 FAILURE
kono
parents:
diff changeset
60 d128a = d32c * d128b;
kono
parents:
diff changeset
61 if (d128a < d128b)
kono
parents:
diff changeset
62 FAILURE
kono
parents:
diff changeset
63 d128a = d128b * d64c;
kono
parents:
diff changeset
64 if (d128a < d128b)
kono
parents:
diff changeset
65 FAILURE
kono
parents:
diff changeset
66 d128a = d64c * d128b;
kono
parents:
diff changeset
67 if (d128a < d128b)
kono
parents:
diff changeset
68 FAILURE
kono
parents:
diff changeset
69 d64a = d64b * d32c;
kono
parents:
diff changeset
70 if (d64a < d64b)
kono
parents:
diff changeset
71 FAILURE
kono
parents:
diff changeset
72 d64a = d32c * d64b;
kono
parents:
diff changeset
73 if (d64a < d64b)
kono
parents:
diff changeset
74 FAILURE
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 /* Usual arithmetic conversions between decimal float and integer types. */
kono
parents:
diff changeset
77 d32a = d32c + i;
kono
parents:
diff changeset
78 if (d32a != d32c + 2.0df)
kono
parents:
diff changeset
79 FAILURE
kono
parents:
diff changeset
80 d32a = d32c - i;
kono
parents:
diff changeset
81 if (d32a != d32c - 2.0df)
kono
parents:
diff changeset
82 FAILURE
kono
parents:
diff changeset
83 d32a = i * d32c;
kono
parents:
diff changeset
84 if (d32a != d32c + d32c)
kono
parents:
diff changeset
85 FAILURE
kono
parents:
diff changeset
86 d32a = d32c / i;
kono
parents:
diff changeset
87 if (d32a != d32c / 2.0df)
kono
parents:
diff changeset
88 FAILURE
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 d64a = i + d64c;
kono
parents:
diff changeset
91 if (d64a != d64c + 2.0dd)
kono
parents:
diff changeset
92 FAILURE
kono
parents:
diff changeset
93 d64a = d64c - i;
kono
parents:
diff changeset
94 if (d64a != d64c - 2.0dd)
kono
parents:
diff changeset
95 FAILURE
kono
parents:
diff changeset
96 d64a = d64c * i;
kono
parents:
diff changeset
97 if (d64a != d64c + d64c)
kono
parents:
diff changeset
98 FAILURE
kono
parents:
diff changeset
99 d64a = d64c / i;
kono
parents:
diff changeset
100 if (d64a != d64c / 2.0dd)
kono
parents:
diff changeset
101 FAILURE
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 d128a = d128c + i;
kono
parents:
diff changeset
104 if (d128a != d128c + 2.0dl)
kono
parents:
diff changeset
105 FAILURE
kono
parents:
diff changeset
106 d128a = d128c - i;
kono
parents:
diff changeset
107 if (d128a != d128c - 2.0dl)
kono
parents:
diff changeset
108 FAILURE
kono
parents:
diff changeset
109 d128a = i * d128c;
kono
parents:
diff changeset
110 if (d128a != d128c + d128c)
kono
parents:
diff changeset
111 FAILURE
kono
parents:
diff changeset
112 d128a = d128c / i;
kono
parents:
diff changeset
113 if (d128a != d128c / 2.0dl)
kono
parents:
diff changeset
114 FAILURE
kono
parents:
diff changeset
115
kono
parents:
diff changeset
116 FINISH
kono
parents:
diff changeset
117 }