# Factorial: Difference between revisions

 `!`

Factorial (`!`) is a monadic scalar function which gives the factorial of a non-negative integer. Factorial takes its glyph <source lang=apl inline>!</syntaxhighlight> from traditional mathematics but, like all monadic functions, takes its argument on the right <source lang=apl inline>!Y</syntaxhighlight> instead of traditional mathematics' ${\displaystyle Y!}$. It shares the glyph with the dyadic arithmetic function Binomial.

## Examples

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

<source lang=apl>

```     !0 1 2 3 4
```

1 1 2 6 24

```     ×/⍳4
```

24 </syntaxhighlight>

## Extended definition

In multiple implementations, this function has an extended definition using the Gamma function ${\displaystyle \Gamma (n)}$, so that it is defined for real and complex numbers. Because ${\displaystyle \Gamma (n)}$ equals ${\displaystyle (n-1)!}$, <source lang=apl inline>!Y</syntaxhighlight> is defined as ${\displaystyle \Gamma (Y+1)}$.

<source lang=apl>

```     !¯1.2 0.5 2.7
```

¯5.821148569 0.8862269255 4.170651784

```     !2J1 ¯2J¯1
```

0.962865153J1.339097176 ¯0.1715329199J¯0.3264827482

</syntaxhighlight>

Works in: Dyalog APL

The Gamma function diverges at 0 or negative numbers, so <source lang=apl inline>!Y</syntaxhighlight> is undefined at negative integers.

<source lang=apl>

```     !¯1
```

DOMAIN ERROR

```!¯1
∧
```

</syntaxhighlight>

Works in: Dyalog APL

In J, where literal infinity is supported, negative integer factorial evaluates to positive infinity <source lang=j inline>_</syntaxhighlight> (if the argument is odd) or negative infinity <source lang=j inline>__</syntaxhighlight> (if even). This corresponds to the positive-side limit of the Gamma function.

<source lang=j>

```     !_1 _2 _3 _4
```

_ __ _ __

</syntaxhighlight>

Works in: J