diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-01-24 12:53:03 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-01-24 12:53:03 -0500 |
commit | 00347575e2754b1aaacd357776560803564d3f35 (patch) | |
tree | 03a650732e8469f36d116d24de79ff90f86a5bc4 /src/backend/utils/adt/float.c | |
parent | 360f67d31a5656991122b89c9ca22a860f41512c (diff) | |
download | postgresql-00347575e2754b1aaacd357776560803564d3f35.tar.gz postgresql-00347575e2754b1aaacd357776560803564d3f35.zip |
Yet further adjust degree-based trig functions for more portability.
Buildfarm member cockatiel is still saying that cosd(60) isn't 0.5.
What seems likely is that the subexpression (1.0 - cos(x)) isn't being
rounded to double width before more arithmetic is done on it, so force
that by storing it into a variable.
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r-- | src/backend/utils/adt/float.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index 788c17033f2..d4e5d553477 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -2000,7 +2000,9 @@ sind_0_to_30(double x) static double cosd_0_to_60(double x) { - return 1.0 - ((1.0 - cos(x * RADIANS_PER_DEGREE)) / one_minus_cos_60) / 2.0; + float8 one_minus_cos_x = 1.0 - cos(x * RADIANS_PER_DEGREE); + + return 1.0 - (one_minus_cos_x / one_minus_cos_60) / 2.0; } |