On Tue, 16 Jun 2020 at 06:00, Ashutosh Bapat <ashutosh.ba...@2ndquadrant.com> wrote: > > Divison by zero is really undefined, 12345678 * 12345678 (just some numbers) > is out of range of say int4, but factorial of a negative number has some > meaning and is defined but PostgreSQL does not support it. >
Actually, I think undefined/out-of-range is the right error to throw here. Most common implementations do regard factorial as undefined for anything other than positive integers, as well as following the convention that factorial(0) = 1. Some implementations extend the factorial to non-integer inputs, negative inputs, or even complex inputs by defining it in terms of the gamma function. However, even then, it is undefined for negative integer inputs. Regards, Dean [1] https://en.wikipedia.org/wiki/Factorial [2] https://en.wikipedia.org/wiki/Gamma_function