pgsql: Avoid wrong results for power() with NaN input on more platforms
Avoid wrong results for power() with NaN input on more platforms.
Buildfarm results show that the modern POSIX rule that 1 ^ NaN = 1 is not
honored on *BSD until relatively recently, and really old platforms don't
believe that NaN ^ 0 = 1 either. (This is unsurprising, perhaps, since
SUSv2 doesn't require either behavior.) In hopes of getting to platform
independent behavior, let's deal with all the NaN-input cases explicitly
in dpow().
Note that numeric_power() doesn't know either of these special cases.
But since that behavior is platform-independent, I think it should be
addressed separately, and probably not back-patched.
Discussion: /messages/by-id/75DB81BEEA95B445AE6D576A0A5C9E936A73E741@BPXM05GP.gisp.nec.co.jp
Branch
------
REL_10_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/217d8f3a19aeae6a221c61487f1758a53dda31c8
Modified Files
--------------
src/backend/utils/adt/float.c | 24 +++++++++++++++++++---
.../expected/float8-exp-three-digits-win32.out | 6 ++++++
src/test/regress/expected/float8-small-is-zero.out | 6 ++++++
.../regress/expected/float8-small-is-zero_1.out | 6 ++++++
src/test/regress/expected/float8.out | 6 ++++++
src/test/regress/sql/float8.sql | 1 +
6 files changed, 46 insertions(+), 3 deletions(-)