Re: [PATCHES] Numeric version of factorial() - Mailing list pgsql-docs
From | Bruce Momjian |
---|---|
Subject | Re: [PATCHES] Numeric version of factorial() |
Date | |
Msg-id | 200312012154.hB1LsSn15127@candle.pha.pa.us Whole thread Raw |
Responses |
Re: [PATCHES] Numeric version of factorial()
|
List | pgsql-docs |
I had to remove the factorial example from the casting docs because factorial is now defined only for numeric. Would someone take the attached example and make a new one with a different operator? Thanks. --------------------------------------------------------------------------- Gavin Sherry wrote: > Attached is a patch implementing factorial(), returning numeric. Points to > note: > > 1) arttype is numeric. I thought this was the best way of allowing > arbitarily large factorials, even though factorial(2^63) is a large > number. Happy to change to integers if this is overkill. > 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. > 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. > 4) I haven't added any documentation but am happy to once I know if people > want int or numeric arguments. > > Thanks, > > Gavin Content-Description: [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: doc/src/sgml/typeconv.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/typeconv.sgml,v retrieving revision 1.39 diff -c -c -r1.39 typeconv.sgml *** doc/src/sgml/typeconv.sgml 29 Nov 2003 19:51:38 -0000 1.39 --- doc/src/sgml/typeconv.sgml 1 Dec 2003 21:42:04 -0000 *************** *** 437,466 **** ERROR: "-4.5e500" is out of range for type double precision </screen> </para> - - <para> - On the other hand, the postfix operator <literal>!</> (factorial) - is defined only for integer data types, not for <type>float8</type>. So, if we - try a similar case with <literal>!</>, we get: - <screen> - SELECT '20' ! AS "factorial"; - - ERROR: operator is not unique: "unknown" ! - HINT: Could not choose a best candidate operator. You may need to add explicit - type casts. - </screen> - This happens because the system can't decide which of the several - possible <literal>!</> operators should be preferred. We can help - it out with an explicit cast: - <screen> - SELECT CAST('20' AS int8) ! AS "factorial"; - - factorial - --------------------- - 2432902008176640000 - (1 row) - </screen> - </para> </example> </sect1> --- 437,442 ----
pgsql-docs by date: