On Thu, Jun 18, 2020 at 1:57 PM Peter Eisentraut < peter.eisentr...@2ndquadrant.com> wrote:
> On 2020-06-18 09:43, Juan José Santamaría Flecha wrote: > > The gamma function from math.h returns a NaN for negative integer > > values, the postgres factorial function returns a numeric, which allows > > NaN. Raising an out-of-range error seems only reasonable for an integer > > output. > > But this is not the gamma function. The gamma function is undefined at > zero, but factorial(0) returns 1. So this is similar but not the same. > factorial(n) = gamma(n + 1) > Moreover, functions such as log() also error out on unsupportable input > values, so it's consistent with the spec. > If factorial() ever gets extended to other input types it might get inconsistent, should !(-1.0) also raise an error? Logarithm is just different case: https://en.wikipedia.org/wiki/Logarithm#/media/File:Log4.svg Regards, Juan José Santamaría Flecha