Fix power() for large inputs yet more.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 15 Jun 2020 23:10:30 +0000 (19:10 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 15 Jun 2020 23:10:33 +0000 (19:10 -0400)
commit5674eb98762ed41c7f9672a3bc56edf925e9d97d
tree0b630f2b3413d3fabe456a655d4bab535a3c0f65
parent2961c9711c17e5fe05fb1fbd72c3e47f3b601ee4
Fix power() for large inputs yet more.

Buildfarm results for commit e532b1d57 reveal the error in my thinking
about the unexpected-EDOM case.  I'd supposed this was no longer really
a live issue, but it seems the fix for glibc's bug #3866 is not all that
old, and we still have at least one buildfarm animal (lapwing) with the
bug.  Hence, resurrect essentially the previous logic (but, I hope, less
opaquely presented), and explain what it is we're really doing here.

Also, blindly try to fix fossa's failure by tweaking the logic that
figures out whether y is an odd integer when x is -inf.  This smells
a whole lot like a compiler bug, but I lack access to icc to try to
pin it down.  Maybe doing division instead of multiplication will
dodge the issue.

Discussion: https://postgr.es/m/E1jkU7H-00024V-NZ@gemulon.postgresql.org
src/backend/utils/adt/float.c