OT : Approximate / fast math libraries ?

Les hlhowell at pacbell.net
Sat Sep 1 19:15:10 UTC 2007


On Sat, 2007-09-01 at 11:23 +0100, Chris Jones wrote:
> On Saturday 1 September 2007 9:36:02 am Mogens Kjaer wrote:
> > Chris Jones wrote:
> > ...
> >
> > > for the profiler output. atan2 is taking 50% of the time of this method.
> > > Not here I don't need that much precision on the result - say +-
> > > O(2*pi/100).
> >
> > Can't you use a Taylor expansion of arctan?
> 
> Talyor expansions are valid when your argument is 'small' i.e.
> 
> sin(x) ~ x
> tan(x) ~ x
> cos(x) ~ (1-(x)*(x)/2)
> 
> etc. only work when x is small, and the error increases as x does (since the 
> size of the truncated terms become more important). Yes you can include more 
> terms but that only allows you to go to large x before the errors explode.
> 
> I'm well aware of these series, and already use them when appropriate. In this 
> case, I need tan(x) with fixed errors, between 0 and 2pi, the whole range.
> 
> for instance, a really course estimate for atan2(x,y) can be made, by just 
> comparing the signs of x and y, i.e. if x>0 and y>0, atan2(x,y) is between 0 
> and pi/2 ...
> 
> Chris
> 
Hi, Chris,
	When I need limited precision for such a value (fixed, some limited
resolution), I generally implement it with a lookup table.  If
implemented in assembly, it is about 6 to 10 instructions to retrieve
the value, and add a multiply and truncate to get the resolution you
need from a floating point result, and an add if you have negative
results.  This is often faster than even hardware processing for complex
values.

Regards,
Les H




More information about the users mailing list