2 ** (n / 2) * (n / 2)!                         n even

The formula for odd ``n`` is the basis for the complex extension.

Parameters
----------
n : int 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.
exact : bool, 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.
extend : string, 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 of
       ``sqrt(2/pi) ~= 0.79``, see [1].

Returns
-------
nf : int or float or complex or ndarray
    Double factorial of ``n``, as integer, float or complex (depending on
    ``exact`` and ``extend``). Array inputs are returned as arrays.

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

References
----------
.. [1] Complex extension to double factorial
        https://en.wikipedia.org/wiki/Double_factorial#Complex_arguments
r=