1 /* Cast to union is a GNU C extension.  */
2 
3 #include "dfp-dbg.h"
4 
5 union u
6 {
7   _Decimal128 d128;
8   double d;
9 };
10 
11 union n
12 {
13   double d;
14   _Decimal64 d64;
15 };
16 
main()17 int main ()
18 {
19   static union u u1 = { 0.0dl };
20   static union u u2 = { 4.2dl };
21   static union u u4 = { 0.0 };
22 
23   static union n n1 = { 2.2dd };
24   static union n n2 = { 3.25 };
25 
26   _Decimal128 d128;
27   _Decimal64 d64;
28   double d;
29 
30   if (u1.d128 != 0.0dl)
31     FAILURE
32 
33   if (u2.d128 != 4.2dl)
34     FAILURE
35 
36   /* cast decimal floating point to union type.  */
37   d128 = 1.23dl;
38   d64 = 4.56dd;
39   d = 3.25;
40 
41   u4 = (union u) d128;
42   if (u4.d128 != 1.23dl)
43     FAILURE
44 
45   u4 = (union u) d;
46   if (u4.d != 3.25)
47     FAILURE
48 
49   n1 = (union n) d64;
50   if (n1.d64 != 4.56dd)
51     FAILURE
52 
53   n1 = (union n)d;
54   if (n1.d != 3.25)
55     FAILURE
56 
57   FINISH
58 }
59