scipy.special.

factorial2#

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

双阶乘。

这是跳过每隔一个值的阶乘。例如,7!! = 7 * 5 * 3 * 1。它可以近似计算为

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

奇数 n 的公式是复数扩展的基础。

参数:
nint 或 float 或 complex (或它们的类数组)

n!! 的输入值。非整数值需要 extend='complex'。默认情况下,n < 0 的返回值是 0。

exactbool,可选

如果 exact 设置为 True,则使用整数算术精确计算答案,否则使用上述近似值(更快,但会产生浮点数而不是整数)。默认为 False。

extendstring,可选

可以是 'zero''complex' 之一;这决定了如何处理 n<0 的值 - 默认情况下它们是 0,但可以选择使用双阶乘的复数扩展。这也允许将复数值传递给 n

警告

使用 'complex' 扩展也会改变偶数整数的双阶乘的值,将其减少一个因子 sqrt(2/pi) ~= 0.79,参见 [1]。

返回:
nfint 或 float 或 complex 或 ndarray

n 的双阶乘,作为整数、浮点数或复数(取决于 exactextend)。数组输入作为数组返回。

参考

示例

>>> from scipy.special import factorial2
>>> factorial2(7, exact=False)
array(105.00000000000001)
>>> factorial2(7, exact=True)
105