factorial2 — SciPy v1.15.3 Manual (original) (raw)
scipy.special.
scipy.special.factorial2(n, exact=False, extend='zero')[source]#
Double factorial.
This is the factorial with every second value skipped. E.g., 7!! = 7 * 5 * 3 * 1
. It can be approximated numerically as:
n!! = 2 ** (n / 2) * gamma(n / 2 + 1) * sqrt(2 / pi) n odd = 2 ** (n / 2) * gamma(n / 2 + 1) n even = 2 ** (n / 2) * (n / 2)! n even
The formula for odd n
is the basis for the complex extension.
Parameters:
nint or float or complex (or array_like thereof)
Input values for n!!
. Non-integer 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 use above approximation (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 double factorial. This also enables passing complex values to n
.
Warning
Using the 'complex'
extension also changes the values of the double factorial for even integers, reducing them by a factor ofsqrt(2/pi) ~= 0.79
, see [1].
Returns:
nfint or float or complex or ndarray
Double factorial of n
, as integer, float or complex (depending onexact
and extend
). Array inputs are returned as arrays.
References
Examples
from scipy.special import factorial2 factorial2(7, exact=False) array(105.00000000000001) factorial2(7, exact=True) 105