# factorial

Factorial of input

## Syntax

• ``f = factorial(n)``
example

## Description

example

````f = factorial(n)` returns the product of all positive integers less than or equal to `n`, where `n` is a nonnegative integer value. If `n` is an array, then `f` contains the factorial of each value of `n`. The data type and size of `f` is the same as that of `n`.The factorial of `n` is commonly written in math notation using the exclamation point character as n!. Note that `n!` is not a valid MATLAB® syntax for calculating the factorial of `n`.```

## Examples

collapse all

### 10!

`f = factorial(10)`
```f = 3628800```

### 22!

```format long f = factorial(22)```
```f = 1.124000727777608e+21```

In this case, `f` is accurate up to 15 digits, `1.12400072777760e+21`, because double-precision numbers are only accurate up to 15 digits.

Reset the output format to the default.

```format ```

### Factorial of Array Elements

```n = [0 1 2; 3 4 5]; f = factorial(n)```
```f = 1 1 2 6 24 120```

### Factorial of Unsigned Integer Values

```n = uint64([5 10 15 20]); f = factorial(n)```
```f = 120 3628800 1307674368000 2432902008176640000```

## Input Arguments

collapse all

### `n` — Input valuesscalar, vector, or array of real, nonnegative integer values

Input values, specified as a scalar, vector, or array of real, nonnegative integers.

Example: `5`

Example: ```[0 1 2 3 4]```

Example: ```int16([10 15 20])```

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64`

expand all

### Tips

Limitations

• For double-precision inputs, the result is exact when `n` is less than or equal to `21`. Larger values of `n` produce a result that has the correct order of magnitude and is accurate for the first 15 digits. This is because double-precision numbers are only accurate up to 15 digits.

• For single-precision inputs, the result is exact when `n` is less than or equal to `13`. Larger values of `n` produce a result that has the correct order of magnitude and is accurate for the first 8 digits. This is because single-precision numbers are only accurate up to 8 digits.

Saturation

• The table below describes the saturation behavior of each data type when used with the `factorial` function. The values in the last column indicate the saturation point; that is, the first positive integer whose actual factorial is larger than the maximum representable value in the middle column. For `single` and `double`, all values larger than the maximum value are returned as `Inf`. For the integer data types, the saturation value is equal to the maximum value in the middle column.

Data typeMaximum ValueFactorial Saturation Threshold
`double``realmax``factorial(171)`
`single``realmax('single')``factorial(single(35))`
`uint64`264-1`factorial(uint64(21))`
`int64`263-1`factorial(int64(21))`
`uint32`232-1`factorial(uint32(13))`
`int32`231-1`factorial(int32(13))`
`uint16`216-1`factorial(uint16(9))`
`int16`215-1`factorial(int16(8))`
`uint8`28-1`factorial(uint8(6))`
`int8`27-1`factorial(int8(6))`