Re: pgsql: Fix behavior of exp() and power() for infinity inputs. - Mailing list pgsql-committers

From Michael Paquier
Subject Re: pgsql: Fix behavior of exp() and power() for infinity inputs.
Date
Msg-id 20200615034259.GD52676@paquier.xyz
Whole thread Raw
In response to pgsql: Fix behavior of exp() and power() for infinity inputs.  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: pgsql: Fix behavior of exp() and power() for infinity inputs.
List pgsql-committers
On Sun, Jun 14, 2020 at 03:00:11PM +0000, Tom Lane wrote:
> Fix behavior of exp() and power() for infinity inputs.
>
> Previously, these functions tended to throw underflow errors for
> negative-infinity exponents.  The correct thing per POSIX is to
> return 0, so let's do that instead.  (Note that the SQL standard
> is silent on such issues, as it lacks the concepts of either Inf
> or NaN; so our practice is to follow POSIX whenever a corresponding
> C-library function exists.)
>
> Also, add a bunch of test cases verifying that exp() and power()
> actually do follow POSIX for Inf and NaN inputs.  While this patch
> should guarantee that exp() passes the tests, power() will not unless
> the platform's pow(3) is fully POSIX-compliant.  I already know that
> gaur fails some of the tests, and I am suspicious that the Windows
> animals will too; the extent of compliance of other old platforms
> remains to be seen.  We might choose to drop failing test cases, or
> to work harder at overriding pow(3) for these cases, but first let's
> see just how good or bad the situation is.

The Windows servers don't actually cay anything here, but sidewinder
and hoverfly complain, on top of gaur of course:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=hoverfly&dt=2020-06-14%2015%3A05%3A33
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=sidewinder&dt=2020-06-14%2018%3A45%3A28
--
Michael

Attachment

pgsql-committers by date:

Previous
From: Thomas Munro
Date:
Subject: pgsql: Doc: Add references for SI and SSI.
Next
From: Tom Lane
Date:
Subject: Re: pgsql: Fix behavior of exp() and power() for infinity inputs.