pgsql: Adjust degree-based trig functions for more portability.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Adjust degree-based trig functions for more portability.
Date: 2016-01-23 16:26:44
Message-ID: E1aN11Q-0000UP-5q@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Adjust degree-based trig functions for more portability.

The buildfarm isn't very happy with the results of commit e1bd684a34c11139.
To try to get the expected exact results everywhere:

* Replace M_PI / 180 subexpressions with a precomputed constant, so that
the compiler can't decide to rearrange that division with an adjacent
operation. Hopefully this will fix failures to get exactly 0.5 from
sind(30) and cosd(60).

* Add scaling to ensure that tand(45) and cotd(45) give exactly 1; there
was nothing particularly guaranteeing that before.

* Replace minus zero by zero when tand() or cotd() would output that;
many machines did so for tand(180) and cotd(270), but not all. We could
alternatively deem both results valid, but that doesn't seem likely to
be what users will want.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/73193d82d7c8d849774bf6952dfb4287e213c572

Modified Files
--------------
src/backend/utils/adt/float.c | 59 +++++++++++++++++---
.../expected/float8-exp-three-digits-win32.out | 4 +-
src/test/regress/expected/float8-small-is-zero.out | 4 +-
.../regress/expected/float8-small-is-zero_1.out | 4 +-
src/test/regress/expected/float8.out | 4 +-
5 files changed, 60 insertions(+), 15 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2016-01-23 21:19:20 pgsql: Further adjust degree-based trig functions for more portability.
Previous Message Peter Eisentraut 2016-01-23 12:02:24 pgsql: psql: Improve completion of FDW DDL commands