Re: Tom Lane 2017-02-20 <30737.1487598...@sss.pgh.pa.us> > Hmph. We haven't touched that code in awhile, and certainly not in the > 9.4.x branch. I'd have to agree that this must be a toolchain change.
FYI, in the meantime we could indeed trace it back to an libc issue on Jessie: $ cat sqrt.c #include <math.h> #include <stdio.h> #include <fenv.h> double pg_hypot(double x, double y) { double yx; /* Some PG-specific code deleted here */ /* Else, drop any minus signs */ x = fabs(x); y = fabs(y); /* Swap x and y if needed to make x the larger one */ if (x < y) { double temp = x; x = y; y = temp; } /* * If y is zero, the hypotenuse is x. This test saves a few cycles in * such cases, but more importantly it also protects against * divide-by-zero errors, since now x >= y. */ if (y == 0.0) return x; /* Determine the hypotenuse */ yx = y / x; return x * sqrt(1.0 + (yx * yx)); } int main () { //fesetround(FE_TONEAREST); printf("fegetround is %d\n", fegetround()); double r = pg_hypot(10.0, 10.0); printf("14 %.14g\n", r); printf("15 %.15g\n", r); printf("16 %.16g\n", r); printf("17 %.17g\n", r); return 0; } Jessie output: fegetround is 0 14 14.142135623731 15 14.1421356237309 16 14.14213562373095 17 14.142135623730949 Sid output: fegetround is 0 14 14.142135623731 15 14.142135623731 16 14.14213562373095 17 14.142135623730951 The Sid output is what the point and polygon tests are expecting. Possible culprit is this bug report from November: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843904 (Though that doesn't explain why it affects 32bit powerpc only.) Christoph -- Senior Berater, Tel.: +49 2166 9901 187 credativ GmbH, HRB Mönchengladbach 12080, USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer pgp fingerprint: 5C48 FE61 57F4 9179 5970 87C6 4C5A 6BAB 12D2 A7AE -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers