Warning: This file is not a C or C++ file. It does not have highlighting.
1 | //===-- Range reduction for double precision sin/cos/tan --------*- C++ -*-===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLVM_LIBC_SRC_MATH_GENERIC_RANGE_REDUCTION_DOUBLE_NOFMA_H |
10 | #define LLVM_LIBC_SRC_MATH_GENERIC_RANGE_REDUCTION_DOUBLE_NOFMA_H |
11 | |
12 | #include "src/__support/FPUtil/FPBits.h" |
13 | #include "src/__support/FPUtil/double_double.h" |
14 | #include "src/__support/FPUtil/multiply_add.h" |
15 | #include "src/__support/FPUtil/nearest_integer.h" |
16 | #include "src/__support/common.h" |
17 | #include "src/__support/macros/config.h" |
18 | #include "src/__support/macros/optimization.h" |
19 | #include "src/math/generic/range_reduction_double_common.h" |
20 | |
21 | namespace LIBC_NAMESPACE_DECL { |
22 | |
23 | using fputil::DoubleDouble; |
24 | |
25 | LIBC_INLINE unsigned LargeRangeReduction::fast(double x, DoubleDouble &u) { |
26 | using FPBits = typename fputil::FPBits<double>; |
27 | FPBits xbits(x); |
28 | |
29 | int x_e_m62 = xbits.get_biased_exponent() - (FPBits::EXP_BIAS + 62); |
30 | idx = static_cast<unsigned>((x_e_m62 >> 4) + 3); |
31 | // Scale x down by 2^(-(16 * (idx - 3)) |
32 | xbits.set_biased_exponent((x_e_m62 & 15) + FPBits::EXP_BIAS + 62); |
33 | // 2^62 <= |x_reduced| < 2^(62 + 16) = 2^78 |
34 | x_reduced = xbits.get_val(); |
35 | // x * c_hi = ph.hi + ph.lo exactly. |
36 | DoubleDouble x_split = fputil::split(x_reduced); |
37 | DoubleDouble ph = fputil::exact_mult<double, SPLIT>( |
38 | x_split, x_reduced, ONE_TWENTY_EIGHT_OVER_PI[idx][0]); |
39 | // x * c_mid = pm.hi + pm.lo exactly. |
40 | DoubleDouble pm = fputil::exact_mult<double, SPLIT>( |
41 | x_split, x_reduced, ONE_TWENTY_EIGHT_OVER_PI[idx][1]); |
42 | // x * c_lo = pl.hi + pl.lo exactly. |
43 | DoubleDouble pl = fputil::exact_mult<double, SPLIT>( |
44 | x_split, x_reduced, ONE_TWENTY_EIGHT_OVER_PI[idx][2]); |
45 | // Extract integral parts and fractional parts of (ph.lo + pm.hi). |
46 | double sum_hi = ph.lo + pm.hi; |
47 | double kd = fputil::nearest_integer(sum_hi); |
48 | |
49 | // x * 128/pi mod 1 ~ y_hi + y_mid + y_lo |
50 | y_hi = (ph.lo - kd) + pm.hi; // Exact |
51 | y_mid = fputil::exact_add(pm.lo, pl.hi); |
52 | y_lo = pl.lo; |
53 | |
54 | // y_l = x * c_lo_2 + pl.lo |
55 | double y_l = |
56 | fputil::multiply_add(x_reduced, ONE_TWENTY_EIGHT_OVER_PI[idx][3], y_lo); |
57 | DoubleDouble y = fputil::exact_add(y_hi, y_mid.hi); |
58 | y.lo += (y_mid.lo + y_l); |
59 | |
60 | // Digits of pi/128, generated by Sollya with: |
61 | // > a = round(pi/128, D, RN); |
62 | // > b = round(pi/128 - a, D, RN); |
63 | constexpr DoubleDouble PI_OVER_128_DD = {0x1.1a62633145c07p-60, |
64 | 0x1.921fb54442d18p-6}; |
65 | |
66 | // Error bound: with {a} denote the fractional part of a, i.e.: |
67 | // {a} = a - round(a) |
68 | // Then, |
69 | // | {x * 128/pi} - (y_hi + y_lo) | <= ulp(ulp(y_hi)) <= 2^-105 |
70 | // | {x mod pi/128} - (u.hi + u.lo) | < 2 * 2^-6 * 2^-105 = 2^-110 |
71 | u = fputil::quick_mult<SPLIT>(y, PI_OVER_128_DD); |
72 | |
73 | return static_cast<unsigned>(static_cast<int64_t>(kd)); |
74 | } |
75 | |
76 | // Lookup table for sin(k * pi / 128) with k = 0, ..., 255. |
77 | // Table is generated with Sollya as follow: |
78 | // > display = hexadecimal; |
79 | // > for k from 0 to 255 do { |
80 | // a = round(sin(k * pi/128), 51, RN); |
81 | // b = round(sin(k * pi/128) - a, D, RN); |
82 | // print("{", b, ",", a, "},"); |
83 | // }; |
84 | LIBC_INLINE constexpr DoubleDouble SIN_K_PI_OVER_128[] = { |
85 | {0, 0}, |
86 | {0x1.f938a73db97fbp-58, 0x1.92155f7a3667cp-6}, |
87 | {-0x1.912bd0d569a9p-61, 0x1.91f65f10dd814p-5}, |
88 | {0x1.ccbeeeae8129ap-56, 0x1.2d52092ce19f4p-4}, |
89 | {-0x1.e2718d26ed688p-60, 0x1.917a6bc29b42cp-4}, |
90 | {-0x1.cbb1f71aca352p-56, 0x1.f564e56a9731p-4}, |
91 | {-0x1.dd9ffeaecbdc4p-55, 0x1.2c8106e8e613cp-3}, |
92 | {-0x1.ab3802218894fp-55, 0x1.5e214448b3fc8p-3}, |
93 | {-0x1.49b466e7fe36p-55, 0x1.8f8b83c69a60cp-3}, |
94 | {-0x1.035e2873ca432p-55, 0x1.c0b826a7e4f64p-3}, |
95 | {-0x1.50b7bbc4768b1p-55, 0x1.f19f97b215f1cp-3}, |
96 | {-0x1.3ed9efaa42ab3p-55, 0x1.111d262b1f678p-2}, |
97 | {0x1.a8b5c974ee7b5p-54, 0x1.294062ed59f04p-2}, |
98 | {0x1.4325f12be8946p-54, 0x1.4135c941766p-2}, |
99 | {0x1.fc2047e54e614p-55, 0x1.58f9a75ab1fdcp-2}, |
100 | {-0x1.512c678219317p-54, 0x1.7088530fa45ap-2}, |
101 | {-0x1.2e59dba7ab4c2p-54, 0x1.87de2a6aea964p-2}, |
102 | {-0x1.d24afdade848bp-54, 0x1.9ef7943a8ed8cp-2}, |
103 | {0x1.5b362cb974183p-57, 0x1.b5d1009e15ccp-2}, |
104 | {-0x1.e97af1a63c807p-54, 0x1.cc66e9931c46p-2}, |
105 | {-0x1.c3e4edc5872f8p-55, 0x1.e2b5d3806f63cp-2}, |
106 | {0x1.fb44f80f92225p-54, 0x1.f8ba4dbf89ab8p-2}, |
107 | {0x1.9697faf2e2fe5p-53, 0x1.073879922ffecp-1}, |
108 | {-0x1.7bc8eda6af93cp-53, 0x1.11eb3541b4b24p-1}, |
109 | {0x1.b25dd267f66p-55, 0x1.1c73b39ae68c8p-1}, |
110 | {-0x1.5769d0fbcddc3p-53, 0x1.26d054cdd12ep-1}, |
111 | {0x1.c20673b2116b2p-54, 0x1.30ff7fce17034p-1}, |
112 | {0x1.3c7c4bc72a92cp-53, 0x1.3affa292050b8p-1}, |
113 | {-0x1.e7f895d302395p-53, 0x1.44cf325091dd8p-1}, |
114 | {0x1.13c293edceb32p-53, 0x1.4e6cabbe3e5e8p-1}, |
115 | {-0x1.75720992bfbb2p-55, 0x1.57d69348cecap-1}, |
116 | {-0x1.24a366a5fe547p-53, 0x1.610b7551d2cep-1}, |
117 | {0x1.21165f626cdd5p-54, 0x1.6a09e667f3bccp-1}, |
118 | {-0x1.bcac43c389ba9p-53, 0x1.72d0837efff98p-1}, |
119 | {-0x1.21ea6f59be15bp-53, 0x1.7b5df226aafbp-1}, |
120 | {0x1.d217be0e2b971p-53, 0x1.83b0e0bff976cp-1}, |
121 | {0x1.69d0f6897664ap-54, 0x1.8bc806b15174p-1}, |
122 | {-0x1.615f32b6f907ap-54, 0x1.93a22499263fcp-1}, |
123 | {0x1.6788ebcc76dc6p-54, 0x1.9b3e047f3874p-1}, |
124 | {0x1.ddae89fd441d1p-53, 0x1.a29a7a046278p-1}, |
125 | {-0x1.f98273c5d2495p-54, 0x1.a9b66290ea1a4p-1}, |
126 | {-0x1.926da300ffccep-55, 0x1.b090a581502p-1}, |
127 | {0x1.90e58336c64a8p-53, 0x1.b728345196e3cp-1}, |
128 | {0x1.9f6963354e3fep-53, 0x1.bd7c0ac6f9528p-1}, |
129 | {0x1.a47d3a2a0dcbep-54, 0x1.c38b2f180bdbp-1}, |
130 | {0x1.ed0489e16b9ap-54, 0x1.c954b213411f4p-1}, |
131 | {-0x1.0f3db5dad5ac5p-53, 0x1.ced7af43cc774p-1}, |
132 | {0x1.ac42b5a8b6943p-53, 0x1.d4134d14dc938p-1}, |
133 | {-0x1.d75033dfb9ca8p-53, 0x1.d906bcf328d48p-1}, |
134 | {0x1.83c37c6107db3p-55, 0x1.ddb13b6ccc23cp-1}, |
135 | {0x1.7f59c49f6cd6dp-54, 0x1.e212104f686e4p-1}, |
136 | {0x1.ee94a90d7b88bp-53, 0x1.e6288ec48e11p-1}, |
137 | {-0x1.a27d3874701f9p-53, 0x1.e9f4156c62ddcp-1}, |
138 | {-0x1.85f4e1b8298dp-54, 0x1.ed740e7684964p-1}, |
139 | {-0x1.ab4e148e52d9ep-54, 0x1.f0a7efb9230d8p-1}, |
140 | {0x1.8a11412b82346p-54, 0x1.f38f3ac64e588p-1}, |
141 | {0x1.562172a361fd3p-56, 0x1.f6297cff75cbp-1}, |
142 | {0x1.3564acef1ff97p-53, 0x1.f8764fa714ba8p-1}, |
143 | {-0x1.5e82a3284d5c8p-53, 0x1.fa7557f08a518p-1}, |
144 | {-0x1.709bccb89a989p-54, 0x1.fc26470e19fd4p-1}, |
145 | {0x1.9e082721dfb8ep-53, 0x1.fd88da3d12524p-1}, |
146 | {-0x1.eade132f3981dp-53, 0x1.fe9cdad01883cp-1}, |
147 | {0x1.e3a843d1db55fp-53, 0x1.ff621e3796d7cp-1}, |
148 | {0x1.765595d548d9ap-54, 0x1.ffd886084cd0cp-1}, |
149 | {0, 1}, |
150 | #ifndef LIBC_MATH_HAS_SMALL_TABLES |
151 | {0x1.765595d548d9ap-54, 0x1.ffd886084cd0cp-1}, |
152 | {0x1.e3a843d1db55fp-53, 0x1.ff621e3796d7cp-1}, |
153 | {-0x1.eade132f3981dp-53, 0x1.fe9cdad01883cp-1}, |
154 | {0x1.9e082721dfb8ep-53, 0x1.fd88da3d12524p-1}, |
155 | {-0x1.709bccb89a989p-54, 0x1.fc26470e19fd4p-1}, |
156 | {-0x1.5e82a3284d5c8p-53, 0x1.fa7557f08a518p-1}, |
157 | {0x1.3564acef1ff97p-53, 0x1.f8764fa714ba8p-1}, |
158 | {0x1.562172a361fd3p-56, 0x1.f6297cff75cbp-1}, |
159 | {0x1.8a11412b82346p-54, 0x1.f38f3ac64e588p-1}, |
160 | {-0x1.ab4e148e52d9ep-54, 0x1.f0a7efb9230d8p-1}, |
161 | {-0x1.85f4e1b8298dp-54, 0x1.ed740e7684964p-1}, |
162 | {-0x1.a27d3874701f9p-53, 0x1.e9f4156c62ddcp-1}, |
163 | {0x1.ee94a90d7b88bp-53, 0x1.e6288ec48e11p-1}, |
164 | {0x1.7f59c49f6cd6dp-54, 0x1.e212104f686e4p-1}, |
165 | {0x1.83c37c6107db3p-55, 0x1.ddb13b6ccc23cp-1}, |
166 | {-0x1.d75033dfb9ca8p-53, 0x1.d906bcf328d48p-1}, |
167 | {0x1.ac42b5a8b6943p-53, 0x1.d4134d14dc938p-1}, |
168 | {-0x1.0f3db5dad5ac5p-53, 0x1.ced7af43cc774p-1}, |
169 | {0x1.ed0489e16b9ap-54, 0x1.c954b213411f4p-1}, |
170 | {0x1.a47d3a2a0dcbep-54, 0x1.c38b2f180bdbp-1}, |
171 | {0x1.9f6963354e3fep-53, 0x1.bd7c0ac6f9528p-1}, |
172 | {0x1.90e58336c64a8p-53, 0x1.b728345196e3cp-1}, |
173 | {-0x1.926da300ffccep-55, 0x1.b090a581502p-1}, |
174 | {-0x1.f98273c5d2495p-54, 0x1.a9b66290ea1a4p-1}, |
175 | {0x1.ddae89fd441d1p-53, 0x1.a29a7a046278p-1}, |
176 | {0x1.6788ebcc76dc6p-54, 0x1.9b3e047f3874p-1}, |
177 | {-0x1.615f32b6f907ap-54, 0x1.93a22499263fcp-1}, |
178 | {0x1.69d0f6897664ap-54, 0x1.8bc806b15174p-1}, |
179 | {0x1.d217be0e2b971p-53, 0x1.83b0e0bff976cp-1}, |
180 | {-0x1.21ea6f59be15bp-53, 0x1.7b5df226aafbp-1}, |
181 | {-0x1.bcac43c389ba9p-53, 0x1.72d0837efff98p-1}, |
182 | {0x1.21165f626cdd5p-54, 0x1.6a09e667f3bccp-1}, |
183 | {-0x1.24a366a5fe547p-53, 0x1.610b7551d2cep-1}, |
184 | {-0x1.75720992bfbb2p-55, 0x1.57d69348cecap-1}, |
185 | {0x1.13c293edceb32p-53, 0x1.4e6cabbe3e5e8p-1}, |
186 | {-0x1.e7f895d302395p-53, 0x1.44cf325091dd8p-1}, |
187 | {0x1.3c7c4bc72a92cp-53, 0x1.3affa292050b8p-1}, |
188 | {0x1.c20673b2116b2p-54, 0x1.30ff7fce17034p-1}, |
189 | {-0x1.5769d0fbcddc3p-53, 0x1.26d054cdd12ep-1}, |
190 | {0x1.b25dd267f66p-55, 0x1.1c73b39ae68c8p-1}, |
191 | {-0x1.7bc8eda6af93cp-53, 0x1.11eb3541b4b24p-1}, |
192 | {0x1.9697faf2e2fe5p-53, 0x1.073879922ffecp-1}, |
193 | {0x1.fb44f80f92225p-54, 0x1.f8ba4dbf89ab8p-2}, |
194 | {-0x1.c3e4edc5872f8p-55, 0x1.e2b5d3806f63cp-2}, |
195 | {-0x1.e97af1a63c807p-54, 0x1.cc66e9931c46p-2}, |
196 | {0x1.5b362cb974183p-57, 0x1.b5d1009e15ccp-2}, |
197 | {-0x1.d24afdade848bp-54, 0x1.9ef7943a8ed8cp-2}, |
198 | {-0x1.2e59dba7ab4c2p-54, 0x1.87de2a6aea964p-2}, |
199 | {-0x1.512c678219317p-54, 0x1.7088530fa45ap-2}, |
200 | {0x1.fc2047e54e614p-55, 0x1.58f9a75ab1fdcp-2}, |
201 | {0x1.4325f12be8946p-54, 0x1.4135c941766p-2}, |
202 | {0x1.a8b5c974ee7b5p-54, 0x1.294062ed59f04p-2}, |
203 | {-0x1.3ed9efaa42ab3p-55, 0x1.111d262b1f678p-2}, |
204 | {-0x1.50b7bbc4768b1p-55, 0x1.f19f97b215f1cp-3}, |
205 | {-0x1.035e2873ca432p-55, 0x1.c0b826a7e4f64p-3}, |
206 | {-0x1.49b466e7fe36p-55, 0x1.8f8b83c69a60cp-3}, |
207 | {-0x1.ab3802218894fp-55, 0x1.5e214448b3fc8p-3}, |
208 | {-0x1.dd9ffeaecbdc4p-55, 0x1.2c8106e8e613cp-3}, |
209 | {-0x1.cbb1f71aca352p-56, 0x1.f564e56a9731p-4}, |
210 | {-0x1.e2718d26ed688p-60, 0x1.917a6bc29b42cp-4}, |
211 | {0x1.ccbeeeae8129ap-56, 0x1.2d52092ce19f4p-4}, |
212 | {-0x1.912bd0d569a9p-61, 0x1.91f65f10dd814p-5}, |
213 | {0x1.f938a73db97fbp-58, 0x1.92155f7a3667cp-6}, |
214 | {0, 0}, |
215 | {-0x1.f938a73db97fbp-58, -0x1.92155f7a3667cp-6}, |
216 | {0x1.912bd0d569a9p-61, -0x1.91f65f10dd814p-5}, |
217 | {-0x1.ccbeeeae8129ap-56, -0x1.2d52092ce19f4p-4}, |
218 | {0x1.e2718d26ed688p-60, -0x1.917a6bc29b42cp-4}, |
219 | {0x1.cbb1f71aca352p-56, -0x1.f564e56a9731p-4}, |
220 | {0x1.dd9ffeaecbdc4p-55, -0x1.2c8106e8e613cp-3}, |
221 | {0x1.ab3802218894fp-55, -0x1.5e214448b3fc8p-3}, |
222 | {0x1.49b466e7fe36p-55, -0x1.8f8b83c69a60cp-3}, |
223 | {0x1.035e2873ca432p-55, -0x1.c0b826a7e4f64p-3}, |
224 | {0x1.50b7bbc4768b1p-55, -0x1.f19f97b215f1cp-3}, |
225 | {0x1.3ed9efaa42ab3p-55, -0x1.111d262b1f678p-2}, |
226 | {-0x1.a8b5c974ee7b5p-54, -0x1.294062ed59f04p-2}, |
227 | {-0x1.4325f12be8946p-54, -0x1.4135c941766p-2}, |
228 | {-0x1.fc2047e54e614p-55, -0x1.58f9a75ab1fdcp-2}, |
229 | {0x1.512c678219317p-54, -0x1.7088530fa45ap-2}, |
230 | {0x1.2e59dba7ab4c2p-54, -0x1.87de2a6aea964p-2}, |
231 | {0x1.d24afdade848bp-54, -0x1.9ef7943a8ed8cp-2}, |
232 | {-0x1.5b362cb974183p-57, -0x1.b5d1009e15ccp-2}, |
233 | {0x1.e97af1a63c807p-54, -0x1.cc66e9931c46p-2}, |
234 | {0x1.c3e4edc5872f8p-55, -0x1.e2b5d3806f63cp-2}, |
235 | {-0x1.fb44f80f92225p-54, -0x1.f8ba4dbf89ab8p-2}, |
236 | {-0x1.9697faf2e2fe5p-53, -0x1.073879922ffecp-1}, |
237 | {0x1.7bc8eda6af93cp-53, -0x1.11eb3541b4b24p-1}, |
238 | {-0x1.b25dd267f66p-55, -0x1.1c73b39ae68c8p-1}, |
239 | {0x1.5769d0fbcddc3p-53, -0x1.26d054cdd12ep-1}, |
240 | {-0x1.c20673b2116b2p-54, -0x1.30ff7fce17034p-1}, |
241 | {-0x1.3c7c4bc72a92cp-53, -0x1.3affa292050b8p-1}, |
242 | {0x1.e7f895d302395p-53, -0x1.44cf325091dd8p-1}, |
243 | {-0x1.13c293edceb32p-53, -0x1.4e6cabbe3e5e8p-1}, |
244 | {0x1.75720992bfbb2p-55, -0x1.57d69348cecap-1}, |
245 | {0x1.24a366a5fe547p-53, -0x1.610b7551d2cep-1}, |
246 | {-0x1.21165f626cdd5p-54, -0x1.6a09e667f3bccp-1}, |
247 | {0x1.bcac43c389ba9p-53, -0x1.72d0837efff98p-1}, |
248 | {0x1.21ea6f59be15bp-53, -0x1.7b5df226aafbp-1}, |
249 | {-0x1.d217be0e2b971p-53, -0x1.83b0e0bff976cp-1}, |
250 | {-0x1.69d0f6897664ap-54, -0x1.8bc806b15174p-1}, |
251 | {0x1.615f32b6f907ap-54, -0x1.93a22499263fcp-1}, |
252 | {-0x1.6788ebcc76dc6p-54, -0x1.9b3e047f3874p-1}, |
253 | {-0x1.ddae89fd441d1p-53, -0x1.a29a7a046278p-1}, |
254 | {0x1.f98273c5d2495p-54, -0x1.a9b66290ea1a4p-1}, |
255 | {0x1.926da300ffccep-55, -0x1.b090a581502p-1}, |
256 | {-0x1.90e58336c64a8p-53, -0x1.b728345196e3cp-1}, |
257 | {-0x1.9f6963354e3fep-53, -0x1.bd7c0ac6f9528p-1}, |
258 | {-0x1.a47d3a2a0dcbep-54, -0x1.c38b2f180bdbp-1}, |
259 | {-0x1.ed0489e16b9ap-54, -0x1.c954b213411f4p-1}, |
260 | {0x1.0f3db5dad5ac5p-53, -0x1.ced7af43cc774p-1}, |
261 | {-0x1.ac42b5a8b6943p-53, -0x1.d4134d14dc938p-1}, |
262 | {0x1.d75033dfb9ca8p-53, -0x1.d906bcf328d48p-1}, |
263 | {-0x1.83c37c6107db3p-55, -0x1.ddb13b6ccc23cp-1}, |
264 | {-0x1.7f59c49f6cd6dp-54, -0x1.e212104f686e4p-1}, |
265 | {-0x1.ee94a90d7b88bp-53, -0x1.e6288ec48e11p-1}, |
266 | {0x1.a27d3874701f9p-53, -0x1.e9f4156c62ddcp-1}, |
267 | {0x1.85f4e1b8298dp-54, -0x1.ed740e7684964p-1}, |
268 | {0x1.ab4e148e52d9ep-54, -0x1.f0a7efb9230d8p-1}, |
269 | {-0x1.8a11412b82346p-54, -0x1.f38f3ac64e588p-1}, |
270 | {-0x1.562172a361fd3p-56, -0x1.f6297cff75cbp-1}, |
271 | {-0x1.3564acef1ff97p-53, -0x1.f8764fa714ba8p-1}, |
272 | {0x1.5e82a3284d5c8p-53, -0x1.fa7557f08a518p-1}, |
273 | {0x1.709bccb89a989p-54, -0x1.fc26470e19fd4p-1}, |
274 | {-0x1.9e082721dfb8ep-53, -0x1.fd88da3d12524p-1}, |
275 | {0x1.eade132f3981dp-53, -0x1.fe9cdad01883cp-1}, |
276 | {-0x1.e3a843d1db55fp-53, -0x1.ff621e3796d7cp-1}, |
277 | {-0x1.765595d548d9ap-54, -0x1.ffd886084cd0cp-1}, |
278 | {0, -1}, |
279 | {-0x1.765595d548d9ap-54, -0x1.ffd886084cd0cp-1}, |
280 | {-0x1.e3a843d1db55fp-53, -0x1.ff621e3796d7cp-1}, |
281 | {0x1.eade132f3981dp-53, -0x1.fe9cdad01883cp-1}, |
282 | {-0x1.9e082721dfb8ep-53, -0x1.fd88da3d12524p-1}, |
283 | {0x1.709bccb89a989p-54, -0x1.fc26470e19fd4p-1}, |
284 | {0x1.5e82a3284d5c8p-53, -0x1.fa7557f08a518p-1}, |
285 | {-0x1.3564acef1ff97p-53, -0x1.f8764fa714ba8p-1}, |
286 | {-0x1.562172a361fd3p-56, -0x1.f6297cff75cbp-1}, |
287 | {-0x1.8a11412b82346p-54, -0x1.f38f3ac64e588p-1}, |
288 | {0x1.ab4e148e52d9ep-54, -0x1.f0a7efb9230d8p-1}, |
289 | {0x1.85f4e1b8298dp-54, -0x1.ed740e7684964p-1}, |
290 | {0x1.a27d3874701f9p-53, -0x1.e9f4156c62ddcp-1}, |
291 | {-0x1.ee94a90d7b88bp-53, -0x1.e6288ec48e11p-1}, |
292 | {-0x1.7f59c49f6cd6dp-54, -0x1.e212104f686e4p-1}, |
293 | {-0x1.83c37c6107db3p-55, -0x1.ddb13b6ccc23cp-1}, |
294 | {0x1.d75033dfb9ca8p-53, -0x1.d906bcf328d48p-1}, |
295 | {-0x1.ac42b5a8b6943p-53, -0x1.d4134d14dc938p-1}, |
296 | {0x1.0f3db5dad5ac5p-53, -0x1.ced7af43cc774p-1}, |
297 | {-0x1.ed0489e16b9ap-54, -0x1.c954b213411f4p-1}, |
298 | {-0x1.a47d3a2a0dcbep-54, -0x1.c38b2f180bdbp-1}, |
299 | {-0x1.9f6963354e3fep-53, -0x1.bd7c0ac6f9528p-1}, |
300 | {-0x1.90e58336c64a8p-53, -0x1.b728345196e3cp-1}, |
301 | {0x1.926da300ffccep-55, -0x1.b090a581502p-1}, |
302 | {0x1.f98273c5d2495p-54, -0x1.a9b66290ea1a4p-1}, |
303 | {-0x1.ddae89fd441d1p-53, -0x1.a29a7a046278p-1}, |
304 | {-0x1.6788ebcc76dc6p-54, -0x1.9b3e047f3874p-1}, |
305 | {0x1.615f32b6f907ap-54, -0x1.93a22499263fcp-1}, |
306 | {-0x1.69d0f6897664ap-54, -0x1.8bc806b15174p-1}, |
307 | {-0x1.d217be0e2b971p-53, -0x1.83b0e0bff976cp-1}, |
308 | {0x1.21ea6f59be15bp-53, -0x1.7b5df226aafbp-1}, |
309 | {0x1.bcac43c389ba9p-53, -0x1.72d0837efff98p-1}, |
310 | {-0x1.21165f626cdd5p-54, -0x1.6a09e667f3bccp-1}, |
311 | {0x1.24a366a5fe547p-53, -0x1.610b7551d2cep-1}, |
312 | {0x1.75720992bfbb2p-55, -0x1.57d69348cecap-1}, |
313 | {-0x1.13c293edceb32p-53, -0x1.4e6cabbe3e5e8p-1}, |
314 | {0x1.e7f895d302395p-53, -0x1.44cf325091dd8p-1}, |
315 | {-0x1.3c7c4bc72a92cp-53, -0x1.3affa292050b8p-1}, |
316 | {-0x1.c20673b2116b2p-54, -0x1.30ff7fce17034p-1}, |
317 | {0x1.5769d0fbcddc3p-53, -0x1.26d054cdd12ep-1}, |
318 | {-0x1.b25dd267f66p-55, -0x1.1c73b39ae68c8p-1}, |
319 | {0x1.7bc8eda6af93cp-53, -0x1.11eb3541b4b24p-1}, |
320 | {-0x1.9697faf2e2fe5p-53, -0x1.073879922ffecp-1}, |
321 | {-0x1.fb44f80f92225p-54, -0x1.f8ba4dbf89ab8p-2}, |
322 | {0x1.c3e4edc5872f8p-55, -0x1.e2b5d3806f63cp-2}, |
323 | {0x1.e97af1a63c807p-54, -0x1.cc66e9931c46p-2}, |
324 | {-0x1.5b362cb974183p-57, -0x1.b5d1009e15ccp-2}, |
325 | {0x1.d24afdade848bp-54, -0x1.9ef7943a8ed8cp-2}, |
326 | {0x1.2e59dba7ab4c2p-54, -0x1.87de2a6aea964p-2}, |
327 | {0x1.512c678219317p-54, -0x1.7088530fa45ap-2}, |
328 | {-0x1.fc2047e54e614p-55, -0x1.58f9a75ab1fdcp-2}, |
329 | {-0x1.4325f12be8946p-54, -0x1.4135c941766p-2}, |
330 | {-0x1.a8b5c974ee7b5p-54, -0x1.294062ed59f04p-2}, |
331 | {0x1.3ed9efaa42ab3p-55, -0x1.111d262b1f678p-2}, |
332 | {0x1.50b7bbc4768b1p-55, -0x1.f19f97b215f1cp-3}, |
333 | {0x1.035e2873ca432p-55, -0x1.c0b826a7e4f64p-3}, |
334 | {0x1.49b466e7fe36p-55, -0x1.8f8b83c69a60cp-3}, |
335 | {0x1.ab3802218894fp-55, -0x1.5e214448b3fc8p-3}, |
336 | {0x1.dd9ffeaecbdc4p-55, -0x1.2c8106e8e613cp-3}, |
337 | {0x1.cbb1f71aca352p-56, -0x1.f564e56a9731p-4}, |
338 | {0x1.e2718d26ed688p-60, -0x1.917a6bc29b42cp-4}, |
339 | {-0x1.ccbeeeae8129ap-56, -0x1.2d52092ce19f4p-4}, |
340 | {0x1.912bd0d569a9p-61, -0x1.91f65f10dd814p-5}, |
341 | {-0x1.f938a73db97fbp-58, -0x1.92155f7a3667cp-6}, |
342 | #endif // !LIBC_MATH_HAS_SMALL_TABLES |
343 | }; |
344 | |
345 | } // namespace LIBC_NAMESPACE_DECL |
346 | |
347 | #endif // LLVM_LIBC_SRC_MATH_GENERIC_RANGE_REDUCTION_DOUBLE_NOFMA_H |
348 |
Warning: This file is not a C or C++ file. It does not have highlighting.