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