Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Factorial of input

`f = factorial(n)`

`f = factorial(`

returns
the product of all positive integers less than or equal to `n`

)`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`

.

**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 type Maximum Value Factorial Saturation Threshold `double`

`realmax`

`factorial(171)`

`single`

`realmax('single')`

`factorial(single(35))`

`uint64`

2 ^{64}-1`factorial(uint64(21))`

`int64`

2 ^{63}-1`factorial(int64(21))`

`uint32`

2 ^{32}-1`factorial(uint32(13))`

`int32`

2 ^{31}-1`factorial(int32(13))`

`uint16`

2 ^{16}-1`factorial(uint16(9))`

`int16`

2 ^{15}-1`factorial(int16(8))`

`uint8`

2 ^{8}-1`factorial(uint8(6))`

`int8`

2 ^{7}-1`factorial(int8(6))`