Peter Eisentraut <pete...@gmx.net> writes: > On 04/19/2016 04:48 PM, Tom Lane wrote: >> Pushed. Peter, what results do you get from these tests on your >> problematic machine?
> acosd(x), > acosd(x) IN (0,60,90,120,180) AS acosd_exact > FROM (VALUES (-1), (-0.5), (0), (0.5), (1)) AS t(x); > - x | asind | asind_exact | acosd | acosd_exact > -------+-------+-------------+-------+------------- > - -1 | -90 | t | 180 | t > - -0.5 | -30 | t | 120 | t > - 0 | 0 | t | 90 | t > - 0.5 | 30 | t | 60 | t > - 1 | 90 | t | 0 | t > + x | asind | asind_exact | acosd | acosd_exact > +------+----------------------+-------------+-------+------------- > + -1 | -90 | t | 180 | t > + -0.5 | -29.9999999999999964 | f | 120 | t > + 0 | 0 | t | 90 | t > + 0.5 | 29.9999999999999964 | f | 60 | t > + 1 | 90 | t | 0 | t > (5 rows) > This is the same under the default -O2 and under -O0. Hm. This seems to prove that we're not getting exactly 1.0 from (asin(x) / asin_0_5) with x = 0.5, but I'm having a hard time guessing why that might be so when all the other cases work. Could you send along the assembler code generated by the compiler (-S output) for float.c? Maybe that would shed some light. Probably the -O0 version would be easier to read. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers