Messages in this thread | | | Date | Mon, 31 May 2004 21:23:09 +0100 | From | Hugo Mills <> | Subject | Re: How to use floating point in a module? |
| |
On Mon, May 31, 2004 at 02:12:53PM -0600, Michal Jaegermann wrote: > On Mon, May 31, 2004 at 01:44:40PM +0800, Ian Kent wrote: > > > > Why not scaled longs (or bigger), scalled to number of significant > > digits. The Taylor series for the trig functions might be a painfull. > > Taylor series usually are painful for anything you want to calculate > by any practical means. Slow convergence but, for a change, quickly > growing roundup errors and things like that. An importance and uses > of Taylor series lie elsewhere. > > OTOH polynomial approximations, or rational ones (after all division > is quite quick on modern processors), can be fast and surprisingly > precise; especially if you know bounds for your arguments and that > that range is not too wide. Of course when doing that in a fixed > point one needs to pay attention to possible overflows and > structuring calculations to guard against a loss of precision is > always a good idea.
It's also worth pointing out that there are other, much faster-converging, polynomial series that can be used to approximate trig functions. Chebyshev polynomials are, I believe, pretty well-behaved. IIRC, they are what the Sinclair Spectrum used to use.
Hugo.
-- === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk === PGP key: 1C335860 from wwwkeys.eu.pgp.net or http://www.carfax.org.uk --- Hey, Virtual Memory! Now I can have a *really big* ramdisk! --- [unhandled content-type:application/pgp-signature] | |