From: Tom Lane Date: Sun, 24 Jan 2016 17:53:03 +0000 (-0500) Subject: Yet further adjust degree-based trig functions for more portability. X-Git-Tag: REL9_6_BETA1~822 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00347575e2754b1aaacd357776560803564d3f35;p=postgresql 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. --- 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; }