Re: factorial of negative numbers - Mailing list pgsql-hackers

From Juan José Santamaría Flecha
Subject Re: factorial of negative numbers
Date
Msg-id CAC+AXB1bgOU8VQRYushaYiC0r-0u+=tR1if3sRjLRhNzxkGvOw@mail.gmail.com
Whole thread Raw
In response to Re: factorial of negative numbers  (Dean Rasheed <dean.a.rasheed@gmail.com>)
List pgsql-hackers

On Tue, Jun 16, 2020 at 11:50 AM Dean Rasheed <dean.a.rasheed@gmail.com> wrote:
On Tue, 16 Jun 2020 at 10:09, Juan José Santamaría Flecha
<juanjo.santamaria@gmail.com> wrote:
>
> It is defined as NaN (or undefined), which is not in the realm of integer numbers. You might get a clear idea of the logic from [1], where they also make a case for the error being ERRCODE_DIVISION_BY_ZERO.
>
> [1] http://mathforum.org/library/drmath/view/60851.html
>

Hmm, I think ERRCODE_DIVISION_BY_ZERO should probably be reserved for
actual division functions.

With [1], we could return 'Infinity', which would be more correct from
a mathematical point of view, and might be preferable to erroring-out
in some contexts.

[1] https://www.postgresql.org/message-id/606717.1591924582%40sss.pgh.pa.us

Returning division-by-zero would be confusing for the user.

I think that out-of-range would be a reasonable solution for "FUNCTION factorial(integer) RETURNS integer", because it could only return an integer when the input is a positive integer, but for "FUNCTION factorial(integer) RETURNS numeric" the returned value should be 'NaN' without error.

Regards,

Juan José Santamaría Flecha

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: create database with template doesn't copy database ACL
Next
From: Amit Kapila
Date:
Subject: Re: Parallel Seq Scan vs kernel read ahead