source: rtems/testsuites/libtests/math/domath.h @ 80d99aa

4.11
Last change on this file since 80d99aa was 80d99aa, checked in by Sebastian Huber <sebastian.huber@…>, on Dec 1, 2014 at 7:20:55 AM

libtests/complex,math: Prevent optimizations

For constant arguments GCC calculates the values of the math library
functions at compile-time.

close #1741

  • Property mode set to 100644
File size: 9.2 KB
Line 
1/*
2 * Copyright (c) 2010, 2011 by
3 * Ralf Corsepius, Ulm/Germany. All rights reserved.
4 *
5 * Permission to use, copy, modify, and distribute this software
6 * is freely granted, provided that this notice is preserved.
7 */
8
9#include <math.h>
10#include <stdio.h>
11
12#ifndef M_PI_2
13#define M_PI_2 1.57079632679489661923
14#endif
15
16#ifndef M_PI_4
17#define M_PI_4 0.78539816339744830962
18#endif
19
20#define CONCAT(x, y) x ## y
21#define XCONCAT(x, y) CONCAT(x, y)
22
23#define STRINGIFY(x, y) # x # y
24#define XSTRINGIFY(x, y) STRINGIFY(x, y)
25
26#ifdef SUFFIX
27  #define FUNC(name) XCONCAT(name, SUFFIX)
28  #define STR(name) XSTRINGIFY(name, SUFFIX)
29#else
30  #define FUNC(name) XCONCAT(name, )
31  #define STR(name) XSTRINGIFY(name, ) " "
32#endif
33
34extern void FUNC(domath) (void);
35
36volatile int ia;
37
38volatile FTYPE fa;
39
40volatile FTYPE fb;
41
42volatile FTYPE fc;
43
44void
45FUNC(domath) (void)
46{
47#ifndef PROVIDE_EMPTY_FUNC
48  FTYPE f1;
49  FTYPE f2;
50
51  int i1;
52
53  fa = 0.0;
54  f1 = FUNC(acos) (fa);
55  fprintf( stdout, STR(acos) "          : " PRI "\n", f1);
56
57  fa = 0.0;
58  f1 = FUNC(acosh) (fa);
59  fprintf( stdout, STR(acosh) "         : " PRI "\n", f1);
60
61  fa = 1.0;
62  f1 = FUNC(asin) (fa);
63  fprintf( stdout, STR(asin) "          : " PRI "\n", f1);
64
65  fa = 1.0;
66  f1 = FUNC(asinh) (fa);
67  fprintf( stdout, STR(asinh) "         : " PRI "\n", f1);
68
69  fa = M_PI_4;
70  f1 = FUNC(atan) (fa);
71  fprintf( stdout, STR(atan) "          : " PRI "\n", f1);
72
73  fa = 2.3;
74  fb = 2.3;
75  f1 = FUNC(atan2) (fa, fb);
76  fprintf( stdout, STR(atan2) "         : " PRI "\n", f1);
77
78  fa = 1.0;
79  f1 = FUNC(atanh) (fa);
80  fprintf( stdout, STR(atanh) "         : " PRI "\n", f1);
81
82  fa = 27.0;
83  f1 = FUNC(cbrt) (fa);
84  fprintf( stdout, STR(cbrt) "          : " PRI "\n", f1);
85
86  fa = 3.5;
87  f1 = FUNC(ceil) (fa);
88  fprintf( stdout, STR(ceil) "          : " PRI "\n", f1);
89
90  fa = 3.5;
91  fb = -2.5;
92  f1 = FUNC(copysign) (fa, fb);
93  fprintf( stdout, STR(copysign) "      : " PRI "\n", f1);
94
95  fa = M_PI_2;
96  f1 = FUNC(cos) (fa);
97  fprintf( stdout, STR(cos) "           : " PRI "\n", f1);
98
99  fa = M_PI_2;
100  f1 = FUNC(cosh) (fa);
101  fprintf( stdout, STR(cosh) "          : " PRI "\n", f1);
102
103  fa = 42.0;
104  f1 = FUNC(erf) (fa);
105  fprintf( stdout, STR(erf) "           : " PRI "\n", f1);
106
107  fa = 42.0;
108  f1 = FUNC(erfc) (fa);
109  fprintf( stdout, STR(erfc) "          : " PRI "\n", f1);
110
111  fa = 0.42;
112  f1 = FUNC(exp) (fa);
113  fprintf( stdout, STR(exp) "           : " PRI "\n", f1);
114
115  fa = 0.42;
116  f1 = FUNC(exp2) (fa);
117  fprintf( stdout, STR(exp2) "          : " PRI "\n", f1);
118
119  fa = 0.00042;
120  f1 = FUNC(expm1) (fa);
121  fprintf( stdout, STR(expm1) "         : " PRI "\n", f1);
122
123  fa = -1.123;
124  f1 = FUNC(fabs) (fa);
125  fprintf( stdout, STR(fabs) "          : " PRI "\n", f1);
126
127  fa = 1.123;
128  fb = 1.123;
129  f1 = FUNC(fdim) (fa, fb);
130  fprintf( stdout, STR(fdim) "          : " PRI "\n", f1);
131
132  fa = 0.5;
133  f1 = FUNC(floor) (fa);
134  fprintf( stdout, STR(floor) "         : " PRI "\n", f1);
135  fa = -0.5;
136  f1 = FUNC(floor) (fa);
137  fprintf( stdout, STR(floor) "         : " PRI "\n", f1);
138
139  fa = 2.1;
140  fb = 2.2;
141  fc = 3.01;
142  f1 = FUNC(fma) (fa, fb, fc);
143  fprintf( stdout, STR(fma) "           : " PRI "\n", f1);
144
145  fa = -0.42;
146  fb = 0.42;
147  f1 = FUNC(fmax) (fa, fb);
148  fprintf( stdout, STR(fmax) "          : " PRI "\n", f1);
149
150  fa = -0.42;
151  fb = 0.42;
152  f1 = FUNC(fmin) (fa, fb);
153  fprintf( stdout, STR(fmin) "          : " PRI "\n", f1);
154
155  fa = 42.0;
156  fb = 3.0;
157  f1 = FUNC(fmod) (fa, fb);
158  fprintf( stdout, STR(fmod) "          : " PRI "\n", f1);
159
160  /* no type-specific variant */
161  fa = 1.0;
162  i1 = fpclassify(fa);
163  fprintf( stdout, "fpclassify     : %d\n", i1);
164
165  fa = 42.0;
166  f1 = FUNC(frexp) (fa, &i1);
167  fprintf( stdout, STR(frexp) "         : " PRI "\n", f1);
168
169  fa = 42.0;
170  fb = 42.0;
171  f1 = FUNC(hypot) (fa, fb);
172  fprintf( stdout, STR(hypot) "         : " PRI "\n", f1);
173
174  fa = 42.0;
175  i1 = FUNC(ilogb) (fa);
176  fprintf( stdout, STR(ilogb) "         : %d\n", i1);
177
178  /* no type-specific variant */
179  fa = 3.0;
180  i1 = isfinite(fa);
181  fprintf( stdout, "isfinite       : %d\n", i1);
182
183  /* no type-specific variant */
184  fa = 3.0;
185  fb = 3.1;
186  i1 = isgreater(fa, fb);
187  fprintf( stdout, "isgreater      : %d\n", i1);
188
189  /* no type-specific variant */
190  fa = 3.0;
191  fb = 3.1;
192  i1 = isgreaterequal(fa, fb);
193  fprintf( stdout, "isgreaterequal : %d\n", i1);
194
195  /* no type-specific variant */
196  fa = 3.0;
197  i1 = isinf(fa);
198  fprintf( stdout, "isinf          : %d\n", i1);
199
200  /* no type-specific variant */
201  fa = 3.0;
202  fb = 3.1;
203  i1 = isless(fa, fb);
204  fprintf( stdout, "isless         : %d\n", i1);
205
206  /* no type-specific variant */
207  fa = 3.0;
208  fb = 3.1;
209  i1 = islessequal(fa, fb);
210  fprintf( stdout, "islessequal    : %d\n", i1);
211
212  /* no type-specific variant */
213  fa = 3.0;
214  fb = 3.1;
215  i1 = islessgreater(fa, fb);
216  fprintf( stdout, "islessgreater  : %d\n", i1);
217
218  /* no type-specific variant */
219  fa = 0.0;
220  i1 = isnan(fa);
221  fprintf( stdout, "isnan          : %d\n", i1);
222
223  /* no type-specific variant */
224  fa = 3.0;
225  i1 = isnormal(fa);
226  fprintf( stdout, "isnormal       : %d\n", i1);
227
228  /* no type-specific variant */
229  fa = 1.0;
230  fb = 2.0;
231  f1 = isunordered(fa, fb);
232  fprintf( stdout, "isunordered    : %d\n", i1);
233
234  fa = 1.2;
235  f1 = FUNC(j0) (fa);
236  fprintf( stdout, STR(j0) "            : " PRI "\n", f1);
237
238  fa = 1.2;
239  f1 = FUNC(j1) (fa);
240  fprintf( stdout, STR(j1) "            : " PRI "\n", f1);
241
242  ia = 2;
243  fa = 1.2;
244  f1 = FUNC(jn) (ia, fa);
245  fprintf( stdout, STR(jn) "            : " PRI "\n", f1);
246
247  fa = 1.2;
248  ia = 3;
249  f1 = FUNC(ldexp) (fa, ia);
250  fprintf( stdout, STR(ldexp) "         : " PRI "\n", f1);
251
252  fa = 42.0;
253  f1 = FUNC(lgamma) (fa);
254  fprintf( stdout, STR(lgamma) "        : " PRI "\n", f1);
255
256  fa = -0.5;
257  f1 = FUNC(llrint) (fa);
258  fprintf( stdout, STR(llrint) "        : " PRI "\n", f1);
259  fa = 0.5;
260  f1 = FUNC(llrint) (fa);
261  fprintf( stdout, STR(llrint) "        : " PRI "\n", f1);
262
263  fa = -0.5;
264  f1 = FUNC(llround) (fa);
265  fprintf( stdout, STR(lround) "        : " PRI "\n", f1);
266  fa = 0.5;
267  f1 = FUNC(llround) (fa);
268  fprintf( stdout, STR(lround) "        : " PRI "\n", f1);
269
270  fa = 42.0;
271  f1 = FUNC(log) (fa);
272  fprintf( stdout, STR(log) "           : " PRI "\n", f1);
273
274  fa = 42.0;
275  f1 = FUNC(log10) (fa);
276  fprintf( stdout, STR(log10) "         : " PRI "\n", f1);
277
278  fa = 42.0;
279  f1 = FUNC(log1p) (fa);
280  fprintf( stdout, STR(log1p) "         : " PRI "\n", f1);
281
282  fa = 42.0;
283  f1 = FUNC(log2) (fa);
284  fprintf( stdout, STR(log2) "          : " PRI "\n", f1);
285
286  fa = 42.0;
287  f1 = FUNC(logb) (fa);
288  fprintf( stdout, STR(logb) "          : " PRI "\n", f1);
289
290  fa = -0.5;
291  f1 = FUNC(lrint) (fa);
292  fprintf( stdout, STR(lrint) "         : " PRI "\n", f1);
293  fa = 0.5;
294  f1 = FUNC(lrint) (fa);
295  fprintf( stdout, STR(lrint) "         : " PRI "\n", f1);
296
297  fa = -0.5;
298  f1 = FUNC(lround) (fa);
299  fprintf( stdout, STR(lround) "        : " PRI "\n", f1);
300  fa = 0.5;
301  f1 = FUNC(lround) (fa);
302  fprintf( stdout, STR(lround) "        : " PRI "\n", f1);
303
304  fa = 42.0;
305  f1 = FUNC(modf) (fa, &f2);
306  fprintf( stdout, STR(lmodf) "         : " PRI "\n", f1);
307
308  f1 = FUNC(nan) ("");
309  fprintf( stdout, STR(nan) "           : " PRI "\n", f1);
310
311  fa = 1.5;
312  f1 = FUNC(nearbyint) (fa);
313  fprintf( stdout, STR(nearbyint) "     : " PRI "\n", f1);
314
315  fa = 1.5;
316  fb = 2.0;
317  f1 = FUNC(nextafter) (fa, fb);
318  fprintf( stdout, STR(nextafter) "     : " PRI "\n", f1);
319
320  fa = 3.01;
321  fb = 2.0;
322  f1 = FUNC(pow) (fa, fb);
323  fprintf( stdout, STR(pow) "           : " PRI "\n", f1);
324
325  fa = 3.01;
326  fb = 2.0;
327  f1 = FUNC(remainder) (fa, fb);
328  fprintf( stdout, STR(remainder) "     : " PRI "\n", f1);
329
330  fa = 29.0;
331  fb = 3.0;
332  f1 = FUNC(remquo) (fa, fb, &i1);
333  fprintf( stdout, STR(remquo) "        : " PRI "\n", f1);
334
335  fa = 0.5;
336  f1 = FUNC(rint) (fa);
337  fprintf( stdout, STR(rint) "          : " PRI "\n", f1);
338  fa = -0.5;
339  f1 = FUNC(rint) (fa);
340  fprintf( stdout, STR(rint) "          : " PRI "\n", f1);
341
342  fa = 0.5;
343  f1 = FUNC(round) (fa);
344  fprintf( stdout, STR(round) "         : " PRI "\n", f1);
345  fa = -0.5;
346  f1 = FUNC(round) (fa);
347  fprintf( stdout, STR(round) "         : " PRI "\n", f1);
348
349  fa = 1.2;
350  ia = 3;
351  f1 = FUNC(scalbln) (fa, ia);
352  fprintf( stdout, STR(scalbln) "       : " PRI "\n", f1);
353
354  fa = 1.2;
355  ia = 3;
356  f1 = FUNC(scalbn) (fa, ia);
357  fprintf( stdout, STR(scalbn) "        : " PRI "\n", f1);
358
359  /* no type-specific variant */
360  fa = 1.0;
361  i1 = signbit(fa);
362  fprintf( stdout, "signbit        : %i\n", i1);
363
364  fa = M_PI_4;
365  f1 = FUNC(sin) (fa);
366  fprintf( stdout, STR(sin) "           : " PRI "\n", f1);
367
368  fa = M_PI_4;
369  f1 = FUNC(sinh) (fa);
370  fprintf( stdout, STR(sinh) "          : " PRI "\n", f1);
371
372  fa = 9.0;
373  f1 = FUNC(sqrt) (fa);
374  fprintf( stdout, STR(sqrt) "          : " PRI "\n", f1);
375
376  fa = M_PI_4;
377  f1 = FUNC(tan) (fa);
378  fprintf( stdout, STR(tan) "           : " PRI "\n", f1);
379
380  fa = M_PI_4;
381  f1 = FUNC(tanh) (fa);
382  fprintf( stdout, STR(tanh) "          : " PRI "\n", f1);
383
384  fa = 2.1;
385  f1 = FUNC(tgamma) (fa);
386  fprintf( stdout, STR(tgamma) "        : " PRI "\n", f1);
387
388  fa = 3.5;
389  f1 = FUNC(trunc) (fa);
390  fprintf( stdout, STR(trunc) "         : " PRI "\n", f1);
391
392  fa = 1.2;
393  f1 = FUNC(y0) (fa);
394  fprintf( stdout, STR(y0) "            : " PRI "\n", f1);
395
396  fa = 1.2;
397  f1 = FUNC(y1) (fa);
398  fprintf( stdout, STR(y1) "            : " PRI "\n", f1);
399
400  ia = 3;
401  fa = 1.2;
402  f1 = FUNC(yn) (ia, fa);
403  fprintf( stdout, STR(yn) "            : " PRI "\n", f1);
404#endif
405}
Note: See TracBrowser for help on using the repository browser.