exp() versus the POSIX standard

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

From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Date: 2020-06-11T23:22:32Z
Lists: pgsql-hackers
The POSIX standard says this about the exp(3) function:

	If x is -Inf, +0 shall be returned.

At least on my Linux box, our version does no such thing:

regression=# select exp('-inf'::float8);
ERROR:  value out of range: underflow

Does anyone disagree that that's a bug?  Should we back-patch
a fix, or just change it in HEAD?  Given the lack of user
complaints, I lean a bit towards the latter, but am not sure.

			regards, tom lane



Commits

  1. Fix behavior of exp() and power() for infinity inputs.

  2. Fix float4/8 to handle Infinity and Nan consistently, e.g. Infinity is a

  3. Cleanup.