scipy.special.

factorial#

scipy.special.factorial(n, exact=False, extend='zero')[source]#

The factorial of a number or array of numbers.

The factorial of non-negative integer n is the product of all positive integers less than or equal to n:

n! = n * (n - 1) * (n - 2) * ... * 1
Parameters:
nint or float or complex (or array_like thereof)

Input values for n!. Complex values require extend='complex'. By default, the return value for n < 0 is 0.

exactbool, optional

If exact is set to True, calculate the answer exactly using integer arithmetic, otherwise approximate using the gamma function (faster, but yields floats instead of integers). Default is False.

extendstring, optional

One of 'zero' or 'complex'; this determines how values n<0 are handled - by default they are 0, but it is possible to opt into the complex extension of the factorial (see below).

Returns:
nfint or float or complex or ndarray

Factorial of n, as integer, float or complex (depending on exact and extend). Array inputs are returned as arrays.

Notes

For arrays with exact=True, the factorial is computed only once, for the largest input, with each other result computed in the process. The output dtype is increased to int64 or object if necessary.

With exact=False the factorial is approximated using the gamma function (which is also the definition of the complex extension):

\[n! = \Gamma(n+1)\]

Examples

>>> import numpy as np
>>> from scipy.special import factorial
>>> arr = np.array([3, 4, 5])
>>> factorial(arr, exact=False)
array([   6.,   24.,  120.])
>>> factorial(arr, exact=True)
array([  6,  24, 120])
>>> factorial(5, exact=True)
120