Factorial of input
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 | 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)) |