1 /* Copyright (C) 2004 Free Software Foundation.
3 Check that constant folding of the rounding math functions doesn't
4 break anything and produces the expected results.
6 Written by Kaveh Ghazi, 2004-04-29. */
10 extern int link_error (int);
12 #define TEST(FN, VALUE, RESULT) \
13 if (__builtin_##FN (VALUE) != RESULT) link_error (__LINE__); \
14 if (__builtin_##FN##f (VALUE) != RESULT) link_error (__LINE__); \
15 if (__builtin_##FN##l (VALUE) != RESULT) link_error (__LINE__); \
47 TEST(llround
, -8, -8);
49 TEST(llfloor
, -8, -8);
58 TEST(llround
, 3.2, 3);
60 TEST(llfloor
, 3.2, 3);
64 TEST(trunc
, -2.8, -2);
65 TEST(floor
, -2.8, -3);
67 TEST(round
, -2.8, -3);
68 TEST(lround
, -2.8, -3);
69 TEST(llround
, -2.8, -3);
70 TEST(lfloor
, -2.8, -3);
71 TEST(llfloor
, -2.8, -3);
72 TEST(lceil
, -2.8, -2);
73 TEST(llceil
, -2.8, -2);
79 TEST(lround
, 0.01, 0);
80 TEST(llround
, 0.01, 0);
81 TEST(lfloor
, 0.01, 0);
82 TEST(llfloor
, 0.01, 0);
84 TEST(llceil
, 0.01, 1);
87 TEST(floor
, -0.7, -1);
89 TEST(round
, -0.7, -1);
90 TEST(lround
, -0.7, -1);
91 TEST(llround
, -0.7, -1);
92 TEST(lfloor
, -0.7, -1);
93 TEST(llfloor
, -0.7, -1);
95 TEST(llceil
, -0.7, 0);
101 TEST(lround
, 2.5, 3);
102 TEST(llround
, 2.5, 3);
103 TEST(lfloor
, 2.5, 2);
104 TEST(llfloor
, 2.5, 2);
106 TEST(llceil
, 2.5, 3);
108 TEST(trunc
, -1.5, -1);
109 TEST(floor
, -1.5, -2);
110 TEST(ceil
, -1.5, -1);
111 TEST(round
, -1.5, -2);
112 TEST(lround
, -1.5, -2);
113 TEST(llround
, -1.5, -2);
114 TEST(lfloor
, -1.5, -2);
115 TEST(llfloor
, -1.5, -2);
116 TEST(lceil
, -1.5, -1);
117 TEST(llceil
, -1.5, -1);