clean up compiler warnings
[libc-test] / src / math / scalbn.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 static struct {
9         double x;
10         int n;
11         double y;
12 } t[] = {
13         0.0, 0, 0.0,
14         -0.0, 0, -0.0,
15         0.0, -1234567, 0.0,
16         -0.0, 1234567, -0.0,
17         0x1.234p0, 13, 0x1.234p13,
18         0x1.234p0, -13, 0x1.234p-13,
19         -0x1.234p1, 137, -0x1.234p138,
20         -0x1.234p1, -137, -0x1.234p-136,
21         0x1.234p1023, 1, INFINITY,
22         0x1.234p1023, -1022, 0x1.234p1,
23         0x1.234p1023, -1023, 0x1.234p0,
24         0x1.234p1023, -1024, 0x1.234p-1,
25         0x1.234p1023, -2023, 0x1.234p-1000,
26         0x1.234p1023, -2045, 0x1.234p-1022,
27         0x1.234p1023, -2046, 0x1.234p-1023,
28         0x1.234p1023, -2048, 0x1.234p-1025,
29         0x1.234p1023, -2049, 0x1.234p-1026,
30         0x1p1023, -2096, 0x1p-1073,
31         0x1p1023, -2097, 0x1p-1074,
32         0x1p1023, -2098, 0,
33         0x1.234p-1022, 1022, 0x1.234p0,
34         0x1.234p-1022, 2045, 0x1.234p1023,
35         0x1p-1074, 2097, 0x1p1023,
36         0x1p-1074, 2098, INFINITY,
37         0x1p-1074, 1, 0x1p-1073,
38         0x1p-1073, -1, 0x1p-1074,
39         0x1p-1074, -1, 0,
40 };
41
42 void test_scalbn()
43 {
44         int i;
45         double y;
46
47         for (i = 0; i < sizeof t/sizeof *t; i++) {
48                 y = scalbn(t[i].x, t[i].n);
49                 if (y != t[i].y)
50                         error("scalbn(%a,%d) want %a got %a\n", t[i].x, t[i].n, t[i].y, y);
51         }
52 }
53
54 void bench_scalbn_simple(int N)
55 {
56         int i;
57         volatile double y;
58
59         for (i = 0; i < N; i++) {
60                 y = scalbn(1.25, 73);
61         }
62 }
63
64 void bench_scalbn_hard(int N)
65 {
66         int i;
67         volatile double y;
68
69         for (i = 0; i < N; i++) {
70                 y = scalbn(0x1.23p-1050, 2070);
71         }
72 }