Thread View: comp.dsp
5 messages
5 total messages
Started by Scott Watson
Thu, 01 Nov 1990 18:48
Looking for a fast exp(x) where -10.0<=x<=10.0
Author: Scott Watson
Date: Thu, 01 Nov 1990 18:48
Date: Thu, 01 Nov 1990 18:48
23 lines
988 bytes
988 bytes
Hi y'all - I have a need for an fast exp(x) function... x is a float and can range inside +-10.0. Some sort of low granularity (read: *big array*) lookup table w/ interpolation, or something... Any ideas? Thanks in advance Scott Watson / Walt Disney Imagineering scott@walt.disney.com #ifdef SANE #include <std_disclaimer.h> #endif -- Scott Watson / Walt Disney Imagineering scott@walt.disney.com #ifdef SANE #include <std_disclaimer.h> #endif
Re: Looking for a fast exp(x) where -10.0<=x<=10.0
Author: Craig Hansen
Date: Fri, 02 Nov 1990 03:17
Date: Fri, 02 Nov 1990 03:17
12 lines
996 bytes
996 bytes
In article <1990Nov1.184820.5796@walt.disney.com>, scott@walt.disney.com (Scott Watson) writes: > I have a need for an fast exp(x) function... > Any ideas? Decompose your exp(x) into exp(a+b), where a and b are the most-significant and least significant parts of x. exp(a+b)=exp(a)*exp(b), so get exp(a) and exp(b) from two small tables and multiply them together. Regards, Craig Hansen craig@microunity.com
Re: Looking for a fast exp(x) where -10.0<=x<=10.0
Author: Dave Mc Mahan
Date: Fri, 02 Nov 1990 03:19
Date: Fri, 02 Nov 1990 03:19
22 lines
1119 bytes
1119 bytes
In a previous article, scott@walt.disney.com (Scott Watson) writes:
>Hi y'all -
>
>I have a need for an fast exp(x) function...
>
>x is a float and can range inside +-10.0.
>
>Some sort of low granularity (read: *big array*) lookup table w/
>interpolation, or something...
How much accuracy do you need, and how fast does it have to be? Also, what
kind of CPU are you using and how much memory can you dedicate to a lookup
table?
>Scott Watson / Walt Disney Imagineering scott@walt.disney.com
-dave
--
Dave McMahan mcmahan@netcom.uucp
{apple,amdahl,claris}!netcom!mcmahan
Re: Looking for a fast exp(x) where -10.0<=x<=10.0
Author: Ken Turkowski
Date: Fri, 02 Nov 1990 08:28
Date: Fri, 02 Nov 1990 08:28
24 lines
1471 bytes
1471 bytes
In a previous article, scott@walt.disney.com (Scott Watson) writes: >>Hi y'all - >> >>I have a need for an fast exp(x) function... >> >>x is a float and can range inside +-10.0. You can calculate exp(x) in fixed-point with a series of shifts and adds and a small lookup table using CORDIC iterations. Convergence is linear, so you get about one bit of precision with each iteration through a simple loop. With 32-bit words, you can probably get 26 bits of precision. If you can get by with less bits of precision, you can by with less iterations. I don't have the references handy, but I just recently published a paper in Graphics Gems (Academic Press, 1990) on CORDIC trigonometry. In the references to that paper are pointer to papers by Walthers and Chen which address exp, log, sqrt, and a host of other nonlinear functions. -- Ken Turkowski @ Apple Computer, Inc., Cupertino, CA Internet: turk@apple.com Applelink: TURK UUCP: sun!apple!turk
Re: Looking for a fast exp(x) where -10.0<=x<=10.0
Author: Ken W. Sarkies
Date: Mon, 05 Nov 1990 03:56
Date: Mon, 05 Nov 1990 03:56
17 lines
1296 bytes
1296 bytes
In article <1990Nov1.184820.5796@walt.disney.com> scott@walt.disney.com (Scott Watson) writes:
>
>I have a need for an fast exp(x) function...
>
Another idea I have used is the polynomial approximations as given in
Abramowitz and Stegun ``Handbook of Mathematical Functions''. For exp(x) you
can get accuracy to 2 x 10^{-10} for seven terms with 0<x<ln(2). Outside that
range use known results i.e. exp(x) = 2 x exp(x - ln(2)) for ln(2)<x<2ln(2).
The seven terms might be a bit much if you want real speed, but with other
suggestions given you may be able to tailor a useful algorithm depending on
your speed/accuracy/memory tradeoff.
--
Ken Sarkies
No disclaimer. My boss takes all responsibility for my big mouth.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads