From: Tom Lane <tgl@sss.pgh.pa.us>
To: Gavin Sherry <swm@linuxworld.com.au>
Cc: pgsql-patches@postgresql.org
Subject: Re: Numeric version of factorial()
Date: Thu, 31 Jul 2003 21:37:44 -0400
Message-ID: <3601.1059701864@sss.pgh.pa.us> (raw)
In-Reply-To: <Pine.LNX.4.21.0308011020560.12997-200000@linuxworld.com.au>
References: <Pine.LNX.4.21.0308011020560.12997-200000@linuxworld.com.au>
Gavin Sherry <swm@linuxworld.com.au> writes:
> 2) since we're accepting numeric arguments, the patch tests for floats. If
> a numeric is passed with non-zero decimal portion, an error is raised
> since (from memory) they are undefined.
There is a standard mathematical definition for it (gamma function,
IIRC) but this is probably plenty good enough for our purposes. I would
suggest though that you reject fractions before you short-circuit for
x <= 1.
> 3) I have not removed factorial([int2|int4|int8]), not their operator
> counterparts since I didn't know what people would want done with these.
We had already decided to nuke the int2 and int4 versions, since they
overflow far too easily. I'd go with nuking int8 too and providing only
the numeric variant ...
> + int8_to_numericvar((int64)1, &one);
> +
> + ret = cmp_var(&fact, &one);
Uh, why not use const_one?
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-docs@postgresql.org
Cc: tgl@sss.pgh.pa.us, swm@linuxworld.com.au, pgsql-patches@postgresql.org
Subject: Re: Numeric version of factorial()
In-Reply-To: <3601.1059701864@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox