Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/arm-optimized-routines/math/aarch64/v_pow_exp_data.c
48255 views
1
/*
2
* Shared data between exp, exp2 and pow.
3
*
4
* Copyright (c) 2018-2024, Arm Limited.
5
* SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6
*/
7
8
#include "math_config.h"
9
10
#define N (1 << V_POW_EXP_TABLE_BITS)
11
12
const struct v_pow_exp_data __v_pow_exp_data = {
13
// exp polynomial coefficients.
14
.poly = {
15
// abs error: 1.43*2^-58
16
// ulp error: 0.549 (0.550 without fma)
17
// if |x| < ln2/512
18
0x1.fffffffffffd4p-2,
19
0x1.5555571d6ef9p-3,
20
0x1.5555576a5adcep-5,
21
},
22
// N/ln2
23
.n_over_ln2 = 0x1.71547652b82fep0 * N,
24
// ln2/N
25
.ln2_over_n_hi = 0x1.62e42fefc0000p-9,
26
.ln2_over_n_lo = -0x1.c610ca86c3899p-45,
27
// Used for rounding to nearest integer without using intrinsics.
28
.shift = 0x1.8p52,
29
// 2^(k/N) ~= H[k]*(1 + T[k]) for int k in [0,N)
30
// sbits[k] = asuint64(H[k]) - (k << 52)/N
31
.sbits = {
32
0x3ff0000000000000,
33
0x3feffb1afa5abcbf,
34
0x3feff63da9fb3335,
35
0x3feff168143b0281,
36
0x3fefec9a3e778061,
37
0x3fefe7d42e11bbcc,
38
0x3fefe315e86e7f85,
39
0x3fefde5f72f654b1,
40
0x3fefd9b0d3158574,
41
0x3fefd50a0e3c1f89,
42
0x3fefd06b29ddf6de,
43
0x3fefcbd42b72a836,
44
0x3fefc74518759bc8,
45
0x3fefc2bdf66607e0,
46
0x3fefbe3ecac6f383,
47
0x3fefb9c79b1f3919,
48
0x3fefb5586cf9890f,
49
0x3fefb0f145e46c85,
50
0x3fefac922b7247f7,
51
0x3fefa83b23395dec,
52
0x3fefa3ec32d3d1a2,
53
0x3fef9fa55fdfa9c5,
54
0x3fef9b66affed31b,
55
0x3fef973028d7233e,
56
0x3fef9301d0125b51,
57
0x3fef8edbab5e2ab6,
58
0x3fef8abdc06c31cc,
59
0x3fef86a814f204ab,
60
0x3fef829aaea92de0,
61
0x3fef7e95934f312e,
62
0x3fef7a98c8a58e51,
63
0x3fef76a45471c3c2,
64
0x3fef72b83c7d517b,
65
0x3fef6ed48695bbc0,
66
0x3fef6af9388c8dea,
67
0x3fef672658375d2f,
68
0x3fef635beb6fcb75,
69
0x3fef5f99f8138a1c,
70
0x3fef5be084045cd4,
71
0x3fef582f95281c6b,
72
0x3fef54873168b9aa,
73
0x3fef50e75eb44027,
74
0x3fef4d5022fcd91d,
75
0x3fef49c18438ce4d,
76
0x3fef463b88628cd6,
77
0x3fef42be3578a819,
78
0x3fef3f49917ddc96,
79
0x3fef3bdda27912d1,
80
0x3fef387a6e756238,
81
0x3fef351ffb82140a,
82
0x3fef31ce4fb2a63f,
83
0x3fef2e85711ece75,
84
0x3fef2b4565e27cdd,
85
0x3fef280e341ddf29,
86
0x3fef24dfe1f56381,
87
0x3fef21ba7591bb70,
88
0x3fef1e9df51fdee1,
89
0x3fef1b8a66d10f13,
90
0x3fef187fd0dad990,
91
0x3fef157e39771b2f,
92
0x3fef1285a6e4030b,
93
0x3fef0f961f641589,
94
0x3fef0cafa93e2f56,
95
0x3fef09d24abd886b,
96
0x3fef06fe0a31b715,
97
0x3fef0432edeeb2fd,
98
0x3fef0170fc4cd831,
99
0x3feefeb83ba8ea32,
100
0x3feefc08b26416ff,
101
0x3feef96266e3fa2d,
102
0x3feef6c55f929ff1,
103
0x3feef431a2de883b,
104
0x3feef1a7373aa9cb,
105
0x3feeef26231e754a,
106
0x3feeecae6d05d866,
107
0x3feeea401b7140ef,
108
0x3feee7db34e59ff7,
109
0x3feee57fbfec6cf4,
110
0x3feee32dc313a8e5,
111
0x3feee0e544ede173,
112
0x3feedea64c123422,
113
0x3feedc70df1c5175,
114
0x3feeda4504ac801c,
115
0x3feed822c367a024,
116
0x3feed60a21f72e2a,
117
0x3feed3fb2709468a,
118
0x3feed1f5d950a897,
119
0x3feecffa3f84b9d4,
120
0x3feece086061892d,
121
0x3feecc2042a7d232,
122
0x3feeca41ed1d0057,
123
0x3feec86d668b3237,
124
0x3feec6a2b5c13cd0,
125
0x3feec4e1e192aed2,
126
0x3feec32af0d7d3de,
127
0x3feec17dea6db7d7,
128
0x3feebfdad5362a27,
129
0x3feebe41b817c114,
130
0x3feebcb299fddd0d,
131
0x3feebb2d81d8abff,
132
0x3feeb9b2769d2ca7,
133
0x3feeb8417f4531ee,
134
0x3feeb6daa2cf6642,
135
0x3feeb57de83f4eef,
136
0x3feeb42b569d4f82,
137
0x3feeb2e2f4f6ad27,
138
0x3feeb1a4ca5d920f,
139
0x3feeb070dde910d2,
140
0x3feeaf4736b527da,
141
0x3feeae27dbe2c4cf,
142
0x3feead12d497c7fd,
143
0x3feeac0827ff07cc,
144
0x3feeab07dd485429,
145
0x3feeaa11fba87a03,
146
0x3feea9268a5946b7,
147
0x3feea84590998b93,
148
0x3feea76f15ad2148,
149
0x3feea6a320dceb71,
150
0x3feea5e1b976dc09,
151
0x3feea52ae6cdf6f4,
152
0x3feea47eb03a5585,
153
0x3feea3dd1d1929fd,
154
0x3feea34634ccc320,
155
0x3feea2b9febc8fb7,
156
0x3feea23882552225,
157
0x3feea1c1c70833f6,
158
0x3feea155d44ca973,
159
0x3feea0f4b19e9538,
160
0x3feea09e667f3bcd,
161
0x3feea052fa75173e,
162
0x3feea012750bdabf,
163
0x3fee9fdcddd47645,
164
0x3fee9fb23c651a2f,
165
0x3fee9f9298593ae5,
166
0x3fee9f7df9519484,
167
0x3fee9f7466f42e87,
168
0x3fee9f75e8ec5f74,
169
0x3fee9f8286ead08a,
170
0x3fee9f9a48a58174,
171
0x3fee9fbd35d7cbfd,
172
0x3fee9feb564267c9,
173
0x3feea024b1ab6e09,
174
0x3feea0694fde5d3f,
175
0x3feea0b938ac1cf6,
176
0x3feea11473eb0187,
177
0x3feea17b0976cfdb,
178
0x3feea1ed0130c132,
179
0x3feea26a62ff86f0,
180
0x3feea2f336cf4e62,
181
0x3feea3878491c491,
182
0x3feea427543e1a12,
183
0x3feea4d2add106d9,
184
0x3feea589994cce13,
185
0x3feea64c1eb941f7,
186
0x3feea71a4623c7ad,
187
0x3feea7f4179f5b21,
188
0x3feea8d99b4492ed,
189
0x3feea9cad931a436,
190
0x3feeaac7d98a6699,
191
0x3feeabd0a478580f,
192
0x3feeace5422aa0db,
193
0x3feeae05bad61778,
194
0x3feeaf3216b5448c,
195
0x3feeb06a5e0866d9,
196
0x3feeb1ae99157736,
197
0x3feeb2fed0282c8a,
198
0x3feeb45b0b91ffc6,
199
0x3feeb5c353aa2fe2,
200
0x3feeb737b0cdc5e5,
201
0x3feeb8b82b5f98e5,
202
0x3feeba44cbc8520f,
203
0x3feebbdd9a7670b3,
204
0x3feebd829fde4e50,
205
0x3feebf33e47a22a2,
206
0x3feec0f170ca07ba,
207
0x3feec2bb4d53fe0d,
208
0x3feec49182a3f090,
209
0x3feec674194bb8d5,
210
0x3feec86319e32323,
211
0x3feeca5e8d07f29e,
212
0x3feecc667b5de565,
213
0x3feece7aed8eb8bb,
214
0x3feed09bec4a2d33,
215
0x3feed2c980460ad8,
216
0x3feed503b23e255d,
217
0x3feed74a8af46052,
218
0x3feed99e1330b358,
219
0x3feedbfe53c12e59,
220
0x3feede6b5579fdbf,
221
0x3feee0e521356eba,
222
0x3feee36bbfd3f37a,
223
0x3feee5ff3a3c2774,
224
0x3feee89f995ad3ad,
225
0x3feeeb4ce622f2ff,
226
0x3feeee07298db666,
227
0x3feef0ce6c9a8952,
228
0x3feef3a2b84f15fb,
229
0x3feef68415b749b1,
230
0x3feef9728de5593a,
231
0x3feefc6e29f1c52a,
232
0x3feeff76f2fb5e47,
233
0x3fef028cf22749e4,
234
0x3fef05b030a1064a,
235
0x3fef08e0b79a6f1f,
236
0x3fef0c1e904bc1d2,
237
0x3fef0f69c3f3a207,
238
0x3fef12c25bd71e09,
239
0x3fef16286141b33d,
240
0x3fef199bdd85529c,
241
0x3fef1d1cd9fa652c,
242
0x3fef20ab5fffd07a,
243
0x3fef244778fafb22,
244
0x3fef27f12e57d14b,
245
0x3fef2ba88988c933,
246
0x3fef2f6d9406e7b5,
247
0x3fef33405751c4db,
248
0x3fef3720dcef9069,
249
0x3fef3b0f2e6d1675,
250
0x3fef3f0b555dc3fa,
251
0x3fef43155b5bab74,
252
0x3fef472d4a07897c,
253
0x3fef4b532b08c968,
254
0x3fef4f87080d89f2,
255
0x3fef53c8eacaa1d6,
256
0x3fef5818dcfba487,
257
0x3fef5c76e862e6d3,
258
0x3fef60e316c98398,
259
0x3fef655d71ff6075,
260
0x3fef69e603db3285,
261
0x3fef6e7cd63a8315,
262
0x3fef7321f301b460,
263
0x3fef77d5641c0658,
264
0x3fef7c97337b9b5f,
265
0x3fef81676b197d17,
266
0x3fef864614f5a129,
267
0x3fef8b333b16ee12,
268
0x3fef902ee78b3ff6,
269
0x3fef953924676d76,
270
0x3fef9a51fbc74c83,
271
0x3fef9f7977cdb740,
272
0x3fefa4afa2a490da,
273
0x3fefa9f4867cca6e,
274
0x3fefaf482d8e67f1,
275
0x3fefb4aaa2188510,
276
0x3fefba1bee615a27,
277
0x3fefbf9c1cb6412a,
278
0x3fefc52b376bba97,
279
0x3fefcac948dd7274,
280
0x3fefd0765b6e4540,
281
0x3fefd632798844f8,
282
0x3fefdbfdad9cbe14,
283
0x3fefe1d802243c89,
284
0x3fefe7c1819e90d8,
285
0x3fefedba3692d514,
286
0x3feff3c22b8f71f1,
287
0x3feff9d96b2a23d9,
288
},
289
};
290
291