1 /*
2  * Ported from a work by Andreas Grabher for Previous, NeXT Computer Emulator,
3  * derived from NetBSD M68040 FPSP functions,
4  * derived from release 2a of the SoftFloat IEC/IEEE Floating-point Arithmetic
5  * Package. Those parts of the code (and some later contributions) are
6  * provided under that license, as detailed below.
7  * It has subsequently been modified by contributors to the QEMU Project,
8  * so some portions are provided under:
9  *  the SoftFloat-2a license
10  *  the BSD license
11  *  GPL-v2-or-later
12  *
13  * Any future contributions to this file will be taken to be licensed under
14  * the Softfloat-2a license unless specifically indicated otherwise.
15  */
16 
17 /* Portions of this work are licensed under the terms of the GNU GPL,
18  * version 2 or later. See the COPYING file in the top-level directory.
19  */
20 
21 #ifndef TARGET_M68K_SOFTFLOAT_FPSP_TABLES_H
22 #define TARGET_M68K_SOFTFLOAT_FPSP_TABLES_H
23 
24 static const floatx80 log_tbl[128] = {
25     make_floatx80_init(0x3FFE, 0xFE03F80FE03F80FE),
26     make_floatx80_init(0x3FF7, 0xFF015358833C47E2),
27     make_floatx80_init(0x3FFE, 0xFA232CF252138AC0),
28     make_floatx80_init(0x3FF9, 0xBDC8D83EAD88D549),
29     make_floatx80_init(0x3FFE, 0xF6603D980F6603DA),
30     make_floatx80_init(0x3FFA, 0x9CF43DCFF5EAFD48),
31     make_floatx80_init(0x3FFE, 0xF2B9D6480F2B9D65),
32     make_floatx80_init(0x3FFA, 0xDA16EB88CB8DF614),
33     make_floatx80_init(0x3FFE, 0xEF2EB71FC4345238),
34     make_floatx80_init(0x3FFB, 0x8B29B7751BD70743),
35     make_floatx80_init(0x3FFE, 0xEBBDB2A5C1619C8C),
36     make_floatx80_init(0x3FFB, 0xA8D839F830C1FB49),
37     make_floatx80_init(0x3FFE, 0xE865AC7B7603A197),
38     make_floatx80_init(0x3FFB, 0xC61A2EB18CD907AD),
39     make_floatx80_init(0x3FFE, 0xE525982AF70C880E),
40     make_floatx80_init(0x3FFB, 0xE2F2A47ADE3A18AF),
41     make_floatx80_init(0x3FFE, 0xE1FC780E1FC780E2),
42     make_floatx80_init(0x3FFB, 0xFF64898EDF55D551),
43     make_floatx80_init(0x3FFE, 0xDEE95C4CA037BA57),
44     make_floatx80_init(0x3FFC, 0x8DB956A97B3D0148),
45     make_floatx80_init(0x3FFE, 0xDBEB61EED19C5958),
46     make_floatx80_init(0x3FFC, 0x9B8FE100F47BA1DE),
47     make_floatx80_init(0x3FFE, 0xD901B2036406C80E),
48     make_floatx80_init(0x3FFC, 0xA9372F1D0DA1BD17),
49     make_floatx80_init(0x3FFE, 0xD62B80D62B80D62C),
50     make_floatx80_init(0x3FFC, 0xB6B07F38CE90E46B),
51     make_floatx80_init(0x3FFE, 0xD3680D3680D3680D),
52     make_floatx80_init(0x3FFC, 0xC3FD032906488481),
53     make_floatx80_init(0x3FFE, 0xD0B69FCBD2580D0B),
54     make_floatx80_init(0x3FFC, 0xD11DE0FF15AB18CA),
55     make_floatx80_init(0x3FFE, 0xCE168A7725080CE1),
56     make_floatx80_init(0x3FFC, 0xDE1433A16C66B150),
57     make_floatx80_init(0x3FFE, 0xCB8727C065C393E0),
58     make_floatx80_init(0x3FFC, 0xEAE10B5A7DDC8ADD),
59     make_floatx80_init(0x3FFE, 0xC907DA4E871146AD),
60     make_floatx80_init(0x3FFC, 0xF7856E5EE2C9B291),
61     make_floatx80_init(0x3FFE, 0xC6980C6980C6980C),
62     make_floatx80_init(0x3FFD, 0x82012CA5A68206D7),
63     make_floatx80_init(0x3FFE, 0xC4372F855D824CA6),
64     make_floatx80_init(0x3FFD, 0x882C5FCD7256A8C5),
65     make_floatx80_init(0x3FFE, 0xC1E4BBD595F6E947),
66     make_floatx80_init(0x3FFD, 0x8E44C60B4CCFD7DE),
67     make_floatx80_init(0x3FFE, 0xBFA02FE80BFA02FF),
68     make_floatx80_init(0x3FFD, 0x944AD09EF4351AF6),
69     make_floatx80_init(0x3FFE, 0xBD69104707661AA3),
70     make_floatx80_init(0x3FFD, 0x9A3EECD4C3EAA6B2),
71     make_floatx80_init(0x3FFE, 0xBB3EE721A54D880C),
72     make_floatx80_init(0x3FFD, 0xA0218434353F1DE8),
73     make_floatx80_init(0x3FFE, 0xB92143FA36F5E02E),
74     make_floatx80_init(0x3FFD, 0xA5F2FCABBBC506DA),
75     make_floatx80_init(0x3FFE, 0xB70FBB5A19BE3659),
76     make_floatx80_init(0x3FFD, 0xABB3B8BA2AD362A5),
77     make_floatx80_init(0x3FFE, 0xB509E68A9B94821F),
78     make_floatx80_init(0x3FFD, 0xB1641795CE3CA97B),
79     make_floatx80_init(0x3FFE, 0xB30F63528917C80B),
80     make_floatx80_init(0x3FFD, 0xB70475515D0F1C61),
81     make_floatx80_init(0x3FFE, 0xB11FD3B80B11FD3C),
82     make_floatx80_init(0x3FFD, 0xBC952AFEEA3D13E1),
83     make_floatx80_init(0x3FFE, 0xAF3ADDC680AF3ADE),
84     make_floatx80_init(0x3FFD, 0xC2168ED0F458BA4A),
85     make_floatx80_init(0x3FFE, 0xAD602B580AD602B6),
86     make_floatx80_init(0x3FFD, 0xC788F439B3163BF1),
87     make_floatx80_init(0x3FFE, 0xAB8F69E28359CD11),
88     make_floatx80_init(0x3FFD, 0xCCECAC08BF04565D),
89     make_floatx80_init(0x3FFE, 0xA9C84A47A07F5638),
90     make_floatx80_init(0x3FFD, 0xD24204872DD85160),
91     make_floatx80_init(0x3FFE, 0xA80A80A80A80A80B),
92     make_floatx80_init(0x3FFD, 0xD78949923BC3588A),
93     make_floatx80_init(0x3FFE, 0xA655C4392D7B73A8),
94     make_floatx80_init(0x3FFD, 0xDCC2C4B49887DACC),
95     make_floatx80_init(0x3FFE, 0xA4A9CF1D96833751),
96     make_floatx80_init(0x3FFD, 0xE1EEBD3E6D6A6B9E),
97     make_floatx80_init(0x3FFE, 0xA3065E3FAE7CD0E0),
98     make_floatx80_init(0x3FFD, 0xE70D785C2F9F5BDC),
99     make_floatx80_init(0x3FFE, 0xA16B312EA8FC377D),
100     make_floatx80_init(0x3FFD, 0xEC1F392C5179F283),
101     make_floatx80_init(0x3FFE, 0x9FD809FD809FD80A),
102     make_floatx80_init(0x3FFD, 0xF12440D3E36130E6),
103     make_floatx80_init(0x3FFE, 0x9E4CAD23DD5F3A20),
104     make_floatx80_init(0x3FFD, 0xF61CCE92346600BB),
105     make_floatx80_init(0x3FFE, 0x9CC8E160C3FB19B9),
106     make_floatx80_init(0x3FFD, 0xFB091FD38145630A),
107     make_floatx80_init(0x3FFE, 0x9B4C6F9EF03A3CAA),
108     make_floatx80_init(0x3FFD, 0xFFE97042BFA4C2AD),
109     make_floatx80_init(0x3FFE, 0x99D722DABDE58F06),
110     make_floatx80_init(0x3FFE, 0x825EFCED49369330),
111     make_floatx80_init(0x3FFE, 0x9868C809868C8098),
112     make_floatx80_init(0x3FFE, 0x84C37A7AB9A905C9),
113     make_floatx80_init(0x3FFE, 0x97012E025C04B809),
114     make_floatx80_init(0x3FFE, 0x87224C2E8E645FB7),
115     make_floatx80_init(0x3FFE, 0x95A02568095A0257),
116     make_floatx80_init(0x3FFE, 0x897B8CAC9F7DE298),
117     make_floatx80_init(0x3FFE, 0x9445809445809446),
118     make_floatx80_init(0x3FFE, 0x8BCF55DEC4CD05FE),
119     make_floatx80_init(0x3FFE, 0x92F113840497889C),
120     make_floatx80_init(0x3FFE, 0x8E1DC0FB89E125E5),
121     make_floatx80_init(0x3FFE, 0x91A2B3C4D5E6F809),
122     make_floatx80_init(0x3FFE, 0x9066E68C955B6C9B),
123     make_floatx80_init(0x3FFE, 0x905A38633E06C43B),
124     make_floatx80_init(0x3FFE, 0x92AADE74C7BE59E0),
125     make_floatx80_init(0x3FFE, 0x8F1779D9FDC3A219),
126     make_floatx80_init(0x3FFE, 0x94E9BFF615845643),
127     make_floatx80_init(0x3FFE, 0x8DDA520237694809),
128     make_floatx80_init(0x3FFE, 0x9723A1B720134203),
129     make_floatx80_init(0x3FFE, 0x8CA29C046514E023),
130     make_floatx80_init(0x3FFE, 0x995899C890EB8990),
131     make_floatx80_init(0x3FFE, 0x8B70344A139BC75A),
132     make_floatx80_init(0x3FFE, 0x9B88BDAA3A3DAE2F),
133     make_floatx80_init(0x3FFE, 0x8A42F8705669DB46),
134     make_floatx80_init(0x3FFE, 0x9DB4224FFFE1157C),
135     make_floatx80_init(0x3FFE, 0x891AC73AE9819B50),
136     make_floatx80_init(0x3FFE, 0x9FDADC268B7A12DA),
137     make_floatx80_init(0x3FFE, 0x87F78087F78087F8),
138     make_floatx80_init(0x3FFE, 0xA1FCFF17CE733BD4),
139     make_floatx80_init(0x3FFE, 0x86D905447A34ACC6),
140     make_floatx80_init(0x3FFE, 0xA41A9E8F5446FB9F),
141     make_floatx80_init(0x3FFE, 0x85BF37612CEE3C9B),
142     make_floatx80_init(0x3FFE, 0xA633CD7E6771CD8B),
143     make_floatx80_init(0x3FFE, 0x84A9F9C8084A9F9D),
144     make_floatx80_init(0x3FFE, 0xA8489E600B435A5E),
145     make_floatx80_init(0x3FFE, 0x839930523FBE3368),
146     make_floatx80_init(0x3FFE, 0xAA59233CCCA4BD49),
147     make_floatx80_init(0x3FFE, 0x828CBFBEB9A020A3),
148     make_floatx80_init(0x3FFE, 0xAC656DAE6BCC4985),
149     make_floatx80_init(0x3FFE, 0x81848DA8FAF0D277),
150     make_floatx80_init(0x3FFE, 0xAE6D8EE360BB2468),
151     make_floatx80_init(0x3FFE, 0x8080808080808081),
152     make_floatx80_init(0x3FFE, 0xB07197A23C46C654)
153 };
154 
155 static const floatx80 exp_tbl[64] = {
156     make_floatx80_init(0x3FFF, 0x8000000000000000),
157     make_floatx80_init(0x3FFF, 0x8164D1F3BC030774),
158     make_floatx80_init(0x3FFF, 0x82CD8698AC2BA1D8),
159     make_floatx80_init(0x3FFF, 0x843A28C3ACDE4048),
160     make_floatx80_init(0x3FFF, 0x85AAC367CC487B14),
161     make_floatx80_init(0x3FFF, 0x871F61969E8D1010),
162     make_floatx80_init(0x3FFF, 0x88980E8092DA8528),
163     make_floatx80_init(0x3FFF, 0x8A14D575496EFD9C),
164     make_floatx80_init(0x3FFF, 0x8B95C1E3EA8BD6E8),
165     make_floatx80_init(0x3FFF, 0x8D1ADF5B7E5BA9E4),
166     make_floatx80_init(0x3FFF, 0x8EA4398B45CD53C0),
167     make_floatx80_init(0x3FFF, 0x9031DC431466B1DC),
168     make_floatx80_init(0x3FFF, 0x91C3D373AB11C338),
169     make_floatx80_init(0x3FFF, 0x935A2B2F13E6E92C),
170     make_floatx80_init(0x3FFF, 0x94F4EFA8FEF70960),
171     make_floatx80_init(0x3FFF, 0x96942D3720185A00),
172     make_floatx80_init(0x3FFF, 0x9837F0518DB8A970),
173     make_floatx80_init(0x3FFF, 0x99E0459320B7FA64),
174     make_floatx80_init(0x3FFF, 0x9B8D39B9D54E5538),
175     make_floatx80_init(0x3FFF, 0x9D3ED9A72CFFB750),
176     make_floatx80_init(0x3FFF, 0x9EF5326091A111AC),
177     make_floatx80_init(0x3FFF, 0xA0B0510FB9714FC4),
178     make_floatx80_init(0x3FFF, 0xA27043030C496818),
179     make_floatx80_init(0x3FFF, 0xA43515AE09E680A0),
180     make_floatx80_init(0x3FFF, 0xA5FED6A9B15138EC),
181     make_floatx80_init(0x3FFF, 0xA7CD93B4E9653568),
182     make_floatx80_init(0x3FFF, 0xA9A15AB4EA7C0EF8),
183     make_floatx80_init(0x3FFF, 0xAB7A39B5A93ED338),
184     make_floatx80_init(0x3FFF, 0xAD583EEA42A14AC8),
185     make_floatx80_init(0x3FFF, 0xAF3B78AD690A4374),
186     make_floatx80_init(0x3FFF, 0xB123F581D2AC2590),
187     make_floatx80_init(0x3FFF, 0xB311C412A9112488),
188     make_floatx80_init(0x3FFF, 0xB504F333F9DE6484),
189     make_floatx80_init(0x3FFF, 0xB6FD91E328D17790),
190     make_floatx80_init(0x3FFF, 0xB8FBAF4762FB9EE8),
191     make_floatx80_init(0x3FFF, 0xBAFF5AB2133E45FC),
192     make_floatx80_init(0x3FFF, 0xBD08A39F580C36C0),
193     make_floatx80_init(0x3FFF, 0xBF1799B67A731084),
194     make_floatx80_init(0x3FFF, 0xC12C4CCA66709458),
195     make_floatx80_init(0x3FFF, 0xC346CCDA24976408),
196     make_floatx80_init(0x3FFF, 0xC5672A115506DADC),
197     make_floatx80_init(0x3FFF, 0xC78D74C8ABB9B15C),
198     make_floatx80_init(0x3FFF, 0xC9B9BD866E2F27A4),
199     make_floatx80_init(0x3FFF, 0xCBEC14FEF2727C5C),
200     make_floatx80_init(0x3FFF, 0xCE248C151F8480E4),
201     make_floatx80_init(0x3FFF, 0xD06333DAEF2B2594),
202     make_floatx80_init(0x3FFF, 0xD2A81D91F12AE45C),
203     make_floatx80_init(0x3FFF, 0xD4F35AABCFEDFA20),
204     make_floatx80_init(0x3FFF, 0xD744FCCAD69D6AF4),
205     make_floatx80_init(0x3FFF, 0xD99D15C278AFD7B4),
206     make_floatx80_init(0x3FFF, 0xDBFBB797DAF23754),
207     make_floatx80_init(0x3FFF, 0xDE60F4825E0E9124),
208     make_floatx80_init(0x3FFF, 0xE0CCDEEC2A94E110),
209     make_floatx80_init(0x3FFF, 0xE33F8972BE8A5A50),
210     make_floatx80_init(0x3FFF, 0xE5B906E77C8348A8),
211     make_floatx80_init(0x3FFF, 0xE8396A503C4BDC68),
212     make_floatx80_init(0x3FFF, 0xEAC0C6E7DD243930),
213     make_floatx80_init(0x3FFF, 0xED4F301ED9942B84),
214     make_floatx80_init(0x3FFF, 0xEFE4B99BDCDAF5CC),
215     make_floatx80_init(0x3FFF, 0xF281773C59FFB138),
216     make_floatx80_init(0x3FFF, 0xF5257D152486CC2C),
217     make_floatx80_init(0x3FFF, 0xF7D0DF730AD13BB8),
218     make_floatx80_init(0x3FFF, 0xFA83B2DB722A033C),
219     make_floatx80_init(0x3FFF, 0xFD3E0C0CF486C174)
220 };
221 
222 static const float32 exp_tbl2[64] = {
223     const_float32(0x00000000),
224     const_float32(0x9F841A9B),
225     const_float32(0x9FC1D5B9),
226     const_float32(0xA0728369),
227     const_float32(0x1FC5C95C),
228     const_float32(0x1EE85C9F),
229     const_float32(0x9FA20729),
230     const_float32(0xA07BF9AF),
231     const_float32(0xA0020DCF),
232     const_float32(0x205A63DA),
233     const_float32(0x1EB70051),
234     const_float32(0x1F6EB029),
235     const_float32(0xA0781494),
236     const_float32(0x9EB319B0),
237     const_float32(0x2017457D),
238     const_float32(0x1F11D537),
239     const_float32(0x9FB952DD),
240     const_float32(0x1FE43087),
241     const_float32(0x1FA2A818),
242     const_float32(0x1FDE494D),
243     const_float32(0x20504890),
244     const_float32(0xA073691C),
245     const_float32(0x1F9B7A05),
246     const_float32(0xA0797126),
247     const_float32(0xA071A140),
248     const_float32(0x204F62DA),
249     const_float32(0x1F283C4A),
250     const_float32(0x9F9A7FDC),
251     const_float32(0xA05B3FAC),
252     const_float32(0x1FDF2610),
253     const_float32(0x9F705F90),
254     const_float32(0x201F678A),
255     const_float32(0x1F32FB13),
256     const_float32(0x20038B30),
257     const_float32(0x200DC3CC),
258     const_float32(0x9F8B2AE6),
259     const_float32(0xA02BBF70),
260     const_float32(0xA00BF518),
261     const_float32(0xA041DD41),
262     const_float32(0x9FDF137B),
263     const_float32(0x201F1568),
264     const_float32(0x1FC13A2E),
265     const_float32(0xA03F8F03),
266     const_float32(0x1FF4907D),
267     const_float32(0x9E6E53E4),
268     const_float32(0x1FD6D45C),
269     const_float32(0xA076EDB9),
270     const_float32(0x9FA6DE21),
271     const_float32(0x1EE69A2F),
272     const_float32(0x207F439F),
273     const_float32(0x201EC207),
274     const_float32(0x9E8BE175),
275     const_float32(0x20032C4B),
276     const_float32(0x2004DFF5),
277     const_float32(0x1E72F47A),
278     const_float32(0x1F722F22),
279     const_float32(0xA017E945),
280     const_float32(0x1F401A5B),
281     const_float32(0x9FB9A9E3),
282     const_float32(0x20744C05),
283     const_float32(0x1F773A19),
284     const_float32(0x1FFE90D5),
285     const_float32(0xA041ED22),
286     const_float32(0x1F853F3A),
287 };
288 
289 static const floatx80 exp2_tbl[64] = {
290     make_floatx80_init(0x3FFF, 0x8000000000000000),
291     make_floatx80_init(0x3FFF, 0x8164D1F3BC030773),
292     make_floatx80_init(0x3FFF, 0x82CD8698AC2BA1D7),
293     make_floatx80_init(0x3FFF, 0x843A28C3ACDE4046),
294     make_floatx80_init(0x3FFF, 0x85AAC367CC487B15),
295     make_floatx80_init(0x3FFF, 0x871F61969E8D1010),
296     make_floatx80_init(0x3FFF, 0x88980E8092DA8527),
297     make_floatx80_init(0x3FFF, 0x8A14D575496EFD9A),
298     make_floatx80_init(0x3FFF, 0x8B95C1E3EA8BD6E7),
299     make_floatx80_init(0x3FFF, 0x8D1ADF5B7E5BA9E6),
300     make_floatx80_init(0x3FFF, 0x8EA4398B45CD53C0),
301     make_floatx80_init(0x3FFF, 0x9031DC431466B1DC),
302     make_floatx80_init(0x3FFF, 0x91C3D373AB11C336),
303     make_floatx80_init(0x3FFF, 0x935A2B2F13E6E92C),
304     make_floatx80_init(0x3FFF, 0x94F4EFA8FEF70961),
305     make_floatx80_init(0x3FFF, 0x96942D3720185A00),
306     make_floatx80_init(0x3FFF, 0x9837F0518DB8A96F),
307     make_floatx80_init(0x3FFF, 0x99E0459320B7FA65),
308     make_floatx80_init(0x3FFF, 0x9B8D39B9D54E5539),
309     make_floatx80_init(0x3FFF, 0x9D3ED9A72CFFB751),
310     make_floatx80_init(0x3FFF, 0x9EF5326091A111AE),
311     make_floatx80_init(0x3FFF, 0xA0B0510FB9714FC2),
312     make_floatx80_init(0x3FFF, 0xA27043030C496819),
313     make_floatx80_init(0x3FFF, 0xA43515AE09E6809E),
314     make_floatx80_init(0x3FFF, 0xA5FED6A9B15138EA),
315     make_floatx80_init(0x3FFF, 0xA7CD93B4E965356A),
316     make_floatx80_init(0x3FFF, 0xA9A15AB4EA7C0EF8),
317     make_floatx80_init(0x3FFF, 0xAB7A39B5A93ED337),
318     make_floatx80_init(0x3FFF, 0xAD583EEA42A14AC6),
319     make_floatx80_init(0x3FFF, 0xAF3B78AD690A4375),
320     make_floatx80_init(0x3FFF, 0xB123F581D2AC2590),
321     make_floatx80_init(0x3FFF, 0xB311C412A9112489),
322     make_floatx80_init(0x3FFF, 0xB504F333F9DE6484),
323     make_floatx80_init(0x3FFF, 0xB6FD91E328D17791),
324     make_floatx80_init(0x3FFF, 0xB8FBAF4762FB9EE9),
325     make_floatx80_init(0x3FFF, 0xBAFF5AB2133E45FB),
326     make_floatx80_init(0x3FFF, 0xBD08A39F580C36BF),
327     make_floatx80_init(0x3FFF, 0xBF1799B67A731083),
328     make_floatx80_init(0x3FFF, 0xC12C4CCA66709456),
329     make_floatx80_init(0x3FFF, 0xC346CCDA24976407),
330     make_floatx80_init(0x3FFF, 0xC5672A115506DADD),
331     make_floatx80_init(0x3FFF, 0xC78D74C8ABB9B15D),
332     make_floatx80_init(0x3FFF, 0xC9B9BD866E2F27A3),
333     make_floatx80_init(0x3FFF, 0xCBEC14FEF2727C5D),
334     make_floatx80_init(0x3FFF, 0xCE248C151F8480E4),
335     make_floatx80_init(0x3FFF, 0xD06333DAEF2B2595),
336     make_floatx80_init(0x3FFF, 0xD2A81D91F12AE45A),
337     make_floatx80_init(0x3FFF, 0xD4F35AABCFEDFA1F),
338     make_floatx80_init(0x3FFF, 0xD744FCCAD69D6AF4),
339     make_floatx80_init(0x3FFF, 0xD99D15C278AFD7B6),
340     make_floatx80_init(0x3FFF, 0xDBFBB797DAF23755),
341     make_floatx80_init(0x3FFF, 0xDE60F4825E0E9124),
342     make_floatx80_init(0x3FFF, 0xE0CCDEEC2A94E111),
343     make_floatx80_init(0x3FFF, 0xE33F8972BE8A5A51),
344     make_floatx80_init(0x3FFF, 0xE5B906E77C8348A8),
345     make_floatx80_init(0x3FFF, 0xE8396A503C4BDC68),
346     make_floatx80_init(0x3FFF, 0xEAC0C6E7DD24392F),
347     make_floatx80_init(0x3FFF, 0xED4F301ED9942B84),
348     make_floatx80_init(0x3FFF, 0xEFE4B99BDCDAF5CB),
349     make_floatx80_init(0x3FFF, 0xF281773C59FFB13A),
350     make_floatx80_init(0x3FFF, 0xF5257D152486CC2C),
351     make_floatx80_init(0x3FFF, 0xF7D0DF730AD13BB9),
352     make_floatx80_init(0x3FFF, 0xFA83B2DB722A033A),
353     make_floatx80_init(0x3FFF, 0xFD3E0C0CF486C175)
354 };
355 
356 static const uint32_t exp2_tbl2[64] = {
357     0x3F738000, 0x3FBEF7CA, 0x3FBDF8A9, 0x3FBCD7C9,
358     0xBFBDE8DA, 0x3FBDE85C, 0x3FBEBBF1, 0x3FBB80CA,
359     0xBFBA8373, 0xBFBE9670, 0x3FBDB700, 0x3FBEEEB0,
360     0x3FBBFD6D, 0xBFBDB319, 0x3FBDBA2B, 0x3FBE91D5,
361     0x3FBE8D5A, 0xBFBCDE7B, 0xBFBEBAAF, 0xBFBD86DA,
362     0xBFBEBEDD, 0x3FBCC96E, 0xBFBEC90B, 0x3FBBD1DB,
363     0x3FBCE5EB, 0xBFBEC274, 0x3FBEA83C, 0x3FBECB00,
364     0x3FBE9301, 0xBFBD8367, 0xBFBEF05F, 0x3FBDFB3C,
365     0x3FBEB2FB, 0x3FBAE2CB, 0x3FBCDC3C, 0x3FBEE9AA,
366     0xBFBEAEFD, 0xBFBCBF51, 0x3FBEF88A, 0x3FBD83B2,
367     0x3FBDF8AB, 0xBFBDFB17, 0xBFBEFE3C, 0xBFBBB6F8,
368     0xBFBCEE53, 0xBFBDA4AE, 0x3FBC9124, 0x3FBEB243,
369     0x3FBDE69A, 0xBFB8BC61, 0x3FBDF610, 0xBFBD8BE1,
370     0x3FBACB12, 0x3FBB9BFE, 0x3FBCF2F4, 0x3FBEF22F,
371     0xBFBDBF4A, 0x3FBEC01A, 0x3FBE8CAC, 0xBFBCBB3F,
372     0x3FBEF73A, 0xBFB8B795, 0x3FBEF84B, 0xBFBEF581
373 };
374 
375 static const floatx80 pi_tbl[65] = {
376     make_floatx80_init(0xC004, 0xC90FDAA22168C235),
377     make_floatx80_init(0xC004, 0xC2C75BCD105D7C23),
378     make_floatx80_init(0xC004, 0xBC7EDCF7FF523611),
379     make_floatx80_init(0xC004, 0xB6365E22EE46F000),
380     make_floatx80_init(0xC004, 0xAFEDDF4DDD3BA9EE),
381     make_floatx80_init(0xC004, 0xA9A56078CC3063DD),
382     make_floatx80_init(0xC004, 0xA35CE1A3BB251DCB),
383     make_floatx80_init(0xC004, 0x9D1462CEAA19D7B9),
384     make_floatx80_init(0xC004, 0x96CBE3F9990E91A8),
385     make_floatx80_init(0xC004, 0x9083652488034B96),
386     make_floatx80_init(0xC004, 0x8A3AE64F76F80584),
387     make_floatx80_init(0xC004, 0x83F2677A65ECBF73),
388     make_floatx80_init(0xC003, 0xFB53D14AA9C2F2C2),
389     make_floatx80_init(0xC003, 0xEEC2D3A087AC669F),
390     make_floatx80_init(0xC003, 0xE231D5F66595DA7B),
391     make_floatx80_init(0xC003, 0xD5A0D84C437F4E58),
392     make_floatx80_init(0xC003, 0xC90FDAA22168C235),
393     make_floatx80_init(0xC003, 0xBC7EDCF7FF523611),
394     make_floatx80_init(0xC003, 0xAFEDDF4DDD3BA9EE),
395     make_floatx80_init(0xC003, 0xA35CE1A3BB251DCB),
396     make_floatx80_init(0xC003, 0x96CBE3F9990E91A8),
397     make_floatx80_init(0xC003, 0x8A3AE64F76F80584),
398     make_floatx80_init(0xC002, 0xFB53D14AA9C2F2C2),
399     make_floatx80_init(0xC002, 0xE231D5F66595DA7B),
400     make_floatx80_init(0xC002, 0xC90FDAA22168C235),
401     make_floatx80_init(0xC002, 0xAFEDDF4DDD3BA9EE),
402     make_floatx80_init(0xC002, 0x96CBE3F9990E91A8),
403     make_floatx80_init(0xC001, 0xFB53D14AA9C2F2C2),
404     make_floatx80_init(0xC001, 0xC90FDAA22168C235),
405     make_floatx80_init(0xC001, 0x96CBE3F9990E91A8),
406     make_floatx80_init(0xC000, 0xC90FDAA22168C235),
407     make_floatx80_init(0xBFFF, 0xC90FDAA22168C235),
408     make_floatx80_init(0x0000, 0x0000000000000000),
409     make_floatx80_init(0x3FFF, 0xC90FDAA22168C235),
410     make_floatx80_init(0x4000, 0xC90FDAA22168C235),
411     make_floatx80_init(0x4001, 0x96CBE3F9990E91A8),
412     make_floatx80_init(0x4001, 0xC90FDAA22168C235),
413     make_floatx80_init(0x4001, 0xFB53D14AA9C2F2C2),
414     make_floatx80_init(0x4002, 0x96CBE3F9990E91A8),
415     make_floatx80_init(0x4002, 0xAFEDDF4DDD3BA9EE),
416     make_floatx80_init(0x4002, 0xC90FDAA22168C235),
417     make_floatx80_init(0x4002, 0xE231D5F66595DA7B),
418     make_floatx80_init(0x4002, 0xFB53D14AA9C2F2C2),
419     make_floatx80_init(0x4003, 0x8A3AE64F76F80584),
420     make_floatx80_init(0x4003, 0x96CBE3F9990E91A8),
421     make_floatx80_init(0x4003, 0xA35CE1A3BB251DCB),
422     make_floatx80_init(0x4003, 0xAFEDDF4DDD3BA9EE),
423     make_floatx80_init(0x4003, 0xBC7EDCF7FF523611),
424     make_floatx80_init(0x4003, 0xC90FDAA22168C235),
425     make_floatx80_init(0x4003, 0xD5A0D84C437F4E58),
426     make_floatx80_init(0x4003, 0xE231D5F66595DA7B),
427     make_floatx80_init(0x4003, 0xEEC2D3A087AC669F),
428     make_floatx80_init(0x4003, 0xFB53D14AA9C2F2C2),
429     make_floatx80_init(0x4004, 0x83F2677A65ECBF73),
430     make_floatx80_init(0x4004, 0x8A3AE64F76F80584),
431     make_floatx80_init(0x4004, 0x9083652488034B96),
432     make_floatx80_init(0x4004, 0x96CBE3F9990E91A8),
433     make_floatx80_init(0x4004, 0x9D1462CEAA19D7B9),
434     make_floatx80_init(0x4004, 0xA35CE1A3BB251DCB),
435     make_floatx80_init(0x4004, 0xA9A56078CC3063DD),
436     make_floatx80_init(0x4004, 0xAFEDDF4DDD3BA9EE),
437     make_floatx80_init(0x4004, 0xB6365E22EE46F000),
438     make_floatx80_init(0x4004, 0xBC7EDCF7FF523611),
439     make_floatx80_init(0x4004, 0xC2C75BCD105D7C23),
440     make_floatx80_init(0x4004, 0xC90FDAA22168C235)
441 };
442 
443 static const float32 pi_tbl2[65] = {
444     const_float32(0x21800000),
445     const_float32(0xA0D00000),
446     const_float32(0xA1E80000),
447     const_float32(0x21480000),
448     const_float32(0xA1200000),
449     const_float32(0x21FC0000),
450     const_float32(0x21100000),
451     const_float32(0xA1580000),
452     const_float32(0x21E00000),
453     const_float32(0x20B00000),
454     const_float32(0xA1880000),
455     const_float32(0x21C40000),
456     const_float32(0x20000000),
457     const_float32(0x21380000),
458     const_float32(0xA1300000),
459     const_float32(0x9FC00000),
460     const_float32(0x21000000),
461     const_float32(0xA1680000),
462     const_float32(0xA0A00000),
463     const_float32(0x20900000),
464     const_float32(0x21600000),
465     const_float32(0xA1080000),
466     const_float32(0x1F800000),
467     const_float32(0xA0B00000),
468     const_float32(0x20800000),
469     const_float32(0xA0200000),
470     const_float32(0x20E00000),
471     const_float32(0x1F000000),
472     const_float32(0x20000000),
473     const_float32(0x20600000),
474     const_float32(0x1F800000),
475     const_float32(0x1F000000),
476     const_float32(0x00000000),
477     const_float32(0x9F000000),
478     const_float32(0x9F800000),
479     const_float32(0xA0600000),
480     const_float32(0xA0000000),
481     const_float32(0x9F000000),
482     const_float32(0xA0E00000),
483     const_float32(0x20200000),
484     const_float32(0xA0800000),
485     const_float32(0x20B00000),
486     const_float32(0x9F800000),
487     const_float32(0x21080000),
488     const_float32(0xA1600000),
489     const_float32(0xA0900000),
490     const_float32(0x20A00000),
491     const_float32(0x21680000),
492     const_float32(0xA1000000),
493     const_float32(0x1FC00000),
494     const_float32(0x21300000),
495     const_float32(0xA1380000),
496     const_float32(0xA0000000),
497     const_float32(0xA1C40000),
498     const_float32(0x21880000),
499     const_float32(0xA0B00000),
500     const_float32(0xA1E00000),
501     const_float32(0x21580000),
502     const_float32(0xA1100000),
503     const_float32(0xA1FC0000),
504     const_float32(0x21200000),
505     const_float32(0xA1480000),
506     const_float32(0x21E80000),
507     const_float32(0x20D00000),
508     const_float32(0xA1800000),
509 };
510 
511 static const floatx80 atan_tbl[128] = {
512     make_floatx80_init(0x3FFB, 0x83D152C5060B7A51),
513     make_floatx80_init(0x3FFB, 0x8BC8544565498B8B),
514     make_floatx80_init(0x3FFB, 0x93BE406017626B0D),
515     make_floatx80_init(0x3FFB, 0x9BB3078D35AEC202),
516     make_floatx80_init(0x3FFB, 0xA3A69A525DDCE7DE),
517     make_floatx80_init(0x3FFB, 0xAB98E94362765619),
518     make_floatx80_init(0x3FFB, 0xB389E502F9C59862),
519     make_floatx80_init(0x3FFB, 0xBB797E436B09E6FB),
520     make_floatx80_init(0x3FFB, 0xC367A5C739E5F446),
521     make_floatx80_init(0x3FFB, 0xCB544C61CFF7D5C6),
522     make_floatx80_init(0x3FFB, 0xD33F62F82488533E),
523     make_floatx80_init(0x3FFB, 0xDB28DA8162404C77),
524     make_floatx80_init(0x3FFB, 0xE310A4078AD34F18),
525     make_floatx80_init(0x3FFB, 0xEAF6B0A8188EE1EB),
526     make_floatx80_init(0x3FFB, 0xF2DAF1949DBE79D5),
527     make_floatx80_init(0x3FFB, 0xFABD581361D47E3E),
528     make_floatx80_init(0x3FFC, 0x8346AC210959ECC4),
529     make_floatx80_init(0x3FFC, 0x8B232A08304282D8),
530     make_floatx80_init(0x3FFC, 0x92FB70B8D29AE2F9),
531     make_floatx80_init(0x3FFC, 0x9ACF476F5CCD1CB4),
532     make_floatx80_init(0x3FFC, 0xA29E76304954F23F),
533     make_floatx80_init(0x3FFC, 0xAA68C5D08AB85230),
534     make_floatx80_init(0x3FFC, 0xB22DFFFD9D539F83),
535     make_floatx80_init(0x3FFC, 0xB9EDEF453E900EA5),
536     make_floatx80_init(0x3FFC, 0xC1A85F1CC75E3EA5),
537     make_floatx80_init(0x3FFC, 0xC95D1BE828138DE6),
538     make_floatx80_init(0x3FFC, 0xD10BF300840D2DE4),
539     make_floatx80_init(0x3FFC, 0xD8B4B2BA6BC05E7A),
540     make_floatx80_init(0x3FFC, 0xE0572A6BB42335F6),
541     make_floatx80_init(0x3FFC, 0xE7F32A70EA9CAA8F),
542     make_floatx80_init(0x3FFC, 0xEF88843264ECEFAA),
543     make_floatx80_init(0x3FFC, 0xF7170A28ECC06666),
544     make_floatx80_init(0x3FFD, 0x812FD288332DAD32),
545     make_floatx80_init(0x3FFD, 0x88A8D1B1218E4D64),
546     make_floatx80_init(0x3FFD, 0x9012AB3F23E4AEE8),
547     make_floatx80_init(0x3FFD, 0x976CC3D411E7F1B9),
548     make_floatx80_init(0x3FFD, 0x9EB689493889A227),
549     make_floatx80_init(0x3FFD, 0xA5EF72C34487361B),
550     make_floatx80_init(0x3FFD, 0xAD1700BAF07A7227),
551     make_floatx80_init(0x3FFD, 0xB42CBCFAFD37EFB7),
552     make_floatx80_init(0x3FFD, 0xBB303A940BA80F89),
553     make_floatx80_init(0x3FFD, 0xC22115C6FCAEBBAF),
554     make_floatx80_init(0x3FFD, 0xC8FEF3E686331221),
555     make_floatx80_init(0x3FFD, 0xCFC98330B4000C70),
556     make_floatx80_init(0x3FFD, 0xD6807AA1102C5BF9),
557     make_floatx80_init(0x3FFD, 0xDD2399BC31252AA3),
558     make_floatx80_init(0x3FFD, 0xE3B2A8556B8FC517),
559     make_floatx80_init(0x3FFD, 0xEA2D764F64315989),
560     make_floatx80_init(0x3FFD, 0xF3BF5BF8BAD1A21D),
561     make_floatx80_init(0x3FFE, 0x801CE39E0D205C9A),
562     make_floatx80_init(0x3FFE, 0x8630A2DADA1ED066),
563     make_floatx80_init(0x3FFE, 0x8C1AD445F3E09B8C),
564     make_floatx80_init(0x3FFE, 0x91DB8F1664F350E2),
565     make_floatx80_init(0x3FFE, 0x97731420365E538C),
566     make_floatx80_init(0x3FFE, 0x9CE1C8E6A0B8CDBA),
567     make_floatx80_init(0x3FFE, 0xA22832DBCADAAE09),
568     make_floatx80_init(0x3FFE, 0xA746F2DDB7602294),
569     make_floatx80_init(0x3FFE, 0xAC3EC0FB997DD6A2),
570     make_floatx80_init(0x3FFE, 0xB110688AEBDC6F6A),
571     make_floatx80_init(0x3FFE, 0xB5BCC49059ECC4B0),
572     make_floatx80_init(0x3FFE, 0xBA44BC7DD470782F),
573     make_floatx80_init(0x3FFE, 0xBEA94144FD049AAC),
574     make_floatx80_init(0x3FFE, 0xC2EB4ABB661628B6),
575     make_floatx80_init(0x3FFE, 0xC70BD54CE602EE14),
576     make_floatx80_init(0x3FFE, 0xCD000549ADEC7159),
577     make_floatx80_init(0x3FFE, 0xD48457D2D8EA4EA3),
578     make_floatx80_init(0x3FFE, 0xDB948DA712DECE3B),
579     make_floatx80_init(0x3FFE, 0xE23855F969E8096A),
580     make_floatx80_init(0x3FFE, 0xE8771129C4353259),
581     make_floatx80_init(0x3FFE, 0xEE57C16E0D379C0D),
582     make_floatx80_init(0x3FFE, 0xF3E10211A87C3779),
583     make_floatx80_init(0x3FFE, 0xF919039D758B8D41),
584     make_floatx80_init(0x3FFE, 0xFE058B8F64935FB3),
585     make_floatx80_init(0x3FFF, 0x8155FB497B685D04),
586     make_floatx80_init(0x3FFF, 0x83889E3549D108E1),
587     make_floatx80_init(0x3FFF, 0x859CFA76511D724B),
588     make_floatx80_init(0x3FFF, 0x87952ECFFF8131E7),
589     make_floatx80_init(0x3FFF, 0x89732FD19557641B),
590     make_floatx80_init(0x3FFF, 0x8B38CAD101932A35),
591     make_floatx80_init(0x3FFF, 0x8CE7A8D8301EE6B5),
592     make_floatx80_init(0x3FFF, 0x8F46A39E2EAE5281),
593     make_floatx80_init(0x3FFF, 0x922DA7D791888487),
594     make_floatx80_init(0x3FFF, 0x94D19FCBDEDF5241),
595     make_floatx80_init(0x3FFF, 0x973AB94419D2A08B),
596     make_floatx80_init(0x3FFF, 0x996FF00E08E10B96),
597     make_floatx80_init(0x3FFF, 0x9B773F9512321DA7),
598     make_floatx80_init(0x3FFF, 0x9D55CC320F935624),
599     make_floatx80_init(0x3FFF, 0x9F100575006CC571),
600     make_floatx80_init(0x3FFF, 0xA0A9C290D97CC06C),
601     make_floatx80_init(0x3FFF, 0xA22659EBEBC0630A),
602     make_floatx80_init(0x3FFF, 0xA388B4AFF6EF0EC9),
603     make_floatx80_init(0x3FFF, 0xA4D35F1061D292C4),
604     make_floatx80_init(0x3FFF, 0xA60895DCFBE3187E),
605     make_floatx80_init(0x3FFF, 0xA72A51DC7367BEAC),
606     make_floatx80_init(0x3FFF, 0xA83A51530956168F),
607     make_floatx80_init(0x3FFF, 0xA93A20077539546E),
608     make_floatx80_init(0x3FFF, 0xAA9E7245023B2605),
609     make_floatx80_init(0x3FFF, 0xAC4C84BA6FE4D58F),
610     make_floatx80_init(0x3FFF, 0xADCE4A4A606B9712),
611     make_floatx80_init(0x3FFF, 0xAF2A2DCD8D263C9C),
612     make_floatx80_init(0x3FFF, 0xB0656F81F22265C7),
613     make_floatx80_init(0x3FFF, 0xB18465150F71496A),
614     make_floatx80_init(0x3FFF, 0xB28AAA156F9ADA35),
615     make_floatx80_init(0x3FFF, 0xB37B44FF3766B895),
616     make_floatx80_init(0x3FFF, 0xB458C3DCE9630433),
617     make_floatx80_init(0x3FFF, 0xB525529D562246BD),
618     make_floatx80_init(0x3FFF, 0xB5E2CCA95F9D88CC),
619     make_floatx80_init(0x3FFF, 0xB692CADA7ACA1ADA),
620     make_floatx80_init(0x3FFF, 0xB736AEA7A6925838),
621     make_floatx80_init(0x3FFF, 0xB7CFAB287E9F7B36),
622     make_floatx80_init(0x3FFF, 0xB85ECC66CB219835),
623     make_floatx80_init(0x3FFF, 0xB8E4FD5A20A593DA),
624     make_floatx80_init(0x3FFF, 0xB99F41F64AFF9BB5),
625     make_floatx80_init(0x3FFF, 0xBA7F1E17842BBE7B),
626     make_floatx80_init(0x3FFF, 0xBB4712857637E17D),
627     make_floatx80_init(0x3FFF, 0xBBFABE8A4788DF6F),
628     make_floatx80_init(0x3FFF, 0xBC9D0FAD2B689D79),
629     make_floatx80_init(0x3FFF, 0xBD306A39471ECD86),
630     make_floatx80_init(0x3FFF, 0xBDB6C731856AF18A),
631     make_floatx80_init(0x3FFF, 0xBE31CAC502E80D70),
632     make_floatx80_init(0x3FFF, 0xBEA2D55CE33194E2),
633     make_floatx80_init(0x3FFF, 0xBF0B10B7C03128F0),
634     make_floatx80_init(0x3FFF, 0xBF6B7A18DACB778D),
635     make_floatx80_init(0x3FFF, 0xBFC4EA4663FA18F6),
636     make_floatx80_init(0x3FFF, 0xC0181BDE8B89A454),
637     make_floatx80_init(0x3FFF, 0xC065B066CFBF6439),
638     make_floatx80_init(0x3FFF, 0xC0AE345F56340AE6),
639     make_floatx80_init(0x3FFF, 0xC0F222919CB9E6A7)
640 };
641 #endif
642