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