Add further _BitInt <-> floating point tests [PR102989]
[official-gcc.git] / gcc / testsuite / gcc.dg / dfp / bitint-1.c
blob64f50d05f0ef8940e20576a628c4e69b36eb2ade
1 /* PR c/102989 */
2 /* { dg-do run { target bitint } } */
3 /* { dg-options "-O2 -std=c2x -pedantic-errors" } */
5 #if __BITINT_MAXWIDTH__ >= 192
6 __attribute__((noipa)) _BitInt(192)
7 tests192 (_Decimal64 d)
9 return d;
12 __attribute__((noipa)) unsigned _BitInt(192)
13 testu192 (_Decimal64 d)
15 return d;
17 #endif
19 #if __BITINT_MAXWIDTH__ >= 575
20 __attribute__((noipa)) _BitInt(575)
21 tests575 (_Decimal64 d)
23 return d;
26 __attribute__((noipa)) unsigned _BitInt(575)
27 testu575 (_Decimal64 d)
29 return d;
31 #endif
33 int
34 main ()
36 #if __BITINT_MAXWIDTH__ >= 192
37 if (tests192 (0.DD) != 0wb
38 || tests192 (0.9999999999999999DD) != 0wb
39 || tests192 (7.999999999999999DD) != 7wb
40 || tests192 (-0.DD) != 0wb
41 || tests192 (-0.9999999999999999DD) != 0wb
42 || tests192 (-42.5DD) != -42wb
43 || tests192 (-34242319854.45429e+27DD) != -34242319854454290000000000000000000000wb
44 || tests192 (-213855087769445.9e+43DD) != -2138550877694459000000000000000000000000000000000000000000wb
45 || tests192 (313855086769334.0e+43DD) != 3138550867693340000000000000000000000000000000000000000000wb
46 || tests192 (-313855086769334.0e+43DD) != -3138550867693340000000000000000000000000000000000000000000wb)
47 __builtin_abort ();
48 if (tests192 (313855086769334.1e+43DD) != 3138550867693340381917894711603833208051177722232017256447wb
49 || tests192 (9999999999999999e+369DD) != 3138550867693340381917894711603833208051177722232017256447wb
50 || tests192 (-313855086769334.1e+43DD) != -3138550867693340381917894711603833208051177722232017256447wb - 1wb
51 || tests192 (-9999999999999999e+369DD) != -3138550867693340381917894711603833208051177722232017256447wb - 1wb)
52 __builtin_abort ();
53 if (testu192 (0.DD) != 0uwb
54 || testu192 (0.9999999999999999DD) != 0uwb
55 || testu192 (-0.9999999999999999DD) != 0uwb
56 || testu192 (-0.0DD) != 0uwb
57 || testu192 (-0.5DD) != 0uwb
58 || testu192 (42.99999999999999DD) != 42uwb
59 || testu192 (42.e+21DD) != 42000000000000000000000uwb
60 || testu192 (34272319854.45429e+27DD) != 34272319854454290000000000000000000000uwb
61 || testu192 (627710173538668.0e+43DD) != 6277101735386680000000000000000000000000000000000000000000uwb)
62 __builtin_abort ();
63 if (testu192 (-1.DD) != 0uwb
64 || testu192 (-42.5e+15DD) != 0uwb
65 || testu192 (-9999999999999999e+369DD) != 0uwb
66 || testu192 (627710173538668.1e+43DD) != 6277101735386680763835789423207666416102355444464034512895uwb
67 || testu192 (9999999999999999e+369DD) != 6277101735386680763835789423207666416102355444464034512895uwb)
68 __builtin_abort ();
69 #endif
70 #if __BITINT_MAXWIDTH__ >= 575
71 if (tests575 (0.DD) != 0wb
72 || tests575 (0.999999DD) != 0wb
73 || tests575 (12.9999999999999DD) != 12wb
74 || tests575 (-0.DD) != 0wb
75 || tests575 (-0.9999999999999999DD) != 0wb
76 || tests575 (-1.DD) != -1wb
77 || tests575 (-89.5DD) != -89wb
78 || tests575 (-34242319854.45429e+37DD) != -342423198544542900000000000000000000000000000000wb
79 || tests575 (-518326003682761.2e+158DD) != -51832600368276120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb
80 || tests575 (6183260036827613.0e+157DD) != 61832600368276130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb
81 || tests575 (-6183260036827613.0e+157DD) != -61832600368276130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb)
82 __builtin_abort ();
83 if (tests575 (6183260036827614.0e+157DD) != 61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb
84 || tests575 (9999999999999999e+369DD) != 61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb
85 || tests575 (-6183260036827614.0e+157DD) != -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb - 1wb
86 || tests575 (-9999999999999999e+369DD) != -61832600368276133515125630254911797508782837275302959978515764023224306276632966792579100265310761247399417856504034834837841258576687802491886538775473291979151693037174783wb - 1wb)
87 __builtin_abort ();
88 if (testu575 (0.DD) != 0uwb
89 || testu575 (0.5555555555555555DD) != 0uwb
90 || testu575 (-0.7777777777777777DD) != 0uwb
91 || testu575 (-0.99DD) != 0uwb
92 || testu575 (-0.000DD) != 0uwb
93 || testu575 (-0.99999999DD) != 0uwb
94 || testu575 (42.99999999999999DD) != 42uwb
95 || testu575 (42.e+21DD) != 42000000000000000000000uwb
96 || testu575 (94272319854.45429e+27DD) != 94272319854454290000000000000000000000uwb
97 || testu575 (1236652007365522.0e+158DD) != 123665200736552200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000uwb)
98 __builtin_abort ();
99 if (testu575 (-1.DD) != 0uwb
100 || testu575 (-42.5e+15DD) != 0uwb
101 || testu575 (-9999999999999999e+369DD) != 0uwb
102 || testu575 (1236652007365523.0e+158DD) != 123665200736552267030251260509823595017565674550605919957031528046448612553265933585158200530621522494798835713008069669675682517153375604983773077550946583958303386074349567uwb
103 || testu575 (9999999999999999e+369DD) != 123665200736552267030251260509823595017565674550605919957031528046448612553265933585158200530621522494798835713008069669675682517153375604983773077550946583958303386074349567uwb)
104 __builtin_abort ();
105 #endif