aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/float.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-01-24 12:53:03 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-01-24 12:53:03 -0500
commit00347575e2754b1aaacd357776560803564d3f35 (patch)
tree03a650732e8469f36d116d24de79ff90f86a5bc4 /src/backend/utils/adt/float.c
parent360f67d31a5656991122b89c9ca22a860f41512c (diff)
downloadpostgresql-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.c4
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;
}