fnmatch: fix "[/b" test
[libc-test] / src / math / fenv.c
1 #include "test.h"
2 #include <math.h>
3 #include <stdint.h>
4 #include <fenv.h>
5 #include <stdio.h>
6 #include <float.h>
7
8
9 void test_fenv()
10 {
11         int r;
12
13         r = fesetround(FE_UPWARD);
14         if (r != 0)
15                 error("fesetround %d\n", r);
16         r = fegetround();
17         if (r != FE_UPWARD)
18                 error("fegetround %x wanted %x\n", r, FE_UPWARD);
19         r = fesetround(FE_TONEAREST);
20         if (r != 0)
21                 error("fesetround %d\n", r);
22         r = fegetround();
23         if (r != FE_TONEAREST)
24                 error("fegetround %x wanted %x\n", r, FE_TONEAREST);
25 }
26
27 void test_fenv_except()
28 {
29         int i,r;
30
31         for (i = 0; i < 64; i++) {
32                 feclearexcept(FE_ALL_EXCEPT);
33
34                 r = feraiseexcept(i);
35                 if (r)
36                         error("feraise %d returned %d\n", i, r);
37                 r = fetestexcept(FE_ALL_EXCEPT);
38                 if (r != i)
39                         error("feraise want %d got %d\n", i, r);
40         }
41 }
42
43 void bench_feraiseexcept(int N)
44 {
45         int i;
46         for (i = 0; i < N; i++) {
47                 feraiseexcept(i&63);
48         }
49 }
50
51 void bench_fesetround(int N)
52 {
53         int i;
54         int r = 0;
55
56         for (i = 0; i < N; i++) {
57                 r ^= 0x400;
58                 fesetround(r);
59         }
60 }