factorial2#
- 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 requireextend='complex'
. By default, the return value forn < 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 valuesn<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 ton
.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
andextend
). Array inputs are returned as arrays.
References
[1]Complex extension to double factorial https://en.wikipedia.org/wiki/Double_factorial#Complex_arguments
Examples
>>> from scipy.special import factorial2 >>> factorial2(7, exact=False) array(105.00000000000001) >>> factorial2(7, exact=True) 105