Avoid wrong results for power() with NaN input on more platforms.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: d9c7f56da464e5d499a2dcd0a601f2ee68fee06b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2018-04-29T22:15:16Z
Releases: 9.3.23
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: https://postgr.es/m/75DB81BEEA95B445AE6D576A0A5C9E936A73E741@BPXM05GP.gisp.nec.co.jp

Files

Discussion