1 /* Shared data between exp, exp2 and pow.
2    Copyright (c) 2018 Arm Ltd.  All rights reserved.
3 
4    SPDX-License-Identifier: BSD-3-Clause
5 
6    Redistribution and use in source and binary forms, with or without
7    modification, are permitted provided that the following conditions
8    are met:
9    1. Redistributions of source code must retain the above copyright
10       notice, this list of conditions and the following disclaimer.
11    2. Redistributions in binary form must reproduce the above copyright
12       notice, this list of conditions and the following disclaimer in the
13       documentation and/or other materials provided with the distribution.
14    3. The name of the company may not be used to endorse or promote
15       products derived from this software without specific prior written
16       permission.
17 
18    THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
19    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21    IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
23    TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28 
29 #include "fdlibm.h"
30 #if !__OBSOLETE_MATH_DOUBLE
31 
32 #include "math_config.h"
33 
34 #define N (1 << EXP_TABLE_BITS)
35 
36 const struct exp_data __exp_data = {
37 // N/ln2
38 .invln2N = 0x1.71547652b82fep0 * N,
39 // -ln2/N
40 #if N == 64
41 .negln2hiN = -0x1.62e42fefa0000p-7,
42 .negln2loN = -0x1.cf79abc9e3b3ap-46,
43 #elif N == 128
44 .negln2hiN = -0x1.62e42fefa0000p-8,
45 .negln2loN = -0x1.cf79abc9e3b3ap-47,
46 #elif N == 256
47 .negln2hiN = -0x1.62e42fefc0000p-9,
48 .negln2loN = 0x1.c610ca86c3899p-45,
49 #endif
50 // Used for rounding when !TOINT_INTRINSICS
51 #if EXP_USE_TOINT_NARROW
52 .shift = 0x1800000000.8p0,
53 #else
54 .shift = 0x1.8p52,
55 #endif
56 // exp polynomial coefficients.
57 .poly = {
58 #if N == 64 && EXP_POLY_ORDER == 5 && !EXP_POLY_WIDE
59 // abs error: 1.5543*2^-60
60 // ulp error: 0.529 (0.533 without fma)
61 // if |x| < ln2/128+eps
62 // abs error if |x| < ln2/64: 1.7157*2^-50
63 0x1.fffffffffdbcdp-2,
64 0x1.555555555444cp-3,
65 0x1.555573c6a9f7dp-5,
66 0x1.1111266d28935p-7,
67 #elif N == 64 && EXP_POLY_ORDER == 6 && EXP_POLY_WIDE
68 // abs error: 1.6735*2^-64
69 // ulp error: 0.518 (0.522 without fma)
70 // if |x| < ln2/64
71 0x1.5555555548f9ap-3,
72 0x1.555555554bf5dp-5,
73 0x1.11115b75f0f4dp-7,
74 0x1.6c171a6b6303ep-10,
75 #elif N == 128 && EXP_POLY_ORDER == 5 && !EXP_POLY_WIDE
76 // abs error: 1.555*2^-66
77 // ulp error: 0.509 (0.511 without fma)
78 // if |x| < ln2/256+eps
79 // abs error if |x| < ln2/256+0x1p-15: 1.09*2^-65
80 // abs error if |x| < ln2/128: 1.7145*2^-56
81 0x1.ffffffffffdbdp-2,
82 0x1.555555555543cp-3,
83 0x1.55555cf172b91p-5,
84 0x1.1111167a4d017p-7,
85 #elif N == 128 && EXP_POLY_ORDER == 5 && EXP_POLY_WIDE
86 // abs error: 1.5542*2^-60
87 // ulp error: 0.521 (0.523 without fma)
88 // if |x| < ln2/128
89 0x1.fffffffffdbcep-2,
90 0x1.55555555543c2p-3,
91 0x1.555573c64f2e3p-5,
92 0x1.111126b4eff73p-7,
93 #elif N == 128 && EXP_POLY_ORDER == 6 && EXP_POLY_WIDE
94 // abs error: 1.6861*2^-71
95 // ulp error: 0.509 (0.511 without fma)
96 // if |x| < ln2/128
97 0x1.55555555548fdp-3,
98 0x1.555555555658fp-5,
99 0x1.111123a859bb6p-7,
100 0x1.6c16ba6920cabp-10,
101 #elif N == 256 && EXP_POLY_ORDER == 4 && !EXP_POLY_WIDE
102 // abs error: 1.43*2^-58
103 // ulp error: 0.549 (0.550 without fma)
104 // if |x| < ln2/512
105 0x1p0, // unused
106 0x1.fffffffffffd4p-2,
107 0x1.5555571d6ef9p-3,
108 0x1.5555576a5adcep-5,
109 #elif N == 256 && EXP_POLY_ORDER == 5 && EXP_POLY_WIDE
110 // abs error: 1.5547*2^-66
111 // ulp error: 0.505 (0.506 without fma)
112 // if |x| < ln2/256
113 0x1.ffffffffffdbdp-2,
114 0x1.555555555543cp-3,
115 0x1.55555cf16e1edp-5,
116 0x1.1111167a4b553p-7,
117 #endif
118 },
119 .exp2_shift = 0x1.8p52 / N,
120 // exp2 polynomial coefficients.
121 .exp2_poly = {
122 #if N == 64 && EXP2_POLY_ORDER == 6 && EXP2_POLY_WIDE
123 // abs error: 1.3054*2^-63
124 // ulp error: 0.515
125 // if |x| < 1/64
126 0x1.62e42fefa39efp-1,
127 0x1.ebfbdff82c58fp-3,
128 0x1.c6b08d7045cf1p-5,
129 0x1.3b2ab6fb8fd0ep-7,
130 0x1.5d884afec48d7p-10,
131 0x1.43097dc684ae1p-13,
132 #elif N == 128 && EXP2_POLY_ORDER == 5 && !EXP2_POLY_WIDE
133 // abs error: 1.2195*2^-65
134 // ulp error: 0.507 (0.511 without fma)
135 // if |x| < 1/256
136 // abs error if |x| < 1/128: 1.9941*2^-56
137 0x1.62e42fefa39efp-1,
138 0x1.ebfbdff82c424p-3,
139 0x1.c6b08d70cf4b5p-5,
140 0x1.3b2abd24650ccp-7,
141 0x1.5d7e09b4e3a84p-10,
142 #elif N == 256 && EXP2_POLY_ORDER == 5 && EXP2_POLY_WIDE
143 // abs error: 1.2195*2^-65
144 // ulp error: 0.504 (0.508 without fma)
145 // if |x| < 1/256
146 0x1.62e42fefa39efp-1,
147 0x1.ebfbdff82c424p-3,
148 0x1.c6b08d70cf4b5p-5,
149 0x1.3b2abd24650ccp-7,
150 0x1.5d7e09b4e3a84p-10,
151 #endif
152 },
153 // 2^(k/N) ~= H[k]*(1 + T[k]) for int k in [0,N)
154 // tab[2*k] = asuint64(T[k])
155 // tab[2*k+1] = asuint64(H[k]) - (k << 52)/N
156 .tab = {
157 #if N == 64
158 0x0, 0x3ff0000000000000,
159 0xbc7160139cd8dc5d, 0x3fefec9a3e778061,
160 0x3c8cd2523567f613, 0x3fefd9b0d3158574,
161 0x3c60f74e61e6c861, 0x3fefc74518759bc8,
162 0x3c979aa65d837b6d, 0x3fefb5586cf9890f,
163 0x3c3ebe3d702f9cd1, 0x3fefa3ec32d3d1a2,
164 0xbc9556522a2fbd0e, 0x3fef9301d0125b51,
165 0xbc91c923b9d5f416, 0x3fef829aaea92de0,
166 0xbc801b15eaa59348, 0x3fef72b83c7d517b,
167 0x3c8b898c3f1353bf, 0x3fef635beb6fcb75,
168 0x3c9aecf73e3a2f60, 0x3fef54873168b9aa,
169 0x3c8a6f4144a6c38d, 0x3fef463b88628cd6,
170 0x3c968efde3a8a894, 0x3fef387a6e756238,
171 0x3c80472b981fe7f2, 0x3fef2b4565e27cdd,
172 0x3c82f7e16d09ab31, 0x3fef1e9df51fdee1,
173 0x3c8b3782720c0ab4, 0x3fef1285a6e4030b,
174 0x3c834d754db0abb6, 0x3fef06fe0a31b715,
175 0x3c8fdd395dd3f84a, 0x3feefc08b26416ff,
176 0xbc924aedcc4b5068, 0x3feef1a7373aa9cb,
177 0xbc71d1e83e9436d2, 0x3feee7db34e59ff7,
178 0x3c859f48a72a4c6d, 0x3feedea64c123422,
179 0xbc58a78f4817895b, 0x3feed60a21f72e2a,
180 0x3c4363ed60c2ac11, 0x3feece086061892d,
181 0x3c6ecce1daa10379, 0x3feec6a2b5c13cd0,
182 0x3c7690cebb7aafb0, 0x3feebfdad5362a27,
183 0xbc8f94340071a38e, 0x3feeb9b2769d2ca7,
184 0xbc78dec6bd0f385f, 0x3feeb42b569d4f82,
185 0x3c93350518fdd78e, 0x3feeaf4736b527da,
186 0x3c9063e1e21c5409, 0x3feeab07dd485429,
187 0x3c9432e62b64c035, 0x3feea76f15ad2148,
188 0xbc8c33c53bef4da8, 0x3feea47eb03a5585,
189 0xbc93cedd78565858, 0x3feea23882552225,
190 0xbc93b3efbf5e2228, 0x3feea09e667f3bcd,
191 0xbc6367efb86da9ee, 0x3fee9fb23c651a2f,
192 0xbc781f647e5a3ecf, 0x3fee9f75e8ec5f74,
193 0xbc8619321e55e68a, 0x3fee9feb564267c9,
194 0xbc7b32dcb94da51d, 0x3feea11473eb0187,
195 0x3c65ebe1abd66c55, 0x3feea2f336cf4e62,
196 0xbc9369b6f13b3734, 0x3feea589994cce13,
197 0xbc94d450d872576e, 0x3feea8d99b4492ed,
198 0x3c8db72fc1f0eab4, 0x3feeace5422aa0db,
199 0x3c7bf68359f35f44, 0x3feeb1ae99157736,
200 0xbc5da9b88b6c1e29, 0x3feeb737b0cdc5e5,
201 0xbc92434322f4f9aa, 0x3feebd829fde4e50,
202 0x3c71affc2b91ce27, 0x3feec49182a3f090,
203 0xbc87c50422622263, 0x3feecc667b5de565,
204 0xbc91bbd1d3bcbb15, 0x3feed503b23e255d,
205 0x3c8469846e735ab3, 0x3feede6b5579fdbf,
206 0x3c8c1a7792cb3387, 0x3feee89f995ad3ad,
207 0xbc55c3d956dcaeba, 0x3feef3a2b84f15fb,
208 0xbc68d6f438ad9334, 0x3feeff76f2fb5e47,
209 0x3c74ffd70a5fddcd, 0x3fef0c1e904bc1d2,
210 0x3c736eae30af0cb3, 0x3fef199bdd85529c,
211 0x3c84e08fd10959ac, 0x3fef27f12e57d14b,
212 0x3c676b2c6c921968, 0x3fef3720dcef9069,
213 0xbc8fad5d3ffffa6f, 0x3fef472d4a07897c,
214 0x3c74a385a63d07a7, 0x3fef5818dcfba487,
215 0x3c8e5a50d5c192ac, 0x3fef69e603db3285,
216 0xbc82d52107b43e1f, 0x3fef7c97337b9b5f,
217 0x3c74b604603a88d3, 0x3fef902ee78b3ff6,
218 0xbc8ff7128fd391f0, 0x3fefa4afa2a490da,
219 0x3c8ec3bc41aa2008, 0x3fefba1bee615a27,
220 0x3c8a64a931d185ee, 0x3fefd0765b6e4540,
221 0x3c77893b4d91cd9d, 0x3fefe7c1819e90d8,
222 #elif N == 128
223 0x0, 0x3ff0000000000000,
224 0x3c9b3b4f1a88bf6e, 0x3feff63da9fb3335,
225 0xbc7160139cd8dc5d, 0x3fefec9a3e778061,
226 0xbc905e7a108766d1, 0x3fefe315e86e7f85,
227 0x3c8cd2523567f613, 0x3fefd9b0d3158574,
228 0xbc8bce8023f98efa, 0x3fefd06b29ddf6de,
229 0x3c60f74e61e6c861, 0x3fefc74518759bc8,
230 0x3c90a3e45b33d399, 0x3fefbe3ecac6f383,
231 0x3c979aa65d837b6d, 0x3fefb5586cf9890f,
232 0x3c8eb51a92fdeffc, 0x3fefac922b7247f7,
233 0x3c3ebe3d702f9cd1, 0x3fefa3ec32d3d1a2,
234 0xbc6a033489906e0b, 0x3fef9b66affed31b,
235 0xbc9556522a2fbd0e, 0x3fef9301d0125b51,
236 0xbc5080ef8c4eea55, 0x3fef8abdc06c31cc,
237 0xbc91c923b9d5f416, 0x3fef829aaea92de0,
238 0x3c80d3e3e95c55af, 0x3fef7a98c8a58e51,
239 0xbc801b15eaa59348, 0x3fef72b83c7d517b,
240 0xbc8f1ff055de323d, 0x3fef6af9388c8dea,
241 0x3c8b898c3f1353bf, 0x3fef635beb6fcb75,
242 0xbc96d99c7611eb26, 0x3fef5be084045cd4,
243 0x3c9aecf73e3a2f60, 0x3fef54873168b9aa,
244 0xbc8fe782cb86389d, 0x3fef4d5022fcd91d,
245 0x3c8a6f4144a6c38d, 0x3fef463b88628cd6,
246 0x3c807a05b0e4047d, 0x3fef3f49917ddc96,
247 0x3c968efde3a8a894, 0x3fef387a6e756238,
248 0x3c875e18f274487d, 0x3fef31ce4fb2a63f,
249 0x3c80472b981fe7f2, 0x3fef2b4565e27cdd,
250 0xbc96b87b3f71085e, 0x3fef24dfe1f56381,
251 0x3c82f7e16d09ab31, 0x3fef1e9df51fdee1,
252 0xbc3d219b1a6fbffa, 0x3fef187fd0dad990,
253 0x3c8b3782720c0ab4, 0x3fef1285a6e4030b,
254 0x3c6e149289cecb8f, 0x3fef0cafa93e2f56,
255 0x3c834d754db0abb6, 0x3fef06fe0a31b715,
256 0x3c864201e2ac744c, 0x3fef0170fc4cd831,
257 0x3c8fdd395dd3f84a, 0x3feefc08b26416ff,
258 0xbc86a3803b8e5b04, 0x3feef6c55f929ff1,
259 0xbc924aedcc4b5068, 0x3feef1a7373aa9cb,
260 0xbc9907f81b512d8e, 0x3feeecae6d05d866,
261 0xbc71d1e83e9436d2, 0x3feee7db34e59ff7,
262 0xbc991919b3ce1b15, 0x3feee32dc313a8e5,
263 0x3c859f48a72a4c6d, 0x3feedea64c123422,
264 0xbc9312607a28698a, 0x3feeda4504ac801c,
265 0xbc58a78f4817895b, 0x3feed60a21f72e2a,
266 0xbc7c2c9b67499a1b, 0x3feed1f5d950a897,
267 0x3c4363ed60c2ac11, 0x3feece086061892d,
268 0x3c9666093b0664ef, 0x3feeca41ed1d0057,
269 0x3c6ecce1daa10379, 0x3feec6a2b5c13cd0,
270 0x3c93ff8e3f0f1230, 0x3feec32af0d7d3de,
271 0x3c7690cebb7aafb0, 0x3feebfdad5362a27,
272 0x3c931dbdeb54e077, 0x3feebcb299fddd0d,
273 0xbc8f94340071a38e, 0x3feeb9b2769d2ca7,
274 0xbc87deccdc93a349, 0x3feeb6daa2cf6642,
275 0xbc78dec6bd0f385f, 0x3feeb42b569d4f82,
276 0xbc861246ec7b5cf6, 0x3feeb1a4ca5d920f,
277 0x3c93350518fdd78e, 0x3feeaf4736b527da,
278 0x3c7b98b72f8a9b05, 0x3feead12d497c7fd,
279 0x3c9063e1e21c5409, 0x3feeab07dd485429,
280 0x3c34c7855019c6ea, 0x3feea9268a5946b7,
281 0x3c9432e62b64c035, 0x3feea76f15ad2148,
282 0xbc8ce44a6199769f, 0x3feea5e1b976dc09,
283 0xbc8c33c53bef4da8, 0x3feea47eb03a5585,
284 0xbc845378892be9ae, 0x3feea34634ccc320,
285 0xbc93cedd78565858, 0x3feea23882552225,
286 0x3c5710aa807e1964, 0x3feea155d44ca973,
287 0xbc93b3efbf5e2228, 0x3feea09e667f3bcd,
288 0xbc6a12ad8734b982, 0x3feea012750bdabf,
289 0xbc6367efb86da9ee, 0x3fee9fb23c651a2f,
290 0xbc80dc3d54e08851, 0x3fee9f7df9519484,
291 0xbc781f647e5a3ecf, 0x3fee9f75e8ec5f74,
292 0xbc86ee4ac08b7db0, 0x3fee9f9a48a58174,
293 0xbc8619321e55e68a, 0x3fee9feb564267c9,
294 0x3c909ccb5e09d4d3, 0x3feea0694fde5d3f,
295 0xbc7b32dcb94da51d, 0x3feea11473eb0187,
296 0x3c94ecfd5467c06b, 0x3feea1ed0130c132,
297 0x3c65ebe1abd66c55, 0x3feea2f336cf4e62,
298 0xbc88a1c52fb3cf42, 0x3feea427543e1a12,
299 0xbc9369b6f13b3734, 0x3feea589994cce13,
300 0xbc805e843a19ff1e, 0x3feea71a4623c7ad,
301 0xbc94d450d872576e, 0x3feea8d99b4492ed,
302 0x3c90ad675b0e8a00, 0x3feeaac7d98a6699,
303 0x3c8db72fc1f0eab4, 0x3feeace5422aa0db,
304 0xbc65b6609cc5e7ff, 0x3feeaf3216b5448c,
305 0x3c7bf68359f35f44, 0x3feeb1ae99157736,
306 0xbc93091fa71e3d83, 0x3feeb45b0b91ffc6,
307 0xbc5da9b88b6c1e29, 0x3feeb737b0cdc5e5,
308 0xbc6c23f97c90b959, 0x3feeba44cbc8520f,
309 0xbc92434322f4f9aa, 0x3feebd829fde4e50,
310 0xbc85ca6cd7668e4b, 0x3feec0f170ca07ba,
311 0x3c71affc2b91ce27, 0x3feec49182a3f090,
312 0x3c6dd235e10a73bb, 0x3feec86319e32323,
313 0xbc87c50422622263, 0x3feecc667b5de565,
314 0x3c8b1c86e3e231d5, 0x3feed09bec4a2d33,
315 0xbc91bbd1d3bcbb15, 0x3feed503b23e255d,
316 0x3c90cc319cee31d2, 0x3feed99e1330b358,
317 0x3c8469846e735ab3, 0x3feede6b5579fdbf,
318 0xbc82dfcd978e9db4, 0x3feee36bbfd3f37a,
319 0x3c8c1a7792cb3387, 0x3feee89f995ad3ad,
320 0xbc907b8f4ad1d9fa, 0x3feeee07298db666,
321 0xbc55c3d956dcaeba, 0x3feef3a2b84f15fb,
322 0xbc90a40e3da6f640, 0x3feef9728de5593a,
323 0xbc68d6f438ad9334, 0x3feeff76f2fb5e47,
324 0xbc91eee26b588a35, 0x3fef05b030a1064a,
325 0x3c74ffd70a5fddcd, 0x3fef0c1e904bc1d2,
326 0xbc91bdfbfa9298ac, 0x3fef12c25bd71e09,
327 0x3c736eae30af0cb3, 0x3fef199bdd85529c,
328 0x3c8ee3325c9ffd94, 0x3fef20ab5fffd07a,
329 0x3c84e08fd10959ac, 0x3fef27f12e57d14b,
330 0x3c63cdaf384e1a67, 0x3fef2f6d9406e7b5,
331 0x3c676b2c6c921968, 0x3fef3720dcef9069,
332 0xbc808a1883ccb5d2, 0x3fef3f0b555dc3fa,
333 0xbc8fad5d3ffffa6f, 0x3fef472d4a07897c,
334 0xbc900dae3875a949, 0x3fef4f87080d89f2,
335 0x3c74a385a63d07a7, 0x3fef5818dcfba487,
336 0xbc82919e2040220f, 0x3fef60e316c98398,
337 0x3c8e5a50d5c192ac, 0x3fef69e603db3285,
338 0x3c843a59ac016b4b, 0x3fef7321f301b460,
339 0xbc82d52107b43e1f, 0x3fef7c97337b9b5f,
340 0xbc892ab93b470dc9, 0x3fef864614f5a129,
341 0x3c74b604603a88d3, 0x3fef902ee78b3ff6,
342 0x3c83c5ec519d7271, 0x3fef9a51fbc74c83,
343 0xbc8ff7128fd391f0, 0x3fefa4afa2a490da,
344 0xbc8dae98e223747d, 0x3fefaf482d8e67f1,
345 0x3c8ec3bc41aa2008, 0x3fefba1bee615a27,
346 0x3c842b94c3a9eb32, 0x3fefc52b376bba97,
347 0x3c8a64a931d185ee, 0x3fefd0765b6e4540,
348 0xbc8e37bae43be3ed, 0x3fefdbfdad9cbe14,
349 0x3c77893b4d91cd9d, 0x3fefe7c1819e90d8,
350 0x3c5305c14160cc89, 0x3feff3c22b8f71f1,
351 #elif N == 256
352 0x0, 0x3ff0000000000000,
353 0xbc84e82fc61851ac, 0x3feffb1afa5abcbf,
354 0x3c9b3b4f1a88bf6e, 0x3feff63da9fb3335,
355 0xbc82985dd8521d32, 0x3feff168143b0281,
356 0xbc7160139cd8dc5d, 0x3fefec9a3e778061,
357 0x3c651e617061bfbd, 0x3fefe7d42e11bbcc,
358 0xbc905e7a108766d1, 0x3fefe315e86e7f85,
359 0x3c845fad437fa426, 0x3fefde5f72f654b1,
360 0x3c8cd2523567f613, 0x3fefd9b0d3158574,
361 0xbc954529642b232f, 0x3fefd50a0e3c1f89,
362 0xbc8bce8023f98efa, 0x3fefd06b29ddf6de,
363 0x3c8293708ef5c32e, 0x3fefcbd42b72a836,
364 0x3c60f74e61e6c861, 0x3fefc74518759bc8,
365 0xbc95b9280905b2a4, 0x3fefc2bdf66607e0,
366 0x3c90a3e45b33d399, 0x3fefbe3ecac6f383,
367 0x3c84f31f32c4b7e7, 0x3fefb9c79b1f3919,
368 0x3c979aa65d837b6d, 0x3fefb5586cf9890f,
369 0x3c9407fb30d06420, 0x3fefb0f145e46c85,
370 0x3c8eb51a92fdeffc, 0x3fefac922b7247f7,
371 0xbc9a5d04b3b9911b, 0x3fefa83b23395dec,
372 0x3c3ebe3d702f9cd1, 0x3fefa3ec32d3d1a2,
373 0xbc937a01f0739546, 0x3fef9fa55fdfa9c5,
374 0xbc6a033489906e0b, 0x3fef9b66affed31b,
375 0x3c8b8268b04ef0a5, 0x3fef973028d7233e,
376 0xbc9556522a2fbd0e, 0x3fef9301d0125b51,
377 0xbc9ac46e44a2ebcc, 0x3fef8edbab5e2ab6,
378 0xbc5080ef8c4eea55, 0x3fef8abdc06c31cc,
379 0xbc65704e90c9f860, 0x3fef86a814f204ab,
380 0xbc91c923b9d5f416, 0x3fef829aaea92de0,
381 0xbc897cea57e46280, 0x3fef7e95934f312e,
382 0x3c80d3e3e95c55af, 0x3fef7a98c8a58e51,
383 0x3c56f01429e2b9d2, 0x3fef76a45471c3c2,
384 0xbc801b15eaa59348, 0x3fef72b83c7d517b,
385 0x3c6e653b2459034b, 0x3fef6ed48695bbc0,
386 0xbc8f1ff055de323d, 0x3fef6af9388c8dea,
387 0x3c92cc7ea345b7dc, 0x3fef672658375d2f,
388 0x3c8b898c3f1353bf, 0x3fef635beb6fcb75,
389 0x3c957bfb2876ea9e, 0x3fef5f99f8138a1c,
390 0xbc96d99c7611eb26, 0x3fef5be084045cd4,
391 0x3c8cdc1873af2155, 0x3fef582f95281c6b,
392 0x3c9aecf73e3a2f60, 0x3fef54873168b9aa,
393 0xbc9493684653a131, 0x3fef50e75eb44027,
394 0xbc8fe782cb86389d, 0x3fef4d5022fcd91d,
395 0xbc98e2899077520a, 0x3fef49c18438ce4d,
396 0x3c8a6f4144a6c38d, 0x3fef463b88628cd6,
397 0x3c9120fcd4f59273, 0x3fef42be3578a819,
398 0x3c807a05b0e4047d, 0x3fef3f49917ddc96,
399 0x3c89b788c188c9b8, 0x3fef3bdda27912d1,
400 0x3c968efde3a8a894, 0x3fef387a6e756238,
401 0x3c877afbca90ef84, 0x3fef351ffb82140a,
402 0x3c875e18f274487d, 0x3fef31ce4fb2a63f,
403 0x3c91512f082876ee, 0x3fef2e85711ece75,
404 0x3c80472b981fe7f2, 0x3fef2b4565e27cdd,
405 0x3c9a02f0c7d75ec6, 0x3fef280e341ddf29,
406 0xbc96b87b3f71085e, 0x3fef24dfe1f56381,
407 0xbc803297e78260bf, 0x3fef21ba7591bb70,
408 0x3c82f7e16d09ab31, 0x3fef1e9df51fdee1,
409 0xbc95b77e5ccd9fbf, 0x3fef1b8a66d10f13,
410 0xbc3d219b1a6fbffa, 0x3fef187fd0dad990,
411 0xbc91e75c40b4251e, 0x3fef157e39771b2f,
412 0x3c8b3782720c0ab4, 0x3fef1285a6e4030b,
413 0x3c98a911f1f7785a, 0x3fef0f961f641589,
414 0x3c6e149289cecb8f, 0x3fef0cafa93e2f56,
415 0xbc61e7c998db7dbb, 0x3fef09d24abd886b,
416 0x3c834d754db0abb6, 0x3fef06fe0a31b715,
417 0x3c85425c11faadf4, 0x3fef0432edeeb2fd,
418 0x3c864201e2ac744c, 0x3fef0170fc4cd831,
419 0xbc979517a03e2847, 0x3feefeb83ba8ea32,
420 0x3c8fdd395dd3f84a, 0x3feefc08b26416ff,
421 0xbc800e2a46da4bee, 0x3feef96266e3fa2d,
422 0xbc86a3803b8e5b04, 0x3feef6c55f929ff1,
423 0xbc87430803972b34, 0x3feef431a2de883b,
424 0xbc924aedcc4b5068, 0x3feef1a7373aa9cb,
425 0xbc954de30ae02d94, 0x3feeef26231e754a,
426 0xbc9907f81b512d8e, 0x3feeecae6d05d866,
427 0xbc94f2487e1c03ec, 0x3feeea401b7140ef,
428 0xbc71d1e83e9436d2, 0x3feee7db34e59ff7,
429 0x3c914a5432fcb2f4, 0x3feee57fbfec6cf4,
430 0xbc991919b3ce1b15, 0x3feee32dc313a8e5,
431 0x3c79c3bba5562a2f, 0x3feee0e544ede173,
432 0x3c859f48a72a4c6d, 0x3feedea64c123422,
433 0xbc85a71612e21658, 0x3feedc70df1c5175,
434 0xbc9312607a28698a, 0x3feeda4504ac801c,
435 0x3c86421f6f1d24d6, 0x3feed822c367a024,
436 0xbc58a78f4817895b, 0x3feed60a21f72e2a,
437 0xbc9348a6815fce65, 0x3feed3fb2709468a,
438 0xbc7c2c9b67499a1b, 0x3feed1f5d950a897,
439 0x3c835c43984d9871, 0x3feecffa3f84b9d4,
440 0x3c4363ed60c2ac11, 0x3feece086061892d,
441 0xbc632afc8d9473a0, 0x3feecc2042a7d232,
442 0x3c9666093b0664ef, 0x3feeca41ed1d0057,
443 0xbc95fc5e44de020e, 0x3feec86d668b3237,
444 0x3c6ecce1daa10379, 0x3feec6a2b5c13cd0,
445 0xbc7ea0148327c42f, 0x3feec4e1e192aed2,
446 0x3c93ff8e3f0f1230, 0x3feec32af0d7d3de,
447 0xbc7a843ad1a88022, 0x3feec17dea6db7d7,
448 0x3c7690cebb7aafb0, 0x3feebfdad5362a27,
449 0x3c892ca3bf144e63, 0x3feebe41b817c114,
450 0x3c931dbdeb54e077, 0x3feebcb299fddd0d,
451 0xbc902c99b04aa8b0, 0x3feebb2d81d8abff,
452 0xbc8f94340071a38e, 0x3feeb9b2769d2ca7,
453 0x3c73e34f67e67118, 0x3feeb8417f4531ee,
454 0xbc87deccdc93a349, 0x3feeb6daa2cf6642,
455 0xbc75a3b1197ba0f0, 0x3feeb57de83f4eef,
456 0xbc78dec6bd0f385f, 0x3feeb42b569d4f82,
457 0x3c81bd2888075068, 0x3feeb2e2f4f6ad27,
458 0xbc861246ec7b5cf6, 0x3feeb1a4ca5d920f,
459 0xbc896be8ae89ef8f, 0x3feeb070dde910d2,
460 0x3c93350518fdd78e, 0x3feeaf4736b527da,
461 0xbc88e6ac90348602, 0x3feeae27dbe2c4cf,
462 0x3c7b98b72f8a9b05, 0x3feead12d497c7fd,
463 0xbc91af7f1365c3ac, 0x3feeac0827ff07cc,
464 0x3c9063e1e21c5409, 0x3feeab07dd485429,
465 0xbc943a3540d1898a, 0x3feeaa11fba87a03,
466 0x3c34c7855019c6ea, 0x3feea9268a5946b7,
467 0xbc951f58ddaa8090, 0x3feea84590998b93,
468 0x3c9432e62b64c035, 0x3feea76f15ad2148,
469 0xbc82e1648e50a17c, 0x3feea6a320dceb71,
470 0xbc8ce44a6199769f, 0x3feea5e1b976dc09,
471 0x3c95f30eda98a575, 0x3feea52ae6cdf6f4,
472 0xbc8c33c53bef4da8, 0x3feea47eb03a5585,
473 0x3c917ecda8a72159, 0x3feea3dd1d1929fd,
474 0xbc845378892be9ae, 0x3feea34634ccc320,
475 0xbc9345f3cee1ae6e, 0x3feea2b9febc8fb7,
476 0xbc93cedd78565858, 0x3feea23882552225,
477 0xbc85c33fdf910406, 0x3feea1c1c70833f6,
478 0x3c5710aa807e1964, 0x3feea155d44ca973,
479 0x3c81079ab5789604, 0x3feea0f4b19e9538,
480 0xbc93b3efbf5e2228, 0x3feea09e667f3bcd,
481 0x3c727df161cd7778, 0x3feea052fa75173e,
482 0xbc6a12ad8734b982, 0x3feea012750bdabf,
483 0x3c93f9924a05b767, 0x3fee9fdcddd47645,
484 0xbc6367efb86da9ee, 0x3fee9fb23c651a2f,
485 0xbc87557939a8b5ef, 0x3fee9f9298593ae5,
486 0xbc80dc3d54e08851, 0x3fee9f7df9519484,
487 0x3c51ed2f56fa9d1a, 0x3fee9f7466f42e87,
488 0xbc781f647e5a3ecf, 0x3fee9f75e8ec5f74,
489 0xbc88e67a9006c909, 0x3fee9f8286ead08a,
490 0xbc86ee4ac08b7db0, 0x3fee9f9a48a58174,
491 0x3c86597566977ac8, 0x3fee9fbd35d7cbfd,
492 0xbc8619321e55e68a, 0x3fee9feb564267c9,
493 0x3c92c0b7028a5c3a, 0x3feea024b1ab6e09,
494 0x3c909ccb5e09d4d3, 0x3feea0694fde5d3f,
495 0x3c8a30faf49cc78c, 0x3feea0b938ac1cf6,
496 0xbc7b32dcb94da51d, 0x3feea11473eb0187,
497 0xbc92dad3519d7b5b, 0x3feea17b0976cfdb,
498 0x3c94ecfd5467c06b, 0x3feea1ed0130c132,
499 0x3c87d51410fd15c2, 0x3feea26a62ff86f0,
500 0x3c65ebe1abd66c55, 0x3feea2f336cf4e62,
501 0xbc760a3629969871, 0x3feea3878491c491,
502 0xbc88a1c52fb3cf42, 0x3feea427543e1a12,
503 0x3c8b18c6e3fdef5d, 0x3feea4d2add106d9,
504 0xbc9369b6f13b3734, 0x3feea589994cce13,
505 0x3c90ec1ddcb1390a, 0x3feea64c1eb941f7,
506 0xbc805e843a19ff1e, 0x3feea71a4623c7ad,
507 0xbc522cea4f3afa1e, 0x3feea7f4179f5b21,
508 0xbc94d450d872576e, 0x3feea8d99b4492ed,
509 0x3c7c88549b958471, 0x3feea9cad931a436,
510 0x3c90ad675b0e8a00, 0x3feeaac7d98a6699,
511 0x3c931143962f7877, 0x3feeabd0a478580f,
512 0x3c8db72fc1f0eab4, 0x3feeace5422aa0db,
513 0x3c93e9e96f112479, 0x3feeae05bad61778,
514 0xbc65b6609cc5e7ff, 0x3feeaf3216b5448c,
515 0xbc8dac42a4a38df0, 0x3feeb06a5e0866d9,
516 0x3c7bf68359f35f44, 0x3feeb1ae99157736,
517 0x3c8b99dd98b1ed84, 0x3feeb2fed0282c8a,
518 0xbc93091fa71e3d83, 0x3feeb45b0b91ffc6,
519 0xbc7885ad50cbb750, 0x3feeb5c353aa2fe2,
520 0xbc5da9b88b6c1e29, 0x3feeb737b0cdc5e5,
521 0xbc82d5e85f3e0301, 0x3feeb8b82b5f98e5,
522 0xbc6c23f97c90b959, 0x3feeba44cbc8520f,
523 0xbc51669428996971, 0x3feebbdd9a7670b3,
524 0xbc92434322f4f9aa, 0x3feebd829fde4e50,
525 0x3c71f2b2c1c4c014, 0x3feebf33e47a22a2,
526 0xbc85ca6cd7668e4b, 0x3feec0f170ca07ba,
527 0xbc9294f304f166b6, 0x3feec2bb4d53fe0d,
528 0x3c71affc2b91ce27, 0x3feec49182a3f090,
529 0xbc8a1e58414c07d3, 0x3feec674194bb8d5,
530 0x3c6dd235e10a73bb, 0x3feec86319e32323,
531 0xbc79740b58a20091, 0x3feeca5e8d07f29e,
532 0xbc87c50422622263, 0x3feecc667b5de565,
533 0x3c9165830a2b96c2, 0x3feece7aed8eb8bb,
534 0x3c8b1c86e3e231d5, 0x3feed09bec4a2d33,
535 0xbc903d5cbe27874b, 0x3feed2c980460ad8,
536 0xbc91bbd1d3bcbb15, 0x3feed503b23e255d,
537 0x3c5986178980fce0, 0x3feed74a8af46052,
538 0x3c90cc319cee31d2, 0x3feed99e1330b358,
539 0xbc89472975b1f2a5, 0x3feedbfe53c12e59,
540 0x3c8469846e735ab3, 0x3feede6b5579fdbf,
541 0x3c7d8157a34b7e7f, 0x3feee0e521356eba,
542 0xbc82dfcd978e9db4, 0x3feee36bbfd3f37a,
543 0x3c8c8a4e231ebb7d, 0x3feee5ff3a3c2774,
544 0x3c8c1a7792cb3387, 0x3feee89f995ad3ad,
545 0xbc888c8d11a142e5, 0x3feeeb4ce622f2ff,
546 0xbc907b8f4ad1d9fa, 0x3feeee07298db666,
547 0x3c889c2ea41433c7, 0x3feef0ce6c9a8952,
548 0xbc55c3d956dcaeba, 0x3feef3a2b84f15fb,
549 0xbc7274aedac8ff80, 0x3feef68415b749b1,
550 0xbc90a40e3da6f640, 0x3feef9728de5593a,
551 0x3c85c620ce76df06, 0x3feefc6e29f1c52a,
552 0xbc68d6f438ad9334, 0x3feeff76f2fb5e47,
553 0xbc8fda52e1b51e41, 0x3fef028cf22749e4,
554 0xbc91eee26b588a35, 0x3fef05b030a1064a,
555 0xbc32141a7b3e2cd8, 0x3fef08e0b79a6f1f,
556 0x3c74ffd70a5fddcd, 0x3fef0c1e904bc1d2,
557 0xbc302899507554e5, 0x3fef0f69c3f3a207,
558 0xbc91bdfbfa9298ac, 0x3fef12c25bd71e09,
559 0xbc80dda2d4c0010c, 0x3fef16286141b33d,
560 0x3c736eae30af0cb3, 0x3fef199bdd85529c,
561 0xbc8a007daadf8d68, 0x3fef1d1cd9fa652c,
562 0x3c8ee3325c9ffd94, 0x3fef20ab5fffd07a,
563 0x3c836909391181d3, 0x3fef244778fafb22,
564 0x3c84e08fd10959ac, 0x3fef27f12e57d14b,
565 0xbc811cd7dbdf9547, 0x3fef2ba88988c933,
566 0x3c63cdaf384e1a67, 0x3fef2f6d9406e7b5,
567 0xbc7ac28b7bef6621, 0x3fef33405751c4db,
568 0x3c676b2c6c921968, 0x3fef3720dcef9069,
569 0xbc7030587207b9e1, 0x3fef3b0f2e6d1675,
570 0xbc808a1883ccb5d2, 0x3fef3f0b555dc3fa,
571 0xbc8cc734592af7fc, 0x3fef43155b5bab74,
572 0xbc8fad5d3ffffa6f, 0x3fef472d4a07897c,
573 0x3c87752a44f587e8, 0x3fef4b532b08c968,
574 0xbc900dae3875a949, 0x3fef4f87080d89f2,
575 0x3c85b66fefeef52e, 0x3fef53c8eacaa1d6,
576 0x3c74a385a63d07a7, 0x3fef5818dcfba487,
577 0x3c5159d9d908a96e, 0x3fef5c76e862e6d3,
578 0xbc82919e2040220f, 0x3fef60e316c98398,
579 0x3c8c254d16117a68, 0x3fef655d71ff6075,
580 0x3c8e5a50d5c192ac, 0x3fef69e603db3285,
581 0xbc8d8c329fbd0e03, 0x3fef6e7cd63a8315,
582 0x3c843a59ac016b4b, 0x3fef7321f301b460,
583 0xbc8ea6e6fbd5f2a6, 0x3fef77d5641c0658,
584 0xbc82d52107b43e1f, 0x3fef7c97337b9b5f,
585 0xbc63e8e3eab2cbb4, 0x3fef81676b197d17,
586 0xbc892ab93b470dc9, 0x3fef864614f5a129,
587 0xbc8b7966cd0d2cd9, 0x3fef8b333b16ee12,
588 0x3c74b604603a88d3, 0x3fef902ee78b3ff6,
589 0xbc776caa4c2ff1cf, 0x3fef953924676d76,
590 0x3c83c5ec519d7271, 0x3fef9a51fbc74c83,
591 0xbc81d5fc525d9940, 0x3fef9f7977cdb740,
592 0xbc8ff7128fd391f0, 0x3fefa4afa2a490da,
593 0x3c855cd8aaea3d21, 0x3fefa9f4867cca6e,
594 0xbc8dae98e223747d, 0x3fefaf482d8e67f1,
595 0x3c8269947c2bed4a, 0x3fefb4aaa2188510,
596 0x3c8ec3bc41aa2008, 0x3fefba1bee615a27,
597 0xbc83b6137e9afe9e, 0x3fefbf9c1cb6412a,
598 0x3c842b94c3a9eb32, 0x3fefc52b376bba97,
599 0xbc69fa74878ba7c7, 0x3fefcac948dd7274,
600 0x3c8a64a931d185ee, 0x3fefd0765b6e4540,
601 0x3c901f3a75ee0efe, 0x3fefd632798844f8,
602 0xbc8e37bae43be3ed, 0x3fefdbfdad9cbe14,
603 0xbc516a9ce6ed84fa, 0x3fefe1d802243c89,
604 0x3c77893b4d91cd9d, 0x3fefe7c1819e90d8,
605 0xbc699c7db2effc76, 0x3fefedba3692d514,
606 0x3c5305c14160cc89, 0x3feff3c22b8f71f1,
607 0x3c64b458677f9840, 0x3feff9d96b2a23d9,
608 #endif
609 },
610 };
611 #endif /* __OBSOLETE_MATH_DOUBLE */
612