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