Factorial: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
m (Text replacement - "http://help.dyalog.com" to "https://help.dyalog.com")
Tags: Mobile edit Mobile web edit
Line 43: Line 43:
=== Documentation ===
=== Documentation ===

* [http://help.dyalog.com/latest/#Language/Primitive%20Functions/Factorial.htm Dyalog]
* [https://help.dyalog.com/latest/#Language/Primitive%20Functions/Factorial.htm Dyalog]
* [http://microapl.com/apl_help/ch_020_020_250.htm APLX]
* [http://microapl.com/apl_help/ch_020_020_250.htm APLX]
* [https://www.jsoftware.com/help/dictionary/d410.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/bang NuVoc]
* [https://www.jsoftware.com/help/dictionary/d410.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/bang NuVoc]
{{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar monadic functions]]
{{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar monadic functions]]

Revision as of 14:41, 14 July 2020


Factorial (!) is a monadic scalar function which gives the factorial of a non-negative integer. Factorial takes its glyph ! from traditional mathematics but, like all monadic functions, takes its argument on the right !Y instead of traditional mathematics' . It shares the glyph with the dyadic arithmetic function Binomial.


The factorial of a positive integer n is defined as the product of 1 to n inclusive.

      !0 1 2 3 4
1 1 2 6 24

Extended definition

In multiple implementations, this function has an extended definition using the Gamma function , so that it is defined for real and complex numbers. Because equals , !Y is defined as .

      !¯1.2 0.5 2.7
¯5.821148569 0.8862269255 4.170651784
      !2J1 ¯2J¯1
0.962865153J1.339097176 ¯0.1715329199J¯0.3264827482
Works in: Dyalog APL

The Gamma function diverges at 0 or negative numbers, so !Y is undefined at negative integers.

Works in: Dyalog APL

In J, where literal infinity is supported, negative integer factorial evaluates to positive infinity _ (if the argument is odd) or negative infinity __ (if even). This corresponds to the positive-side limit of the Gamma function.

      !_1 _2 _3 _4
_ __ _ __
Works in: J

External links


APL built-ins [edit]
Primitive functions
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)
Quad names
Arrays Index originMigration levelAtomic vector
Functions Name classCase convertUnicode convert
Operators SearchReplace