From dc30f461575342ffeb6c0f2d5931493c1c3a91c0 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 13 Feb 1998 17:54:15 +0000 Subject: Update. 1998-02-13 17:39 Ulrich Drepper * elf/Makefile: Don't use --version-script parameter to link ld.so unconditionally. 1998-01-02 04:19 Geoff Keating * math/Makefile: Add t_exp. * math/libm-test.c: Tighten accuracy bounds for exp(), correct constants. * math/test-reduce.c: Remove temporarily, it seems to be broken. * sysdeps/libm-ieee754/e_exp.c: Use accurate table method. * sysdeps/libm-ieee754/e_expf.c: Use table & double precision for better accuracy. * sysdeps/libm-ieee754/s_exp2.c: Use better polynomial; correct algorithm for very large/very small arguments. * sysdeps/libm-ieee754/s_exp2f.c: Use slightly better polynomial; correct algorithm for very large/very small arguments; adjust for new table. * sysdeps/libm-ieee754/t_exp.c: New file. * sysdeps/libm-ieee754/t_exp2f.h: Use table with smaller deltas. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Put 'strange test' back, with comment that explains what breaks when you remove it :-(. * localedata/xfrm-test.c: Avoid integer overflow. * stdlib/strfmon.c: char is unsigned, sometimes. *sysdeps/powerpc * sysdeps/powerpc/Makefile: Remove quad float support. * sysdeps/powerpc/q_*.c: Remove, they will become an add-on. * sysdeps/powerpc/quad_float.h: Likewise. * sysdeps/powerpc/test-arith.c: Likewise. * sysdeps/powerpc/test-arithf.c: Likewise. * sysdeps/generic/s_exp2.c: Remove, we have this implemented now. * sysdeps/generic/s_exp2f.c: Likewise. * sysdeps/powerpc/bits/mathinline.h: Use underscores around __asm__, don't try anything if _SOFT_FLOAT. 1997-12-31 Andreas Schwab * locale/C-ctype.c (_nl_C_LC_CTYPE_class32): Undo last change. * locale/programs/ld-ctype.c (CHAR_CLASS32_TRANS): Likewise. * wctype/wctype.c: Likewise. * wctype/wctype.h (_ISwxxx): Renamed from _ISxxx, all uses changed. They are incompatible with the _ISxxx values from on little endian machines. (_ISwbit) [__BYTE_ORDER == __LITTLE_ENDIAN]: Correctly transform bit number. This fixes the real bug and restores the integrity of the ctype locale file. * wctype/wcfuncs.c: Change all _ISxxx to _ISwxxx. * wctype/wcfuncs_l.c: Likewise. * wctype/wcextra.c: Likewise. * wctype/wctype_l.c [__BYTE_ORDER == __LITTLE_ENDIAN]: Use correct byte swapping. 1998-02-09 Andreas Schwab * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S (errno): Put it into .bss segment instead of .common, so that aliases on it work. * sysdeps/unix/sysv/linux/i386/sysdep.S (errno): Add .type and .size directives, put into .bss segment instead of initializing it to 4. 1998-02-12 08:00 H.J. Lu * libc.map (gnu_get_libc_release, gnu_get_libc_version): Added. * version.c (__gnu_get_libc_release, __gnu_get_libc_version): New functions. Make names without __ weak aliases. (__libc_release, __libc_version): Make them static. * include/gnu/libc-version.h: New file. * Makefile (headers): Add gnu/libc-version.h. 1998-02-13 Ulrich Drepper * stdlib/stdlib.h (struct drand48_data): Leave X to user macros and use x for member name. Reported by Daniel Lyddy . * stdlib/drand48.c: Change according to member name change. * stdlib/drand48_r.c: Likewise. * stdlib/lcong48_r.c: Likewise. * stdlib/lrand48.c: Likewise. * stdlib/lrand48_r.c: Likewise. * stdlib/mrand48.c: Likewise. * stdlib/mrand48_r.c: Likewise. * stdlib/seed48.c: Likewise. * stdlib/seed48_r.c: Likewise. * stdlib/srand48_r.c: Likewise. 1998-02-11 Andreas Jaeger * nss/test-netdb.c: Add some more test cases. 1998-02-13 11:39 Ulrich Drepper * libio/iovsscanf.c: Undo last change modifying errno. 1998-02-12 Andreas Schwab * stdio-common/vfscanf.c: Never try to read another character after EOF. Don't decrement read_in after EOF, it wasn't incremented in the first place. (NEXT_WIDE_CHAR): Set First, not first. 1998-02-06 07:48 H.J. Lu * db/Makefile ($(inst_libdir)/libndbm.a, $(inst_libdir)/libndbm.so): New targets. * db2/Makefile: Likewise. 1998-02-12 08:20 H.J. Lu * sysdeps/gnu/errlist.awk (sys_errlist, sys_nerr): Create weak aliases if HAVE_ELF or PIC or DO_VERSIONING is not defined. 1998-02-12 Andreas Schwab * sysdeps/generic/_G_config.h: Define _G_wchar_t, for C++ . * sysdeps/unix/sysv/linux/_G_config.h: Likewise. 1998-02-11 Andreas Schwab * sysdeps/unix/make-syscalls.sh: Fix sed pattern when dealing with versioned symbols. 1998-02-13 08:14 H.J. Lu * libc.map (_dl_global_scope, _dl_lookup_symbol_skip, _dl_lookup_versioned_symbol, _dl_lookup_versioned_symbol_skip): Added for libdl.so. * elf/rtld.map: New file. Needed to define the GLIBC_2.* * manual/socket.texi (Host Address Functions): Clarify description * sysdeps/unix/sysv/linux/alpha/bits/time.h (struct timeval): --- sysdeps/libm-ieee754/t_exp2f.h | 649 ++++++++++++++++++++++------------------- 1 file changed, 350 insertions(+), 299 deletions(-) (limited to 'sysdeps/libm-ieee754/t_exp2f.h') 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 + + 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 -- cgit 1.4.1