annotate gcc/testsuite/gcc.dg/builtins-20.c @ 132:d34655255c78

update gcc-8.2
author mir3636
date Thu, 25 Oct 2018 10:21:07 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Copyright (C) 2003 Free Software Foundation.
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 Verify that built-in math function constant folding doesn't break
kono
parents:
diff changeset
4 anything and produces the expected results.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 Written by Roger Sayle, 8th June 2003. */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 /* { dg-do link } */
kono
parents:
diff changeset
9 /* { dg-options "-O2 -ffast-math" } */
kono
parents:
diff changeset
10 /* { dg-add-options c99_runtime } */
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 #include "builtins-config.h"
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 extern double cos (double);
kono
parents:
diff changeset
15 extern double sin (double);
kono
parents:
diff changeset
16 extern double tan (double);
kono
parents:
diff changeset
17 extern double fabs (double);
kono
parents:
diff changeset
18 extern double atan2 (double, double);
kono
parents:
diff changeset
19 extern double copysign (double, double);
kono
parents:
diff changeset
20 extern double fmin (double, double);
kono
parents:
diff changeset
21 extern double fmax (double, double);
kono
parents:
diff changeset
22 extern double hypot (double, double);
kono
parents:
diff changeset
23 extern double pure (double) __attribute__ ((__pure__));
kono
parents:
diff changeset
24 extern double carg (__complex__ double);
kono
parents:
diff changeset
25 extern __complex__ double ccos (__complex__ double);
kono
parents:
diff changeset
26 extern __complex__ double ctan (__complex__ double);
kono
parents:
diff changeset
27 extern float cosf (float);
kono
parents:
diff changeset
28 extern float sinf (float);
kono
parents:
diff changeset
29 extern float tanf (float);
kono
parents:
diff changeset
30 extern float fabsf (float);
kono
parents:
diff changeset
31 extern float atan2f (float, float);
kono
parents:
diff changeset
32 extern float copysignf (float, float);
kono
parents:
diff changeset
33 extern float fminf (float, float);
kono
parents:
diff changeset
34 extern float fmaxf (float, float);
kono
parents:
diff changeset
35 extern float hypotf (float, float);
kono
parents:
diff changeset
36 extern float puref (float) __attribute__ ((__pure__));
kono
parents:
diff changeset
37 extern float cargf (__complex__ float);
kono
parents:
diff changeset
38 extern __complex__ float ccosf (__complex__ float);
kono
parents:
diff changeset
39 extern __complex__ float ctanf (__complex__ float);
kono
parents:
diff changeset
40 extern long double cosl (long double);
kono
parents:
diff changeset
41 extern long double sinl (long double);
kono
parents:
diff changeset
42 extern long double tanl (long double);
kono
parents:
diff changeset
43 extern long double fabsl (long double);
kono
parents:
diff changeset
44 extern long double atan2l (long double, long double);
kono
parents:
diff changeset
45 extern long double copysignl (long double, long double);
kono
parents:
diff changeset
46 extern long double fminl (long double, long double);
kono
parents:
diff changeset
47 extern long double fmaxl (long double, long double);
kono
parents:
diff changeset
48 extern long double hypotl (long double, long double);
kono
parents:
diff changeset
49 extern long double purel (long double) __attribute__ ((__pure__));
kono
parents:
diff changeset
50 extern long double cargl (__complex__ long double);
kono
parents:
diff changeset
51 extern __complex__ long double ccosl (__complex__ long double);
kono
parents:
diff changeset
52 extern __complex__ long double ctanl (__complex__ long double);
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 extern void link_error(void);
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 void test1(double x)
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 if (cos(x) != cos(-x))
kono
parents:
diff changeset
59 link_error ();
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 if (cos(x) != cos(fabs(x)))
kono
parents:
diff changeset
62 link_error ();
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 if (cos(x) != cos(-fabs(x)))
kono
parents:
diff changeset
65 link_error ();
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 if (cos(tan(x)) != cos(tan(-fabs(x))))
kono
parents:
diff changeset
68 link_error ();
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 if (sin(x)/cos(x) != tan(x))
kono
parents:
diff changeset
71 link_error ();
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 if (cos(x)/sin(x) != 1.0/tan(x))
kono
parents:
diff changeset
74 link_error ();
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 if (tan(x)*cos(x) != sin(x))
kono
parents:
diff changeset
77 link_error ();
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 if (cos(x)*tan(x) != sin(x))
kono
parents:
diff changeset
80 link_error ();
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 if (sin(x)/tan(x) != cos(x))
kono
parents:
diff changeset
83 link_error ();
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 if (tan(x)/sin(x) != 1.0/cos(x))
kono
parents:
diff changeset
86 link_error ();
kono
parents:
diff changeset
87 }
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 void test2(double x, double y)
kono
parents:
diff changeset
90 {
kono
parents:
diff changeset
91 if (-tan(x-y) != tan(y-x))
kono
parents:
diff changeset
92 link_error ();
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 if (-sin(x-y) != sin(y-x))
kono
parents:
diff changeset
95 link_error ();
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 if (cos(-x*y) != cos(x*y))
kono
parents:
diff changeset
98 link_error ();
kono
parents:
diff changeset
99
kono
parents:
diff changeset
100 if (cos(x*-y) != cos(x*y))
kono
parents:
diff changeset
101 link_error ();
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 if (cos(-x/y) != cos(x/y))
kono
parents:
diff changeset
104 link_error ();
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 if (cos(x/-y) != cos(x/y))
kono
parents:
diff changeset
107 link_error ();
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 if (cos(-fabs(tan(x/-y))) != cos(tan(x/y)))
kono
parents:
diff changeset
110 link_error ();
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 if (cos(y<10 ? -x : y) != cos(y<10 ? x : y))
kono
parents:
diff changeset
113 link_error ();
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 if (cos(y<10 ? x : -y) != cos(y<10 ? x : y))
kono
parents:
diff changeset
116 link_error ();
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 if (cos(y<10 ? -fabs(x) : tan(x<20 ? -x : -fabs(y)))
kono
parents:
diff changeset
119 != cos(y<10 ? x : tan(x<20 ? x : y)))
kono
parents:
diff changeset
120 link_error ();
kono
parents:
diff changeset
121
kono
parents:
diff changeset
122 if (cos((y*=3, -x)) != cos((y*=3,x)))
kono
parents:
diff changeset
123 link_error ();
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 if (cos(-fabs(tan(x/-y))) != cos(tan(x/y)))
kono
parents:
diff changeset
126 link_error ();
kono
parents:
diff changeset
127
kono
parents:
diff changeset
128 if (cos(copysign(x,y)) != cos(x))
kono
parents:
diff changeset
129 link_error ();
kono
parents:
diff changeset
130
kono
parents:
diff changeset
131 if (cos(copysign(-fabs(x),y*=2)) != cos((y*=2,x)))
kono
parents:
diff changeset
132 link_error ();
kono
parents:
diff changeset
133
kono
parents:
diff changeset
134 if (hypot (x, 0) != fabs(x))
kono
parents:
diff changeset
135 link_error ();
kono
parents:
diff changeset
136
kono
parents:
diff changeset
137 if (hypot (0, x) != fabs(x))
kono
parents:
diff changeset
138 link_error ();
kono
parents:
diff changeset
139
kono
parents:
diff changeset
140 if (hypot (x, x) != fabs(x) * __builtin_sqrt(2))
kono
parents:
diff changeset
141 link_error ();
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 if (hypot (-x, y) != hypot (x, y))
kono
parents:
diff changeset
144 link_error ();
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 if (hypot (x, -y) != hypot (x, y))
kono
parents:
diff changeset
147 link_error ();
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 if (hypot (-x, -y) != hypot (x, y))
kono
parents:
diff changeset
150 link_error ();
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 if (hypot (fabs(x), y) != hypot (x, y))
kono
parents:
diff changeset
153 link_error ();
kono
parents:
diff changeset
154
kono
parents:
diff changeset
155 if (hypot (x, fabs(y)) != hypot (x, y))
kono
parents:
diff changeset
156 link_error ();
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 if (hypot (fabs(x), fabs(y)) != hypot (x, y))
kono
parents:
diff changeset
159 link_error ();
kono
parents:
diff changeset
160
kono
parents:
diff changeset
161 if (hypot (-fabs(-x), -fabs(fabs(fabs(-y)))) != hypot (x, y))
kono
parents:
diff changeset
162 link_error ();
kono
parents:
diff changeset
163
kono
parents:
diff changeset
164 if (hypot (-x, 0) != fabs(x))
kono
parents:
diff changeset
165 link_error ();
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 if (hypot (-x, x) != fabs(x) * __builtin_sqrt(2))
kono
parents:
diff changeset
168 link_error ();
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 if (hypot (pure(x), -pure(x)) != fabs(pure(x)) * __builtin_sqrt(2))
kono
parents:
diff changeset
171 link_error ();
kono
parents:
diff changeset
172
kono
parents:
diff changeset
173 if (hypot (tan(-x), tan(-fabs(y))) != hypot (tan(x), tan(y)))
kono
parents:
diff changeset
174 link_error ();
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 if (fmin (fmax(x,y),y) != y)
kono
parents:
diff changeset
177 link_error ();
kono
parents:
diff changeset
178
kono
parents:
diff changeset
179 if (fmin (fmax(y,x),y) != y)
kono
parents:
diff changeset
180 link_error ();
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 if (fmin (x,fmax(x,y)) != x)
kono
parents:
diff changeset
183 link_error ();
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 if (fmin (x,fmax(y,x)) != x)
kono
parents:
diff changeset
186 link_error ();
kono
parents:
diff changeset
187
kono
parents:
diff changeset
188 if (fmax (fmin(x,y),y) != y)
kono
parents:
diff changeset
189 link_error ();
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 if (fmax (fmin(y,x),y) != y)
kono
parents:
diff changeset
192 link_error ();
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 if (fmax (x,fmin(x,y)) != x)
kono
parents:
diff changeset
195 link_error ();
kono
parents:
diff changeset
196
kono
parents:
diff changeset
197 if (fmax (x,fmin(y,x)) != x)
kono
parents:
diff changeset
198 link_error ();
kono
parents:
diff changeset
199
kono
parents:
diff changeset
200 if ((__complex__ double) x != -(__complex__ double) (-x))
kono
parents:
diff changeset
201 link_error ();
kono
parents:
diff changeset
202
kono
parents:
diff changeset
203 if (x*1i != -(-x*1i))
kono
parents:
diff changeset
204 link_error ();
kono
parents:
diff changeset
205
kono
parents:
diff changeset
206 if (x+(x-y)*1i != -(-x+(y-x)*1i))
kono
parents:
diff changeset
207 link_error ();
kono
parents:
diff changeset
208
kono
parents:
diff changeset
209 if (x+(x-y)*1i != -(-x-(x-y)*1i))
kono
parents:
diff changeset
210 link_error ();
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 if (ccos(tan(x)+sin(y)*1i) != ccos(-tan(-x)+-sin(-y)*1i))
kono
parents:
diff changeset
213 link_error ();
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 if (ccos(tan(x)+sin(x-y)*1i) != ccos(-tan(-x)-sin(y-x)*1i))
kono
parents:
diff changeset
216 link_error ();
kono
parents:
diff changeset
217
kono
parents:
diff changeset
218 if (-5+x*1i != -~(5+x*1i))
kono
parents:
diff changeset
219 link_error ();
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 if (tan(x)+tan(y)*1i != -~(tan(-x)+tan(y)*1i))
kono
parents:
diff changeset
222 link_error ();
kono
parents:
diff changeset
223 }
kono
parents:
diff changeset
224
kono
parents:
diff changeset
225 void test3(__complex__ double x, __complex__ double y, int i)
kono
parents:
diff changeset
226 {
kono
parents:
diff changeset
227 if (carg(x) != atan2(__imag__ x, __real__ x))
kono
parents:
diff changeset
228 link_error ();
kono
parents:
diff changeset
229
kono
parents:
diff changeset
230 if (ccos(x) != ccos(-x))
kono
parents:
diff changeset
231 link_error();
kono
parents:
diff changeset
232
kono
parents:
diff changeset
233 if (ccos(ctan(x)) != ccos(ctan(-x)))
kono
parents:
diff changeset
234 link_error();
kono
parents:
diff changeset
235
kono
parents:
diff changeset
236 if (ctan(x-y) != -ctan(y-x))
kono
parents:
diff changeset
237 link_error();
kono
parents:
diff changeset
238
kono
parents:
diff changeset
239 if (ccos(x/y) != ccos(-x/y))
kono
parents:
diff changeset
240 link_error();
kono
parents:
diff changeset
241
kono
parents:
diff changeset
242 if (ccos(x/y) != ccos(x/-y))
kono
parents:
diff changeset
243 link_error();
kono
parents:
diff changeset
244
kono
parents:
diff changeset
245 if (ccos(x/ctan(y)) != ccos(-x/ctan(-y)))
kono
parents:
diff changeset
246 link_error();
kono
parents:
diff changeset
247
kono
parents:
diff changeset
248 if (ccos(x*y) != ccos(-x*y))
kono
parents:
diff changeset
249 link_error();
kono
parents:
diff changeset
250
kono
parents:
diff changeset
251 if (ccos(x*y) != ccos(x*-y))
kono
parents:
diff changeset
252 link_error();
kono
parents:
diff changeset
253
kono
parents:
diff changeset
254 if (ccos(ctan(x)*y) != ccos(ctan(-x)*-y))
kono
parents:
diff changeset
255 link_error();
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 if (ccos(ctan(x/y)) != ccos(-ctan(x/-y)))
kono
parents:
diff changeset
258 link_error();
kono
parents:
diff changeset
259
kono
parents:
diff changeset
260 if (ccos(i ? x : y) != ccos(i ? -x : y))
kono
parents:
diff changeset
261 link_error();
kono
parents:
diff changeset
262
kono
parents:
diff changeset
263 if (ccos(i ? x : y) != ccos(i ? x : -y))
kono
parents:
diff changeset
264 link_error();
kono
parents:
diff changeset
265
kono
parents:
diff changeset
266 if (ccos(i ? x : ctan(y/x)) != ccos(i ? -x : -ctan(-y/x)))
kono
parents:
diff changeset
267 link_error();
kono
parents:
diff changeset
268
kono
parents:
diff changeset
269 if (~x != -~-x)
kono
parents:
diff changeset
270 link_error();
kono
parents:
diff changeset
271
kono
parents:
diff changeset
272 if (ccos(~x) != ccos(-~-x))
kono
parents:
diff changeset
273 link_error();
kono
parents:
diff changeset
274
kono
parents:
diff changeset
275 if (ctan(~(x-y)) != -ctan(~(y-x)))
kono
parents:
diff changeset
276 link_error();
kono
parents:
diff changeset
277
kono
parents:
diff changeset
278 if (ctan(~(x/y)) != -ctan(~(x/-y)))
kono
parents:
diff changeset
279 link_error();
kono
parents:
diff changeset
280 }
kono
parents:
diff changeset
281
kono
parents:
diff changeset
282 void test1f(float x)
kono
parents:
diff changeset
283 {
kono
parents:
diff changeset
284 if (cosf(x) != cosf(-x))
kono
parents:
diff changeset
285 link_error ();
kono
parents:
diff changeset
286
kono
parents:
diff changeset
287 if (cosf(x) != cosf(fabsf(x)))
kono
parents:
diff changeset
288 link_error ();
kono
parents:
diff changeset
289
kono
parents:
diff changeset
290 if (cosf(x) != cosf(-fabsf(x)))
kono
parents:
diff changeset
291 link_error ();
kono
parents:
diff changeset
292
kono
parents:
diff changeset
293 if (cosf(tanf(x)) != cosf(tanf(-fabsf(x))))
kono
parents:
diff changeset
294 link_error ();
kono
parents:
diff changeset
295
kono
parents:
diff changeset
296 #ifdef HAVE_C99_RUNTIME
kono
parents:
diff changeset
297 if (sinf(x)/cosf(x) != tanf(x))
kono
parents:
diff changeset
298 link_error ();
kono
parents:
diff changeset
299
kono
parents:
diff changeset
300 if (cosf(x)/sinf(x) != 1.0f/tanf(x))
kono
parents:
diff changeset
301 link_error ();
kono
parents:
diff changeset
302
kono
parents:
diff changeset
303 if (tanf(x)*cosf(x) != sinf(x))
kono
parents:
diff changeset
304 link_error ();
kono
parents:
diff changeset
305
kono
parents:
diff changeset
306 if (cosf(x)*tanf(x) != sinf(x))
kono
parents:
diff changeset
307 link_error ();
kono
parents:
diff changeset
308
kono
parents:
diff changeset
309 if (sinf(x)/tanf(x) != cosf(x))
kono
parents:
diff changeset
310 link_error ();
kono
parents:
diff changeset
311
kono
parents:
diff changeset
312 if (tanf(x)/sinf(x) != 1.0f/cosf(x))
kono
parents:
diff changeset
313 link_error ();
kono
parents:
diff changeset
314 #endif
kono
parents:
diff changeset
315 }
kono
parents:
diff changeset
316
kono
parents:
diff changeset
317 void test2f(float x, float y)
kono
parents:
diff changeset
318 {
kono
parents:
diff changeset
319 if (-tanf(x-y) != tanf(y-x))
kono
parents:
diff changeset
320 link_error ();
kono
parents:
diff changeset
321
kono
parents:
diff changeset
322 if (-sinf(x-y) != sinf(y-x))
kono
parents:
diff changeset
323 link_error ();
kono
parents:
diff changeset
324
kono
parents:
diff changeset
325 if (cosf(-x*y) != cosf(x*y))
kono
parents:
diff changeset
326 link_error ();
kono
parents:
diff changeset
327
kono
parents:
diff changeset
328 if (cosf(x*-y) != cosf(x*y))
kono
parents:
diff changeset
329 link_error ();
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 if (cosf(-x/y) != cosf(x/y))
kono
parents:
diff changeset
332 link_error ();
kono
parents:
diff changeset
333
kono
parents:
diff changeset
334 if (cosf(x/-y) != cosf(x/y))
kono
parents:
diff changeset
335 link_error ();
kono
parents:
diff changeset
336
kono
parents:
diff changeset
337 if (cosf(-fabsf(tanf(x/-y))) != cosf(tanf(x/y)))
kono
parents:
diff changeset
338 link_error ();
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 if (cosf(y<10 ? -x : y) != cosf(y<10 ? x : y))
kono
parents:
diff changeset
341 link_error ();
kono
parents:
diff changeset
342
kono
parents:
diff changeset
343 if (cosf(y<10 ? x : -y) != cosf(y<10 ? x : y))
kono
parents:
diff changeset
344 link_error ();
kono
parents:
diff changeset
345
kono
parents:
diff changeset
346 if (cosf(y<10 ? -fabsf(x) : tanf(x<20 ? -x : -fabsf(y)))
kono
parents:
diff changeset
347 != cosf(y<10 ? x : tanf(x<20 ? x : y)))
kono
parents:
diff changeset
348 link_error ();
kono
parents:
diff changeset
349
kono
parents:
diff changeset
350 if (cosf((y*=3, -x)) != cosf((y*=3,x)))
kono
parents:
diff changeset
351 link_error ();
kono
parents:
diff changeset
352
kono
parents:
diff changeset
353 if (cosf(-fabsf(tanf(x/-y))) != cosf(tanf(x/y)))
kono
parents:
diff changeset
354 link_error ();
kono
parents:
diff changeset
355
kono
parents:
diff changeset
356 if (cosf(copysignf(x,y)) != cosf(x))
kono
parents:
diff changeset
357 link_error ();
kono
parents:
diff changeset
358
kono
parents:
diff changeset
359 if (cosf(copysignf(-fabsf(x),y*=2)) != cosf((y*=2,x)))
kono
parents:
diff changeset
360 link_error ();
kono
parents:
diff changeset
361
kono
parents:
diff changeset
362 if (hypotf (x, 0) != fabsf(x))
kono
parents:
diff changeset
363 link_error ();
kono
parents:
diff changeset
364
kono
parents:
diff changeset
365 if (hypotf (0, x) != fabsf(x))
kono
parents:
diff changeset
366 link_error ();
kono
parents:
diff changeset
367
kono
parents:
diff changeset
368 if (hypotf (x, x) != fabsf(x) * __builtin_sqrtf(2))
kono
parents:
diff changeset
369 link_error ();
kono
parents:
diff changeset
370
kono
parents:
diff changeset
371 if (hypotf (-x, y) != hypotf (x, y))
kono
parents:
diff changeset
372 link_error ();
kono
parents:
diff changeset
373
kono
parents:
diff changeset
374 if (hypotf (x, -y) != hypotf (x, y))
kono
parents:
diff changeset
375 link_error ();
kono
parents:
diff changeset
376
kono
parents:
diff changeset
377 if (hypotf (-x, -y) != hypotf (x, y))
kono
parents:
diff changeset
378 link_error ();
kono
parents:
diff changeset
379
kono
parents:
diff changeset
380 if (hypotf (fabsf(x), y) != hypotf (x, y))
kono
parents:
diff changeset
381 link_error ();
kono
parents:
diff changeset
382
kono
parents:
diff changeset
383 if (hypotf (x, fabsf(y)) != hypotf (x, y))
kono
parents:
diff changeset
384 link_error ();
kono
parents:
diff changeset
385
kono
parents:
diff changeset
386 if (hypotf (fabsf(x), fabsf(y)) != hypotf (x, y))
kono
parents:
diff changeset
387 link_error ();
kono
parents:
diff changeset
388
kono
parents:
diff changeset
389 if (hypotf (-fabsf(-x), -fabsf(fabsf(fabsf(-y)))) != hypotf (x, y))
kono
parents:
diff changeset
390 link_error ();
kono
parents:
diff changeset
391
kono
parents:
diff changeset
392 if (hypotf (-x, 0) != fabsf(x))
kono
parents:
diff changeset
393 link_error ();
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 if (hypotf (-x, x) != fabsf(x) * __builtin_sqrtf(2))
kono
parents:
diff changeset
396 link_error ();
kono
parents:
diff changeset
397
kono
parents:
diff changeset
398 if (hypotf (puref(x), -puref(x)) != fabsf(puref(x)) * __builtin_sqrtf(2))
kono
parents:
diff changeset
399 link_error ();
kono
parents:
diff changeset
400
kono
parents:
diff changeset
401 if (hypotf (tanf(-x), tanf(-fabsf(y))) != hypotf (tanf(x), tanf(y)))
kono
parents:
diff changeset
402 link_error ();
kono
parents:
diff changeset
403
kono
parents:
diff changeset
404 if (fminf (fmaxf(x,y),y) != y)
kono
parents:
diff changeset
405 link_error ();
kono
parents:
diff changeset
406
kono
parents:
diff changeset
407 if (fminf (fmaxf(y,x),y) != y)
kono
parents:
diff changeset
408 link_error ();
kono
parents:
diff changeset
409
kono
parents:
diff changeset
410 if (fminf (x,fmaxf(x,y)) != x)
kono
parents:
diff changeset
411 link_error ();
kono
parents:
diff changeset
412
kono
parents:
diff changeset
413 if (fminf (x,fmaxf(y,x)) != x)
kono
parents:
diff changeset
414 link_error ();
kono
parents:
diff changeset
415
kono
parents:
diff changeset
416 if (fmaxf (fminf(x,y),y) != y)
kono
parents:
diff changeset
417 link_error ();
kono
parents:
diff changeset
418
kono
parents:
diff changeset
419 if (fmaxf (fminf(y,x),y) != y)
kono
parents:
diff changeset
420 link_error ();
kono
parents:
diff changeset
421
kono
parents:
diff changeset
422 if (fmaxf (x,fminf(x,y)) != x)
kono
parents:
diff changeset
423 link_error ();
kono
parents:
diff changeset
424
kono
parents:
diff changeset
425 if (fmaxf (x,fminf(y,x)) != x)
kono
parents:
diff changeset
426 link_error ();
kono
parents:
diff changeset
427
kono
parents:
diff changeset
428 if ((__complex__ float) x != -(__complex__ float) (-x))
kono
parents:
diff changeset
429 link_error ();
kono
parents:
diff changeset
430
kono
parents:
diff changeset
431 if (x+(x-y)*1i != -(-x+(y-x)*1i))
kono
parents:
diff changeset
432 link_error ();
kono
parents:
diff changeset
433
kono
parents:
diff changeset
434 if (x+(x-y)*1i != -(-x-(x-y)*1i))
kono
parents:
diff changeset
435 link_error ();
kono
parents:
diff changeset
436
kono
parents:
diff changeset
437 if (ccosf(tanf(x)+sinf(y)*1i) != ccosf(-tanf(-x)+-sinf(-y)*1i))
kono
parents:
diff changeset
438 link_error ();
kono
parents:
diff changeset
439
kono
parents:
diff changeset
440 if (ccosf(tanf(x)+sinf(x-y)*1i) != ccosf(-tanf(-x)-sinf(y-x)*1i))
kono
parents:
diff changeset
441 link_error ();
kono
parents:
diff changeset
442
kono
parents:
diff changeset
443 if (-5+x*1i != -~(5+x*1i))
kono
parents:
diff changeset
444 link_error ();
kono
parents:
diff changeset
445
kono
parents:
diff changeset
446 if (tanf(x)+tanf(y)*1i != -~(tanf(-x)+tanf(y)*1i))
kono
parents:
diff changeset
447 link_error ();
kono
parents:
diff changeset
448 }
kono
parents:
diff changeset
449
kono
parents:
diff changeset
450 void test3f(__complex__ float x, __complex__ float y, int i)
kono
parents:
diff changeset
451 {
kono
parents:
diff changeset
452 if (ccosf(x) != ccosf(-x))
kono
parents:
diff changeset
453 link_error();
kono
parents:
diff changeset
454
kono
parents:
diff changeset
455 if (ccosf(ctanf(x)) != ccosf(ctanf(-x)))
kono
parents:
diff changeset
456 link_error();
kono
parents:
diff changeset
457
kono
parents:
diff changeset
458 if (ctanf(x-y) != -ctanf(y-x))
kono
parents:
diff changeset
459 link_error();
kono
parents:
diff changeset
460
kono
parents:
diff changeset
461 if (ccosf(x/y) != ccosf(-x/y))
kono
parents:
diff changeset
462 link_error();
kono
parents:
diff changeset
463
kono
parents:
diff changeset
464 if (ccosf(x/y) != ccosf(x/-y))
kono
parents:
diff changeset
465 link_error();
kono
parents:
diff changeset
466
kono
parents:
diff changeset
467 if (ccosf(x/ctanf(y)) != ccosf(-x/ctanf(-y)))
kono
parents:
diff changeset
468 link_error();
kono
parents:
diff changeset
469
kono
parents:
diff changeset
470 if (ccosf(x*y) != ccosf(-x*y))
kono
parents:
diff changeset
471 link_error();
kono
parents:
diff changeset
472
kono
parents:
diff changeset
473 if (ccosf(x*y) != ccosf(x*-y))
kono
parents:
diff changeset
474 link_error();
kono
parents:
diff changeset
475
kono
parents:
diff changeset
476 if (ccosf(ctanf(x)*y) != ccosf(ctanf(-x)*-y))
kono
parents:
diff changeset
477 link_error();
kono
parents:
diff changeset
478
kono
parents:
diff changeset
479 if (ccosf(ctanf(x/y)) != ccosf(-ctanf(x/-y)))
kono
parents:
diff changeset
480 link_error();
kono
parents:
diff changeset
481
kono
parents:
diff changeset
482 if (ccosf(i ? x : y) != ccosf(i ? -x : y))
kono
parents:
diff changeset
483 link_error();
kono
parents:
diff changeset
484
kono
parents:
diff changeset
485 if (ccosf(i ? x : y) != ccosf(i ? x : -y))
kono
parents:
diff changeset
486 link_error();
kono
parents:
diff changeset
487
kono
parents:
diff changeset
488 if (ccosf(i ? x : ctanf(y/x)) != ccosf(i ? -x : -ctanf(-y/x)))
kono
parents:
diff changeset
489 link_error();
kono
parents:
diff changeset
490
kono
parents:
diff changeset
491 if (~x != -~-x)
kono
parents:
diff changeset
492 link_error();
kono
parents:
diff changeset
493
kono
parents:
diff changeset
494 if (ccosf(~x) != ccosf(-~-x))
kono
parents:
diff changeset
495 link_error();
kono
parents:
diff changeset
496
kono
parents:
diff changeset
497 if (ctanf(~(x-y)) != -ctanf(~(y-x)))
kono
parents:
diff changeset
498 link_error();
kono
parents:
diff changeset
499
kono
parents:
diff changeset
500 if (ctanf(~(x/y)) != -ctanf(~(x/-y)))
kono
parents:
diff changeset
501 link_error();
kono
parents:
diff changeset
502
kono
parents:
diff changeset
503 #ifdef HAVE_C99_RUNTIME
kono
parents:
diff changeset
504 if (cargf(x) != atan2f(__imag__ x, __real__ x))
kono
parents:
diff changeset
505 link_error ();
kono
parents:
diff changeset
506 #endif
kono
parents:
diff changeset
507 }
kono
parents:
diff changeset
508
kono
parents:
diff changeset
509 void test1l(long double x)
kono
parents:
diff changeset
510 {
kono
parents:
diff changeset
511 if (cosl(x) != cosl(-x))
kono
parents:
diff changeset
512 link_error ();
kono
parents:
diff changeset
513
kono
parents:
diff changeset
514 if (cosl(x) != cosl(fabsl(x)))
kono
parents:
diff changeset
515 link_error ();
kono
parents:
diff changeset
516
kono
parents:
diff changeset
517 if (cosl(x) != cosl(-fabsl(x)))
kono
parents:
diff changeset
518 link_error ();
kono
parents:
diff changeset
519
kono
parents:
diff changeset
520 if (cosl(tanl(x)) != cosl(tanl(-fabsl(x))))
kono
parents:
diff changeset
521 link_error ();
kono
parents:
diff changeset
522
kono
parents:
diff changeset
523 #ifdef HAVE_C99_RUNTIME
kono
parents:
diff changeset
524 if (sinl(x)/cosl(x) != tanl(x))
kono
parents:
diff changeset
525 link_error ();
kono
parents:
diff changeset
526
kono
parents:
diff changeset
527 if (cosl(x)/sinl(x) != 1.0l/tanl(x))
kono
parents:
diff changeset
528 link_error ();
kono
parents:
diff changeset
529
kono
parents:
diff changeset
530 if (tanl(x)*cosl(x) != sinl(x))
kono
parents:
diff changeset
531 link_error ();
kono
parents:
diff changeset
532
kono
parents:
diff changeset
533 if (cosl(x)*tanl(x) != sinl(x))
kono
parents:
diff changeset
534 link_error ();
kono
parents:
diff changeset
535
kono
parents:
diff changeset
536 if (sinl(x)/tanl(x) != cosl(x))
kono
parents:
diff changeset
537 link_error ();
kono
parents:
diff changeset
538
kono
parents:
diff changeset
539 if (tanl(x)/sinl(x) != 1.0l/cosl(x))
kono
parents:
diff changeset
540 link_error ();
kono
parents:
diff changeset
541 #endif
kono
parents:
diff changeset
542 }
kono
parents:
diff changeset
543
kono
parents:
diff changeset
544 void test2l(long double x, long double y)
kono
parents:
diff changeset
545 {
kono
parents:
diff changeset
546 if (-tanl(x-y) != tanl(y-x))
kono
parents:
diff changeset
547 link_error ();
kono
parents:
diff changeset
548
kono
parents:
diff changeset
549 if (-sinl(x-y) != sinl(y-x))
kono
parents:
diff changeset
550 link_error ();
kono
parents:
diff changeset
551
kono
parents:
diff changeset
552 if (cosl(-x*y) != cosl(x*y))
kono
parents:
diff changeset
553 link_error ();
kono
parents:
diff changeset
554
kono
parents:
diff changeset
555 if (cosl(x*-y) != cosl(x*y))
kono
parents:
diff changeset
556 link_error ();
kono
parents:
diff changeset
557
kono
parents:
diff changeset
558 if (cosl(-x/y) != cosl(x/y))
kono
parents:
diff changeset
559 link_error ();
kono
parents:
diff changeset
560
kono
parents:
diff changeset
561 if (cosl(x/-y) != cosl(x/y))
kono
parents:
diff changeset
562 link_error ();
kono
parents:
diff changeset
563
kono
parents:
diff changeset
564 if (cosl(-fabsl(tanl(x/-y))) != cosl(tanl(x/y)))
kono
parents:
diff changeset
565 link_error ();
kono
parents:
diff changeset
566
kono
parents:
diff changeset
567 if (cosl(y<10 ? -x : y) != cosl(y<10 ? x : y))
kono
parents:
diff changeset
568 link_error ();
kono
parents:
diff changeset
569
kono
parents:
diff changeset
570 if (cosl(y<10 ? x : -y) != cosl(y<10 ? x : y))
kono
parents:
diff changeset
571 link_error ();
kono
parents:
diff changeset
572
kono
parents:
diff changeset
573 if (cosl(y<10 ? -fabsl(x) : tanl(x<20 ? -x : -fabsl(y)))
kono
parents:
diff changeset
574 != cosl(y<10 ? x : tanl(x<20 ? x : y)))
kono
parents:
diff changeset
575 link_error ();
kono
parents:
diff changeset
576
kono
parents:
diff changeset
577 if (cosl((y*=3, -x)) != cosl((y*=3,x)))
kono
parents:
diff changeset
578 link_error ();
kono
parents:
diff changeset
579
kono
parents:
diff changeset
580 if (cosl(-fabsl(tanl(x/-y))) != cosl(tanl(x/y)))
kono
parents:
diff changeset
581 link_error ();
kono
parents:
diff changeset
582
kono
parents:
diff changeset
583 if (cosl(copysignl(x,y)) != cosl(x))
kono
parents:
diff changeset
584 link_error ();
kono
parents:
diff changeset
585
kono
parents:
diff changeset
586 if (cosl(copysignl(-fabsl(x),y*=2)) != cosl((y*=2,x)))
kono
parents:
diff changeset
587 link_error ();
kono
parents:
diff changeset
588
kono
parents:
diff changeset
589 if (hypotl (x, 0) != fabsl(x))
kono
parents:
diff changeset
590 link_error ();
kono
parents:
diff changeset
591
kono
parents:
diff changeset
592 if (hypotl (0, x) != fabsl(x))
kono
parents:
diff changeset
593 link_error ();
kono
parents:
diff changeset
594
kono
parents:
diff changeset
595 if (hypotl (x, x) != fabsl(x) * __builtin_sqrtl(2))
kono
parents:
diff changeset
596 link_error ();
kono
parents:
diff changeset
597
kono
parents:
diff changeset
598 if (hypotl (-x, y) != hypotl (x, y))
kono
parents:
diff changeset
599 link_error ();
kono
parents:
diff changeset
600
kono
parents:
diff changeset
601 if (hypotl (x, -y) != hypotl (x, y))
kono
parents:
diff changeset
602 link_error ();
kono
parents:
diff changeset
603
kono
parents:
diff changeset
604 if (hypotl (-x, -y) != hypotl (x, y))
kono
parents:
diff changeset
605 link_error ();
kono
parents:
diff changeset
606
kono
parents:
diff changeset
607 if (hypotl (fabsl(x), y) != hypotl (x, y))
kono
parents:
diff changeset
608 link_error ();
kono
parents:
diff changeset
609
kono
parents:
diff changeset
610 if (hypotl (x, fabsl(y)) != hypotl (x, y))
kono
parents:
diff changeset
611 link_error ();
kono
parents:
diff changeset
612
kono
parents:
diff changeset
613 if (hypotl (fabsl(x), fabsl(y)) != hypotl (x, y))
kono
parents:
diff changeset
614 link_error ();
kono
parents:
diff changeset
615
kono
parents:
diff changeset
616 if (hypotl (-fabsl(-x), -fabsl(fabsl(fabsl(-y)))) != hypotl (x, y))
kono
parents:
diff changeset
617 link_error ();
kono
parents:
diff changeset
618
kono
parents:
diff changeset
619 if (hypotl (-x, 0) != fabsl(x))
kono
parents:
diff changeset
620 link_error ();
kono
parents:
diff changeset
621
kono
parents:
diff changeset
622 if (hypotl (-x, x) != fabsl(x) * __builtin_sqrtl(2))
kono
parents:
diff changeset
623 link_error ();
kono
parents:
diff changeset
624
kono
parents:
diff changeset
625 if (hypotl (purel(x), -purel(x)) != fabsl(purel(x)) * __builtin_sqrtl(2))
kono
parents:
diff changeset
626 link_error ();
kono
parents:
diff changeset
627
kono
parents:
diff changeset
628 if (hypotl (tanl(-x), tanl(-fabsl(y))) != hypotl (tanl(x), tanl(y)))
kono
parents:
diff changeset
629 link_error ();
kono
parents:
diff changeset
630
kono
parents:
diff changeset
631 if (fminl (fmaxl(x,y),y) != y)
kono
parents:
diff changeset
632 link_error ();
kono
parents:
diff changeset
633
kono
parents:
diff changeset
634 if (fminl (fmaxl(y,x),y) != y)
kono
parents:
diff changeset
635 link_error ();
kono
parents:
diff changeset
636
kono
parents:
diff changeset
637 if (fminl (x,fmaxl(x,y)) != x)
kono
parents:
diff changeset
638 link_error ();
kono
parents:
diff changeset
639
kono
parents:
diff changeset
640 if (fminl (x,fmaxl(y,x)) != x)
kono
parents:
diff changeset
641 link_error ();
kono
parents:
diff changeset
642
kono
parents:
diff changeset
643 if (fmaxl (fminl(x,y),y) != y)
kono
parents:
diff changeset
644 link_error ();
kono
parents:
diff changeset
645
kono
parents:
diff changeset
646 if (fmaxl (fminl(y,x),y) != y)
kono
parents:
diff changeset
647 link_error ();
kono
parents:
diff changeset
648
kono
parents:
diff changeset
649 if (fmaxl (x,fminl(x,y)) != x)
kono
parents:
diff changeset
650 link_error ();
kono
parents:
diff changeset
651
kono
parents:
diff changeset
652 if (fmaxl (x,fminl(y,x)) != x)
kono
parents:
diff changeset
653 link_error ();
kono
parents:
diff changeset
654
kono
parents:
diff changeset
655 if ((__complex__ long double) x != -(__complex__ long double) (-x))
kono
parents:
diff changeset
656 link_error ();
kono
parents:
diff changeset
657
kono
parents:
diff changeset
658 if (x+(x-y)*1i != -(-x+(y-x)*1i))
kono
parents:
diff changeset
659 link_error ();
kono
parents:
diff changeset
660
kono
parents:
diff changeset
661 if (x+(x-y)*1i != -(-x-(x-y)*1i))
kono
parents:
diff changeset
662 link_error ();
kono
parents:
diff changeset
663
kono
parents:
diff changeset
664 if (ccosl(tanl(x)+sinl(y)*1i) != ccosl(-tanl(-x)+-sinl(-y)*1i))
kono
parents:
diff changeset
665 link_error ();
kono
parents:
diff changeset
666
kono
parents:
diff changeset
667 if (ccosl(tanl(x)+sinl(x-y)*1i) != ccosl(-tanl(-x)-sinl(y-x)*1i))
kono
parents:
diff changeset
668 link_error ();
kono
parents:
diff changeset
669
kono
parents:
diff changeset
670 if (-5+x*1i != -~(5+x*1i))
kono
parents:
diff changeset
671 link_error ();
kono
parents:
diff changeset
672
kono
parents:
diff changeset
673 if (tanl(x)+tanl(y)*1i != -~(tanl(-x)+tanl(y)*1i))
kono
parents:
diff changeset
674 link_error ();
kono
parents:
diff changeset
675 }
kono
parents:
diff changeset
676
kono
parents:
diff changeset
677 void test3l(__complex__ long double x, __complex__ long double y, int i)
kono
parents:
diff changeset
678 {
kono
parents:
diff changeset
679 if (ccosl(x) != ccosl(-x))
kono
parents:
diff changeset
680 link_error();
kono
parents:
diff changeset
681
kono
parents:
diff changeset
682 if (ccosl(ctanl(x)) != ccosl(ctanl(-x)))
kono
parents:
diff changeset
683 link_error();
kono
parents:
diff changeset
684
kono
parents:
diff changeset
685 if (ctanl(x-y) != -ctanl(y-x))
kono
parents:
diff changeset
686 link_error();
kono
parents:
diff changeset
687
kono
parents:
diff changeset
688 if (ccosl(x/y) != ccosl(-x/y))
kono
parents:
diff changeset
689 link_error();
kono
parents:
diff changeset
690
kono
parents:
diff changeset
691 if (ccosl(x/y) != ccosl(x/-y))
kono
parents:
diff changeset
692 link_error();
kono
parents:
diff changeset
693
kono
parents:
diff changeset
694 if (ccosl(x/ctanl(y)) != ccosl(-x/ctanl(-y)))
kono
parents:
diff changeset
695 link_error();
kono
parents:
diff changeset
696
kono
parents:
diff changeset
697 if (ccosl(x*y) != ccosl(-x*y))
kono
parents:
diff changeset
698 link_error();
kono
parents:
diff changeset
699
kono
parents:
diff changeset
700 if (ccosl(x*y) != ccosl(x*-y))
kono
parents:
diff changeset
701 link_error();
kono
parents:
diff changeset
702
kono
parents:
diff changeset
703 if (ccosl(ctanl(x)*y) != ccosl(ctanl(-x)*-y))
kono
parents:
diff changeset
704 link_error();
kono
parents:
diff changeset
705
kono
parents:
diff changeset
706 if (ccosl(ctanl(x/y)) != ccosl(-ctanl(x/-y)))
kono
parents:
diff changeset
707 link_error();
kono
parents:
diff changeset
708
kono
parents:
diff changeset
709 if (ccosl(i ? x : y) != ccosl(i ? -x : y))
kono
parents:
diff changeset
710 link_error();
kono
parents:
diff changeset
711
kono
parents:
diff changeset
712 if (ccosl(i ? x : y) != ccosl(i ? x : -y))
kono
parents:
diff changeset
713 link_error();
kono
parents:
diff changeset
714
kono
parents:
diff changeset
715 if (ccosl(i ? x : ctanl(y/x)) != ccosl(i ? -x : -ctanl(-y/x)))
kono
parents:
diff changeset
716 link_error();
kono
parents:
diff changeset
717
kono
parents:
diff changeset
718 if (~x != -~-x)
kono
parents:
diff changeset
719 link_error();
kono
parents:
diff changeset
720
kono
parents:
diff changeset
721 if (ccosl(~x) != ccosl(-~-x))
kono
parents:
diff changeset
722 link_error();
kono
parents:
diff changeset
723
kono
parents:
diff changeset
724 if (ctanl(~(x-y)) != -ctanl(~(y-x)))
kono
parents:
diff changeset
725 link_error();
kono
parents:
diff changeset
726
kono
parents:
diff changeset
727 if (ctanl(~(x/y)) != -ctanl(~(x/-y)))
kono
parents:
diff changeset
728 link_error();
kono
parents:
diff changeset
729
kono
parents:
diff changeset
730 #ifdef HAVE_C99_RUNTIME
kono
parents:
diff changeset
731 if (cargl(x) != atan2l(__imag__ x, __real__ x))
kono
parents:
diff changeset
732 link_error ();
kono
parents:
diff changeset
733 #endif
kono
parents:
diff changeset
734 }
kono
parents:
diff changeset
735
kono
parents:
diff changeset
736 int main()
kono
parents:
diff changeset
737 {
kono
parents:
diff changeset
738 test1 (1.0);
kono
parents:
diff changeset
739 test2 (1.0, 2.0);
kono
parents:
diff changeset
740
kono
parents:
diff changeset
741 test1f (1.0f);
kono
parents:
diff changeset
742 test2f (1.0f, 2.0f);
kono
parents:
diff changeset
743
kono
parents:
diff changeset
744 test1l (1.0l);
kono
parents:
diff changeset
745 test2l (1.0l, 2.0l);
kono
parents:
diff changeset
746
kono
parents:
diff changeset
747 return 0;
kono
parents:
diff changeset
748 }
kono
parents:
diff changeset
749