diff options
author | Tom Lane | 2016-01-24 17:53:03 +0000 |
---|---|---|
committer | Tom Lane | 2016-01-24 17:53:03 +0000 |
commit | 00347575e2754b1aaacd357776560803564d3f35 (patch) | |
tree | 03a650732e8469f36d116d24de79ff90f86a5bc4 | |
parent | 360f67d31a5656991122b89c9ca22a860f41512c (diff) |
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.
-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 788c17033f..d4e5d55347 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; } |