factorial - Factorial of input - MATLAB (original) (raw)
Main Content
Syntax
Description
f = factorial([n](#bts27rr-1-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
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.
n = [0 1 2; 3 4 5]; f = factorial(n)
n = uint64([5 10 15 20]); f = factorial(n)
f = 1×4 uint64 row vector
120 3628800 1307674368000 2432902008176640000
Input Arguments
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
Tips
Limitations
- For double-precision inputs, the result is exact when
n
is less than or equal to21
. Larger values ofn
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 to13
. Larger values ofn
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. Forsingle
anddouble
, all values larger than the maximum value are returned asInf
. 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))
Extended Capabilities
The factorial
function supports GPU array input with these usage notes and limitations:
- 64-bit integers are not supported.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006a