2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / builtins-25.c
blob495056615cab43d0e97aefc7532efc10451c97bd
1 /* Copyright (C) 2003 Free Software Foundation.
3 Check that constant folding of built-in math functions doesn't
4 break anything and produces the expected results.
6 Written by Roger Sayle, 28th June 2003. */
8 /* { dg-do link } */
9 /* { dg-options "-O2" } */
11 extern void link_error(void);
13 extern double trunc(double);
14 extern double floor(double);
15 extern double ceil(double);
17 extern float truncf(float);
18 extern float floorf(float);
19 extern float ceilf(float);
21 extern long double truncl(long double);
22 extern long double floorl(long double);
23 extern long double ceill(long double);
25 void test()
27 if (trunc (0.0) != 0.0)
28 link_error ();
29 if (floor (0.0) != 0.0)
30 link_error ();
31 if (ceil (0.0) != 0.0)
32 link_error ();
34 if (trunc (6.0) != 6.0)
35 link_error ();
36 if (floor (6.0) != 6.0)
37 link_error ();
38 if (ceil (6.0) != 6.0)
39 link_error ();
41 if (trunc (-8.0) != -8.0)
42 link_error ();
43 if (floor (-8.0) != -8.0)
44 link_error ();
45 if (ceil (-8.0) != -8.0)
46 link_error ();
48 if (trunc (3.2) != 3.0)
49 link_error ();
50 if (floor (3.2) != 3.0)
51 link_error ();
52 if (ceil (3.2) != 4.0)
53 link_error ();
55 if (trunc (-2.8) != -2.0)
56 link_error ();
57 if (floor (-2.8) != -3.0)
58 link_error ();
59 if (ceil (-2.8) != -2.0)
60 link_error ();
62 if (trunc (0.01) != 0.0)
63 link_error ();
64 if (floor (0.01) != 0.0)
65 link_error ();
66 if (ceil (0.01) != 1.0)
67 link_error ();
69 if (trunc (-0.7) != 0.0)
70 link_error ();
71 if (floor (-0.7) != -1.0)
72 link_error ();
73 if (ceil (-0.7) != 0.0)
74 link_error ();
77 void testf()
79 if (truncf (0.0f) != 0.0f)
80 link_error ();
81 if (floorf (0.0f) != 0.0f)
82 link_error ();
83 if (ceilf (0.0f) != 0.0f)
84 link_error ();
86 if (truncf (6.0f) != 6.0f)
87 link_error ();
88 if (floorf (6.0f) != 6.0f)
89 link_error ();
90 if (ceilf (6.0f) != 6.0f)
91 link_error ();
93 if (truncf (-8.0f) != -8.0f)
94 link_error ();
95 if (floorf (-8.0f) != -8.0f)
96 link_error ();
97 if (ceilf (-8.0f) != -8.0f)
98 link_error ();
100 if (truncf (3.2f) != 3.0f)
101 link_error ();
102 if (floorf (3.2f) != 3.0f)
103 link_error ();
104 if (ceilf (3.2f) != 4.0f)
105 link_error ();
107 if (truncf (-2.8f) != -2.0f)
108 link_error ();
109 if (floorf (-2.8f) != -3.0f)
110 link_error ();
111 if (ceilf (-2.8f) != -2.0f)
112 link_error ();
114 if (truncf (0.01f) != 0.0f)
115 link_error ();
116 if (floorf (0.01f) != 0.0f)
117 link_error ();
118 if (ceilf (0.01f) != 1.0f)
119 link_error ();
121 if (truncf (-0.7f) != 0.0f)
122 link_error ();
123 if (floorf (-0.7f) != -1.0f)
124 link_error ();
125 if (ceilf (-0.7f) != 0.0f)
126 link_error ();
129 void testl()
131 if (truncl (0.0l) != 0.0l)
132 link_error ();
133 if (floorl (0.0l) != 0.0l)
134 link_error ();
135 if (ceill (0.0l) != 0.0l)
136 link_error ();
138 if (truncl (6.0l) != 6.0l)
139 link_error ();
140 if (floorl (6.0l) != 6.0l)
141 link_error ();
142 if (ceill (6.0l) != 6.0l)
143 link_error ();
145 if (truncl (-8.0l) != -8.0l)
146 link_error ();
147 if (floorl (-8.0l) != -8.0l)
148 link_error ();
149 if (ceill (-8.0l) != -8.0l)
150 link_error ();
152 if (truncl (3.2l) != 3.0l)
153 link_error ();
154 if (floorl (3.2l) != 3.0l)
155 link_error ();
156 if (ceill (3.2l) != 4.0l)
157 link_error ();
159 if (truncl (-2.8l) != -2.0l)
160 link_error ();
161 if (floorl (-2.8l) != -3.0l)
162 link_error ();
163 if (ceill (-2.8l) != -2.0l)
164 link_error ();
166 if (truncl (0.01l) != 0.0l)
167 link_error ();
168 if (floorl (0.01l) != 0.0l)
169 link_error ();
170 if (ceill (0.01l) != 1.0l)
171 link_error ();
173 if (truncl (-0.7l) != 0.0l)
174 link_error ();
175 if (floorl (-0.7l) != -1.0l)
176 link_error ();
177 if (ceill (-0.7l) != 0.0l)
178 link_error ();
181 int main()
183 test ();
184 testf ();
185 testl ();
186 return 0;