@@ -21,72 +21,25 @@ namespace LIBC_NAMESPACE_DECL {
2121// Table is generated with Sollya as follows:
2222// > display = hexadecimmal;
2323// > for k from 0 to 63 do { round(sin(k * pi/32), SG, RN); };
24- const float SIN_K_PI_OVER_32[64 ] = {0 ,
25- 0x1 .917a6cp-4 ,
26- 0x1 .8f8b84p-3 ,
27- 0x1 .294062p-2 ,
28- 0x1 .87de2ap-2 ,
29- 0x1 .e2b5d4p -2 ,
30- 0x1 .1c73b4p-1 ,
31- 0x1 .44cf32p-1 ,
32- 0x1 .6a09e6p-1 ,
33- 0x1 .8bc806p-1 ,
34- 0x1 .a9b662p -1 ,
35- 0x1 .c38b3p -1 ,
36- 0x1 .d906bcp -1 ,
37- 0x1 .e9f416p -1 ,
38- 0x1 .f6297cp -1 ,
39- 0x1 .fd88dap -1 ,
40- 0x1p0,
41- 0x1 .fd88dap -1 ,
42- 0x1 .f6297cp -1 ,
43- 0x1 .e9f416p -1 ,
44- 0x1 .d906bcp -1 ,
45- 0x1 .c38b3p -1 ,
46- 0x1 .a9b662p -1 ,
47- 0x1 .8bc806p-1 ,
48- 0x1 .6a09e6p-1 ,
49- 0x1 .44cf32p-1 ,
50- 0x1 .1c73b4p-1 ,
51- 0x1 .e2b5d4p -2 ,
52- 0x1 .87de2ap-2 ,
53- 0x1 .294062p-2 ,
54- 0x1 .8f8b84p-3 ,
55- 0x1 .917a6cp-4 ,
56- 0 ,
57- -0x1 .917a6cp-4 ,
58- -0x1 .8f8b84p-3 ,
59- -0x1 .294062p-2 ,
60- -0x1 .87de2ap-2 ,
61- -0x1 .e2b5d4p -2 ,
62- -0x1 .1c73b4p-1 ,
63- -0x1 .44cf32p-1 ,
64- -0x1 .6a09e6p-1 ,
65- -0x1 .8bc806p-1 ,
66- -0x1 .a9b662p -1 ,
67- -0x1 .c38b3p -1 ,
68- -0x1 .d906bcp -1 ,
69- -0x1 .e9f416p -1 ,
70- -0x1 .f6297ep -1 ,
71- -0x1 .fd88dap -1 ,
72- -0x1p0,
73- -0x1 .fd88dap -1 ,
74- -0x1 .f6297cp -1 ,
75- -0x1 .e9f416p -1 ,
76- -0x1 .d906bcp -1 ,
77- -0x1 .c38b3p -1 ,
78- -0x1 .a9b662p -1 ,
79- -0x1 .8bc806p-1 ,
80- -0x1 .6a09e6p-1 ,
81- -0x1 .44cf32p-1 ,
82- -0x1 .1c73b4p-1 ,
83- -0x1 .e2b5d4p -2 ,
84- -0x1 .87de2ap-2 ,
85- -0x1 .294062p-2 ,
86- -0x1 .8f8b84p-3 ,
87- -0x1 .917a6cp-4 };
88-
89- int32_t range_reduction (float x, float &y) {
24+ static constexpr float SIN_K_PI_OVER_32[64 ] = {
25+ 0x0 .0p0, 0x1 .917a6cp-4 , 0x1 .8f8b84p-3 , 0x1 .294062p-2 ,
26+ 0x1 .87de2ap-2 , 0x1 .e2b5d4p -2 , 0x1 .1c73b4p-1 , 0x1 .44cf32p-1 ,
27+ 0x1 .6a09e6p-1 , 0x1 .8bc806p-1 , 0x1 .a9b662p -1 , 0x1 .c38b3p -1 ,
28+ 0x1 .d906bcp -1 , 0x1 .e9f416p -1 , 0x1 .f6297cp -1 , 0x1 .fd88dap -1 ,
29+ 0x1p0, 0x1 .fd88dap -1 , 0x1 .f6297cp -1 , 0x1 .e9f416p -1 ,
30+ 0x1 .d906bcp -1 , 0x1 .c38b3p -1 , 0x1 .a9b662p -1 , 0x1 .8bc806p-1 ,
31+ 0x1 .6a09e6p-1 , 0x1 .44cf32p-1 , 0x1 .1c73b4p-1 , 0x1 .e2b5d4p -2 ,
32+ 0x1 .87de2ap-2 , 0x1 .294062p-2 , 0x1 .8f8b84p-3 , 0x1 .917a6cp-4 ,
33+ 0x0 .0p0, -0x1 .917a6cp-4 , -0x1 .8f8b84p-3 , -0x1 .294062p-2 ,
34+ -0x1 .87de2ap-2 , -0x1 .e2b5d4p -2 , -0x1 .1c73b4p-1 , -0x1 .44cf32p-1 ,
35+ -0x1 .6a09e6p-1 , -0x1 .8bc806p-1 , -0x1 .a9b662p -1 , -0x1 .c38b3p -1 ,
36+ -0x1 .d906bcp -1 , -0x1 .e9f416p -1 , -0x1 .f6297ep -1 , -0x1 .fd88dap -1 ,
37+ -0x1p0, -0x1 .fd88dap -1 , -0x1 .f6297cp -1 , -0x1 .e9f416p -1 ,
38+ -0x1 .d906bcp -1 , -0x1 .c38b3p -1 , -0x1 .a9b662p -1 , -0x1 .8bc806p-1 ,
39+ -0x1 .6a09e6p-1 , -0x1 .44cf32p-1 , -0x1 .1c73b4p-1 , -0x1 .e2b5d4p -2 ,
40+ -0x1 .87de2ap-2 , -0x1 .294062p-2 , -0x1 .8f8b84p-3 , -0x1 .917a6cp-4 };
41+
42+ static LIBC_INLINE int32_t range_reduction (float x, float &y) {
9043 float kf = fputil::nearest_integer (x * 32 );
9144 y = fputil::multiply_add<float >(x, 32.0 , -kf);
9245
0 commit comments