🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#1060
Author: Scott Watson
Date: Thu, 01 Nov 1990 18:48
23 lines
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
#1039
Author: Craig Hansen
Date: Fri, 02 Nov 1990 03:17
12 lines
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
#1040
Author: Dave Mc Mahan
Date: Fri, 02 Nov 1990 03:19
22 lines
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
#1044
Author: Ken Turkowski
Date: Fri, 02 Nov 1990 08:28
24 lines
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
#1064
Author: Ken W. Sarkies
Date: Mon, 05 Nov 1990 03:56
17 lines
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