NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: libm trigonometric functions and i387
In article <20090224190659.B69869828B%pluto.mumble.net@localhost>,
Taylor R Campbell <campbell%mumble.net@localhost> wrote:
> Date: Tue, 24 Feb 2009 10:42:49 -0700
> From: Sverre Froyen <sverre%viewmark.com@localhost>
>
> How do you accurately pass an argument of 2^63 to libm's trig functions? A
> quick look suggests your only choices are float or double. For an argument
> value of 2^63, the uncertainty exceeds 2*pi by several orders of magnitute.
>
>That's not the point. Each (numeric) floating-point value has a
>unique associated real number, and each real number has a unique sine,
>cosine, or tangent. While the sine, cosine, and tangent of most real
>numbers are not exactly representable in floating-point, there are
>good approximations and there are bad approximations. There is code
>in NetBSD's libm to compute good approximations, and there is (rather
>silly) code to compute bad approximations. I want to invoke the code
>that computes good approximations, just like I'd get for addition,
>multiplication, square roots, &c., in the IEEE standard. (If I wanted
>bad approximations, again, I could just pass the flags -ffast-math and
>-funsafe-math-optimizations to GCC.) I also don't want to edit
>/etc/ld.so.conf.
>
>There are plenty of eminently Googlable arguments on the intertubes
>about the uncertainty you mention, and about the merit or numerical
>stability of algorithms that might try to compute the sine of 1e22.
>That's not what I'm interested in, but I'm sure you can Google up
>plenty of entertaining discussions about it if it is what you're
>interested in.
You are right and there is no good way to make this selection because
the policy decision is done at system level in ld.so.conf. We could
provide a better selection mechanism that is more fine-grained.
christos
Home |
Main Index |
Thread Index |
Old Index