about summary refs log tree commit diff
path: root/sysdeps/libm-ieee754/t_exp2f.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/libm-ieee754/t_exp2f.h')
-rw-r--r--sysdeps/libm-ieee754/t_exp2f.h649
1 files changed, 350 insertions, 299 deletions
diff --git a/sysdeps/libm-ieee754/t_exp2f.h b/sysdeps/libm-ieee754/t_exp2f.h
index 0f7674cefb..e15d15787c 100644
--- a/sysdeps/libm-ieee754/t_exp2f.h
+++ b/sysdeps/libm-ieee754/t_exp2f.h
@@ -1,301 +1,352 @@
-/* These values are accurate to 23+9 bits when represented as
-   a float.  */
-static const float exp2_accuratetable[256] = {
-0.70711034541 /* 0x0.b5052f003 */,
-0.70903021104 /* 0x0.b58301004 */,
-0.71092861900 /* 0x0.b5ff6b006 */,
-0.71286851176 /* 0x0.b67e8d006 */,
-0.71481245762 /* 0x0.b6fdf3004 */,
-0.71673321725 /* 0x0.b77bd4001 */,
-0.71868461379 /* 0x0.b7fbb7006 */,
-0.72064983853 /* 0x0.b87c82006 */,
-0.72258073096 /* 0x0.b8fb0d003 */,
-0.72456008199 /* 0x0.b97cc5002 */,
-0.72652846578 /* 0x0.b9fdc5002 */,
-0.72848570353 /* 0x0.ba7e0a004 */,
-0.73046034578 /* 0x0.baff73003 */,
-0.73244112730 /* 0x0.bb8143000 */,
-0.73443359139 /* 0x0.bc03d7002 */,
-0.73646944762 /* 0x0.bc8943000 */,
-0.73839598903 /* 0x0.bd0785006 */,
-0.74041211608 /* 0x0.bd8ba6002 */,
-0.74243509775 /* 0x0.be103a004 */,
-0.74444299943 /* 0x0.be93d1004 */,
-0.74646854405 /* 0x0.bf1890003 */,
-0.74849390993 /* 0x0.bf9d4c006 */,
-0.75051373248 /* 0x0.c021ab003 */,
-0.75252974037 /* 0x0.c0a5ca002 */,
-0.75460278996 /* 0x0.c12da6006 */,
-0.75663453342 /* 0x0.c1b2cd001 */,
-0.75867807874 /* 0x0.c238ba006 */,
-0.76072299481 /* 0x0.c2bebe000 */,
-0.76271909478 /* 0x0.c3418f002 */,
-0.76482868204 /* 0x0.c3cbd0006 */,
-0.76694220311 /* 0x0.c45653004 */,
-0.76902121311 /* 0x0.c4de93003 */,
-0.77110719688 /* 0x0.c56748005 */,
-0.77314376835 /* 0x0.c5ecc0003 */,
-0.77531152970 /* 0x0.c67ad1004 */,
-0.77739948042 /* 0x0.c703a7005 */,
-0.77948719274 /* 0x0.c78c79007 */,
-0.78161448246 /* 0x0.c817e3004 */,
-0.78381162885 /* 0x0.c8a7e1002 */,
-0.78587090971 /* 0x0.c92ed6001 */,
-0.78799921275 /* 0x0.c9ba51001 */,
-0.79011362800 /* 0x0.ca44e3006 */,
-0.79225623615 /* 0x0.cad14e005 */,
-0.79441082487 /* 0x0.cb5e82006 */,
-0.79654645924 /* 0x0.cbea78003 */,
-0.79873132707 /* 0x0.cc79a8001 */,
-0.80093026168 /* 0x0.cd09c4005 */,
-0.80304825308 /* 0x0.cd9492001 */,
-0.80526113516 /* 0x0.ce2598004 */,
-0.80742740634 /* 0x0.ceb390002 */,
-0.80963188410 /* 0x0.cf4409000 */,
-0.81180763254 /* 0x0.cfd2a0006 */,
-0.81401169308 /* 0x0.d06312005 */,
-0.81622666121 /* 0x0.d0f43b000 */,
-0.81843453653 /* 0x0.d184ed005 */,
-0.82070738078 /* 0x0.d219e1001 */,
-0.82289630179 /* 0x0.d2a955003 */,
-0.82509487868 /* 0x0.d3396b000 */,
-0.82737630616 /* 0x0.d3ceef007 */,
-0.82961845408 /* 0x0.d461e0007 */,
-0.83179849386 /* 0x0.d4f0bf000 */,
-0.83408612023 /* 0x0.d586ab007 */,
-0.83636939536 /* 0x0.d61c4e007 */,
-0.83862531186 /* 0x0.d6b026000 */,
-0.84094470740 /* 0x0.d74827000 */,
-0.84316509971 /* 0x0.d7d9ab006 */,
-0.84546715027 /* 0x0.d87089004 */,
-0.84781247378 /* 0x0.d90a3d000 */,
-0.85004067431 /* 0x0.d99c44007 */,
-0.85237431530 /* 0x0.da3534003 */,
-0.85468208790 /* 0x0.dacc72000 */,
-0.85696077349 /* 0x0.db61c8002 */,
-0.85931611062 /* 0x0.dbfc24000 */,
-0.86171466122 /* 0x0.dc9955007 */,
-0.86397939929 /* 0x0.dd2dc1006 */,
-0.86633706098 /* 0x0.ddc844004 */,
-0.86868536481 /* 0x0.de622a006 */,
-0.87101131681 /* 0x0.defa99002 */,
-0.87337517739 /* 0x0.df9584000 */,
-0.87576484682 /* 0x0.e03220001 */,
-0.87814646969 /* 0x0.e0ce35007 */,
-0.88050335648 /* 0x0.e168ab002 */,
-0.88291734457 /* 0x0.e206df000 */,
-0.88522624975 /* 0x0.e29e30004 */,
-0.88768237833 /* 0x0.e33f27003 */,
-0.89007008077 /* 0x0.e3dba2001 */,
-0.89250904327 /* 0x0.e47b79004 */,
-0.89490824949 /* 0x0.e518b5007 */,
-0.89735335113 /* 0x0.e5b8f3001 */,
-0.89977204799 /* 0x0.e65776000 */,
-0.90221023561 /* 0x0.e6f740001 */,
-0.90468037137 /* 0x0.e79922006 */,
-0.90711551909 /* 0x0.e838b9003 */,
-0.90958660844 /* 0x0.e8daab002 */,
-0.91205561170 /* 0x0.e97c7a006 */,
-0.91451990614 /* 0x0.ea1dfa006 */,
-0.91699457179 /* 0x0.eac028007 */,
-0.91948717833 /* 0x0.eb6383000 */,
-0.92201787240 /* 0x0.ec095d004 */,
-0.92446959027 /* 0x0.ecaa0a006 */,
-0.92700457577 /* 0x0.ed502c003 */,
-0.92946064473 /* 0x0.edf122000 */,
-0.93202102187 /* 0x0.ee98ee001 */,
-0.93454003345 /* 0x0.ef3e04007 */,
-0.93707615143 /* 0x0.efe439004 */,
-0.93964391957 /* 0x0.f08c81007 */,
-0.94217014323 /* 0x0.f13210007 */,
-0.94470518835 /* 0x0.f1d833005 */,
-0.94727593667 /* 0x0.f280ad004 */,
-0.94985383753 /* 0x0.f3299f002 */,
-0.95245110992 /* 0x0.f3d3d6002 */,
-0.95500063903 /* 0x0.f47aec004 */,
-0.95758175857 /* 0x0.f52414004 */,
-0.96018302447 /* 0x0.f5ce8e004 */,
-0.96279788024 /* 0x0.f679ec005 */,
-0.96541762355 /* 0x0.f7259c002 */,
-0.96803289660 /* 0x0.f7d101005 */,
-0.97066921004 /* 0x0.f87dc7006 */,
-0.97328519823 /* 0x0.f92938001 */,
-0.97589331867 /* 0x0.f9d425001 */,
-0.97858297827 /* 0x0.fa846a001 */,
-0.98121380814 /* 0x0.fb30d4005 */,
-0.98389244083 /* 0x0.fbe060002 */,
-0.98657202723 /* 0x0.fc8ffc001 */,
-0.98919564488 /* 0x0.fd3bed001 */,
-0.99194401506 /* 0x0.fdf00b002 */,
-0.99460238224 /* 0x0.fe9e43004 */,
-0.99728542574 /* 0x0.ff4e19005 */,
-1.00000000000 /* 0x1.000000000 */,
-1.00271666054 /* 0x1.00b20a003 */,
-1.00544095058 /* 0x1.01649400c */,
-1.00819313547 /* 0x1.0218f200e */,
-1.01089513312 /* 0x1.02ca06007 */,
-1.01363527782 /* 0x1.037d9a005 */,
-1.01635849497 /* 0x1.04301200e */,
-1.01918780808 /* 0x1.04e97e003 */,
-1.02182090297 /* 0x1.05960e00a */,
-1.02468311789 /* 0x1.0651a2002 */,
-1.02744102491 /* 0x1.070660009 */,
-1.03019988541 /* 0x1.07bb2e002 */,
-1.03300857552 /* 0x1.087340005 */,
-1.03580951708 /* 0x1.092ad000b */,
-1.03865504271 /* 0x1.09e54c004 */,
-1.04145348082 /* 0x1.0a9cb2007 */,
-1.04426109801 /* 0x1.0b54b2007 */,
-1.04706287389 /* 0x1.0c0c50003 */,
-1.04996109020 /* 0x1.0cca40007 */,
-1.05282557024 /* 0x1.0d85fa009 */,
-1.05564439314 /* 0x1.0e3eb600c */,
-1.05850863475 /* 0x1.0efa6c00c */,
-1.06137108805 /* 0x1.0fb604001 */,
-1.06423723713 /* 0x1.1071da00a */,
-1.06716394429 /* 0x1.1131a8003 */,
-1.07004547127 /* 0x1.11ee80005 */,
-1.07294559497 /* 0x1.12ac9000c */,
-1.07586789139 /* 0x1.136c14005 */,
-1.07873940478 /* 0x1.142844007 */,
-1.08172726651 /* 0x1.14ec1400e */,
-1.08459246171 /* 0x1.15a7da008 */,
-1.08752059939 /* 0x1.1667c0001 */,
-1.09050178536 /* 0x1.172b20005 */,
-1.09349620361 /* 0x1.17ef5e00d */,
-1.09634935875 /* 0x1.18aa5a00d */,
-1.09940552720 /* 0x1.1972a4006 */,
-1.10237383858 /* 0x1.1a352c00a */,
-1.10530221471 /* 0x1.1af516006 */,
-1.10838031771 /* 0x1.1bbed0001 */,
-1.11137616648 /* 0x1.1c8326009 */,
-1.11441528816 /* 0x1.1d4a5200d */,
-1.11741960066 /* 0x1.1e0f3600c */,
-1.12044525152 /* 0x1.1ed580003 */,
-1.12346303485 /* 0x1.1f9b4600f */,
-1.12655401230 /* 0x1.2065d8000 */,
-1.12955987463 /* 0x1.212ad6007 */,
-1.13263440148 /* 0x1.21f45400b */,
-1.13567769541 /* 0x1.22bbc6009 */,
-1.13877141483 /* 0x1.238686005 */,
-1.14189016826 /* 0x1.2452ea004 */,
-1.14495265504 /* 0x1.251b9e00e */,
-1.14807951452 /* 0x1.25e88a001 */,
-1.15118837366 /* 0x1.26b448006 */,
-1.15428590795 /* 0x1.277f4800e */,
-1.15744590761 /* 0x1.284e60001 */,
-1.16055941596 /* 0x1.291a6c00a */,
-1.16371822369 /* 0x1.29e970008 */,
-1.16683173193 /* 0x1.2ab57c009 */,
-1.17002511035 /* 0x1.2b86c4007 */,
-1.17321026344 /* 0x1.2c578200d */,
-1.17639815811 /* 0x1.2d286e002 */,
-1.17961537856 /* 0x1.2dfb4600c */,
-1.18278920671 /* 0x1.2ecb4600e */,
-1.18602204342 /* 0x1.2f9f2400d */,
-1.18924140952 /* 0x1.30722000f */,
-1.19246912021 /* 0x1.3145a800c */,
-1.19566547881 /* 0x1.321722007 */,
-1.19890022298 /* 0x1.32eb2000e */,
-1.20205938816 /* 0x1.33ba2a000 */,
-1.20533752458 /* 0x1.34910000b */,
-1.20865476136 /* 0x1.356a66003 */,
-1.21195018302 /* 0x1.36425e007 */,
-1.21525228034 /* 0x1.371ac6007 */,
-1.21851313125 /* 0x1.37f07a007 */,
-1.22183310988 /* 0x1.38ca0e001 */,
-1.22516608253 /* 0x1.39a47c00a */,
-1.22848713419 /* 0x1.3a7e2200f */,
-1.23174583912 /* 0x1.3b53b2000 */,
-1.23522067082 /* 0x1.3c376c008 */,
-1.23849928397 /* 0x1.3d0e4a00c */,
-1.24181902431 /* 0x1.3de7da00f */,
-1.24523758889 /* 0x1.3ec7e4001 */,
-1.24859035038 /* 0x1.3fa39e00f */,
-1.25193393249 /* 0x1.407ebe00d */,
-1.25539278994 /* 0x1.41616c007 */,
-1.25880420214 /* 0x1.4240fe004 */,
-1.26223969480 /* 0x1.43222400e */,
-1.26558542253 /* 0x1.43fd68001 */,
-1.26904225354 /* 0x1.44dff4003 */,
-1.27251851576 /* 0x1.45c3c600c */,
-1.27593302748 /* 0x1.46a38c00f */,
-1.27941727649 /* 0x1.4787e4007 */,
-1.28286683578 /* 0x1.4869f600d */,
-1.28636789342 /* 0x1.494f6800e */,
-1.28982734693 /* 0x1.4a3220009 */,
-1.29335498813 /* 0x1.4b1950002 */,
-1.29684555547 /* 0x1.4bfe1200b */,
-1.30039131655 /* 0x1.4ce672009 */,
-1.30388665216 /* 0x1.4dcb8400b */,
-1.30738770972 /* 0x1.4eb0f6007 */,
-1.31095492852 /* 0x1.4f9abe008 */,
-1.31452167056 /* 0x1.50847e00f */,
-1.31807971017 /* 0x1.516dac00b */,
-1.32168746004 /* 0x1.525a1c006 */,
-1.32518649117 /* 0x1.533f6c00b */,
-1.32884454737 /* 0x1.542f28007 */,
-1.33244597914 /* 0x1.551b2e002 */,
-1.33601069461 /* 0x1.5604cc007 */,
-1.33969032765 /* 0x1.56f5f2000 */,
-1.34328985233 /* 0x1.57e1d800d */,
-1.34692609319 /* 0x1.58d026006 */,
-1.35055744648 /* 0x1.59be22000 */,
-1.35424625891 /* 0x1.5aafe200c */,
-1.35795569436 /* 0x1.5ba2fc00b */,
-1.36158764384 /* 0x1.5c910200e */,
-1.36525344864 /* 0x1.5d814000a */,
-1.36908590815 /* 0x1.5e7c6a00e */,
-1.37272357954 /* 0x1.5f6ad0009 */,
-1.37639832498 /* 0x1.605ba4001 */,
-1.38020527377 /* 0x1.615522009 */,
-1.38388323800 /* 0x1.62462c00b */,
-1.38770687583 /* 0x1.6340c2002 */,
-1.39144265656 /* 0x1.643596003 */,
-1.39518976211 /* 0x1.652b28000 */,
-1.39905631551 /* 0x1.66288e006 */,
-1.40280294419 /* 0x1.671e18000 */,
-1.40661609194 /* 0x1.6817fe00e */,
-1.41035604489 /* 0x1.690d18008 */
+/* Accurate tables for exp2f().
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* This table has the property that, for all integers -128 <= i <= 127,
+   exp(i/256.0 + __exp2f_deltatable[i-128]) == __exp2f_atable[i+128] + r
+   for some -2^-35 < r < 2^-35 (abs(r) < 2^-36 if i <= 0); and that
+   __exp2f_deltatable[i+128] == t * 2^-30
+   for integer t so that abs(t) <= 43447 * 2^0.  */
+
+#define W30 (9.31322575e-10)
+static const float __exp2f_deltatable[256] = {
+      -810*W30,       283*W30,     -1514*W30,      1304*W30,
+     -1148*W30,       -98*W30,      -744*W30,      -156*W30,
+      -419*W30,      -155*W30,       474*W30,       167*W30,
+     -1984*W30,      -826*W30,       692*W30,       781*W30,
+      -578*W30,      -411*W30,      -129*W30,     -1500*W30,
+       654*W30,      -141*W30,      -816*W30,       -53*W30,
+       148*W30,       493*W30,     -2214*W30,       760*W30,
+       260*W30,       750*W30,     -1300*W30,      1424*W30,
+     -1445*W30,      -339*W30,      -680*W30,      -349*W30,
+      -922*W30,       531*W30,       193*W30,     -2892*W30,
+       290*W30,     -2145*W30,      -276*W30,       485*W30,
+      -695*W30,       215*W30,     -7093*W30,       412*W30,
+     -4596*W30,       367*W30,       592*W30,      -615*W30,
+       -97*W30,     -1066*W30,       972*W30,      -226*W30,
+      -625*W30,      -374*W30,     -5647*W30,      -180*W30,
+     20349*W30,      -447*W30,       111*W30,     -4164*W30,
+       -87*W30,       -21*W30,      -251*W30,        66*W30,
+      -517*W30,      2093*W30,      -263*W30,       182*W30,
+      -601*W30,       475*W30,      -483*W30,     -1251*W30,
+      -373*W30,      1471*W30,       -92*W30,      -215*W30,
+       -97*W30,      -190*W30,         0*W30,      -290*W30,
+     -2647*W30,      1940*W30,      -582*W30,        28*W30,
+       833*W30,      1493*W30,        34*W30,       321*W30,
+      3327*W30,       -35*W30,       177*W30,      -135*W30,
+      -796*W30,      -428*W30,       129*W30,      9332*W30,
+       -12*W30,       -69*W30,     -1743*W30,      6508*W30,
+       -60*W30,       359*W30,     43447*W30,        15*W30,
+       -23*W30,      -305*W30,      -375*W30,      -652*W30,
+       667*W30,       269*W30,     -1575*W30,       185*W30,
+      -329*W30,       200*W30,      6002*W30,       163*W30,
+      -647*W30,        19*W30,      -603*W30,      -755*W30,
+       742*W30,      -438*W30,      3587*W30,      2560*W30,
+         0*W30,      -520*W30,      -241*W30,      -299*W30,
+     -1270*W30,      -991*W30,     -1138*W30,       255*W30,
+     -1192*W30,      1722*W30,      1023*W30,      3700*W30,
+     -1388*W30,     -1551*W30,     -2549*W30,        27*W30,
+       282*W30,       673*W30,       113*W30,      1561*W30,
+        72*W30,       873*W30,        87*W30,      -395*W30,
+      -433*W30,       629*W30,      3440*W30,      -284*W30,
+      -592*W30,      -103*W30,       -46*W30,     -3844*W30,
+      1712*W30,       303*W30,      1555*W30,      -631*W30,
+     -1400*W30,      -961*W30,      -854*W30,      -276*W30,
+       407*W30,       833*W30,      -345*W30,     -1501*W30,
+       121*W30,     -1581*W30,       400*W30,       150*W30,
+      1224*W30,      -139*W30,      -563*W30,       879*W30,
+       933*W30,      2939*W30,       788*W30,       211*W30,
+       530*W30,      -192*W30,       706*W30,    -13347*W30,
+      1065*W30,         3*W30,       111*W30,      -208*W30,
+      -360*W30,      -532*W30,      -291*W30,       483*W30,
+       987*W30,       -33*W30,     -1373*W30,      -166*W30,
+     -1174*W30,     -3955*W30,      1601*W30,      -280*W30,
+      1405*W30,       600*W30,     -1659*W30,       -23*W30,
+       390*W30,       449*W30,       570*W30,    -13143*W30,
+        -9*W30,     -1646*W30,      1201*W30,       294*W30,
+      2181*W30,     -1173*W30,      1388*W30,     -4504*W30,
+       190*W30,     -2304*W30,       211*W30,       239*W30,
+        48*W30,      -817*W30,      1018*W30,      1828*W30,
+      -663*W30,      1408*W30,       408*W30,       -36*W30,
+      1295*W30,      -230*W30,      1341*W30,         9*W30,
+        40*W30,       705*W30,       186*W30,       376*W30,
+       557*W30,      5866*W30,       363*W30,     -1558*W30,
+       718*W30,       669*W30,      1369*W30,     -2972*W30,
+      -468*W30,      -121*W30,      -219*W30,       667*W30,
+     29954*W30,       366*W30,        48*W30,      -203*W30
 };
-#define S (1.0/8388608.0)  /* 2^-23 */
-static const float exp2_deltatable[256] = {
-    61*S,   107*S,  -301*S,   -91*S,    98*S,  -194*S,   -57*S,   223*S,
-  -162*S,   176*S,   241*S,    32*S,    24*S,    29*S,   138*S,   871*S,
-  -280*S,   -49*S,   204*S,   122*S,   238*S,   262*S,   108*S,  -195*S,
-   330*S,   103*S,   -23*S,  -215*S, -1269*S,  -610*S,    19*S,    13*S,
-    28*S,  -819*S,   298*S,    78*S,  -233*S,   -18*S,  1186*S,   172*S,
-   135*S,  -203*S,  -197*S,   -97*S,  -374*S,     8*S,   512*S,  -295*S,
-   240*S,   -15*S,   214*S,   -75*S,   -30*S,    88*S,    12*S,   806*S,
-   273*S,  -204*S,   445*S,   429*S,  -579*S,  -109*S,   207*S,    38*S,
-   695*S,  -161*S,    68*S,   825*S,  -178*S,   233*S,   187*S,  -358*S,
-    91*S,  1056*S,    53*S,   265*S,   257*S,  -150*S,  -118*S,   182*S,
-   281*S,   -49*S,   317*S,  -844*S,   -80*S,  -339*S,    10*S,  -269*S,
-   -16*S,  -208*S,  -226*S,    95*S,  -141*S,    14*S,    52*S,   -61*S,
-  -125*S,   -41*S,   454*S,  -176*S,   196*S,  -550*S,   -26*S,  -129*S,
-   -99*S,   250*S,   -25*S,  -274*S,  -154*S,   -32*S,   247*S,  -169*S,
-  -272*S,  -209*S,   -64*S,    53*S,    25*S,   171*S,   -25*S,  -406*S,
-   135*S,  -141*S,    84*S,   231*S,  -396*S,   414*S,    36*S,  -129*S,
-     0*S,    65*S,   133*S,   447*S,    70*S,    62*S,  -236*S,   639*S,
-  -903*S,   181*S,   -58*S,  -373*S,  -191*S,  -189*S,   244*S,    39*S,
-  -147*S,  -488*S,   196*S,   400*S,    -9*S,    15*S,   -70*S,  -201*S,
-   267*S,   133*S,   121*S,   270*S,  -240*S,   466*S,  -289*S,  -428*S,
-   -66*S,   352*S,  -880*S,    41*S,   -96*S,  -758*S,   130*S,    29*S,
-   310*S,   124*S,    81*S,  -135*S,   348*S,  -172*S,   -44*S,  -338*S,
-  -183*S,   148*S,  -206*S,    32*S,    -9*S,  -257*S,    61*S,  -196*S,
-   -69*S,  -501*S,  -193*S,   -60*S,    12*S,   296*S,    46*S,   311*S,
-   349*S,   383*S,    11*S,   -60*S,  -980*S,  -789*S,  -296*S,  -112*S,
-    49*S,  -289*S,  -128*S,    72*S,    65*S,  -643*S,   682*S,    -6*S,
-  -378*S,   124*S,  -103*S,  -506*S,   116*S,   190*S,   406*S,  -326*S,
-   -83*S,   255*S,   -83*S,   152*S,   -30*S,   185*S,   -80*S,   206*S,
-    56*S,   332*S,    50*S,  -266*S,   -58*S,    56*S,     1*S,   313*S,
-  -458*S,   135*S,   122*S,  -312*S,   206*S,   -89*S,  -141*S,  -325*S,
-   -83*S,   253*S,  -190*S,  -419*S,   738*S,    83*S,  -331*S,   328*S,
-  -233*S,   391*S,   159*S,   -62*S,   663*S,   261*S,   345*S,  -288*S
+
+static const float __exp2f_atable[256] /* __attribute__((mode(SF))) */ = {
+ 0.707106411447, /* 0x0.b504ecfff */
+ 0.709024071690, /* 0x0.b58299fff */
+ 0.710945606239, /* 0x0.b60088000 */
+ 0.712874472142, /* 0x0.b67ef1000 */
+ 0.714806139464, /* 0x0.b6fd88fff */
+ 0.716744661340, /* 0x0.b77c94000 */
+ 0.718687653549, /* 0x0.b7fbea000 */
+ 0.720636486992, /* 0x0.b87ba1fff */
+ 0.722590208040, /* 0x0.b8fbabfff */
+ 0.724549472323, /* 0x0.b97c12fff */
+ 0.726514220228, /* 0x0.b9fcd5fff */
+ 0.728483855735, /* 0x0.ba7deb000 */
+ 0.730457961549, /* 0x0.baff4afff */
+ 0.732438981522, /* 0x0.bb811efff */
+ 0.734425544748, /* 0x0.bc0350000 */
+ 0.736416816713, /* 0x0.bc85d0000 */
+ 0.738412797450, /* 0x0.bd089efff */
+ 0.740414917465, /* 0x0.bd8bd4fff */
+ 0.742422521111, /* 0x0.be0f66fff */
+ 0.744434773914, /* 0x0.be9346fff */
+ 0.746454179287, /* 0x0.bf179f000 */
+ 0.748477637755, /* 0x0.bf9c3afff */
+ 0.750506639473, /* 0x0.c02133fff */
+ 0.752541840064, /* 0x0.c0a694fff */
+ 0.754582285889, /* 0x0.c12c4e000 */
+ 0.756628334525, /* 0x0.c1b265000 */
+ 0.758678436269, /* 0x0.c238bffff */
+ 0.760736882681, /* 0x0.c2bfa6fff */
+ 0.762799203401, /* 0x0.c346cf000 */
+ 0.764867603790, /* 0x0.c3ce5d000 */
+ 0.766940355298, /* 0x0.c45633fff */
+ 0.769021093841, /* 0x0.c4de90fff */
+ 0.771104693409, /* 0x0.c5671dfff */
+ 0.773195922364, /* 0x0.c5f02afff */
+ 0.775292098512, /* 0x0.c6798afff */
+ 0.777394294745, /* 0x0.c70350000 */
+ 0.779501736166, /* 0x0.c78d6d000 */
+ 0.781615912910, /* 0x0.c817fafff */
+ 0.783734917628, /* 0x0.c8a2d9fff */
+ 0.785858273516, /* 0x0.c92e02000 */
+ 0.787990570071, /* 0x0.c9b9c0000 */
+ 0.790125787245, /* 0x0.ca45aefff */
+ 0.792268991467, /* 0x0.cad223fff */
+ 0.794417440881, /* 0x0.cb5ef0fff */
+ 0.796570718287, /* 0x0.cbec0efff */
+ 0.798730909811, /* 0x0.cc79a0fff */
+ 0.800892710672, /* 0x0.cd074dfff */
+ 0.803068041795, /* 0x0.cd95ddfff */
+ 0.805242776881, /* 0x0.ce2464000 */
+ 0.807428598393, /* 0x0.ceb3a3fff */
+ 0.809617877002, /* 0x0.cf431dfff */
+ 0.811812341211, /* 0x0.cfd2eefff */
+ 0.814013659956, /* 0x0.d06333000 */
+ 0.816220164311, /* 0x0.d0f3ce000 */
+ 0.818434238424, /* 0x0.d184e7fff */
+ 0.820652604094, /* 0x0.d21649fff */
+ 0.822877407074, /* 0x0.d2a818000 */
+ 0.825108587751, /* 0x0.d33a51000 */
+ 0.827342867839, /* 0x0.d3ccbdfff */
+ 0.829588949684, /* 0x0.d45ff1000 */
+ 0.831849217401, /* 0x0.d4f411fff */
+ 0.834093391880, /* 0x0.d58724fff */
+ 0.836355149750, /* 0x0.d61b5f000 */
+ 0.838620424257, /* 0x0.d6afd3fff */
+ 0.840896368027, /* 0x0.d744fc000 */
+ 0.843176305293, /* 0x0.d7da66fff */
+ 0.845462262643, /* 0x0.d87037000 */
+ 0.847754716864, /* 0x0.d90673fff */
+ 0.850052893157, /* 0x0.d99d10fff */
+ 0.852359056469, /* 0x0.da3433fff */
+ 0.854668736446, /* 0x0.dacb91fff */
+ 0.856986224651, /* 0x0.db6373000 */
+ 0.859309315673, /* 0x0.dbfbb1fff */
+ 0.861639738080, /* 0x0.dc946bfff */
+ 0.863975346095, /* 0x0.dd2d7d000 */
+ 0.866317391394, /* 0x0.ddc6f9fff */
+ 0.868666708472, /* 0x0.de60f1000 */
+ 0.871022939695, /* 0x0.defb5c000 */
+ 0.873383641229, /* 0x0.df9611fff */
+ 0.875751554968, /* 0x0.e03141000 */
+ 0.878126025200, /* 0x0.e0ccde000 */
+ 0.880506813521, /* 0x0.e168e4fff */
+ 0.882894217966, /* 0x0.e2055afff */
+ 0.885287821299, /* 0x0.e2a239000 */
+ 0.887686729423, /* 0x0.e33f6ffff */
+ 0.890096127973, /* 0x0.e3dd56fff */
+ 0.892507970338, /* 0x0.e47b67000 */
+ 0.894928157336, /* 0x0.e51a03000 */
+ 0.897355020043, /* 0x0.e5b90efff */
+ 0.899788379682, /* 0x0.e65888000 */
+ 0.902227103705, /* 0x0.e6f85afff */
+ 0.904673457151, /* 0x0.e798ae000 */
+ 0.907128036008, /* 0x0.e8398afff */
+ 0.909585535528, /* 0x0.e8da99000 */
+ 0.912051796915, /* 0x0.e97c3a000 */
+ 0.914524436003, /* 0x0.ea1e46000 */
+ 0.917003571999, /* 0x0.eac0bf000 */
+ 0.919490039339, /* 0x0.eb63b2fff */
+ 0.921983361257, /* 0x0.ec071a000 */
+ 0.924488604054, /* 0x0.ecab48fff */
+ 0.926989555360, /* 0x0.ed4f30000 */
+ 0.929502844812, /* 0x0.edf3e6000 */
+ 0.932021975503, /* 0x0.ee98fdfff */
+ 0.934553921208, /* 0x0.ef3eecfff */
+ 0.937083780759, /* 0x0.efe4b8fff */
+ 0.939624726786, /* 0x0.f08b3f000 */
+ 0.942198514924, /* 0x0.f133ebfff */
+ 0.944726586343, /* 0x0.f1d99a000 */
+ 0.947287976728, /* 0x0.f28176fff */
+ 0.949856162070, /* 0x0.f329c5fff */
+ 0.952431440345, /* 0x0.f3d28bfff */
+ 0.955013573175, /* 0x0.f47bc5000 */
+ 0.957603693021, /* 0x0.f52584000 */
+ 0.960199773321, /* 0x0.f5cfa7000 */
+ 0.962801992906, /* 0x0.f67a31000 */
+ 0.965413510788, /* 0x0.f72556fff */
+ 0.968030691152, /* 0x0.f7d0dc000 */
+ 0.970655620084, /* 0x0.f87ce2fff */
+ 0.973290979849, /* 0x0.f92998fff */
+ 0.975926160805, /* 0x0.f9d64bfff */
+ 0.978571653370, /* 0x0.fa83ac000 */
+ 0.981225252139, /* 0x0.fb3193fff */
+ 0.983885228626, /* 0x0.fbdfe6fff */
+ 0.986552715296, /* 0x0.fc8eb7fff */
+ 0.989228487027, /* 0x0.fd3e14000 */
+ 0.991909801964, /* 0x0.fdedcd000 */
+ 0.994601726545, /* 0x0.fe9e38000 */
+ 0.997297704209, /* 0x0.ff4ee6fff */
+ 1.000000000000, /* 0x1.000000000 */
+ 1.002710938457, /* 0x1.00b1aa000 */
+ 1.005429744692, /* 0x1.0163d7ffe */
+ 1.008155703526, /* 0x1.02167dffe */
+ 1.010888457284, /* 0x1.02c995fff */
+ 1.013629436498, /* 0x1.037d38000 */
+ 1.016377568250, /* 0x1.043152000 */
+ 1.019134163841, /* 0x1.04e5f9ffe */
+ 1.021896362316, /* 0x1.059b00000 */
+ 1.024668931945, /* 0x1.0650b3ffe */
+ 1.027446627635, /* 0x1.0706be001 */
+ 1.030234098408, /* 0x1.07bd6bffe */
+ 1.033023953416, /* 0x1.087441ffe */
+ 1.035824656494, /* 0x1.092bce000 */
+ 1.038632392900, /* 0x1.09e3d0001 */
+ 1.041450142840, /* 0x1.0a9c79ffe */
+ 1.044273972530, /* 0x1.0b558a001 */
+ 1.047105550795, /* 0x1.0c0f1c001 */
+ 1.049944162390, /* 0x1.0cc924001 */
+ 1.052791833895, /* 0x1.0d83c4001 */
+ 1.055645227426, /* 0x1.0e3ec3fff */
+ 1.058507919326, /* 0x1.0efa60001 */
+ 1.061377286898, /* 0x1.0fb66bfff */
+ 1.064254641510, /* 0x1.1072fdffe */
+ 1.067140102389, /* 0x1.113018000 */
+ 1.070034146304, /* 0x1.11edc1fff */
+ 1.072937250162, /* 0x1.12ac04001 */
+ 1.075843691823, /* 0x1.136a7dfff */
+ 1.078760385496, /* 0x1.1429a3ffe */
+ 1.081685543070, /* 0x1.14e958000 */
+ 1.084618330005, /* 0x1.15a98c000 */
+ 1.087556362176, /* 0x1.166a18001 */
+ 1.090508937863, /* 0x1.172b98001 */
+ 1.093464612954, /* 0x1.17ed4bfff */
+ 1.096430182434, /* 0x1.18afa5ffe */
+ 1.099401354802, /* 0x1.19725e000 */
+ 1.102381587017, /* 0x1.1a35adfff */
+ 1.105370759965, /* 0x1.1af994000 */
+ 1.108367800686, /* 0x1.1bbdfdffe */
+ 1.111373305331, /* 0x1.1c82f6000 */
+ 1.114387035385, /* 0x1.1d4878001 */
+ 1.117408752440, /* 0x1.1e0e7ffff */
+ 1.120437502874, /* 0x1.1ed4fe000 */
+ 1.123474478729, /* 0x1.1f9c06000 */
+ 1.126521706601, /* 0x1.2063ba001 */
+ 1.129574775716, /* 0x1.212bd0001 */
+ 1.132638812065, /* 0x1.21f49e000 */
+ 1.135709524130, /* 0x1.22bddbffe */
+ 1.138789534565, /* 0x1.2387b5fff */
+ 1.141876101508, /* 0x1.2451fe000 */
+ 1.144971728301, /* 0x1.251cddffe */
+ 1.148077130296, /* 0x1.25e861ffe */
+ 1.151189923305, /* 0x1.26b462001 */
+ 1.154312610610, /* 0x1.278107ffe */
+ 1.157440662410, /* 0x1.284e08001 */
+ 1.160578370109, /* 0x1.291baa001 */
+ 1.163725256932, /* 0x1.29e9e6000 */
+ 1.166879892324, /* 0x1.2ab8a3ffe */
+ 1.170044302935, /* 0x1.2b8805fff */
+ 1.173205971694, /* 0x1.2c5739ffe */
+ 1.176397800428, /* 0x1.2d2867ffe */
+ 1.179586529747, /* 0x1.2df962001 */
+ 1.182784795737, /* 0x1.2ecafbffe */
+ 1.185991406414, /* 0x1.2f9d21ffe */
+ 1.189206838636, /* 0x1.306fdc001 */
+ 1.192430973067, /* 0x1.314328000 */
+ 1.195664167430, /* 0x1.32170c001 */
+ 1.198906540890, /* 0x1.32eb8a001 */
+ 1.202157497408, /* 0x1.33c098000 */
+ 1.205416083326, /* 0x1.349625fff */
+ 1.208683252332, /* 0x1.356c43fff */
+ 1.211961269402, /* 0x1.364318001 */
+ 1.215246438983, /* 0x1.371a64000 */
+ 1.218539118740, /* 0x1.37f22dffe */
+ 1.221847295770, /* 0x1.38cafc000 */
+ 1.225158572187, /* 0x1.39a3fdfff */
+ 1.228481650325, /* 0x1.3a7dc5ffe */
+ 1.231811761846, /* 0x1.3b5803fff */
+ 1.235149741144, /* 0x1.3c32c5ffe */
+ 1.238499879811, /* 0x1.3d0e53ffe */
+ 1.241858124726, /* 0x1.3dea69fff */
+ 1.245225191102, /* 0x1.3ec713fff */
+ 1.248601436624, /* 0x1.3fa458000 */
+ 1.251975655584, /* 0x1.40817a001 */
+ 1.255380749731, /* 0x1.4160a2001 */
+ 1.258783102010, /* 0x1.423f9bffe */
+ 1.262198328973, /* 0x1.431f6e000 */
+ 1.265619754780, /* 0x1.43ffa7fff */
+ 1.269052743928, /* 0x1.44e0a4001 */
+ 1.272490739830, /* 0x1.45c1f4000 */
+ 1.275942921659, /* 0x1.46a432001 */
+ 1.279397487615, /* 0x1.478697ffe */
+ 1.282870173427, /* 0x1.486a2dffe */
+ 1.286346316319, /* 0x1.494dfdffe */
+ 1.289836049094, /* 0x1.4a32b2001 */
+ 1.293333172770, /* 0x1.4b17e1ffe */
+ 1.296839594835, /* 0x1.4bfdadfff */
+ 1.300354957560, /* 0x1.4ce40fffe */
+ 1.303882122055, /* 0x1.4dcb38001 */
+ 1.307417988757, /* 0x1.4eb2f1ffe */
+ 1.310960650439, /* 0x1.4f9b1dfff */
+ 1.314516782746, /* 0x1.50842bfff */
+ 1.318079948424, /* 0x1.516daffff */
+ 1.321653246888, /* 0x1.5257de000 */
+ 1.325237751030, /* 0x1.5342c8001 */
+ 1.328829526907, /* 0x1.542e2c000 */
+ 1.332433700535, /* 0x1.551a5fffe */
+ 1.336045145966, /* 0x1.56070dffe */
+ 1.339667558645, /* 0x1.56f473ffe */
+ 1.343300342533, /* 0x1.57e287ffe */
+ 1.346941947961, /* 0x1.58d130001 */
+ 1.350594043714, /* 0x1.59c087ffe */
+ 1.354256033883, /* 0x1.5ab085fff */
+ 1.357932448365, /* 0x1.5ba175ffe */
+ 1.361609339707, /* 0x1.5c926dfff */
+ 1.365299344044, /* 0x1.5d8441ffe */
+ 1.369003057507, /* 0x1.5e76fc001 */
+ 1.372714757920, /* 0x1.5f6a3c000 */
+ 1.376437187179, /* 0x1.605e2fffe */
+ 1.380165219333, /* 0x1.615282001 */
+ 1.383909463864, /* 0x1.6247e3ffe */
+ 1.387661933907, /* 0x1.633dd0000 */
+ 1.391424179060, /* 0x1.64345fffe */
+ 1.395197510706, /* 0x1.652ba9fff */
+ 1.399006724329, /* 0x1.66254dffe */
+ 1.402773022651, /* 0x1.671c22000 */
+ 1.406576037403, /* 0x1.68155dfff */
+ 1.410389423392, /* 0x1.690f48001 */
 };
-/* Maximum magnitude in above table: 1269 */
-#undef S
-#define EXP2_TSIZE 8
-#define EXP2_TTOL 9
-#define EXP2_FSIZE 23
-#define EXP2_FNAME float