# encoding: utf-8
# module scipy.special._ufuncs
# from C:\Programs\Python\Python313\Lib\site-packages\scipy\special\_ufuncs.cp313-win_amd64.pyd
# by generator 1.147
# no doc

# imports
import builtins as __builtins__ # <module 'builtins' (built-in)>
import numpy as np # C:\Programs\Python\Python313\Lib\site-packages\numpy\__init__.py

# functions

def agm(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    agm(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    agm(a, b, out=None)
    
    Compute the arithmetic-geometric mean of `a` and `b`.
    
    Start with a_0 = a and b_0 = b and iteratively compute::
    
        a_{n+1} = (a_n + b_n)/2
        b_{n+1} = sqrt(a_n*b_n)
    
    a_n and b_n converge to the same limit as n increases; their common
    limit is agm(a, b).
    
    Parameters
    ----------
    a, b : array_like
        Real values only. If the values are both negative, the result
        is negative. If one value is negative and the other is positive,
        `nan` is returned.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        The arithmetic-geometric mean of `a` and `b`.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import agm
    >>> a, b = 24.0, 6.0
    >>> agm(a, b)
    13.458171481725614
    
    Compare that result to the iteration:
    
    >>> while a != b:
    ...     a, b = (a + b)/2, np.sqrt(a*b)
    ...     print("a = %19.16f  b=%19.16f" % (a, b))
    ...
    a = 15.0000000000000000  b=12.0000000000000000
    a = 13.5000000000000000  b=13.4164078649987388
    a = 13.4582039324993694  b=13.4581390309909850
    a = 13.4581714817451772  b=13.4581714817060547
    a = 13.4581714817256159  b=13.4581714817256159
    
    When array-like arguments are given, broadcasting applies:
    
    >>> a = np.array([[1.5], [3], [6]])  # a has shape (3, 1).
    >>> b = np.array([6, 12, 24, 48])    # b has shape (4,).
    >>> agm(a, b)
    array([[  3.36454287,   5.42363427,   9.05798751,  15.53650756],
           [  4.37037309,   6.72908574,  10.84726853,  18.11597502],
           [  6.        ,   8.74074619,  13.45817148,  21.69453707]])
    """
    pass

def airy(x, out1=None, out2=None, out3=None, out4=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    airy(x[, out1, out2, out3, out4], / [, out=(None, None, None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        airy(z, out=None)
    
        Airy functions and their derivatives.
    
        Parameters
        ----------
        z : array_like
            Real or complex argument.
        out : tuple of ndarray, optional
            Optional output arrays for the function values
    
        Returns
        -------
        Ai, Aip, Bi, Bip : 4-tuple of scalar or ndarray
            Airy functions Ai and Bi, and their derivatives Aip and Bip.
    
        See Also
        --------
        airye : exponentially scaled Airy functions.
    
        Notes
        -----
        The Airy functions Ai and Bi are two independent solutions of
    
        .. math:: y''(x) = x y(x).
    
        For real `z` in [-10, 10], the computation is carried out by calling
        the Cephes [1]_ `airy` routine, which uses power series summation
        for small `z` and rational minimax approximations for large `z`.
    
        Outside this range, the AMOS [2]_ `zairy` and `zbiry` routines are
        employed.  They are computed using power series for :math:`|z| < 1` and
        the following relations to modified Bessel functions for larger `z`
        (where :math:`t \equiv 2 z^{3/2}/3`):
    
        .. math::
    
            Ai(z) = \frac{1}{\pi \sqrt{3}} K_{1/3}(t)
    
            Ai'(z) = -\frac{z}{\pi \sqrt{3}} K_{2/3}(t)
    
            Bi(z) = \sqrt{\frac{z}{3}} \left(I_{-1/3}(t) + I_{1/3}(t) \right)
    
            Bi'(z) = \frac{z}{\sqrt{3}} \left(I_{-2/3}(t) + I_{2/3}(t)\right)
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
        .. [2] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Compute the Airy functions on the interval [-15, 5].
    
        >>> import numpy as np
        >>> from scipy import special
        >>> x = np.linspace(-15, 5, 201)
        >>> ai, aip, bi, bip = special.airy(x)
    
        Plot Ai(x) and Bi(x).
    
        >>> import matplotlib.pyplot as plt
        >>> plt.plot(x, ai, 'r', label='Ai(x)')
        >>> plt.plot(x, bi, 'b--', label='Bi(x)')
        >>> plt.ylim(-0.5, 1.0)
        >>> plt.grid()
        >>> plt.legend(loc='upper left')
        >>> plt.show()
    """
    pass

def airye(x, out1=None, out2=None, out3=None, out4=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    airye(x[, out1, out2, out3, out4], / [, out=(None, None, None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        airye(z, out=None)
    
        Exponentially scaled Airy functions and their derivatives.
    
        Scaling::
    
            eAi  = Ai  * exp(2.0/3.0*z*sqrt(z))
            eAip = Aip * exp(2.0/3.0*z*sqrt(z))
            eBi  = Bi  * exp(-abs(2.0/3.0*(z*sqrt(z)).real))
            eBip = Bip * exp(-abs(2.0/3.0*(z*sqrt(z)).real))
    
        Parameters
        ----------
        z : array_like
            Real or complex argument.
        out : tuple of ndarray, optional
            Optional output arrays for the function values
    
        Returns
        -------
        eAi, eAip, eBi, eBip : 4-tuple of scalar or ndarray
            Exponentially scaled Airy functions eAi and eBi, and their derivatives
            eAip and eBip
    
        See Also
        --------
        airy
    
        Notes
        -----
        Wrapper for the AMOS [1]_ routines `zairy` and `zbiry`.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        We can compute exponentially scaled Airy functions and their derivatives:
    
        >>> import numpy as np
        >>> from scipy.special import airye
        >>> import matplotlib.pyplot as plt
        >>> z = np.linspace(0, 50, 500)
        >>> eAi, eAip, eBi, eBip = airye(z)
        >>> f, ax = plt.subplots(2, 1, sharex=True)
        >>> for ind, data in enumerate([[eAi, eAip, ["eAi", "eAip"]],
        ...                             [eBi, eBip, ["eBi", "eBip"]]]):
        ...     ax[ind].plot(z, data[0], "-r", z, data[1], "-b")
        ...     ax[ind].legend(data[2])
        ...     ax[ind].grid(True)
        >>> plt.show()
    
        We can compute these using usual non-scaled Airy functions by:
    
        >>> from scipy.special import airy
        >>> Ai, Aip, Bi, Bip = airy(z)
        >>> np.allclose(eAi, Ai * np.exp(2.0 / 3.0 * z * np.sqrt(z)))
        True
        >>> np.allclose(eAip, Aip * np.exp(2.0 / 3.0 * z * np.sqrt(z)))
        True
        >>> np.allclose(eBi, Bi * np.exp(-abs(np.real(2.0 / 3.0 * z * np.sqrt(z)))))
        True
        >>> np.allclose(eBip, Bip * np.exp(-abs(np.real(2.0 / 3.0 * z * np.sqrt(z)))))
        True
    
        Comparing non-scaled and exponentially scaled ones, the usual non-scaled
        function quickly underflows for large values, whereas the exponentially
        scaled function does not.
    
        >>> airy(200)
        (0.0, 0.0, nan, nan)
        >>> airye(200)
        (0.07501041684381093, -1.0609012305109042, 0.15003188417418148, 2.1215836725571093)
    """
    pass

def bdtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bdtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    bdtr(k, n, p, out=None)
    
    Binomial distribution cumulative distribution function.
    
    Sum of the terms 0 through `floor(k)` of the Binomial probability density.
    
    .. math::
        \mathrm{bdtr}(k, n, p) =
        \sum_{j=0}^{\lfloor k \rfloor} {{n}\choose{j}} p^j (1-p)^{n-j}
    
    Parameters
    ----------
    k : array_like
        Number of successes (double), rounded down to the nearest integer.
    n : array_like
        Number of events (int).
    p : array_like
        Probability of success in a single event (float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        Probability of `floor(k)` or fewer successes in `n` independent events with
        success probabilities of `p`.
    
    Notes
    -----
    The terms are not summed directly; instead the regularized incomplete beta
    function is employed, according to the formula,
    
    .. math::
        \mathrm{bdtr}(k, n, p) =
        I_{1 - p}(n - \lfloor k \rfloor, \lfloor k \rfloor + 1).
    
    Wrapper for the Cephes [1]_ routine `bdtr`.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    """
    pass

def bdtrc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bdtrc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    bdtrc(k, n, p, out=None)
    
    Binomial distribution survival function.
    
    Sum of the terms `floor(k) + 1` through `n` of the binomial probability
    density,
    
    .. math::
        \mathrm{bdtrc}(k, n, p) =
        \sum_{j=\lfloor k \rfloor +1}^n {{n}\choose{j}} p^j (1-p)^{n-j}
    
    Parameters
    ----------
    k : array_like
        Number of successes (double), rounded down to nearest integer.
    n : array_like
        Number of events (int)
    p : array_like
        Probability of success in a single event.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        Probability of `floor(k) + 1` or more successes in `n` independent
        events with success probabilities of `p`.
    
    See Also
    --------
    bdtr
    betainc
    
    Notes
    -----
    The terms are not summed directly; instead the regularized incomplete beta
    function is employed, according to the formula,
    
    .. math::
        \mathrm{bdtrc}(k, n, p) = I_{p}(\lfloor k \rfloor + 1, n - \lfloor k \rfloor).
    
    Wrapper for the Cephes [1]_ routine `bdtrc`.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    """
    pass

def bdtri(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bdtri(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    bdtri(k, n, y, out=None)
    
    Inverse function to `bdtr` with respect to `p`.
    
    Finds the event probability `p` such that the sum of the terms 0 through
    `k` of the binomial probability density is equal to the given cumulative
    probability `y`.
    
    Parameters
    ----------
    k : array_like
        Number of successes (float), rounded down to the nearest integer.
    n : array_like
        Number of events (float)
    y : array_like
        Cumulative probability (probability of `k` or fewer successes in `n`
        events).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    p : scalar or ndarray
        The event probability such that `bdtr(\lfloor k \rfloor, n, p) = y`.
    
    See Also
    --------
    bdtr
    betaincinv
    
    Notes
    -----
    The computation is carried out using the inverse beta integral function
    and the relation,::
    
        1 - p = betaincinv(n - k, k + 1, y).
    
    Wrapper for the Cephes [1]_ routine `bdtri`.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    """
    pass

def bdtrik(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bdtrik(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    bdtrik(y, n, p, out=None)
    
    Inverse function to `bdtr` with respect to `k`.
    
    Finds the number of successes `k` such that the sum of the terms 0 through
    `k` of the Binomial probability density for `n` events with probability
    `p` is equal to the given cumulative probability `y`.
    
    Parameters
    ----------
    y : array_like
        Cumulative probability (probability of `k` or fewer successes in `n`
        events).
    n : array_like
        Number of events (float).
    p : array_like
        Success probability (float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    k : scalar or ndarray
        The number of successes `k` such that `bdtr(k, n, p) = y`.
    
    See Also
    --------
    bdtr
    
    Notes
    -----
    Formula 26.5.24 of [1]_ is used to reduce the binomial distribution to the
    cumulative incomplete beta distribution.
    
    Computation of `k` involves a search for a value that produces the desired
    value of `y`. The search relies on the monotonicity of `y` with `k`.
    
    Wrapper for the CDFLIB [2]_ Fortran routine `cdfbin`.
    
    References
    ----------
    .. [1] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
    .. [2] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    """
    pass

def bdtrin(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bdtrin(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    bdtrin(k, y, p, out=None)
    
    Inverse function to `bdtr` with respect to `n`.
    
    Finds the number of events `n` such that the sum of the terms 0 through
    `k` of the Binomial probability density for events with probability `p` is
    equal to the given cumulative probability `y`.
    
    Parameters
    ----------
    k : array_like
        Number of successes (float).
    y : array_like
        Cumulative probability (probability of `k` or fewer successes in `n`
        events).
    p : array_like
        Success probability (float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    n : scalar or ndarray
        The number of events `n` such that `bdtr(k, n, p) = y`.
    
    See Also
    --------
    bdtr
    
    Notes
    -----
    Formula 26.5.24 of [1]_ is used to reduce the binomial distribution to the
    cumulative incomplete beta distribution.
    
    Computation of `n` involves a search for a value that produces the desired
    value of `y`. The search relies on the monotonicity of `y` with `n`.
    
    Wrapper for the CDFLIB [2]_ Fortran routine `cdfbin`.
    
    References
    ----------
    .. [1] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
    .. [2] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    """
    pass

def bei(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    bei(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        bei(x, out=None)
    
        Kelvin function bei.
    
        Defined as
    
        .. math::
    
            \mathrm{bei}(x) = \Im[J_0(x e^{3 \pi i / 4})]
    
        where :math:`J_0` is the Bessel function of the first kind of
        order zero (see `jv`). See [dlmf]_ for more details.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the Kelvin function.
    
        See Also
        --------
        ber : the corresponding real part
        beip : the derivative of bei
        jv : Bessel function of the first kind
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10.61
    
        Examples
        --------
        It can be expressed using Bessel functions.
    
        >>> import numpy as np
        >>> import scipy.special as sc
        >>> x = np.array([1.0, 2.0, 3.0, 4.0])
        >>> sc.jv(0, x * np.exp(3 * np.pi * 1j / 4)).imag
        array([0.24956604, 0.97229163, 1.93758679, 2.29269032])
        >>> sc.bei(x)
        array([0.24956604, 0.97229163, 1.93758679, 2.29269032])
    """
    pass

def beip(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    beip(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        beip(x, out=None)
    
        Derivative of the Kelvin function bei.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            The values of the derivative of bei.
    
        See Also
        --------
        bei
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10#PT5
    """
    pass

def ber(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ber(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ber(x, out=None)
    
        Kelvin function ber.
    
        Defined as
    
        .. math::
    
            \mathrm{ber}(x) = \Re[J_0(x e^{3 \pi i / 4})]
    
        where :math:`J_0` is the Bessel function of the first kind of
        order zero (see `jv`). See [dlmf]_ for more details.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the Kelvin function.
    
        See Also
        --------
        bei : the corresponding real part
        berp : the derivative of bei
        jv : Bessel function of the first kind
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10.61
    
        Examples
        --------
        It can be expressed using Bessel functions.
    
        >>> import numpy as np
        >>> import scipy.special as sc
        >>> x = np.array([1.0, 2.0, 3.0, 4.0])
        >>> sc.jv(0, x * np.exp(3 * np.pi * 1j / 4)).real
        array([ 0.98438178,  0.75173418, -0.22138025, -2.56341656])
        >>> sc.ber(x)
        array([ 0.98438178,  0.75173418, -0.22138025, -2.56341656])
    """
    pass

def berp(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    berp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        berp(x, out=None)
    
        Derivative of the Kelvin function ber.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            The values of the derivative of ber.
    
        See Also
        --------
        ber
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10#PT5
    """
    pass

def besselpoly(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    besselpoly(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        besselpoly(a, lmb, nu, out=None)
    
        Weighted integral of the Bessel function of the first kind.
    
        Computes
    
        .. math::
    
           \int_0^1 x^\lambda J_\nu(2 a x) \, dx
    
        where :math:`J_\nu` is a Bessel function and :math:`\lambda=lmb`,
        :math:`\nu=nu`.
    
        Parameters
        ----------
        a : array_like
            Scale factor inside the Bessel function.
        lmb : array_like
            Power of `x`
        nu : array_like
            Order of the Bessel function.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Value of the integral.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Evaluate the function for one parameter set.
    
        >>> from scipy.special import besselpoly
        >>> besselpoly(1, 1, 1)
        0.24449718372863877
    
        Evaluate the function for different scale factors.
    
        >>> import numpy as np
        >>> factors = np.array([0., 3., 6.])
        >>> besselpoly(factors, 1, 1)
        array([ 0.        , -0.00549029,  0.00140174])
    
        Plot the function for varying powers, orders and scales.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> powers = np.linspace(0, 10, 100)
        >>> orders = [1, 2, 3]
        >>> scales = [1, 2]
        >>> all_combinations = [(order, scale) for order in orders
        ...                     for scale in scales]
        >>> for order, scale in all_combinations:
        ...     ax.plot(powers, besselpoly(scale, powers, order),
        ...             label=rf"$\nu={order}, a={scale}$")
        >>> ax.legend()
        >>> ax.set_xlabel(r"$\lambda$")
        >>> ax.set_ylabel(r"$\int_0^1 x^{\lambda} J_{\nu}(2ax)\,dx$")
        >>> plt.show()
    """
    pass

def beta(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    beta(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        beta(a, b, out=None)
    
        Beta function.
    
        This function is defined in [1]_ as
    
        .. math::
    
            B(a, b) = \int_0^1 t^{a-1}(1-t)^{b-1}dt
                    = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)},
    
        where :math:`\Gamma` is the gamma function.
    
        Parameters
        ----------
        a, b : array_like
            Real-valued arguments
        out : ndarray, optional
            Optional output array for the function result
    
        Returns
        -------
        scalar or ndarray
            Value of the beta function
    
        See Also
        --------
        gamma : the gamma function
        betainc :  the regularized incomplete beta function
        betaln : the natural logarithm of the absolute
                 value of the beta function
    
        References
        ----------
        .. [1] NIST Digital Library of Mathematical Functions,
               Eq. 5.12.1. https://dlmf.nist.gov/5.12
    
        Examples
        --------
        >>> import scipy.special as sc
    
        The beta function relates to the gamma function by the
        definition given above:
    
        >>> sc.beta(2, 3)
        0.08333333333333333
        >>> sc.gamma(2)*sc.gamma(3)/sc.gamma(2 + 3)
        0.08333333333333333
    
        As this relationship demonstrates, the beta function
        is symmetric:
    
        >>> sc.beta(1.7, 2.4)
        0.16567527689031739
        >>> sc.beta(2.4, 1.7)
        0.16567527689031739
    
        This function satisfies :math:`B(1, b) = 1/b`:
    
        >>> sc.beta(1, 4)
        0.25
    """
    pass

def betainc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    betainc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    betainc(a, b, x, out=None)
    
    Regularized incomplete beta function.
    
    Computes the regularized incomplete beta function, defined as [1]_:
    
    .. math::
    
        I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x
        t^{a-1}(1-t)^{b-1}dt,
    
    for :math:`0 \leq x \leq 1`.
    
    This function is the cumulative distribution function for the beta
    distribution; its range is [0, 1].
    
    Parameters
    ----------
    a, b : array_like
           Positive, real-valued parameters
    x : array_like
        Real-valued such that :math:`0 \leq x \leq 1`,
        the upper limit of integration
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        Value of the regularized incomplete beta function
    
    See Also
    --------
    beta : beta function
    betaincinv : inverse of the regularized incomplete beta function
    betaincc : complement of the regularized incomplete beta function
    scipy.stats.beta : beta distribution
    
    Notes
    -----
    The term *regularized* in the name of this function refers to the
    scaling of the function by the gamma function terms shown in the
    formula.  When not qualified as *regularized*, the name *incomplete
    beta function* often refers to just the integral expression,
    without the gamma terms.  One can use the function `beta` from
    `scipy.special` to get this "nonregularized" incomplete beta
    function by multiplying the result of ``betainc(a, b, x)`` by
    ``beta(a, b)``.
    
    This function wraps the ``ibeta`` routine from the
    Boost Math C++ library [2]_.
    
    References
    ----------
    .. [1] NIST Digital Library of Mathematical Functions
           https://dlmf.nist.gov/8.17
    .. [2] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    
    Let :math:`B(a, b)` be the `beta` function.
    
    >>> import scipy.special as sc
    
    The coefficient in terms of `gamma` is equal to
    :math:`1/B(a, b)`. Also, when :math:`x=1`
    the integral is equal to :math:`B(a, b)`.
    Therefore, :math:`I_{x=1}(a, b) = 1` for any :math:`a, b`.
    
    >>> sc.betainc(0.2, 3.5, 1.0)
    1.0
    
    It satisfies
    :math:`I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b))`,
    where :math:`F` is the hypergeometric function `hyp2f1`:
    
    >>> a, b, x = 1.4, 3.1, 0.5
    >>> x**a * sc.hyp2f1(a, 1 - b, a + 1, x)/(a * sc.beta(a, b))
    0.8148904036225295
    >>> sc.betainc(a, b, x)
    0.8148904036225296
    
    This functions satisfies the relationship
    :math:`I_x(a, b) = 1 - I_{1-x}(b, a)`:
    
    >>> sc.betainc(2.2, 3.1, 0.4)
    0.49339638807619446
    >>> 1 - sc.betainc(3.1, 2.2, 1 - 0.4)
    0.49339638807619446
    """
    pass

def betaincc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    betaincc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    betaincc(a, b, x, out=None)
    
    Complement of the regularized incomplete beta function.
    
    Computes the complement of the regularized incomplete beta function,
    defined as [1]_:
    
    .. math::
    
        \bar{I}_x(a, b) = 1 - I_x(a, b)
                        = 1 - \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x
                                  t^{a-1}(1-t)^{b-1}dt,
    
    for :math:`0 \leq x \leq 1`.
    
    Parameters
    ----------
    a, b : array_like
           Positive, real-valued parameters
    x : array_like
        Real-valued such that :math:`0 \leq x \leq 1`,
        the upper limit of integration
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        Value of the regularized incomplete beta function
    
    See Also
    --------
    betainc : regularized incomplete beta function
    betaincinv : inverse of the regularized incomplete beta function
    betainccinv :
        inverse of the complement of the regularized incomplete beta function
    beta : beta function
    scipy.stats.beta : beta distribution
    
    Notes
    -----
    .. versionadded:: 1.11.0
    
    This function wraps the ``ibetac`` routine from the
    Boost Math C++ library [2]_.
    
    References
    ----------
    .. [1] NIST Digital Library of Mathematical Functions
           https://dlmf.nist.gov/8.17
    .. [2] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> from scipy.special import betaincc, betainc
    
    The naive calculation ``1 - betainc(a, b, x)`` loses precision when
    the values of ``betainc(a, b, x)`` are close to 1:
    
    >>> 1 - betainc(0.5, 8, [0.9, 0.99, 0.999])
    array([2.0574632e-09, 0.0000000e+00, 0.0000000e+00])
    
    By using ``betaincc``, we get the correct values:
    
    >>> betaincc(0.5, 8, [0.9, 0.99, 0.999])
    array([2.05746321e-09, 1.97259354e-17, 1.96467954e-25])
    """
    pass

def betainccinv(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    betainccinv(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    betainccinv(a, b, y, out=None)
    
    Inverse of the complemented regularized incomplete beta function.
    
    Computes :math:`x` such that:
    
    .. math::
    
        y = 1 - I_x(a, b) = 1 - \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}
        \int_0^x t^{a-1}(1-t)^{b-1}dt,
    
    where :math:`I_x` is the normalized incomplete beta function `betainc`
    and :math:`\Gamma` is the `gamma` function [1]_.
    
    Parameters
    ----------
    a, b : array_like
        Positive, real-valued parameters
    y : array_like
        Real-valued input
    out : ndarray, optional
        Optional output array for function values
    
    Returns
    -------
    scalar or ndarray
        Value of the inverse of the regularized incomplete beta function
    
    See Also
    --------
    betainc : regularized incomplete beta function
    betaincc : complement of the regularized incomplete beta function
    
    Notes
    -----
    .. versionadded:: 1.11.0
    
    This function wraps the ``ibetac_inv`` routine from the
    Boost Math C++ library [2]_.
    
    References
    ----------
    .. [1] NIST Digital Library of Mathematical Functions
           https://dlmf.nist.gov/8.17
    .. [2] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> from scipy.special import betainccinv, betaincc
    
    This function is the inverse of `betaincc` for fixed
    values of :math:`a` and :math:`b`.
    
    >>> a, b = 1.2, 3.1
    >>> y = betaincc(a, b, 0.2)
    >>> betainccinv(a, b, y)
    0.2
    
    >>> a, b = 7, 2.5
    >>> x = betainccinv(a, b, 0.875)
    >>> betaincc(a, b, x)
    0.875
    """
    pass

def betaincinv(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    betaincinv(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    betaincinv(a, b, y, out=None)
    
    Inverse of the regularized incomplete beta function.
    
    Computes :math:`x` such that:
    
    .. math::
    
        y = I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}
        \int_0^x t^{a-1}(1-t)^{b-1}dt,
    
    where :math:`I_x` is the normalized incomplete beta function `betainc`
    and :math:`\Gamma` is the `gamma` function [1]_.
    
    Parameters
    ----------
    a, b : array_like
        Positive, real-valued parameters
    y : array_like
        Real-valued input
    out : ndarray, optional
        Optional output array for function values
    
    Returns
    -------
    scalar or ndarray
        Value of the inverse of the regularized incomplete beta function
    
    See Also
    --------
    betainc : regularized incomplete beta function
    gamma : gamma function
    
    Notes
    -----
    This function wraps the ``ibeta_inv`` routine from the
    Boost Math C++ library [2]_.
    
    References
    ----------
    .. [1] NIST Digital Library of Mathematical Functions
           https://dlmf.nist.gov/8.17
    .. [2] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> import scipy.special as sc
    
    This function is the inverse of `betainc` for fixed
    values of :math:`a` and :math:`b`.
    
    >>> a, b = 1.2, 3.1
    >>> y = sc.betainc(a, b, 0.2)
    >>> sc.betaincinv(a, b, y)
    0.2
    >>>
    >>> a, b = 7.5, 0.4
    >>> x = sc.betaincinv(a, b, 0.5)
    >>> sc.betainc(a, b, x)
    0.5
    """
    pass

def betaln(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    betaln(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        betaln(a, b, out=None)
    
        Natural logarithm of absolute value of beta function.
    
        Computes ``ln(abs(beta(a, b)))``.
    
        Parameters
        ----------
        a, b : array_like
            Positive, real-valued parameters
        out : ndarray, optional
            Optional output array for function values
    
        Returns
        -------
        scalar or ndarray
            Value of the betaln function
    
        See Also
        --------
        gamma : the gamma function
        betainc :  the regularized incomplete beta function
        beta : the beta function
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import betaln, beta
    
        Verify that, for moderate values of ``a`` and ``b``, ``betaln(a, b)``
        is the same as ``log(beta(a, b))``:
    
        >>> betaln(3, 4)
        -4.0943445622221
    
        >>> np.log(beta(3, 4))
        -4.0943445622221
    
        In the following ``beta(a, b)`` underflows to 0, so we can't compute
        the logarithm of the actual value.
    
        >>> a = 400
        >>> b = 900
        >>> beta(a, b)
        0.0
    
        We can compute the logarithm of ``beta(a, b)`` by using `betaln`:
    
        >>> betaln(a, b)
        -804.3069951764146
    """
    pass

def binom(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    binom(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        binom(x, y, out=None)
    
        Binomial coefficient considered as a function of two real variables.
    
        For real arguments, the binomial coefficient is defined as
    
        .. math::
    
            \binom{x}{y} = \frac{\Gamma(x + 1)}{\Gamma(y + 1)\Gamma(x - y + 1)} =
                \frac{1}{(x + 1)\mathrm{B}(x - y + 1, y + 1)}
    
        Where :math:`\Gamma` is the Gamma function (`gamma`) and :math:`\mathrm{B}`
        is the Beta function (`beta`) [1]_.
    
        Parameters
        ----------
        x, y: array_like
           Real arguments to :math:`\binom{x}{y}`.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Value of binomial coefficient.
    
        See Also
        --------
        comb : The number of combinations of N things taken k at a time.
    
        Notes
        -----
        The Gamma function has poles at non-positive integers and tends to either
        positive or negative infinity depending on the direction on the real line
        from which a pole is approached. When considered as a function of two real
        variables, :math:`\binom{x}{y}` is thus undefined when `x` is a negative
        integer.  `binom` returns ``nan`` when ``x`` is a negative integer. This
        is the case even when ``x`` is a negative integer and ``y`` an integer,
        contrary to the usual convention for defining :math:`\binom{n}{k}` when it
        is considered as a function of two integer variables.
    
        References
        ----------
        .. [1] https://en.wikipedia.org/wiki/Binomial_coefficient
    
        Examples
        --------
        The following examples illustrate the ways in which `binom` differs from
        the function `comb`.
    
        >>> from scipy.special import binom, comb
    
        When ``exact=False`` and ``x`` and ``y`` are both positive, `comb` calls
        `binom` internally.
    
        >>> x, y = 3, 2
        >>> (binom(x, y), comb(x, y), comb(x, y, exact=True))
        (3.0, 3.0, 3)
    
        For larger values, `comb` with ``exact=True`` no longer agrees
        with `binom`.
    
        >>> x, y = 43, 23
        >>> (binom(x, y), comb(x, y), comb(x, y, exact=True))
        (960566918219.9999, 960566918219.9999, 960566918220)
    
        `binom` returns ``nan`` when ``x`` is a negative integer, but is otherwise
        defined for negative arguments. `comb` returns 0 whenever one of ``x`` or
        ``y`` is negative or ``x`` is less than ``y``.
    
        >>> x, y = -3, 2
        >>> (binom(x, y), comb(x, y))
        (nan, 0.0)
    
        >>> x, y = -3.1, 2.2
        >>> (binom(x, y), comb(x, y))
        (18.714147876804432, 0.0)
    
        >>> x, y = 2.2, 3.1
        >>> (binom(x, y), comb(x, y))
        (0.037399983365134115, 0.0)
    """
    pass

def boxcox(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    boxcox(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    boxcox(x, lmbda, out=None)
    
    Compute the Box-Cox transformation.
    
    The Box-Cox transformation is::
    
        y = (x**lmbda - 1) / lmbda  if lmbda != 0
            log(x)                  if lmbda == 0
    
    Returns `nan` if ``x < 0``.
    Returns `-inf` if ``x == 0`` and ``lmbda < 0``.
    
    Parameters
    ----------
    x : array_like
        Data to be transformed.
    lmbda : array_like
        Power parameter of the Box-Cox transform.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        Transformed data.
    
    Notes
    -----
    
    .. versionadded:: 0.14.0
    
    Examples
    --------
    >>> from scipy.special import boxcox
    >>> boxcox([1, 4, 10], 2.5)
    array([   0.        ,   12.4       ,  126.09110641])
    >>> boxcox(2, [0, 1, 2])
    array([ 0.69314718,  1.        ,  1.5       ])
    """
    pass

def boxcox1p(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    boxcox1p(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    boxcox1p(x, lmbda, out=None)
    
    Compute the Box-Cox transformation of 1 + `x`.
    
    The Box-Cox transformation computed by `boxcox1p` is::
    
        y = ((1+x)**lmbda - 1) / lmbda  if lmbda != 0
            log(1+x)                    if lmbda == 0
    
    Returns `nan` if ``x < -1``.
    Returns `-inf` if ``x == -1`` and ``lmbda < 0``.
    
    Parameters
    ----------
    x : array_like
        Data to be transformed.
    lmbda : array_like
        Power parameter of the Box-Cox transform.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        Transformed data.
    
    Notes
    -----
    
    .. versionadded:: 0.14.0
    
    Examples
    --------
    >>> from scipy.special import boxcox1p
    >>> boxcox1p(1e-4, [0, 0.5, 1])
    array([  9.99950003e-05,   9.99975001e-05,   1.00000000e-04])
    >>> boxcox1p([0.01, 0.1], 0.25)
    array([ 0.00996272,  0.09645476])
    """
    pass

def btdtria(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    btdtria(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    btdtria(p, b, x, out=None)
    
    Inverse of `betainc` with respect to `a`.
    
    This is the inverse of the beta cumulative distribution function, `betainc`,
    considered as a function of `a`, returning the value of `a` for which
    `betainc(a, b, x) = p`, or
    
    .. math::
        p = \int_0^x \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} t^{a-1} (1-t)^{b-1}\,dt
    
    Parameters
    ----------
    p : array_like
        Cumulative probability, in [0, 1].
    b : array_like
        Shape parameter (`b` > 0).
    x : array_like
        The quantile, in [0, 1].
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    a : scalar or ndarray
        The value of the shape parameter `a` such that `betainc(a, b, x) = p`.
    
    See Also
    --------
    btdtrib : Inverse of the beta cumulative distribution function, with respect to `b`.
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfbet`.
    
    The cumulative distribution function `p` is computed using a routine by
    DiDinato and Morris [2]_. Computation of `a` involves a search for a value
    that produces the desired value of `p`. The search relies on the
    monotonicity of `p` with `a`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] DiDinato, A. R. and Morris, A. H.,
           Algorithm 708: Significant Digit Computation of the Incomplete Beta
           Function Ratios. ACM Trans. Math. Softw. 18 (1993), 360-373.
    """
    pass

def btdtrib(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    btdtrib(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    btdtria(a, p, x, out=None)
    
    Inverse of `betainc` with respect to `b`.
    
    This is the inverse of the beta cumulative distribution function, `betainc`,
    considered as a function of `b`, returning the value of `b` for which
    `betainc(a, b, x) = p`, or
    
    .. math::
        p = \int_0^x \frac{\Gamma(a + b)}{\Gamma(a)\Gamma(b)} t^{a-1} (1-t)^{b-1}\,dt
    
    Parameters
    ----------
    a : array_like
        Shape parameter (`a` > 0).
    p : array_like
        Cumulative probability, in [0, 1].
    x : array_like
        The quantile, in [0, 1].
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    b : scalar or ndarray
        The value of the shape parameter `b` such that `betainc(a, b, x) = p`.
    
    See Also
    --------
    btdtria : Inverse of the beta cumulative distribution function, with respect to `a`.
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfbet`.
    
    The cumulative distribution function `p` is computed using a routine by
    DiDinato and Morris [2]_. Computation of `b` involves a search for a value
    that produces the desired value of `p`. The search relies on the
    monotonicity of `p` with `b`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] DiDinato, A. R. and Morris, A. H.,
           Algorithm 708: Significant Digit Computation of the Incomplete Beta
           Function Ratios. ACM Trans. Math. Softw. 18 (1993), 360-373.
    """
    pass

def cbrt(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    cbrt(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        cbrt(x, out=None)
    
        Element-wise cube root of `x`.
    
        Parameters
        ----------
        x : array_like
            `x` must contain real numbers.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            The cube root of each value in `x`.
    
        Examples
        --------
        >>> from scipy.special import cbrt
    
        >>> cbrt(8)
        2.0
        >>> cbrt([-8, -3, 0.125, 1.331])
        array([-2.        , -1.44224957,  0.5       ,  1.1       ])
    """
    pass

def chdtr(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chdtr(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chdtr(v, x, out=None)
    
    Chi square cumulative distribution function.
    
    Returns the area under the left tail (from 0 to `x`) of the Chi
    square probability density function with `v` degrees of freedom:
    
    .. math::
    
        \frac{1}{2^{v/2} \Gamma(v/2)} \int_0^x t^{v/2 - 1} e^{-t/2} dt
    
    Here :math:`\Gamma` is the Gamma function; see `gamma`. This
    integral can be expressed in terms of the regularized lower
    incomplete gamma function `gammainc` as
    ``gammainc(v / 2, x / 2)``. [1]_
    
    Parameters
    ----------
    v : array_like
        Degrees of freedom.
    x : array_like
        Upper bound of the integral.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        Values of the cumulative distribution function.
    
    See Also
    --------
    chdtrc, chdtri, chdtriv, gammainc
    
    References
    ----------
    .. [1] Chi-Square distribution,
        https://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It can be expressed in terms of the regularized lower incomplete
    gamma function.
    
    >>> v = 1
    >>> x = np.arange(4)
    >>> sc.chdtr(v, x)
    array([0.        , 0.68268949, 0.84270079, 0.91673548])
    >>> sc.gammainc(v / 2, x / 2)
    array([0.        , 0.68268949, 0.84270079, 0.91673548])
    """
    pass

def chdtrc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chdtrc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chdtrc(v, x, out=None)
    
    Chi square survival function.
    
    Returns the area under the right hand tail (from `x` to infinity)
    of the Chi square probability density function with `v` degrees of
    freedom:
    
    .. math::
    
        \frac{1}{2^{v/2} \Gamma(v/2)} \int_x^\infty t^{v/2 - 1} e^{-t/2} dt
    
    Here :math:`\Gamma` is the Gamma function; see `gamma`. This
    integral can be expressed in terms of the regularized upper
    incomplete gamma function `gammaincc` as
    ``gammaincc(v / 2, x / 2)``. [1]_
    
    Parameters
    ----------
    v : array_like
        Degrees of freedom.
    x : array_like
        Lower bound of the integral.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        Values of the survival function.
    
    See Also
    --------
    chdtr, chdtri, chdtriv, gammaincc
    
    References
    ----------
    .. [1] Chi-Square distribution,
        https://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It can be expressed in terms of the regularized upper incomplete
    gamma function.
    
    >>> v = 1
    >>> x = np.arange(4)
    >>> sc.chdtrc(v, x)
    array([1.        , 0.31731051, 0.15729921, 0.08326452])
    >>> sc.gammaincc(v / 2, x / 2)
    array([1.        , 0.31731051, 0.15729921, 0.08326452])
    """
    pass

def chdtri(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chdtri(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chdtri(v, p, out=None)
    
    Inverse to `chdtrc` with respect to `x`.
    
    Returns `x` such that ``chdtrc(v, x) == p``.
    
    Parameters
    ----------
    v : array_like
        Degrees of freedom.
    p : array_like
        Probability.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    x : scalar or ndarray
        Value so that the probability a Chi square random variable
        with `v` degrees of freedom is greater than `x` equals `p`.
    
    See Also
    --------
    chdtrc, chdtr, chdtriv
    
    References
    ----------
    .. [1] Chi-Square distribution,
        https://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
    
    Examples
    --------
    >>> import scipy.special as sc
    
    It inverts `chdtrc`.
    
    >>> v, p = 1, 0.3
    >>> sc.chdtrc(v, sc.chdtri(v, p))
    0.3
    >>> x = 1
    >>> sc.chdtri(v, sc.chdtrc(v, x))
    1.0
    """
    pass

def chdtriv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chdtriv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chdtriv(p, x, out=None)
    
    Inverse to `chdtr` with respect to `v`.
    
    Returns `v` such that ``chdtr(v, x) == p``.
    
    Parameters
    ----------
    p : array_like
        Probability that the Chi square random variable is less than
        or equal to `x`.
    x : array_like
        Nonnegative input.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        Degrees of freedom.
    
    See Also
    --------
    chdtr, chdtrc, chdtri
    
    References
    ----------
    .. [1] Chi-Square distribution,
        https://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
    
    Examples
    --------
    >>> import scipy.special as sc
    
    It inverts `chdtr`.
    
    >>> p, x = 0.5, 1
    >>> sc.chdtr(sc.chdtriv(p, x), x)
    0.5000000000202172
    >>> v = 1
    >>> sc.chdtriv(sc.chdtr(v, x), v)
    1.0000000000000013
    """
    pass

def chndtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chndtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chndtr(x, df, nc, out=None)
    
    Non-central chi square cumulative distribution function
    
    The cumulative distribution function is given by:
    
    .. math::
    
        P(\chi^{\prime 2} \vert \nu, \lambda) =\sum_{j=0}^{\infty}
        e^{-\lambda /2}
        \frac{(\lambda /2)^j}{j!} P(\chi^{\prime 2} \vert \nu + 2j),
    
    where :math:`\nu > 0` is the degrees of freedom (``df``) and
    :math:`\lambda \geq 0` is the non-centrality parameter (``nc``).
    
    Parameters
    ----------
    x : array_like
        Upper bound of the integral; must satisfy ``x >= 0``
    df : array_like
        Degrees of freedom; must satisfy ``df > 0``
    nc : array_like
        Non-centrality parameter; must satisfy ``nc >= 0``
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    x : scalar or ndarray
        Value of the non-central chi square cumulative distribution function.
    
    See Also
    --------
    chndtrix, chndtridf, chndtrinc
    """
    pass

def chndtridf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chndtridf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chndtridf(x, p, nc, out=None)
    
    Inverse to `chndtr` vs `df`
    
    Calculated using a search to find a value for `df` that produces the
    desired value of `p`.
    
    Parameters
    ----------
    x : array_like
        Upper bound of the integral; must satisfy ``x >= 0``
    p : array_like
        Probability; must satisfy ``0 <= p < 1``
    nc : array_like
        Non-centrality parameter; must satisfy ``nc >= 0``
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    df : scalar or ndarray
        Degrees of freedom
    
    See Also
    --------
    chndtr, chndtrix, chndtrinc
    """
    pass

def chndtrinc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chndtrinc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chndtrinc(x, df, p, out=None)
    
    Inverse to `chndtr` vs `nc`
    
    Calculated using a search to find a value for `df` that produces the
    desired value of `p`.
    
    Parameters
    ----------
    x : array_like
        Upper bound of the integral; must satisfy ``x >= 0``
    df : array_like
        Degrees of freedom; must satisfy ``df > 0``
    p : array_like
        Probability; must satisfy ``0 <= p < 1``
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    nc : scalar or ndarray
        Non-centrality
    
    See Also
    --------
    chndtr, chndtrix, chndtrinc
    """
    pass

def chndtrix(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    chndtrix(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    chndtrix(p, df, nc, out=None)
    
    Inverse to `chndtr` vs `x`
    
    Calculated using a search to find a value for `x` that produces the
    desired value of `p`.
    
    Parameters
    ----------
    p : array_like
        Probability; must satisfy ``0 <= p < 1``
    df : array_like
        Degrees of freedom; must satisfy ``df > 0``
    nc : array_like
        Non-centrality parameter; must satisfy ``nc >= 0``
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    x : scalar or ndarray
        Value so that the probability a non-central Chi square random variable
        with `df` degrees of freedom and non-centrality, `nc`, is greater than
        `x` equals `p`.
    
    See Also
    --------
    chndtr, chndtridf, chndtrinc
    """
    pass

def cosdg(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    cosdg(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        cosdg(x, out=None)
    
        Cosine of the angle `x` given in degrees.
    
        Parameters
        ----------
        x : array_like
            Angle, given in degrees.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Cosine of the input.
    
        See Also
        --------
        sindg, tandg, cotdg
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is more accurate than using cosine directly.
    
        >>> x = 90 + 180 * np.arange(3)
        >>> sc.cosdg(x)
        array([-0.,  0., -0.])
        >>> np.cos(x * np.pi / 180)
        array([ 6.1232340e-17, -1.8369702e-16,  3.0616170e-16])
    """
    pass

def cosm1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    cosm1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        cosm1(x, out=None)
    
        cos(x) - 1 for use when `x` is near zero.
    
        Parameters
        ----------
        x : array_like
            Real valued argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of ``cos(x) - 1``.
    
        See Also
        --------
        expm1, log1p
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is more accurate than computing ``cos(x) - 1`` directly for
        ``x`` around 0.
    
        >>> x = 1e-30
        >>> np.cos(x) - 1
        0.0
        >>> sc.cosm1(x)
        -5.0000000000000005e-61
    """
    pass

def cotdg(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    cotdg(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        cotdg(x, out=None)
    
        Cotangent of the angle `x` given in degrees.
    
        Parameters
        ----------
        x : array_like
            Angle, given in degrees.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Cotangent at the input.
    
        See Also
        --------
        sindg, cosdg, tandg
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is more accurate than using cotangent directly.
    
        >>> x = 90 + 180 * np.arange(3)
        >>> sc.cotdg(x)
        array([0., 0., 0.])
        >>> 1 / np.tan(x * np.pi / 180)
        array([6.1232340e-17, 1.8369702e-16, 3.0616170e-16])
    """
    pass

def dawsn(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    dawsn(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    dawsn(x, out=None)
    
    Dawson's integral.
    
    Computes::
    
        exp(-x**2) * integral(exp(t**2), t=0..x).
    
    Parameters
    ----------
    x : array_like
        Function parameter.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        Value of the integral.
    
    See Also
    --------
    wofz, erf, erfc, erfcx, erfi
    
    References
    ----------
    .. [1] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-15, 15, num=1000)
    >>> plt.plot(x, special.dawsn(x))
    >>> plt.xlabel('$x$')
    >>> plt.ylabel('$dawsn(x)$')
    >>> plt.show()
    """
    pass

def ellipe(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipe(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipe(m, out=None)
    
        Complete elliptic integral of the second kind
    
        This function is defined as
    
        .. math:: E(m) = \int_0^{\pi/2} [1 - m \sin(t)^2]^{1/2} dt
    
        Parameters
        ----------
        m : array_like
            Defines the parameter of the elliptic integral.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        E : scalar or ndarray
            Value of the elliptic integral.
    
        See Also
        --------
        ellipkm1 : Complete elliptic integral of the first kind, near `m` = 1
        ellipk : Complete elliptic integral of the first kind
        ellipkinc : Incomplete elliptic integral of the first kind
        ellipeinc : Incomplete elliptic integral of the second kind
        elliprd : Symmetric elliptic integral of the second kind.
        elliprg : Completely-symmetric elliptic integral of the second kind.
    
        Notes
        -----
        Wrapper for the Cephes [1]_ routine `ellpe`.
    
        For ``m > 0`` the computation uses the approximation,
    
        .. math:: E(m) \approx P(1-m) - (1-m) \log(1-m) Q(1-m),
    
        where :math:`P` and :math:`Q` are tenth-order polynomials.  For
        ``m < 0``, the relation
    
        .. math:: E(m) = E(m/(m - 1)) \sqrt(1-m)
    
        is used.
    
        The parameterization in terms of :math:`m` follows that of section
        17.2 in [2]_. Other parameterizations in terms of the
        complementary parameter :math:`1 - m`, modular angle
        :math:`\sin^2(\alpha) = m`, or modulus :math:`k^2 = m` are also
        used, so be careful that you choose the correct parameter.
    
        The Legendre E integral is related to Carlson's symmetric R_D or R_G
        functions in multiple ways [3]_. For example,
    
        .. math:: E(m) = 2 R_G(0, 1-k^2, 1) .
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
        .. [2] Milton Abramowitz and Irene A. Stegun, eds.
               Handbook of Mathematical Functions with Formulas,
               Graphs, and Mathematical Tables. New York: Dover, 1972.
        .. [3] NIST Digital Library of Mathematical
               Functions. http://dlmf.nist.gov/, Release 1.0.28 of
               2020-09-15. See Sec. 19.25(i) https://dlmf.nist.gov/19.25#i
    
        Examples
        --------
        This function is used in finding the circumference of an
        ellipse with semi-major axis `a` and semi-minor axis `b`.
    
        >>> import numpy as np
        >>> from scipy import special
    
        >>> a = 3.5
        >>> b = 2.1
        >>> e_sq = 1.0 - b**2/a**2  # eccentricity squared
    
        Then the circumference is found using the following:
    
        >>> C = 4*a*special.ellipe(e_sq)  # circumference formula
        >>> C
        17.868899204378693
    
        When `a` and `b` are the same (meaning eccentricity is 0),
        this reduces to the circumference of a circle.
    
        >>> 4*a*special.ellipe(0.0)  # formula for ellipse with a = b
        21.991148575128552
        >>> 2*np.pi*a  # formula for circle of radius a
        21.991148575128552
    """
    pass

def ellipeinc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipeinc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipeinc(phi, m, out=None)
    
        Incomplete elliptic integral of the second kind
    
        This function is defined as
    
        .. math:: E(\phi, m) = \int_0^{\phi} [1 - m \sin(t)^2]^{1/2} dt
    
        Parameters
        ----------
        phi : array_like
            amplitude of the elliptic integral.
        m : array_like
            parameter of the elliptic integral.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        E : scalar or ndarray
            Value of the elliptic integral.
    
        See Also
        --------
        ellipkm1 : Complete elliptic integral of the first kind, near `m` = 1
        ellipk : Complete elliptic integral of the first kind
        ellipkinc : Incomplete elliptic integral of the first kind
        ellipe : Complete elliptic integral of the second kind
        elliprd : Symmetric elliptic integral of the second kind.
        elliprf : Completely-symmetric elliptic integral of the first kind.
        elliprg : Completely-symmetric elliptic integral of the second kind.
    
        Notes
        -----
        Wrapper for the Cephes [1]_ routine `ellie`.
    
        Computation uses arithmetic-geometric means algorithm.
    
        The parameterization in terms of :math:`m` follows that of section
        17.2 in [2]_. Other parameterizations in terms of the
        complementary parameter :math:`1 - m`, modular angle
        :math:`\sin^2(\alpha) = m`, or modulus :math:`k^2 = m` are also
        used, so be careful that you choose the correct parameter.
    
        The Legendre E incomplete integral can be related to combinations
        of Carlson's symmetric integrals R_D, R_F, and R_G in multiple
        ways [3]_. For example, with :math:`c = \csc^2\phi`,
    
        .. math::
          E(\phi, m) = R_F(c-1, c-k^2, c)
            - \frac{1}{3} k^2 R_D(c-1, c-k^2, c) .
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
        .. [2] Milton Abramowitz and Irene A. Stegun, eds.
               Handbook of Mathematical Functions with Formulas,
               Graphs, and Mathematical Tables. New York: Dover, 1972.
        .. [3] NIST Digital Library of Mathematical
               Functions. http://dlmf.nist.gov/, Release 1.0.28 of
               2020-09-15. See Sec. 19.25(i) https://dlmf.nist.gov/19.25#i
    """
    pass

def ellipj(x1, x2, out1=None, out2=None, out3=None, out4=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipj(x1, x2[, out1, out2, out3, out4], / [, out=(None, None, None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipj(u, m, out=None)
    
        Jacobian elliptic functions
    
        Calculates the Jacobian elliptic functions of parameter `m` between
        0 and 1, and real argument `u`.
    
        Parameters
        ----------
        u : array_like
            Argument.
        m : array_like
            Parameter.
        out : tuple of ndarray, optional
            Optional output arrays for the function values
    
        Returns
        -------
        sn, cn, dn, ph : 4-tuple of scalar or ndarray
            The returned functions::
    
                sn(u|m), cn(u|m), dn(u|m)
    
            The value `ph` is such that if ``u = ellipkinc(ph, m)``,
            then ``sn(u|m) = sin(ph)`` and ``cn(u|m) = cos(ph)``.
    
        See Also
        --------
        ellipk : Complete elliptic integral of the first kind
        ellipkinc : Incomplete elliptic integral of the first kind
    
        Notes
        -----
        Wrapper for the Cephes [1]_ routine ``ellpj``.
    
        These functions are periodic, with quarter-period on the real axis
        equal to the complete elliptic integral ``ellipk(m)``.
    
        Relation to incomplete elliptic integral: If ``u = ellipkinc(phi,m)``, then
        ``sn(u|m) = sin(phi)``, and ``cn(u|m) = cos(phi)``. The ``phi`` is called
        the amplitude of `u`.
    
        Computation is by means of the arithmetic-geometric mean algorithm,
        except when `m` is within 1e-9 of 0 or 1. In the latter case with `m`
        close to 1, the approximation applies only for ``phi < pi/2``.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    """
    pass

def ellipk(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipk(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipk(m, out=None)
    
        Complete elliptic integral of the first kind.
    
        This function is defined as
    
        .. math:: K(m) = \int_0^{\pi/2} [1 - m \sin(t)^2]^{-1/2} dt
    
        Parameters
        ----------
        m : array_like
            The parameter of the elliptic integral.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the elliptic integral.
    
        See Also
        --------
        ellipkm1 : Complete elliptic integral of the first kind around m = 1
        ellipkinc : Incomplete elliptic integral of the first kind
        ellipe : Complete elliptic integral of the second kind
        ellipeinc : Incomplete elliptic integral of the second kind
        elliprf : Completely-symmetric elliptic integral of the first kind.
    
        Notes
        -----
        For more precision around point m = 1, use `ellipkm1`, which this
        function calls.
    
        The parameterization in terms of :math:`m` follows that of section
        17.2 in [1]_. Other parameterizations in terms of the
        complementary parameter :math:`1 - m`, modular angle
        :math:`\sin^2(\alpha) = m`, or modulus :math:`k^2 = m` are also
        used, so be careful that you choose the correct parameter.
    
        The Legendre K integral is related to Carlson's symmetric R_F
        function by [2]_:
    
        .. math:: K(m) = R_F(0, 1-k^2, 1) .
    
        References
        ----------
        .. [1] Milton Abramowitz and Irene A. Stegun, eds.
               Handbook of Mathematical Functions with Formulas,
               Graphs, and Mathematical Tables. New York: Dover, 1972.
        .. [2] NIST Digital Library of Mathematical
               Functions. http://dlmf.nist.gov/, Release 1.0.28 of
               2020-09-15. See Sec. 19.25(i) https://dlmf.nist.gov/19.25#i
    """
    pass

def ellipkinc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipkinc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipkinc(phi, m, out=None)
    
        Incomplete elliptic integral of the first kind
    
        This function is defined as
    
        .. math:: K(\phi, m) = \int_0^{\phi} [1 - m \sin(t)^2]^{-1/2} dt
    
        This function is also called :math:`F(\phi, m)`.
    
        Parameters
        ----------
        phi : array_like
            amplitude of the elliptic integral
        m : array_like
            parameter of the elliptic integral
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the elliptic integral
    
        See Also
        --------
        ellipkm1 : Complete elliptic integral of the first kind, near `m` = 1
        ellipk : Complete elliptic integral of the first kind
        ellipe : Complete elliptic integral of the second kind
        ellipeinc : Incomplete elliptic integral of the second kind
        elliprf : Completely-symmetric elliptic integral of the first kind.
    
        Notes
        -----
        Wrapper for the Cephes [1]_ routine `ellik`.  The computation is
        carried out using the arithmetic-geometric mean algorithm.
    
        The parameterization in terms of :math:`m` follows that of section
        17.2 in [2]_. Other parameterizations in terms of the
        complementary parameter :math:`1 - m`, modular angle
        :math:`\sin^2(\alpha) = m`, or modulus :math:`k^2 = m` are also
        used, so be careful that you choose the correct parameter.
    
        The Legendre K incomplete integral (or F integral) is related to
        Carlson's symmetric R_F function [3]_.
        Setting :math:`c = \csc^2\phi`,
    
        .. math:: F(\phi, m) = R_F(c-1, c-k^2, c) .
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
        .. [2] Milton Abramowitz and Irene A. Stegun, eds.
               Handbook of Mathematical Functions with Formulas,
               Graphs, and Mathematical Tables. New York: Dover, 1972.
        .. [3] NIST Digital Library of Mathematical
               Functions. http://dlmf.nist.gov/, Release 1.0.28 of
               2020-09-15. See Sec. 19.25(i) https://dlmf.nist.gov/19.25#i
    """
    pass

def ellipkm1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ellipkm1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ellipkm1(p, out=None)
    
        Complete elliptic integral of the first kind around `m` = 1
    
        This function is defined as
    
        .. math:: K(p) = \\int_0^{\\pi/2} [1 - m \\sin(t)^2]^{-1/2} dt
    
        where `m = 1 - p`.
    
        Parameters
        ----------
        p : array_like
            Defines the parameter of the elliptic integral as `m = 1 - p`.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the elliptic integral.
    
        See Also
        --------
        ellipk : Complete elliptic integral of the first kind
        ellipkinc : Incomplete elliptic integral of the first kind
        ellipe : Complete elliptic integral of the second kind
        ellipeinc : Incomplete elliptic integral of the second kind
        elliprf : Completely-symmetric elliptic integral of the first kind.
    
        Notes
        -----
        Wrapper for the Cephes [1]_ routine `ellpk`.
    
        For ``p <= 1``, computation uses the approximation,
    
        .. math:: K(p) \\approx P(p) - \\log(p) Q(p),
    
        where :math:`P` and :math:`Q` are tenth-order polynomials.  The
        argument `p` is used internally rather than `m` so that the logarithmic
        singularity at ``m = 1`` will be shifted to the origin; this preserves
        maximum accuracy.  For ``p > 1``, the identity
    
        .. math:: K(p) = K(1/p)/\\sqrt(p)
    
        is used.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    """
    pass

def elliprc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    elliprc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    elliprc(x, y, out=None)
    
    Degenerate symmetric elliptic integral.
    
    The function RC is defined as [1]_
    
    .. math::
    
        R_{\mathrm{C}}(x, y) =
           \frac{1}{2} \int_0^{+\infty} (t + x)^{-1/2} (t + y)^{-1} dt
           = R_{\mathrm{F}}(x, y, y)
    
    Parameters
    ----------
    x, y : array_like
        Real or complex input parameters. `x` can be any number in the
        complex plane cut along the negative real axis. `y` must be non-zero.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    R : scalar or ndarray
        Value of the integral. If `y` is real and negative, the Cauchy
        principal value is returned. If both of `x` and `y` are real, the
        return value is real. Otherwise, the return value is complex.
    
    See Also
    --------
    elliprf : Completely-symmetric elliptic integral of the first kind.
    elliprd : Symmetric elliptic integral of the second kind.
    elliprg : Completely-symmetric elliptic integral of the second kind.
    elliprj : Symmetric elliptic integral of the third kind.
    
    Notes
    -----
    RC is a degenerate case of the symmetric integral RF: ``elliprc(x, y) ==
    elliprf(x, y, y)``. It is an elementary function rather than an elliptic
    integral.
    
    The code implements Carlson's algorithm based on the duplication theorems
    and series expansion up to the 7th order. [2]_
    
    .. versionadded:: 1.8.0
    
    References
    ----------
    .. [1] B. C. Carlson, ed., Chapter 19 in "Digital Library of Mathematical
           Functions," NIST, US Dept. of Commerce.
           https://dlmf.nist.gov/19.16.E6
    .. [2] B. C. Carlson, "Numerical computation of real or complex elliptic
           integrals," Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995.
           https://arxiv.org/abs/math/9409227
           https://doi.org/10.1007/BF02198293
    
    Examples
    --------
    Basic homogeneity property:
    
    >>> import numpy as np
    >>> from scipy.special import elliprc
    
    >>> x = 1.2 + 3.4j
    >>> y = 5.
    >>> scale = 0.3 + 0.4j
    >>> elliprc(scale*x, scale*y)
    (0.5484493976710874-0.4169557678995833j)
    
    >>> elliprc(x, y)/np.sqrt(scale)
    (0.5484493976710874-0.41695576789958333j)
    
    When the two arguments coincide, the integral is particularly
    simple:
    
    >>> x = 1.2 + 3.4j
    >>> elliprc(x, x)
    (0.4299173120614631-0.3041729818745595j)
    
    >>> 1/np.sqrt(x)
    (0.4299173120614631-0.30417298187455954j)
    
    Another simple case: the first argument vanishes:
    
    >>> y = 1.2 + 3.4j
    >>> elliprc(0, y)
    (0.6753125346116815-0.47779380263880866j)
    
    >>> np.pi/2/np.sqrt(y)
    (0.6753125346116815-0.4777938026388088j)
    
    When `x` and `y` are both positive, we can express
    :math:`R_C(x,y)` in terms of more elementary functions.  For the
    case :math:`0 \le x < y`,
    
    >>> x = 3.2
    >>> y = 6.
    >>> elliprc(x, y)
    0.44942991498453444
    
    >>> np.arctan(np.sqrt((y-x)/x))/np.sqrt(y-x)
    0.44942991498453433
    
    And for the case :math:`0 \le y < x`,
    
    >>> x = 6.
    >>> y = 3.2
    >>> elliprc(x,y)
    0.4989837501576147
    
    >>> np.log((np.sqrt(x)+np.sqrt(x-y))/np.sqrt(y))/np.sqrt(x-y)
    0.49898375015761476
    """
    pass

def elliprd(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    elliprd(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    elliprd(x, y, z, out=None)
    
    Symmetric elliptic integral of the second kind.
    
    The function RD is defined as [1]_
    
    .. math::
    
        R_{\mathrm{D}}(x, y, z) =
           \frac{3}{2} \int_0^{+\infty} [(t + x) (t + y)]^{-1/2} (t + z)^{-3/2}
           dt
    
    Parameters
    ----------
    x, y, z : array_like
        Real or complex input parameters. `x` or `y` can be any number in the
        complex plane cut along the negative real axis, but at most one of them
        can be zero, while `z` must be non-zero.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    R : scalar or ndarray
        Value of the integral. If all of `x`, `y`, and `z` are real, the
        return value is real. Otherwise, the return value is complex.
    
    See Also
    --------
    elliprc : Degenerate symmetric elliptic integral.
    elliprf : Completely-symmetric elliptic integral of the first kind.
    elliprg : Completely-symmetric elliptic integral of the second kind.
    elliprj : Symmetric elliptic integral of the third kind.
    
    Notes
    -----
    RD is a degenerate case of the elliptic integral RJ: ``elliprd(x, y, z) ==
    elliprj(x, y, z, z)``.
    
    The code implements Carlson's algorithm based on the duplication theorems
    and series expansion up to the 7th order. [2]_
    
    .. versionadded:: 1.8.0
    
    References
    ----------
    .. [1] B. C. Carlson, ed., Chapter 19 in "Digital Library of Mathematical
           Functions," NIST, US Dept. of Commerce.
           https://dlmf.nist.gov/19.16.E5
    .. [2] B. C. Carlson, "Numerical computation of real or complex elliptic
           integrals," Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995.
           https://arxiv.org/abs/math/9409227
           https://doi.org/10.1007/BF02198293
    
    Examples
    --------
    Basic homogeneity property:
    
    >>> import numpy as np
    >>> from scipy.special import elliprd
    
    >>> x = 1.2 + 3.4j
    >>> y = 5.
    >>> z = 6.
    >>> scale = 0.3 + 0.4j
    >>> elliprd(scale*x, scale*y, scale*z)
    (-0.03703043835680379-0.24500934665683802j)
    
    >>> elliprd(x, y, z)*np.power(scale, -1.5)
    (-0.0370304383568038-0.24500934665683805j)
    
    All three arguments coincide:
    
    >>> x = 1.2 + 3.4j
    >>> elliprd(x, x, x)
    (-0.03986825876151896-0.14051741840449586j)
    
    >>> np.power(x, -1.5)
    (-0.03986825876151894-0.14051741840449583j)
    
    The so-called "second lemniscate constant":
    
    >>> elliprd(0, 2, 1)/3
    0.5990701173677961
    
    >>> from scipy.special import gamma
    >>> gamma(0.75)**2/np.sqrt(2*np.pi)
    0.5990701173677959
    """
    pass

def elliprf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    elliprf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    elliprf(x, y, z, out=None)
    
    Completely-symmetric elliptic integral of the first kind.
    
    The function RF is defined as [1]_
    
    .. math::
    
        R_{\mathrm{F}}(x, y, z) =
           \frac{1}{2} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2} dt
    
    Parameters
    ----------
    x, y, z : array_like
        Real or complex input parameters. `x`, `y`, or `z` can be any number in
        the complex plane cut along the negative real axis, but at most one of
        them can be zero.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    R : scalar or ndarray
        Value of the integral. If all of `x`, `y`, and `z` are real, the return
        value is real. Otherwise, the return value is complex.
    
    See Also
    --------
    elliprc : Degenerate symmetric integral.
    elliprd : Symmetric elliptic integral of the second kind.
    elliprg : Completely-symmetric elliptic integral of the second kind.
    elliprj : Symmetric elliptic integral of the third kind.
    
    Notes
    -----
    The code implements Carlson's algorithm based on the duplication theorems
    and series expansion up to the 7th order (cf.:
    https://dlmf.nist.gov/19.36.i) and the AGM algorithm for the complete
    integral. [2]_
    
    .. versionadded:: 1.8.0
    
    References
    ----------
    .. [1] B. C. Carlson, ed., Chapter 19 in "Digital Library of Mathematical
           Functions," NIST, US Dept. of Commerce.
           https://dlmf.nist.gov/19.16.E1
    .. [2] B. C. Carlson, "Numerical computation of real or complex elliptic
           integrals," Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995.
           https://arxiv.org/abs/math/9409227
           https://doi.org/10.1007/BF02198293
    
    Examples
    --------
    Basic homogeneity property:
    
    >>> import numpy as np
    >>> from scipy.special import elliprf
    
    >>> x = 1.2 + 3.4j
    >>> y = 5.
    >>> z = 6.
    >>> scale = 0.3 + 0.4j
    >>> elliprf(scale*x, scale*y, scale*z)
    (0.5328051227278146-0.4008623567957094j)
    
    >>> elliprf(x, y, z)/np.sqrt(scale)
    (0.5328051227278147-0.4008623567957095j)
    
    All three arguments coincide:
    
    >>> x = 1.2 + 3.4j
    >>> elliprf(x, x, x)
    (0.42991731206146316-0.30417298187455954j)
    
    >>> 1/np.sqrt(x)
    (0.4299173120614631-0.30417298187455954j)
    
    The so-called "first lemniscate constant":
    
    >>> elliprf(0, 1, 2)
    1.3110287771460598
    
    >>> from scipy.special import gamma
    >>> gamma(0.25)**2/(4*np.sqrt(2*np.pi))
    1.3110287771460598
    """
    pass

def elliprg(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    elliprg(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    elliprg(x, y, z, out=None)
    
    Completely-symmetric elliptic integral of the second kind.
    
    The function RG is defined as [1]_
    
    .. math::
    
        R_{\mathrm{G}}(x, y, z) =
           \frac{1}{4} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2}
           \left(\frac{x}{t + x} + \frac{y}{t + y} + \frac{z}{t + z}\right) t
           dt
    
    Parameters
    ----------
    x, y, z : array_like
        Real or complex input parameters. `x`, `y`, or `z` can be any number in
        the complex plane cut along the negative real axis.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    R : scalar or ndarray
        Value of the integral. If all of `x`, `y`, and `z` are real, the return
        value is real. Otherwise, the return value is complex.
    
    See Also
    --------
    elliprc : Degenerate symmetric integral.
    elliprd : Symmetric elliptic integral of the second kind.
    elliprf : Completely-symmetric elliptic integral of the first kind.
    elliprj : Symmetric elliptic integral of the third kind.
    
    Notes
    -----
    The implementation uses the relation [1]_
    
    .. math::
    
        2 R_{\mathrm{G}}(x, y, z) =
           z R_{\mathrm{F}}(x, y, z) -
           \frac{1}{3} (x - z) (y - z) R_{\mathrm{D}}(x, y, z) +
           \sqrt{\frac{x y}{z}}
    
    and the symmetry of `x`, `y`, `z` when at least one non-zero parameter can
    be chosen as the pivot. When one of the arguments is close to zero, the AGM
    method is applied instead. Other special cases are computed following Ref.
    [2]_
    
    .. versionadded:: 1.8.0
    
    References
    ----------
    .. [1] B. C. Carlson, "Numerical computation of real or complex elliptic
           integrals," Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995.
           https://arxiv.org/abs/math/9409227
           https://doi.org/10.1007/BF02198293
    .. [2] B. C. Carlson, ed., Chapter 19 in "Digital Library of Mathematical
           Functions," NIST, US Dept. of Commerce.
           https://dlmf.nist.gov/19.16.E1
           https://dlmf.nist.gov/19.20.ii
    
    Examples
    --------
    Basic homogeneity property:
    
    >>> import numpy as np
    >>> from scipy.special import elliprg
    
    >>> x = 1.2 + 3.4j
    >>> y = 5.
    >>> z = 6.
    >>> scale = 0.3 + 0.4j
    >>> elliprg(scale*x, scale*y, scale*z)
    (1.195936862005246+0.8470988320464167j)
    
    >>> elliprg(x, y, z)*np.sqrt(scale)
    (1.195936862005246+0.8470988320464165j)
    
    Simplifications:
    
    >>> elliprg(0, y, y)
    1.756203682760182
    
    >>> 0.25*np.pi*np.sqrt(y)
    1.7562036827601817
    
    >>> elliprg(0, 0, z)
    1.224744871391589
    
    >>> 0.5*np.sqrt(z)
    1.224744871391589
    
    The surface area of a triaxial ellipsoid with semiaxes ``a``, ``b``, and
    ``c`` is given by
    
    .. math::
    
        S = 4 \pi a b c R_{\mathrm{G}}(1 / a^2, 1 / b^2, 1 / c^2).
    
    >>> def ellipsoid_area(a, b, c):
    ...     r = 4.0 * np.pi * a * b * c
    ...     return r * elliprg(1.0 / (a * a), 1.0 / (b * b), 1.0 / (c * c))
    >>> print(ellipsoid_area(1, 3, 5))
    108.62688289491807
    """
    pass

def elliprj(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    elliprj(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    elliprj(x, y, z, p, out=None)
    
    Symmetric elliptic integral of the third kind.
    
    The function RJ is defined as [1]_
    
    .. math::
    
        R_{\mathrm{J}}(x, y, z, p) =
           \frac{3}{2} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2}
           (t + p)^{-1} dt
    
    .. warning::
        This function should be considered experimental when the inputs are
        unbalanced.  Check correctness with another independent implementation.
    
    Parameters
    ----------
    x, y, z, p : array_like
        Real or complex input parameters. `x`, `y`, or `z` are numbers in
        the complex plane cut along the negative real axis (subject to further
        constraints, see Notes), and at most one of them can be zero. `p` must
        be non-zero.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    R : scalar or ndarray
        Value of the integral. If all of `x`, `y`, `z`, and `p` are real, the
        return value is real. Otherwise, the return value is complex.
    
        If `p` is real and negative, while `x`, `y`, and `z` are real,
        non-negative, and at most one of them is zero, the Cauchy principal
        value is returned. [1]_ [2]_
    
    See Also
    --------
    elliprc : Degenerate symmetric integral.
    elliprd : Symmetric elliptic integral of the second kind.
    elliprf : Completely-symmetric elliptic integral of the first kind.
    elliprg : Completely-symmetric elliptic integral of the second kind.
    
    Notes
    -----
    The code implements Carlson's algorithm based on the duplication theorems
    and series expansion up to the 7th order. [3]_ The algorithm is slightly
    different from its earlier incarnation as it appears in [1]_, in that the
    call to `elliprc` (or ``atan``/``atanh``, see [4]_) is no longer needed in
    the inner loop. Asymptotic approximations are used where arguments differ
    widely in the order of magnitude. [5]_
    
    The input values are subject to certain sufficient but not necessary
    constraints when input arguments are complex. Notably, ``x``, ``y``, and
    ``z`` must have non-negative real parts, unless two of them are
    non-negative and complex-conjugates to each other while the other is a real
    non-negative number. [1]_ If the inputs do not satisfy the sufficient
    condition described in Ref. [1]_ they are rejected outright with the output
    set to NaN.
    
    In the case where one of ``x``, ``y``, and ``z`` is equal to ``p``, the
    function ``elliprd`` should be preferred because of its less restrictive
    domain.
    
    .. versionadded:: 1.8.0
    
    References
    ----------
    .. [1] B. C. Carlson, "Numerical computation of real or complex elliptic
           integrals," Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995.
           https://arxiv.org/abs/math/9409227
           https://doi.org/10.1007/BF02198293
    .. [2] B. C. Carlson, ed., Chapter 19 in "Digital Library of Mathematical
           Functions," NIST, US Dept. of Commerce.
           https://dlmf.nist.gov/19.20.iii
    .. [3] B. C. Carlson, J. FitzSimmons, "Reduction Theorems for Elliptic
           Integrands with the Square Root of Two Quadratic Factors," J.
           Comput. Appl. Math., vol. 118, nos. 1-2, pp. 71-85, 2000.
           https://doi.org/10.1016/S0377-0427(00)00282-X
    .. [4] F. Johansson, "Numerical Evaluation of Elliptic Functions, Elliptic
           Integrals and Modular Forms," in J. Blumlein, C. Schneider, P.
           Paule, eds., "Elliptic Integrals, Elliptic Functions and Modular
           Forms in Quantum Field Theory," pp. 269-293, 2019 (Cham,
           Switzerland: Springer Nature Switzerland)
           https://arxiv.org/abs/1806.06725
           https://doi.org/10.1007/978-3-030-04480-0
    .. [5] B. C. Carlson, J. L. Gustafson, "Asymptotic Approximations for
           Symmetric Elliptic Integrals," SIAM J. Math. Anls., vol. 25, no. 2,
           pp. 288-303, 1994.
           https://arxiv.org/abs/math/9310223
           https://doi.org/10.1137/S0036141092228477
    
    Examples
    --------
    Basic homogeneity property:
    
    >>> import numpy as np
    >>> from scipy.special import elliprj
    
    >>> x = 1.2 + 3.4j
    >>> y = 5.
    >>> z = 6.
    >>> p = 7.
    >>> scale = 0.3 - 0.4j
    >>> elliprj(scale*x, scale*y, scale*z, scale*p)
    (0.10834905565679157+0.19694950747103812j)
    
    >>> elliprj(x, y, z, p)*np.power(scale, -1.5)
    (0.10834905565679556+0.19694950747103854j)
    
    Reduction to simpler elliptic integral:
    
    >>> elliprj(x, y, z, z)
    (0.08288462362195129-0.028376809745123258j)
    
    >>> from scipy.special import elliprd
    >>> elliprd(x, y, z)
    (0.08288462362195136-0.028376809745123296j)
    
    All arguments coincide:
    
    >>> elliprj(x, x, x, x)
    (-0.03986825876151896-0.14051741840449586j)
    
    >>> np.power(x, -1.5)
    (-0.03986825876151894-0.14051741840449583j)
    """
    pass

def entr(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    entr(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    entr(x, out=None)
    
    Elementwise function for computing entropy.
    
    .. math:: \text{entr}(x) = \begin{cases} - x \log(x) & x > 0  \\ 0 & x = 0
              \\ -\infty & \text{otherwise} \end{cases}
    
    Parameters
    ----------
    x : ndarray
        Input array.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    res : scalar or ndarray
        The value of the elementwise entropy function at the given points `x`.
    
    See Also
    --------
    kl_div, rel_entr, scipy.stats.entropy
    
    Notes
    -----
    .. versionadded:: 0.15.0
    
    This function is concave.
    
    The origin of this function is in convex programming; see [1]_.
    Given a probability distribution :math:`p_1, \ldots, p_n`,
    the definition of entropy in the context of *information theory* is
    
    .. math::
    
        \sum_{i = 1}^n \mathrm{entr}(p_i).
    
    To compute the latter quantity, use `scipy.stats.entropy`.
    
    References
    ----------
    .. [1] Boyd, Stephen and Lieven Vandenberghe. *Convex optimization*.
           Cambridge University Press, 2004.
           :doi:`https://doi.org/10.1017/CBO9780511804441`
    """
    pass

def erf(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erf(z, out=None)
    
    Returns the error function of complex argument.
    
    It is defined as ``2/sqrt(pi)*integral(exp(-t**2), t=0..z)``.
    
    Parameters
    ----------
    x : ndarray
        Input array.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    res : scalar or ndarray
        The values of the error function at the given points `x`.
    
    See Also
    --------
    erfc, erfinv, erfcinv, wofz, erfcx, erfi
    
    Notes
    -----
    The cumulative of the unit normal distribution is given by
    ``Phi(z) = 1/2[1 + erf(z/sqrt(2))]``.
    
    References
    ----------
    .. [1] https://en.wikipedia.org/wiki/Error_function
    .. [2] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover,
        1972. http://www.math.sfu.ca/~cbm/aands/page_297.htm
    .. [3] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-3, 3)
    >>> plt.plot(x, special.erf(x))
    >>> plt.xlabel('$x$')
    >>> plt.ylabel('$erf(x)$')
    >>> plt.show()
    """
    pass

def erfc(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erfc(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erfc(x, out=None)
    
    Complementary error function, ``1 - erf(x)``.
    
    Parameters
    ----------
    x : array_like
        Real or complex valued argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the complementary error function
    
    See Also
    --------
    erf, erfi, erfcx, dawsn, wofz
    
    References
    ----------
    .. [1] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-3, 3)
    >>> plt.plot(x, special.erfc(x))
    >>> plt.xlabel('$x$')
    >>> plt.ylabel('$erfc(x)$')
    >>> plt.show()
    """
    pass

def erfcinv(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erfcinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erfcinv(y, out=None)
    
    Inverse of the complementary error function.
    
    Computes the inverse of the complementary error function.
    
    In the complex domain, there is no unique complex number w satisfying
    erfc(w)=z. This indicates a true inverse function would be multivalued.
    When the domain restricts to the real, 0 < x < 2, there is a unique real
    number satisfying erfc(erfcinv(x)) = erfcinv(erfc(x)).
    
    It is related to inverse of the error function by erfcinv(1-x) = erfinv(x)
    
    Parameters
    ----------
    y : ndarray
        Argument at which to evaluate. Domain: [0, 2]
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    erfcinv : scalar or ndarray
        The inverse of erfc of y, element-wise
    
    See Also
    --------
    erf : Error function of a complex argument
    erfc : Complementary error function, ``1 - erf(x)``
    erfinv : Inverse of the error function
    
    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.special import erfcinv
    
    >>> erfcinv(0.5)
    0.4769362762044699
    
    >>> y = np.linspace(0.0, 2.0, num=11)
    >>> erfcinv(y)
    array([        inf,  0.9061938 ,  0.59511608,  0.37080716,  0.17914345,
           -0.        , -0.17914345, -0.37080716, -0.59511608, -0.9061938 ,
                  -inf])
    
    Plot the function:
    
    >>> y = np.linspace(0, 2, 200)
    >>> fig, ax = plt.subplots()
    >>> ax.plot(y, erfcinv(y))
    >>> ax.grid(True)
    >>> ax.set_xlabel('y')
    >>> ax.set_title('erfcinv(y)')
    >>> plt.show()
    """
    pass

def erfcx(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erfcx(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erfcx(x, out=None)
    
    Scaled complementary error function, ``exp(x**2) * erfc(x)``.
    
    Parameters
    ----------
    x : array_like
        Real or complex valued argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the scaled complementary error function
    
    
    See Also
    --------
    erf, erfc, erfi, dawsn, wofz
    
    Notes
    -----
    
    .. versionadded:: 0.12.0
    
    References
    ----------
    .. [1] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-3, 3)
    >>> plt.plot(x, special.erfcx(x))
    >>> plt.xlabel('$x$')
    >>> plt.ylabel('$erfcx(x)$')
    >>> plt.show()
    """
    pass

def erfi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erfi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erfi(z, out=None)
    
    Imaginary error function, ``-i erf(i z)``.
    
    Parameters
    ----------
    z : array_like
        Real or complex valued argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the imaginary error function
    
    See Also
    --------
    erf, erfc, erfcx, dawsn, wofz
    
    Notes
    -----
    
    .. versionadded:: 0.12.0
    
    References
    ----------
    .. [1] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-3, 3)
    >>> plt.plot(x, special.erfi(x))
    >>> plt.xlabel('$x$')
    >>> plt.ylabel('$erfi(x)$')
    >>> plt.show()
    """
    pass

def erfinv(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    erfinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    erfinv(y, out=None)
    
    Inverse of the error function.
    
    Computes the inverse of the error function.
    
    In the complex domain, there is no unique complex number w satisfying
    erf(w)=z. This indicates a true inverse function would be multivalued.
    When the domain restricts to the real, -1 < x < 1, there is a unique real
    number satisfying erf(erfinv(x)) = x.
    
    Parameters
    ----------
    y : ndarray
        Argument at which to evaluate. Domain: [-1, 1]
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    erfinv : scalar or ndarray
        The inverse of erf of y, element-wise
    
    See Also
    --------
    erf : Error function of a complex argument
    erfc : Complementary error function, ``1 - erf(x)``
    erfcinv : Inverse of the complementary error function
    
    Notes
    -----
    This function wraps the ``erf_inv`` routine from the
    Boost Math C++ library [1]_.
    
    References
    ----------
    .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.special import erfinv, erf
    
    >>> erfinv(0.5)
    0.4769362762044699
    
    >>> y = np.linspace(-1.0, 1.0, num=9)
    >>> x = erfinv(y)
    >>> x
    array([       -inf, -0.81341985, -0.47693628, -0.22531206,  0.        ,
            0.22531206,  0.47693628,  0.81341985,         inf])
    
    Verify that ``erf(erfinv(y))`` is ``y``.
    
    >>> erf(x)
    array([-1.  , -0.75, -0.5 , -0.25,  0.  ,  0.25,  0.5 ,  0.75,  1.  ])
    
    Plot the function:
    
    >>> y = np.linspace(-1, 1, 200)
    >>> fig, ax = plt.subplots()
    >>> ax.plot(y, erfinv(y))
    >>> ax.grid(True)
    >>> ax.set_xlabel('y')
    >>> ax.set_title('erfinv(y)')
    >>> plt.show()
    """
    pass

def eval_chebyc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_chebyc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_chebyc(n, x, out=None)
    
    Evaluate Chebyshev polynomial of the first kind on [-2, 2] at a
    point.
    
    These polynomials are defined as
    
    .. math::
    
        C_n(x) = 2 T_n(x/2)
    
    where :math:`T_n` is a Chebyshev polynomial of the first kind. See
    22.5.11 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to `eval_chebyt`.
    x : array_like
        Points at which to evaluate the Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    C : scalar or ndarray
        Values of the Chebyshev polynomial
    
    See Also
    --------
    roots_chebyc : roots and quadrature weights of Chebyshev
                   polynomials of the first kind on [-2, 2]
    chebyc : Chebyshev polynomial object
    numpy.polynomial.chebyshev.Chebyshev : Chebyshev series
    eval_chebyt : evaluate Chebycshev polynomials of the first kind
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    They are a scaled version of the Chebyshev polynomials of the
    first kind.
    
    >>> x = np.linspace(-2, 2, 6)
    >>> sc.eval_chebyc(3, x)
    array([-2.   ,  1.872,  1.136, -1.136, -1.872,  2.   ])
    >>> 2 * sc.eval_chebyt(3, x / 2)
    array([-2.   ,  1.872,  1.136, -1.136, -1.872,  2.   ])
    """
    pass

def eval_chebys(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_chebys(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_chebys(n, x, out=None)
    
    Evaluate Chebyshev polynomial of the second kind on [-2, 2] at a
    point.
    
    These polynomials are defined as
    
    .. math::
    
        S_n(x) = U_n(x/2)
    
    where :math:`U_n` is a Chebyshev polynomial of the second
    kind. See 22.5.13 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to `eval_chebyu`.
    x : array_like
        Points at which to evaluate the Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    S : scalar or ndarray
        Values of the Chebyshev polynomial
    
    See Also
    --------
    roots_chebys : roots and quadrature weights of Chebyshev
                   polynomials of the second kind on [-2, 2]
    chebys : Chebyshev polynomial object
    eval_chebyu : evaluate Chebyshev polynomials of the second kind
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    They are a scaled version of the Chebyshev polynomials of the
    second kind.
    
    >>> x = np.linspace(-2, 2, 6)
    >>> sc.eval_chebys(3, x)
    array([-4.   ,  0.672,  0.736, -0.736, -0.672,  4.   ])
    >>> sc.eval_chebyu(3, x / 2)
    array([-4.   ,  0.672,  0.736, -0.736, -0.672,  4.   ])
    """
    pass

def eval_chebyt(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_chebyt(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_chebyt(n, x, out=None)
    
    Evaluate Chebyshev polynomial of the first kind at a point.
    
    The Chebyshev polynomials of the first kind can be defined via the
    Gauss hypergeometric function :math:`{}_2F_1` as
    
    .. math::
    
        T_n(x) = {}_2F_1(n, -n; 1/2; (1 - x)/2).
    
    When :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.47 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to the Gauss hypergeometric
        function.
    x : array_like
        Points at which to evaluate the Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    T : scalar or ndarray
        Values of the Chebyshev polynomial
    
    See Also
    --------
    roots_chebyt : roots and quadrature weights of Chebyshev
                   polynomials of the first kind
    chebyu : Chebychev polynomial object
    eval_chebyu : evaluate Chebyshev polynomials of the second kind
    hyp2f1 : Gauss hypergeometric function
    numpy.polynomial.chebyshev.Chebyshev : Chebyshev series
    
    Notes
    -----
    This routine is numerically stable for `x` in ``[-1, 1]`` at least
    up to order ``10000``.
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_chebyu(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_chebyu(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_chebyu(n, x, out=None)
    
    Evaluate Chebyshev polynomial of the second kind at a point.
    
    The Chebyshev polynomials of the second kind can be defined via
    the Gauss hypergeometric function :math:`{}_2F_1` as
    
    .. math::
    
        U_n(x) = (n + 1) {}_2F_1(-n, n + 2; 3/2; (1 - x)/2).
    
    When :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.48 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to the Gauss hypergeometric
        function.
    x : array_like
        Points at which to evaluate the Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    U : scalar or ndarray
        Values of the Chebyshev polynomial
    
    See Also
    --------
    roots_chebyu : roots and quadrature weights of Chebyshev
                   polynomials of the second kind
    chebyu : Chebyshev polynomial object
    eval_chebyt : evaluate Chebyshev polynomials of the first kind
    hyp2f1 : Gauss hypergeometric function
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_gegenbauer(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_gegenbauer(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_gegenbauer(n, alpha, x, out=None)
    
    Evaluate Gegenbauer polynomial at a point.
    
    The Gegenbauer polynomials can be defined via the Gauss
    hypergeometric function :math:`{}_2F_1` as
    
    .. math::
    
        C_n^{(\alpha)} = \frac{(2\alpha)_n}{\Gamma(n + 1)}
          {}_2F_1(-n, 2\alpha + n; \alpha + 1/2; (1 - z)/2).
    
    When :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.46 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to the Gauss hypergeometric
        function.
    alpha : array_like
        Parameter
    x : array_like
        Points at which to evaluate the Gegenbauer polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    C : scalar or ndarray
        Values of the Gegenbauer polynomial
    
    See Also
    --------
    roots_gegenbauer : roots and quadrature weights of Gegenbauer
                       polynomials
    gegenbauer : Gegenbauer polynomial object
    hyp2f1 : Gauss hypergeometric function
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_genlaguerre(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_genlaguerre(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_genlaguerre(n, alpha, x, out=None)
    
    Evaluate generalized Laguerre polynomial at a point.
    
    The generalized Laguerre polynomials can be defined via the
    confluent hypergeometric function :math:`{}_1F_1` as
    
    .. math::
    
        L_n^{(\alpha)}(x) = \binom{n + \alpha}{n}
          {}_1F_1(-n, \alpha + 1, x).
    
    When :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.54 in [AS]_ for details. The Laguerre
    polynomials are the special case where :math:`\alpha = 0`.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to the confluent hypergeometric
        function.
    alpha : array_like
        Parameter; must have ``alpha > -1``
    x : array_like
        Points at which to evaluate the generalized Laguerre
        polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    L : scalar or ndarray
        Values of the generalized Laguerre polynomial
    
    See Also
    --------
    roots_genlaguerre : roots and quadrature weights of generalized
                        Laguerre polynomials
    genlaguerre : generalized Laguerre polynomial object
    hyp1f1 : confluent hypergeometric function
    eval_laguerre : evaluate Laguerre polynomials
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_hermite(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_hermite(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_hermite(n, x, out=None)
    
    Evaluate physicist's Hermite polynomial at a point.
    
    Defined by
    
    .. math::
    
        H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2};
    
    :math:`H_n` is a polynomial of degree :math:`n`. See 22.11.7 in
    [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial
    x : array_like
        Points at which to evaluate the Hermite polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    H : scalar or ndarray
        Values of the Hermite polynomial
    
    See Also
    --------
    roots_hermite : roots and quadrature weights of physicist's
                    Hermite polynomials
    hermite : physicist's Hermite polynomial object
    numpy.polynomial.hermite.Hermite : Physicist's Hermite series
    eval_hermitenorm : evaluate Probabilist's Hermite polynomials
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_hermitenorm(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_hermitenorm(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_hermitenorm(n, x, out=None)
    
    Evaluate probabilist's (normalized) Hermite polynomial at a
    point.
    
    Defined by
    
    .. math::
    
        He_n(x) = (-1)^n e^{x^2/2} \frac{d^n}{dx^n} e^{-x^2/2};
    
    :math:`He_n` is a polynomial of degree :math:`n`. See 22.11.8 in
    [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial
    x : array_like
        Points at which to evaluate the Hermite polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    He : scalar or ndarray
        Values of the Hermite polynomial
    
    See Also
    --------
    roots_hermitenorm : roots and quadrature weights of probabilist's
                        Hermite polynomials
    hermitenorm : probabilist's Hermite polynomial object
    numpy.polynomial.hermite_e.HermiteE : Probabilist's Hermite series
    eval_hermite : evaluate physicist's Hermite polynomials
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_jacobi(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_jacobi(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_jacobi(n, alpha, beta, x, out=None)
    
    Evaluate Jacobi polynomial at a point.
    
    The Jacobi polynomials can be defined via the Gauss hypergeometric
    function :math:`{}_2F_1` as
    
    .. math::
    
        P_n^{(\alpha, \beta)}(x) = \frac{(\alpha + 1)_n}{\Gamma(n + 1)}
          {}_2F_1(-n, 1 + \alpha + \beta + n; \alpha + 1; (1 - z)/2)
    
    where :math:`(\cdot)_n` is the Pochhammer symbol; see `poch`. When
    :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.42 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer the result is
        determined via the relation to the Gauss hypergeometric
        function.
    alpha : array_like
        Parameter
    beta : array_like
        Parameter
    x : array_like
        Points at which to evaluate the polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    P : scalar or ndarray
        Values of the Jacobi polynomial
    
    See Also
    --------
    roots_jacobi : roots and quadrature weights of Jacobi polynomials
    jacobi : Jacobi polynomial object
    hyp2f1 : Gauss hypergeometric function
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_laguerre(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_laguerre(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_laguerre(n, x, out=None)
    
    Evaluate Laguerre polynomial at a point.
    
    The Laguerre polynomials can be defined via the confluent
    hypergeometric function :math:`{}_1F_1` as
    
    .. math::
    
        L_n(x) = {}_1F_1(-n, 1, x).
    
    See 22.5.16 and 22.5.54 in [AS]_ for details. When :math:`n` is an
    integer the result is a polynomial of degree :math:`n`.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer the result is
        determined via the relation to the confluent hypergeometric
        function.
    x : array_like
        Points at which to evaluate the Laguerre polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    L : scalar or ndarray
        Values of the Laguerre polynomial
    
    See Also
    --------
    roots_laguerre : roots and quadrature weights of Laguerre
                     polynomials
    laguerre : Laguerre polynomial object
    numpy.polynomial.laguerre.Laguerre : Laguerre series
    eval_genlaguerre : evaluate generalized Laguerre polynomials
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_legendre(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_legendre(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_legendre(n, x, out=None)
    
    Evaluate Legendre polynomial at a point.
    
    The Legendre polynomials can be defined via the Gauss
    hypergeometric function :math:`{}_2F_1` as
    
    .. math::
    
        P_n(x) = {}_2F_1(-n, n + 1; 1; (1 - x)/2).
    
    When :math:`n` is an integer the result is a polynomial of degree
    :math:`n`. See 22.5.49 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to the Gauss hypergeometric
        function.
    x : array_like
        Points at which to evaluate the Legendre polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    P : scalar or ndarray
        Values of the Legendre polynomial
    
    See Also
    --------
    roots_legendre : roots and quadrature weights of Legendre
                     polynomials
    legendre : Legendre polynomial object
    hyp2f1 : Gauss hypergeometric function
    numpy.polynomial.legendre.Legendre : Legendre series
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import eval_legendre
    
    Evaluate the zero-order Legendre polynomial at x = 0
    
    >>> eval_legendre(0, 0)
    1.0
    
    Evaluate the first-order Legendre polynomial between -1 and 1
    
    >>> X = np.linspace(-1, 1, 5)  # Domain of Legendre polynomials
    >>> eval_legendre(1, X)
    array([-1. , -0.5,  0. ,  0.5,  1. ])
    
    Evaluate Legendre polynomials of order 0 through 4 at x = 0
    
    >>> N = range(0, 5)
    >>> eval_legendre(N, 0)
    array([ 1.   ,  0.   , -0.5  ,  0.   ,  0.375])
    
    Plot Legendre polynomials of order 0 through 4
    
    >>> X = np.linspace(-1, 1)
    
    >>> import matplotlib.pyplot as plt
    >>> for n in range(0, 5):
    ...     y = eval_legendre(n, X)
    ...     plt.plot(X, y, label=r'$P_{}(x)$'.format(n))
    
    >>> plt.title("Legendre Polynomials")
    >>> plt.xlabel("x")
    >>> plt.ylabel(r'$P_n(x)$')
    >>> plt.legend(loc='lower right')
    >>> plt.show()
    """
    pass

def eval_sh_chebyt(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_sh_chebyt(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_sh_chebyt(n, x, out=None)
    
    Evaluate shifted Chebyshev polynomial of the first kind at a
    point.
    
    These polynomials are defined as
    
    .. math::
    
        T_n^*(x) = T_n(2x - 1)
    
    where :math:`T_n` is a Chebyshev polynomial of the first kind. See
    22.5.14 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to `eval_chebyt`.
    x : array_like
        Points at which to evaluate the shifted Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    T : scalar or ndarray
        Values of the shifted Chebyshev polynomial
    
    See Also
    --------
    roots_sh_chebyt : roots and quadrature weights of shifted
                      Chebyshev polynomials of the first kind
    sh_chebyt : shifted Chebyshev polynomial object
    eval_chebyt : evaluate Chebyshev polynomials of the first kind
    numpy.polynomial.chebyshev.Chebyshev : Chebyshev series
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_sh_chebyu(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_sh_chebyu(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_sh_chebyu(n, x, out=None)
    
    Evaluate shifted Chebyshev polynomial of the second kind at a
    point.
    
    These polynomials are defined as
    
    .. math::
    
        U_n^*(x) = U_n(2x - 1)
    
    where :math:`U_n` is a Chebyshev polynomial of the first kind. See
    22.5.15 in [AS]_ for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to `eval_chebyu`.
    x : array_like
        Points at which to evaluate the shifted Chebyshev polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    U : scalar or ndarray
        Values of the shifted Chebyshev polynomial
    
    See Also
    --------
    roots_sh_chebyu : roots and quadrature weights of shifted
                      Chebychev polynomials of the second kind
    sh_chebyu : shifted Chebyshev polynomial object
    eval_chebyu : evaluate Chebyshev polynomials of the second kind
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_sh_jacobi(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_sh_jacobi(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_sh_jacobi(n, p, q, x, out=None)
    
    Evaluate shifted Jacobi polynomial at a point.
    
    Defined by
    
    .. math::
    
        G_n^{(p, q)}(x)
          = \binom{2n + p - 1}{n}^{-1} P_n^{(p - q, q - 1)}(2x - 1),
    
    where :math:`P_n^{(\cdot, \cdot)}` is the n-th Jacobi
    polynomial. See 22.5.2 in [AS]_ for details.
    
    Parameters
    ----------
    n : int
        Degree of the polynomial. If not an integer, the result is
        determined via the relation to `binom` and `eval_jacobi`.
    p : float
        Parameter
    q : float
        Parameter
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    G : scalar or ndarray
        Values of the shifted Jacobi polynomial.
    
    See Also
    --------
    roots_sh_jacobi : roots and quadrature weights of shifted Jacobi
                      polynomials
    sh_jacobi : shifted Jacobi polynomial object
    eval_jacobi : evaluate Jacobi polynomials
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def eval_sh_legendre(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    eval_sh_legendre(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    eval_sh_legendre(n, x, out=None)
    
    Evaluate shifted Legendre polynomial at a point.
    
    These polynomials are defined as
    
    .. math::
    
        P_n^*(x) = P_n(2x - 1)
    
    where :math:`P_n` is a Legendre polynomial. See 2.2.11 in [AS]_
    for details.
    
    Parameters
    ----------
    n : array_like
        Degree of the polynomial. If not an integer, the value is
        determined via the relation to `eval_legendre`.
    x : array_like
        Points at which to evaluate the shifted Legendre polynomial
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    P : scalar or ndarray
        Values of the shifted Legendre polynomial
    
    See Also
    --------
    roots_sh_legendre : roots and quadrature weights of shifted
                        Legendre polynomials
    sh_legendre : shifted Legendre polynomial object
    eval_legendre : evaluate Legendre polynomials
    numpy.polynomial.legendre.Legendre : Legendre series
    
    References
    ----------
    .. [AS] Milton Abramowitz and Irene A. Stegun, eds.
        Handbook of Mathematical Functions with Formulas,
        Graphs, and Mathematical Tables. New York: Dover, 1972.
    """
    pass

def exp1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    exp1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        exp1(z, out=None)
    
        Exponential integral E1.
    
        For complex :math:`z \ne 0` the exponential integral can be defined as
        [1]_
    
        .. math::
    
           E_1(z) = \int_z^\infty \frac{e^{-t}}{t} dt,
    
        where the path of the integral does not cross the negative real
        axis or pass through the origin.
    
        Parameters
        ----------
        z: array_like
            Real or complex argument.
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Values of the exponential integral E1
    
        See Also
        --------
        expi : exponential integral :math:`Ei`
        expn : generalization of :math:`E_1`
    
        Notes
        -----
        For :math:`x > 0` it is related to the exponential integral
        :math:`Ei` (see `expi`) via the relation
    
        .. math::
    
           E_1(x) = -Ei(-x).
    
        References
        ----------
        .. [1] Digital Library of Mathematical Functions, 6.2.1
               https://dlmf.nist.gov/6.2#E1
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It has a pole at 0.
    
        >>> sc.exp1(0)
        inf
    
        It has a branch cut on the negative real axis.
    
        >>> sc.exp1(-1)
        nan
        >>> sc.exp1(complex(-1, 0))
        (-1.8951178163559368-3.141592653589793j)
        >>> sc.exp1(complex(-1, -0.0))
        (-1.8951178163559368+3.141592653589793j)
    
        It approaches 0 along the positive real axis.
    
        >>> sc.exp1([1, 10, 100, 1000])
        array([2.19383934e-01, 4.15696893e-06, 3.68359776e-46, 0.00000000e+00])
    
        It is related to `expi`.
    
        >>> x = np.array([1, 2, 3, 4])
        >>> sc.exp1(x)
        array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
        >>> -sc.expi(-x)
        array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
    """
    pass

def exp10(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    exp10(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    exp10(x, out=None)
    
    Compute ``10**x`` element-wise.
    
    Parameters
    ----------
    x : array_like
        `x` must contain real numbers.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        ``10**x``, computed element-wise.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import exp10
    
    >>> exp10(3)
    1000.0
    >>> x = np.array([[-1, -0.5, 0], [0.5, 1, 1.5]])
    >>> exp10(x)
    array([[  0.1       ,   0.31622777,   1.        ],
           [  3.16227766,  10.        ,  31.6227766 ]])
    """
    pass

def exp2(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    exp2(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    exp2(x, out=None)
    
    Compute ``2**x`` element-wise.
    
    Parameters
    ----------
    x : array_like
        `x` must contain real numbers.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        ``2**x``, computed element-wise.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import exp2
    
    >>> exp2(3)
    8.0
    >>> x = np.array([[-1, -0.5, 0], [0.5, 1, 1.5]])
    >>> exp2(x)
    array([[ 0.5       ,  0.70710678,  1.        ],
           [ 1.41421356,  2.        ,  2.82842712]])
    """
    pass

def expi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    expi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        expi(x, out=None)
    
        Exponential integral Ei.
    
        For real :math:`x`, the exponential integral is defined as [1]_
    
        .. math::
    
            Ei(x) = \int_{-\infty}^x \frac{e^t}{t} dt.
    
        For :math:`x > 0` the integral is understood as a Cauchy principal
        value.
    
        It is extended to the complex plane by analytic continuation of
        the function on the interval :math:`(0, \infty)`. The complex
        variant has a branch cut on the negative real axis.
    
        Parameters
        ----------
        x : array_like
            Real or complex valued argument
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Values of the exponential integral
    
        See Also
        --------
        exp1 : Exponential integral :math:`E_1`
        expn : Generalized exponential integral :math:`E_n`
    
        Notes
        -----
        The exponential integrals :math:`E_1` and :math:`Ei` satisfy the
        relation
    
        .. math::
    
            E_1(x) = -Ei(-x)
    
        for :math:`x > 0`.
    
        References
        ----------
        .. [1] Digital Library of Mathematical Functions, 6.2.5
               https://dlmf.nist.gov/6.2#E5
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is related to `exp1`.
    
        >>> x = np.array([1, 2, 3, 4])
        >>> -sc.expi(-x)
        array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
        >>> sc.exp1(x)
        array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
    
        The complex variant has a branch cut on the negative real axis.
    
        >>> sc.expi(-1 + 1e-12j)
        (-0.21938393439552062+3.1415926535894254j)
        >>> sc.expi(-1 - 1e-12j)
        (-0.21938393439552062-3.1415926535894254j)
    
        As the complex variant approaches the branch cut, the real parts
        approach the value of the real variant.
    
        >>> sc.expi(-1)
        -0.21938393439552062
    
        The SciPy implementation returns the real variant for complex
        values on the branch cut.
    
        >>> sc.expi(complex(-1, 0.0))
        (-0.21938393439552062-0j)
        >>> sc.expi(complex(-1, -0.0))
        (-0.21938393439552062-0j)
    """
    pass

def expit(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    expit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        expit(x, out=None)
    
        Expit (a.k.a. logistic sigmoid) ufunc for ndarrays.
    
        The expit function, also known as the logistic sigmoid function, is
        defined as ``expit(x) = 1/(1+exp(-x))``.  It is the inverse of the
        logit function.
    
        Parameters
        ----------
        x : ndarray
            The ndarray to apply expit to element-wise.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            An ndarray of the same shape as x. Its entries
            are `expit` of the corresponding entry of x.
    
        See Also
        --------
        logit
    
        Notes
        -----
        As a ufunc expit takes a number of optional
        keyword arguments. For more information
        see `ufuncs <https://docs.scipy.org/doc/numpy/reference/ufuncs.html>`_
    
        .. versionadded:: 0.10.0
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import expit, logit
    
        >>> expit([-np.inf, -1.5, 0, 1.5, np.inf])
        array([ 0.        ,  0.18242552,  0.5       ,  0.81757448,  1.        ])
    
        `logit` is the inverse of `expit`:
    
        >>> logit(expit([-2.5, 0, 3.1, 5.0]))
        array([-2.5,  0. ,  3.1,  5. ])
    
        Plot expit(x) for x in [-6, 6]:
    
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(-6, 6, 121)
        >>> y = expit(x)
        >>> plt.plot(x, y)
        >>> plt.grid()
        >>> plt.xlim(-6, 6)
        >>> plt.xlabel('x')
        >>> plt.title('expit(x)')
        >>> plt.show()
    """
    pass

def expm1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    expm1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    expm1(x, out=None)
    
    Compute ``exp(x) - 1``.
    
    When `x` is near zero, ``exp(x)`` is near 1, so the numerical calculation
    of ``exp(x) - 1`` can suffer from catastrophic loss of precision.
    ``expm1(x)`` is implemented to avoid the loss of precision that occurs when
    `x` is near zero.
    
    Parameters
    ----------
    x : array_like
        `x` must contain real numbers.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        ``exp(x) - 1`` computed element-wise.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import expm1
    
    >>> expm1(1.0)
    1.7182818284590451
    >>> expm1([-0.2, -0.1, 0, 0.1, 0.2])
    array([-0.18126925, -0.09516258,  0.        ,  0.10517092,  0.22140276])
    
    The exact value of ``exp(7.5e-13) - 1`` is::
    
        7.5000000000028125000000007031250000001318...*10**-13.
    
    Here is what ``expm1(7.5e-13)`` gives:
    
    >>> expm1(7.5e-13)
    7.5000000000028135e-13
    
    Compare that to ``exp(7.5e-13) - 1``, where the subtraction results in
    a "catastrophic" loss of precision:
    
    >>> np.exp(7.5e-13) - 1
    7.5006667543675576e-13
    """
    pass

def expn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    expn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    expn(n, x, out=None)
    
    Generalized exponential integral En.
    
    For integer :math:`n \geq 0` and real :math:`x \geq 0` the
    generalized exponential integral is defined as [dlmf]_
    
    .. math::
    
        E_n(x) = x^{n - 1} \int_x^\infty \frac{e^{-t}}{t^n} dt.
    
    Parameters
    ----------
    n : array_like
        Non-negative integers
    x : array_like
        Real argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the generalized exponential integral
    
    See Also
    --------
    exp1 : special case of :math:`E_n` for :math:`n = 1`
    expi : related to :math:`E_n` when :math:`n = 1`
    
    References
    ----------
    .. [dlmf] Digital Library of Mathematical Functions, 8.19.2
              https://dlmf.nist.gov/8.19#E2
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    Its domain is nonnegative n and x.
    
    >>> sc.expn(-1, 1.0), sc.expn(1, -1.0)
    (nan, nan)
    
    It has a pole at ``x = 0`` for ``n = 1, 2``; for larger ``n`` it
    is equal to ``1 / (n - 1)``.
    
    >>> sc.expn([0, 1, 2, 3, 4], 0)
    array([       inf,        inf, 1.        , 0.5       , 0.33333333])
    
    For n equal to 0 it reduces to ``exp(-x) / x``.
    
    >>> x = np.array([1, 2, 3, 4])
    >>> sc.expn(0, x)
    array([0.36787944, 0.06766764, 0.01659569, 0.00457891])
    >>> np.exp(-x) / x
    array([0.36787944, 0.06766764, 0.01659569, 0.00457891])
    
    For n equal to 1 it reduces to `exp1`.
    
    >>> sc.expn(1, x)
    array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
    >>> sc.exp1(x)
    array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
    """
    pass

def exprel(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    exprel(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        exprel(x, out=None)
    
        Relative error exponential, ``(exp(x) - 1)/x``.
    
        When `x` is near zero, ``exp(x)`` is near 1, so the numerical calculation
        of ``exp(x) - 1`` can suffer from catastrophic loss of precision.
        ``exprel(x)`` is implemented to avoid the loss of precision that occurs when
        `x` is near zero.
    
        Parameters
        ----------
        x : ndarray
            Input array.  `x` must contain real numbers.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            ``(exp(x) - 1)/x``, computed element-wise.
    
        See Also
        --------
        expm1
    
        Notes
        -----
        .. versionadded:: 0.17.0
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import exprel
    
        >>> exprel(0.01)
        1.0050167084168056
        >>> exprel([-0.25, -0.1, 0, 0.1, 0.25])
        array([ 0.88479687,  0.95162582,  1.        ,  1.05170918,  1.13610167])
    
        Compare ``exprel(5e-9)`` to the naive calculation.  The exact value
        is ``1.00000000250000000416...``.
    
        >>> exprel(5e-9)
        1.0000000025
    
        >>> (np.exp(5e-9) - 1)/5e-9
        0.99999999392252903
    """
    pass

def fdtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    fdtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    fdtr(dfn, dfd, x, out=None)
    
    F cumulative distribution function.
    
    Returns the value of the cumulative distribution function of the
    F-distribution, also known as Snedecor's F-distribution or the
    Fisher-Snedecor distribution.
    
    The F-distribution with parameters :math:`d_n` and :math:`d_d` is the
    distribution of the random variable,
    
    .. math::
        X = \frac{U_n/d_n}{U_d/d_d},
    
    where :math:`U_n` and :math:`U_d` are random variables distributed
    :math:`\chi^2`, with :math:`d_n` and :math:`d_d` degrees of freedom,
    respectively.
    
    Parameters
    ----------
    dfn : array_like
        First parameter (positive float).
    dfd : array_like
        Second parameter (positive float).
    x : array_like
        Argument (nonnegative float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        The CDF of the F-distribution with parameters `dfn` and `dfd` at `x`.
    
    See Also
    --------
    fdtrc : F distribution survival function
    fdtri : F distribution inverse cumulative distribution
    scipy.stats.f : F distribution
    
    Notes
    -----
    The regularized incomplete beta function is used, according to the
    formula,
    
    .. math::
        F(d_n, d_d; x) = I_{xd_n/(d_d + xd_n)}(d_n/2, d_d/2).
    
    Wrapper for the Cephes [1]_ routine `fdtr`. The F distribution is also
    available as `scipy.stats.f`. Calling `fdtr` directly can improve
    performance compared to the ``cdf`` method of `scipy.stats.f` (see last
    example below).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Calculate the function for ``dfn=1`` and ``dfd=2`` at ``x=1``.
    
    >>> import numpy as np
    >>> from scipy.special import fdtr
    >>> fdtr(1, 2, 1)
    0.5773502691896258
    
    Calculate the function at several points by providing a NumPy array for
    `x`.
    
    >>> x = np.array([0.5, 2., 3.])
    >>> fdtr(1, 2, x)
    array([0.4472136 , 0.70710678, 0.77459667])
    
    Plot the function for several parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> dfn_parameters = [1, 5, 10, 50]
    >>> dfd_parameters = [1, 1, 2, 3]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(dfn_parameters, dfd_parameters,
    ...                            linestyles))
    >>> x = np.linspace(0, 30, 1000)
    >>> fig, ax = plt.subplots()
    >>> for parameter_set in parameters_list:
    ...     dfn, dfd, style = parameter_set
    ...     fdtr_vals = fdtr(dfn, dfd, x)
    ...     ax.plot(x, fdtr_vals, label=rf"$d_n={dfn},\, d_d={dfd}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title("F distribution cumulative distribution function")
    >>> plt.show()
    
    The F distribution is also available as `scipy.stats.f`. Using `fdtr`
    directly can be much faster than calling the ``cdf`` method of
    `scipy.stats.f`, especially for small arrays or individual values.
    To get the same results one must use the following parametrization:
    ``stats.f(dfn, dfd).cdf(x)=fdtr(dfn, dfd, x)``.
    
    >>> from scipy.stats import f
    >>> dfn, dfd = 1, 2
    >>> x = 1
    >>> fdtr_res = fdtr(dfn, dfd, x)  # this will often be faster than below
    >>> f_dist_res = f(dfn, dfd).cdf(x)
    >>> fdtr_res == f_dist_res  # test that results are equal
    True
    """
    pass

def fdtrc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    fdtrc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    fdtrc(dfn, dfd, x, out=None)
    
    F survival function.
    
    Returns the complemented F-distribution function (the integral of the
    density from `x` to infinity).
    
    Parameters
    ----------
    dfn : array_like
        First parameter (positive float).
    dfd : array_like
        Second parameter (positive float).
    x : array_like
        Argument (nonnegative float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    y : scalar or ndarray
        The complemented F-distribution function with parameters `dfn` and
        `dfd` at `x`.
    
    See Also
    --------
    fdtr : F distribution cumulative distribution function
    fdtri : F distribution inverse cumulative distribution function
    scipy.stats.f : F distribution
    
    Notes
    -----
    The regularized incomplete beta function is used, according to the
    formula,
    
    .. math::
        F(d_n, d_d; x) = I_{d_d/(d_d + xd_n)}(d_d/2, d_n/2).
    
    Wrapper for the Cephes [1]_ routine `fdtrc`. The F distribution is also
    available as `scipy.stats.f`. Calling `fdtrc` directly can improve
    performance compared to the ``sf`` method of `scipy.stats.f` (see last
    example below).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Calculate the function for ``dfn=1`` and ``dfd=2`` at ``x=1``.
    
    >>> import numpy as np
    >>> from scipy.special import fdtrc
    >>> fdtrc(1, 2, 1)
    0.42264973081037427
    
    Calculate the function at several points by providing a NumPy array for
    `x`.
    
    >>> x = np.array([0.5, 2., 3.])
    >>> fdtrc(1, 2, x)
    array([0.5527864 , 0.29289322, 0.22540333])
    
    Plot the function for several parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> dfn_parameters = [1, 5, 10, 50]
    >>> dfd_parameters = [1, 1, 2, 3]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(dfn_parameters, dfd_parameters,
    ...                            linestyles))
    >>> x = np.linspace(0, 30, 1000)
    >>> fig, ax = plt.subplots()
    >>> for parameter_set in parameters_list:
    ...     dfn, dfd, style = parameter_set
    ...     fdtrc_vals = fdtrc(dfn, dfd, x)
    ...     ax.plot(x, fdtrc_vals, label=rf"$d_n={dfn},\, d_d={dfd}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title("F distribution survival function")
    >>> plt.show()
    
    The F distribution is also available as `scipy.stats.f`. Using `fdtrc`
    directly can be much faster than calling the ``sf`` method of
    `scipy.stats.f`, especially for small arrays or individual values.
    To get the same results one must use the following parametrization:
    ``stats.f(dfn, dfd).sf(x)=fdtrc(dfn, dfd, x)``.
    
    >>> from scipy.stats import f
    >>> dfn, dfd = 1, 2
    >>> x = 1
    >>> fdtrc_res = fdtrc(dfn, dfd, x)  # this will often be faster than below
    >>> f_dist_res = f(dfn, dfd).sf(x)
    >>> f_dist_res == fdtrc_res  # test that results are equal
    True
    """
    pass

def fdtri(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    fdtri(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    fdtri(dfn, dfd, p, out=None)
    
    The `p`-th quantile of the F-distribution.
    
    This function is the inverse of the F-distribution CDF, `fdtr`, returning
    the `x` such that `fdtr(dfn, dfd, x) = p`.
    
    Parameters
    ----------
    dfn : array_like
        First parameter (positive float).
    dfd : array_like
        Second parameter (positive float).
    p : array_like
        Cumulative probability, in [0, 1].
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    x : scalar or ndarray
        The quantile corresponding to `p`.
    
    See Also
    --------
    fdtr : F distribution cumulative distribution function
    fdtrc : F distribution survival function
    scipy.stats.f : F distribution
    
    Notes
    -----
    The computation is carried out using the relation to the inverse
    regularized beta function, :math:`I^{-1}_x(a, b)`.  Let
    :math:`z = I^{-1}_p(d_d/2, d_n/2).`  Then,
    
    .. math::
        x = \frac{d_d (1 - z)}{d_n z}.
    
    If `p` is such that :math:`x < 0.5`, the following relation is used
    instead for improved stability: let
    :math:`z' = I^{-1}_{1 - p}(d_n/2, d_d/2).` Then,
    
    .. math::
        x = \frac{d_d z'}{d_n (1 - z')}.
    
    Wrapper for the Cephes [1]_ routine `fdtri`.
    
    The F distribution is also available as `scipy.stats.f`. Calling
    `fdtri` directly can improve performance compared to the ``ppf``
    method of `scipy.stats.f` (see last example below).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    `fdtri` represents the inverse of the F distribution CDF which is
    available as `fdtr`. Here, we calculate the CDF for ``df1=1``, ``df2=2``
    at ``x=3``. `fdtri` then returns ``3`` given the same values for `df1`,
    `df2` and the computed CDF value.
    
    >>> import numpy as np
    >>> from scipy.special import fdtri, fdtr
    >>> df1, df2 = 1, 2
    >>> x = 3
    >>> cdf_value =  fdtr(df1, df2, x)
    >>> fdtri(df1, df2, cdf_value)
    3.000000000000006
    
    Calculate the function at several points by providing a NumPy array for
    `x`.
    
    >>> x = np.array([0.1, 0.4, 0.7])
    >>> fdtri(1, 2, x)
    array([0.02020202, 0.38095238, 1.92156863])
    
    Plot the function for several parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> dfn_parameters = [50, 10, 1, 50]
    >>> dfd_parameters = [0.5, 1, 1, 5]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(dfn_parameters, dfd_parameters,
    ...                            linestyles))
    >>> x = np.linspace(0, 1, 1000)
    >>> fig, ax = plt.subplots()
    >>> for parameter_set in parameters_list:
    ...     dfn, dfd, style = parameter_set
    ...     fdtri_vals = fdtri(dfn, dfd, x)
    ...     ax.plot(x, fdtri_vals, label=rf"$d_n={dfn},\, d_d={dfd}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$x$")
    >>> title = "F distribution inverse cumulative distribution function"
    >>> ax.set_title(title)
    >>> ax.set_ylim(0, 30)
    >>> plt.show()
    
    The F distribution is also available as `scipy.stats.f`. Using `fdtri`
    directly can be much faster than calling the ``ppf`` method of
    `scipy.stats.f`, especially for small arrays or individual values.
    To get the same results one must use the following parametrization:
    ``stats.f(dfn, dfd).ppf(x)=fdtri(dfn, dfd, x)``.
    
    >>> from scipy.stats import f
    >>> dfn, dfd = 1, 2
    >>> x = 0.7
    >>> fdtri_res = fdtri(dfn, dfd, x)  # this will often be faster than below
    >>> f_dist_res = f(dfn, dfd).ppf(x)
    >>> f_dist_res == fdtri_res  # test that results are equal
    True
    """
    pass

def fdtridfd(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    fdtridfd(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    fdtridfd(dfn, p, x, out=None)
    
    Inverse to `fdtr` vs dfd
    
    Finds the F density argument dfd such that ``fdtr(dfn, dfd, x) == p``.
    
    Parameters
    ----------
    dfn : array_like
        First parameter (positive float).
    p : array_like
        Cumulative probability, in [0, 1].
    x : array_like
        Argument (nonnegative float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    dfd : scalar or ndarray
        `dfd` such that ``fdtr(dfn, dfd, x) == p``.
    
    See Also
    --------
    fdtr : F distribution cumulative distribution function
    fdtrc : F distribution survival function
    fdtri : F distribution quantile function
    scipy.stats.f : F distribution
    
    Examples
    --------
    Compute the F distribution cumulative distribution function for one
    parameter set.
    
    >>> from scipy.special import fdtridfd, fdtr
    >>> dfn, dfd, x = 10, 5, 2
    >>> cdf_value = fdtr(dfn, dfd, x)
    >>> cdf_value
    0.7700248806501017
    
    Verify that `fdtridfd` recovers the original value for `dfd`:
    
    >>> fdtridfd(dfn, cdf_value, x)
    5.0
    """
    pass

def fresnel(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    fresnel(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        fresnel(z, out=None)
    
        Fresnel integrals.
    
        The Fresnel integrals are defined as
    
        .. math::
    
           S(z) &= \int_0^z \sin(\pi t^2 /2) dt \\
           C(z) &= \int_0^z \cos(\pi t^2 /2) dt.
    
        See [dlmf]_ for details.
    
        Parameters
        ----------
        z : array_like
            Real or complex valued argument
        out : 2-tuple of ndarrays, optional
            Optional output arrays for the function results
    
        Returns
        -------
        S, C : 2-tuple of scalar or ndarray
            Values of the Fresnel integrals
    
        See Also
        --------
        fresnel_zeros : zeros of the Fresnel integrals
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/7.2#iii
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        As z goes to infinity along the real axis, S and C converge to 0.5.
    
        >>> S, C = sc.fresnel([0.1, 1, 10, 100, np.inf])
        >>> S
        array([0.00052359, 0.43825915, 0.46816998, 0.4968169 , 0.5       ])
        >>> C
        array([0.09999753, 0.7798934 , 0.49989869, 0.4999999 , 0.5       ])
    
        They are related to the error function `erf`.
    
        >>> z = np.array([1, 2, 3, 4])
        >>> zeta = 0.5 * np.sqrt(np.pi) * (1 - 1j) * z
        >>> S, C = sc.fresnel(z)
        >>> C + 1j*S
        array([0.7798934 +0.43825915j, 0.48825341+0.34341568j,
               0.60572079+0.496313j  , 0.49842603+0.42051575j])
        >>> 0.5 * (1 + 1j) * sc.erf(zeta)
        array([0.7798934 +0.43825915j, 0.48825341+0.34341568j,
               0.60572079+0.496313j  , 0.49842603+0.42051575j])
    """
    pass

def gamma(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gamma(z, out=None)
    
        gamma function.
    
        The gamma function is defined as
    
        .. math::
    
           \Gamma(z) = \int_0^\infty t^{z-1} e^{-t} dt
    
        for :math:`\Re(z) > 0` and is extended to the rest of the complex
        plane by analytic continuation. See [dlmf]_ for more details.
    
        Parameters
        ----------
        z : array_like
            Real or complex valued argument
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the gamma function
    
        Notes
        -----
        The gamma function is often referred to as the generalized
        factorial since :math:`\Gamma(n + 1) = n!` for natural numbers
        :math:`n`. More generally it satisfies the recurrence relation
        :math:`\Gamma(z + 1) = z \cdot \Gamma(z)` for complex :math:`z`,
        which, combined with the fact that :math:`\Gamma(1) = 1`, implies
        the above identity for :math:`z = n`.
    
        The gamma function has poles at non-negative integers and the sign
        of infinity as z approaches each pole depends upon the direction in
        which the pole is approached. For this reason, the consistent thing
        is for gamma(z) to return NaN at negative integers, and to return
        -inf when x = -0.0 and +inf when x = 0.0, using the signbit of zero
        to signify the direction in which the origin is being approached. This
        is for instance what is recommended for the gamma function in annex F
        entry 9.5.4 of the Iso C 99 standard [isoc99]_.
    
        Prior to SciPy version 1.15, ``scipy.special.gamma(z)`` returned ``+inf``
        at each pole. This was fixed in version 1.15, but with the following
        consequence. Expressions where gamma appears in the denominator
        such as
    
        ``gamma(u) * gamma(v) / (gamma(w) * gamma(x))``
    
        no longer evaluate to 0 if the numerator is well defined but there is a
        pole in the denominator. Instead such expressions evaluate to NaN. We
        recommend instead using the function `rgamma` for the reciprocal gamma
        function in such cases. The above expression could for instance be written
        as
    
        ``gamma(u) * gamma(v) * (rgamma(w) * rgamma(x))``
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/5.2#E1
        .. [isoc99] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import gamma, factorial
    
        >>> gamma([0, 0.5, 1, 5])
        array([         inf,   1.77245385,   1.        ,  24.        ])
    
        >>> z = 2.5 + 1j
        >>> gamma(z)
        (0.77476210455108352+0.70763120437959293j)
        >>> gamma(z+1), z*gamma(z)  # Recurrence property
        ((1.2292740569981171+2.5438401155000685j),
         (1.2292740569981158+2.5438401155000658j))
    
        >>> gamma(0.5)**2  # gamma(0.5) = sqrt(pi)
        3.1415926535897927
    
        Plot gamma(x) for real x
    
        >>> x = np.linspace(-3.5, 5.5, 2251)
        >>> y = gamma(x)
    
        >>> import matplotlib.pyplot as plt
        >>> plt.plot(x, y, 'b', alpha=0.6, label='gamma(x)')
        >>> k = np.arange(1, 7)
        >>> plt.plot(k, factorial(k-1), 'k*', alpha=0.6,
        ...          label='(x-1)!, x = 1, 2, ...')
        >>> plt.xlim(-3.5, 5.5)
        >>> plt.ylim(-10, 25)
        >>> plt.grid()
        >>> plt.xlabel('x')
        >>> plt.legend(loc='lower right')
        >>> plt.show()
    """
    pass

def gammainc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammainc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammainc(a, x, out=None)
    
        Regularized lower incomplete gamma function.
    
        It is defined as
    
        .. math::
    
            P(a, x) = \frac{1}{\Gamma(a)} \int_0^x t^{a - 1}e^{-t} dt
    
        for :math:`a > 0` and :math:`x \geq 0`. See [dlmf]_ for details.
    
        Parameters
        ----------
        a : array_like
            Positive parameter
        x : array_like
            Nonnegative argument
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the lower incomplete gamma function
    
        See Also
        --------
        gammaincc : regularized upper incomplete gamma function
        gammaincinv : inverse of the regularized lower incomplete gamma function
        gammainccinv : inverse of the regularized upper incomplete gamma function
    
        Notes
        -----
        The function satisfies the relation ``gammainc(a, x) +
        gammaincc(a, x) = 1`` where `gammaincc` is the regularized upper
        incomplete gamma function.
    
        The implementation largely follows that of [boost]_.
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical functions
                  https://dlmf.nist.gov/8.2#E4
        .. [boost] Maddock et. al., "Incomplete Gamma Functions",
           https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html
    
        Examples
        --------
        >>> import scipy.special as sc
    
        It is the CDF of the gamma distribution, so it starts at 0 and
        monotonically increases to 1.
    
        >>> sc.gammainc(0.5, [0, 1, 10, 100])
        array([0.        , 0.84270079, 0.99999226, 1.        ])
    
        It is equal to one minus the upper incomplete gamma function.
    
        >>> a, x = 0.5, 0.4
        >>> sc.gammainc(a, x)
        0.6289066304773024
        >>> 1 - sc.gammaincc(a, x)
        0.6289066304773024
    """
    pass

def gammaincc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammaincc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammaincc(a, x, out=None)
    
        Regularized upper incomplete gamma function.
    
        It is defined as
    
        .. math::
    
            Q(a, x) = \frac{1}{\Gamma(a)} \int_x^\infty t^{a - 1}e^{-t} dt
    
        for :math:`a > 0` and :math:`x \geq 0`. See [dlmf]_ for details.
    
        Parameters
        ----------
        a : array_like
            Positive parameter
        x : array_like
            Nonnegative argument
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the upper incomplete gamma function
    
        See Also
        --------
        gammainc : regularized lower incomplete gamma function
        gammaincinv : inverse of the regularized lower incomplete gamma function
        gammainccinv : inverse of the regularized upper incomplete gamma function
    
        Notes
        -----
        The function satisfies the relation ``gammainc(a, x) +
        gammaincc(a, x) = 1`` where `gammainc` is the regularized lower
        incomplete gamma function.
    
        The implementation largely follows that of [boost]_.
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical functions
                  https://dlmf.nist.gov/8.2#E4
        .. [boost] Maddock et. al., "Incomplete Gamma Functions",
           https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html
    
        Examples
        --------
        >>> import scipy.special as sc
    
        It is the survival function of the gamma distribution, so it
        starts at 1 and monotonically decreases to 0.
    
        >>> sc.gammaincc(0.5, [0, 1, 10, 100, 1000])
        array([1.00000000e+00, 1.57299207e-01, 7.74421643e-06, 2.08848758e-45,
               0.00000000e+00])
    
        It is equal to one minus the lower incomplete gamma function.
    
        >>> a, x = 0.5, 0.4
        >>> sc.gammaincc(a, x)
        0.37109336952269756
        >>> 1 - sc.gammainc(a, x)
        0.37109336952269756
    """
    pass

def gammainccinv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammainccinv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammainccinv(a, y, out=None)
    
        Inverse of the regularized upper incomplete gamma function.
    
        Given an input :math:`y` between 0 and 1, returns :math:`x` such
        that :math:`y = Q(a, x)`. Here :math:`Q` is the regularized upper
        incomplete gamma function; see `gammaincc`. This is well-defined
        because the upper incomplete gamma function is monotonic as can
        be seen from its definition in [dlmf]_.
    
        Parameters
        ----------
        a : array_like
            Positive parameter
        y : array_like
            Argument between 0 and 1, inclusive
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the inverse of the upper incomplete gamma function
    
        See Also
        --------
        gammaincc : regularized upper incomplete gamma function
        gammainc : regularized lower incomplete gamma function
        gammaincinv : inverse of the regularized lower incomplete gamma function
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/8.2#E4
    
        Examples
        --------
        >>> import scipy.special as sc
    
        It starts at infinity and monotonically decreases to 0.
    
        >>> sc.gammainccinv(0.5, [0, 0.1, 0.5, 1])
        array([       inf, 1.35277173, 0.22746821, 0.        ])
    
        It inverts the upper incomplete gamma function.
    
        >>> a, x = 0.5, [0, 0.1, 0.5, 1]
        >>> sc.gammaincc(a, sc.gammainccinv(a, x))
        array([0. , 0.1, 0.5, 1. ])
    
        >>> a, x = 0.5, [0, 10, 50]
        >>> sc.gammainccinv(a, sc.gammaincc(a, x))
        array([ 0., 10., 50.])
    """
    pass

def gammaincinv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammaincinv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammaincinv(a, y, out=None)
    
        Inverse to the regularized lower incomplete gamma function.
    
        Given an input :math:`y` between 0 and 1, returns :math:`x` such
        that :math:`y = P(a, x)`. Here :math:`P` is the regularized lower
        incomplete gamma function; see `gammainc`. This is well-defined
        because the lower incomplete gamma function is monotonic as can be
        seen from its definition in [dlmf]_.
    
        Parameters
        ----------
        a : array_like
            Positive parameter
        y : array_like
            Parameter between 0 and 1, inclusive
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the inverse of the lower incomplete gamma function
    
        See Also
        --------
        gammainc : regularized lower incomplete gamma function
        gammaincc : regularized upper incomplete gamma function
        gammainccinv : inverse of the regularized upper incomplete gamma function
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/8.2#E4
    
        Examples
        --------
        >>> import scipy.special as sc
    
        It starts at 0 and monotonically increases to infinity.
    
        >>> sc.gammaincinv(0.5, [0, 0.1 ,0.5, 1])
        array([0.        , 0.00789539, 0.22746821,        inf])
    
        It inverts the lower incomplete gamma function.
    
        >>> a, x = 0.5, [0, 0.1, 0.5, 1]
        >>> sc.gammainc(a, sc.gammaincinv(a, x))
        array([0. , 0.1, 0.5, 1. ])
    
        >>> a, x = 0.5, [0, 10, 25]
        >>> sc.gammaincinv(a, sc.gammainc(a, x))
        array([ 0.        , 10.        , 25.00001465])
    """
    pass

def gammaln(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammaln(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammaln(x, out=None)
    
        Logarithm of the absolute value of the gamma function.
    
        Defined as
    
        .. math::
    
           \ln(\lvert\Gamma(x)\rvert)
    
        where :math:`\Gamma` is the gamma function. For more details on
        the gamma function, see [dlmf]_.
    
        Parameters
        ----------
        x : array_like
            Real argument
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Values of the log of the absolute value of gamma
    
        See Also
        --------
        gammasgn : sign of the gamma function
        loggamma : principal branch of the logarithm of the gamma function
    
        Notes
        -----
        It is the same function as the Python standard library function
        :func:`math.lgamma`.
    
        When used in conjunction with `gammasgn`, this function is useful
        for working in logspace on the real axis without having to deal
        with complex numbers via the relation ``exp(gammaln(x)) =
        gammasgn(x) * gamma(x)``.
    
        For complex-valued log-gamma, use `loggamma` instead of `gammaln`.
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/5
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It has two positive zeros.
    
        >>> sc.gammaln([1, 2])
        array([0., 0.])
    
        It has poles at nonpositive integers.
    
        >>> sc.gammaln([0, -1, -2, -3, -4])
        array([inf, inf, inf, inf, inf])
    
        It asymptotically approaches ``x * log(x)`` (Stirling's formula).
    
        >>> x = np.array([1e10, 1e20, 1e40, 1e80])
        >>> sc.gammaln(x)
        array([2.20258509e+11, 4.50517019e+21, 9.11034037e+41, 1.83206807e+82])
        >>> x * np.log(x)
        array([2.30258509e+11, 4.60517019e+21, 9.21034037e+41, 1.84206807e+82])
    """
    pass

def gammasgn(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gammasgn(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        gammasgn(x, out=None)
    
        Sign of the gamma function.
    
        It is defined as
    
        .. math::
    
           \text{gammasgn}(x) =
           \begin{cases}
             +1 & \Gamma(x) > 0 \\
             -1 & \Gamma(x) < 0
           \end{cases}
    
        where :math:`\Gamma` is the gamma function; see `gamma`. This
        definition is complete since the gamma function is never zero;
        see the discussion after [dlmf]_.
    
        Parameters
        ----------
        x : array_like
            Real argument
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Sign of the gamma function
    
        See Also
        --------
        gamma : the gamma function
        gammaln : log of the absolute value of the gamma function
        loggamma : analytic continuation of the log of the gamma function
    
        Notes
        -----
        The gamma function can be computed as ``gammasgn(x) *
        np.exp(gammaln(x))``.
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/5.2#E1
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is 1 for ``x > 0``.
    
        >>> sc.gammasgn([1, 2, 3, 4])
        array([1., 1., 1., 1.])
    
        It alternates between -1 and 1 for negative integers.
    
        >>> sc.gammasgn([-0.5, -1.5, -2.5, -3.5])
        array([-1.,  1., -1.,  1.])
    
        It can be used to compute the gamma function.
    
        >>> x = [1.5, 0.5, -0.5, -1.5]
        >>> sc.gammasgn(x) * np.exp(sc.gammaln(x))
        array([ 0.88622693,  1.77245385, -3.5449077 ,  2.3632718 ])
        >>> sc.gamma(x)
        array([ 0.88622693,  1.77245385, -3.5449077 ,  2.3632718 ])
    """
    pass

def gdtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gdtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    gdtr(a, b, x, out=None)
    
    Gamma distribution cumulative distribution function.
    
    Returns the integral from zero to `x` of the gamma probability density
    function,
    
    .. math::
    
        F = \int_0^x \frac{a^b}{\Gamma(b)} t^{b-1} e^{-at}\,dt,
    
    where :math:`\Gamma` is the gamma function.
    
    Parameters
    ----------
    a : array_like
        The rate parameter of the gamma distribution, sometimes denoted
        :math:`\beta` (float).  It is also the reciprocal of the scale
        parameter :math:`\theta`.
    b : array_like
        The shape parameter of the gamma distribution, sometimes denoted
        :math:`\alpha` (float).
    x : array_like
        The quantile (upper limit of integration; float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    F : scalar or ndarray
        The CDF of the gamma distribution with parameters `a` and `b`
        evaluated at `x`.
    
    See Also
    --------
    gdtrc : 1 - CDF of the gamma distribution.
    scipy.stats.gamma: Gamma distribution
    
    Notes
    -----
    The evaluation is carried out using the relation to the incomplete gamma
    integral (regularized gamma function).
    
    Wrapper for the Cephes [1]_ routine `gdtr`. Calling `gdtr` directly can
    improve performance compared to the ``cdf`` method of `scipy.stats.gamma`
    (see last example below).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Compute the function for ``a=1``, ``b=2`` at ``x=5``.
    
    >>> import numpy as np
    >>> from scipy.special import gdtr
    >>> import matplotlib.pyplot as plt
    >>> gdtr(1., 2., 5.)
    0.9595723180054873
    
    Compute the function for ``a=1`` and ``b=2`` at several points by
    providing a NumPy array for `x`.
    
    >>> xvalues = np.array([1., 2., 3., 4])
    >>> gdtr(1., 1., xvalues)
    array([0.63212056, 0.86466472, 0.95021293, 0.98168436])
    
    `gdtr` can evaluate different parameter sets by providing arrays with
    broadcasting compatible shapes for `a`, `b` and `x`. Here we compute the
    function for three different `a` at four positions `x` and ``b=3``,
    resulting in a 3x4 array.
    
    >>> a = np.array([[0.5], [1.5], [2.5]])
    >>> x = np.array([1., 2., 3., 4])
    >>> a.shape, x.shape
    ((3, 1), (4,))
    
    >>> gdtr(a, 3., x)
    array([[0.01438768, 0.0803014 , 0.19115317, 0.32332358],
           [0.19115317, 0.57680992, 0.82642193, 0.9380312 ],
           [0.45618688, 0.87534798, 0.97974328, 0.9972306 ]])
    
    Plot the function for four different parameter sets.
    
    >>> a_parameters = [0.3, 1, 2, 6]
    >>> b_parameters = [2, 10, 15, 20]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(a_parameters, b_parameters, linestyles))
    >>> x = np.linspace(0, 30, 1000)
    >>> fig, ax = plt.subplots()
    >>> for parameter_set in parameters_list:
    ...     a, b, style = parameter_set
    ...     gdtr_vals = gdtr(a, b, x)
    ...     ax.plot(x, gdtr_vals, label=fr"$a= {a},\, b={b}$", ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title("Gamma distribution cumulative distribution function")
    >>> plt.show()
    
    The gamma distribution is also available as `scipy.stats.gamma`. Using
    `gdtr` directly can be much faster than calling the ``cdf`` method of
    `scipy.stats.gamma`, especially for small arrays or individual values.
    To get the same results one must use the following parametrization:
    ``stats.gamma(b, scale=1/a).cdf(x)=gdtr(a, b, x)``.
    
    >>> from scipy.stats import gamma
    >>> a = 2.
    >>> b = 3
    >>> x = 1.
    >>> gdtr_result = gdtr(a, b, x)  # this will often be faster than below
    >>> gamma_dist_result = gamma(b, scale=1/a).cdf(x)
    >>> gdtr_result == gamma_dist_result  # test that results are equal
    True
    """
    pass

def gdtrc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gdtrc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    gdtrc(a, b, x, out=None)
    
    Gamma distribution survival function.
    
    Integral from `x` to infinity of the gamma probability density function,
    
    .. math::
    
        F = \int_x^\infty \frac{a^b}{\Gamma(b)} t^{b-1} e^{-at}\,dt,
    
    where :math:`\Gamma` is the gamma function.
    
    Parameters
    ----------
    a : array_like
        The rate parameter of the gamma distribution, sometimes denoted
        :math:`\beta` (float). It is also the reciprocal of the scale
        parameter :math:`\theta`.
    b : array_like
        The shape parameter of the gamma distribution, sometimes denoted
        :math:`\alpha` (float).
    x : array_like
        The quantile (lower limit of integration; float).
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    F : scalar or ndarray
        The survival function of the gamma distribution with parameters `a`
        and `b` evaluated at `x`.
    
    See Also
    --------
    gdtr: Gamma distribution cumulative distribution function
    scipy.stats.gamma: Gamma distribution
    gdtrix
    
    Notes
    -----
    The evaluation is carried out using the relation to the incomplete gamma
    integral (regularized gamma function).
    
    Wrapper for the Cephes [1]_ routine `gdtrc`. Calling `gdtrc` directly can
    improve performance compared to the ``sf`` method of `scipy.stats.gamma`
    (see last example below).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Compute the function for ``a=1`` and ``b=2`` at ``x=5``.
    
    >>> import numpy as np
    >>> from scipy.special import gdtrc
    >>> import matplotlib.pyplot as plt
    >>> gdtrc(1., 2., 5.)
    0.04042768199451279
    
    Compute the function for ``a=1``, ``b=2`` at several points by providing
    a NumPy array for `x`.
    
    >>> xvalues = np.array([1., 2., 3., 4])
    >>> gdtrc(1., 1., xvalues)
    array([0.36787944, 0.13533528, 0.04978707, 0.01831564])
    
    `gdtrc` can evaluate different parameter sets by providing arrays with
    broadcasting compatible shapes for `a`, `b` and `x`. Here we compute the
    function for three different `a` at four positions `x` and ``b=3``,
    resulting in a 3x4 array.
    
    >>> a = np.array([[0.5], [1.5], [2.5]])
    >>> x = np.array([1., 2., 3., 4])
    >>> a.shape, x.shape
    ((3, 1), (4,))
    
    >>> gdtrc(a, 3., x)
    array([[0.98561232, 0.9196986 , 0.80884683, 0.67667642],
           [0.80884683, 0.42319008, 0.17357807, 0.0619688 ],
           [0.54381312, 0.12465202, 0.02025672, 0.0027694 ]])
    
    Plot the function for four different parameter sets.
    
    >>> a_parameters = [0.3, 1, 2, 6]
    >>> b_parameters = [2, 10, 15, 20]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(a_parameters, b_parameters, linestyles))
    >>> x = np.linspace(0, 30, 1000)
    >>> fig, ax = plt.subplots()
    >>> for parameter_set in parameters_list:
    ...     a, b, style = parameter_set
    ...     gdtrc_vals = gdtrc(a, b, x)
    ...     ax.plot(x, gdtrc_vals, label=fr"$a= {a},\, b={b}$", ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title("Gamma distribution survival function")
    >>> plt.show()
    
    The gamma distribution is also available as `scipy.stats.gamma`.
    Using `gdtrc` directly can be much faster than calling the ``sf`` method
    of `scipy.stats.gamma`, especially for small arrays or individual
    values. To get the same results one must use the following parametrization:
    ``stats.gamma(b, scale=1/a).sf(x)=gdtrc(a, b, x)``.
    
    >>> from scipy.stats import gamma
    >>> a = 2
    >>> b = 3
    >>> x = 1.
    >>> gdtrc_result = gdtrc(a, b, x)  # this will often be faster than below
    >>> gamma_dist_result = gamma(b, scale=1/a).sf(x)
    >>> gdtrc_result == gamma_dist_result  # test that results are equal
    True
    """
    pass

def gdtria(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gdtria(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    gdtria(p, b, x, out=None)
    
    Inverse of `gdtr` vs a.
    
    Returns the inverse with respect to the parameter `a` of ``p =
    gdtr(a, b, x)``, the cumulative distribution function of the gamma
    distribution.
    
    Parameters
    ----------
    p : array_like
        Probability values.
    b : array_like
        `b` parameter values of `gdtr(a, b, x)`. `b` is the "shape" parameter
        of the gamma distribution.
    x : array_like
        Nonnegative real values, from the domain of the gamma distribution.
    out : ndarray, optional
        If a fourth argument is given, it must be a numpy.ndarray whose size
        matches the broadcast result of `a`, `b` and `x`.  `out` is then the
        array returned by the function.
    
    Returns
    -------
    a : scalar or ndarray
        Values of the `a` parameter such that ``p = gdtr(a, b, x)`.  ``1/a``
        is the "scale" parameter of the gamma distribution.
    
    See Also
    --------
    gdtr : CDF of the gamma distribution.
    gdtrib : Inverse with respect to `b` of `gdtr(a, b, x)`.
    gdtrix : Inverse with respect to `x` of `gdtr(a, b, x)`.
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfgam`.
    
    The cumulative distribution function `p` is computed using a routine by
    DiDinato and Morris [2]_. Computation of `a` involves a search for a value
    that produces the desired value of `p`. The search relies on the
    monotonicity of `p` with `a`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] DiDinato, A. R. and Morris, A. H.,
           Computation of the incomplete gamma function ratios and their
           inverse.  ACM Trans. Math. Softw. 12 (1986), 377-393.
    
    Examples
    --------
    First evaluate `gdtr`.
    
    >>> from scipy.special import gdtr, gdtria
    >>> p = gdtr(1.2, 3.4, 5.6)
    >>> print(p)
    0.94378087442
    
    Verify the inverse.
    
    >>> gdtria(p, 3.4, 5.6)
    1.2
    """
    pass

def gdtrib(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gdtrib(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    gdtrib(a, p, x, out=None)
    
    Inverse of `gdtr` vs b.
    
    Returns the inverse with respect to the parameter `b` of ``p =
    gdtr(a, b, x)``, the cumulative distribution function of the gamma
    distribution.
    
    Parameters
    ----------
    a : array_like
        `a` parameter values of ``gdtr(a, b, x)`. ``1/a`` is the "scale"
        parameter of the gamma distribution.
    p : array_like
        Probability values.
    x : array_like
        Nonnegative real values, from the domain of the gamma distribution.
    out : ndarray, optional
        If a fourth argument is given, it must be a numpy.ndarray whose size
        matches the broadcast result of `a`, `b` and `x`.  `out` is then the
        array returned by the function.
    
    Returns
    -------
    b : scalar or ndarray
        Values of the `b` parameter such that `p = gdtr(a, b, x)`.  `b` is
        the "shape" parameter of the gamma distribution.
    
    See Also
    --------
    gdtr : CDF of the gamma distribution.
    gdtria : Inverse with respect to `a` of `gdtr(a, b, x)`.
    gdtrix : Inverse with respect to `x` of `gdtr(a, b, x)`.
    
    Notes
    -----
    
    The cumulative distribution function `p` is computed using the Cephes [1]_
    routines `igam` and `igamc`. Computation of `b` involves a search for a value
    that produces the desired value of `p` using Chandrupatla's bracketing
    root finding algorithm [2]_.
    
    Note that there are some edge cases where `gdtrib` is extended by taking
    limits where they are uniquely defined. In particular
    ``x == 0`` with ``p > 0`` and ``p == 0`` with ``x > 0``.
    For these edge cases, a numerical result will be returned for
    ``gdtrib(a, p, x)`` even though ``gdtr(a, gdtrib(a, p, x), x)`` is
    undefined.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    .. [2] Chandrupatla, Tirupathi R.
           "A new hybrid quadratic/bisection algorithm for finding the zero of a
           nonlinear function without using derivatives".
           Advances in Engineering Software, 28(3), 145-149.
           https://doi.org/10.1016/s0965-9978(96)00051-8
    
    Examples
    --------
    First evaluate `gdtr`.
    
    >>> from scipy.special import gdtr, gdtrib
    >>> p = gdtr(1.2, 3.4, 5.6)
    >>> print(p)
    0.94378087442
    
    Verify the inverse.
    
    >>> gdtrib(1.2, p, 5.6)
    3.3999999999999995
    """
    pass

def gdtrix(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    gdtrix(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    gdtrix(a, b, p, out=None)
    
    Inverse of `gdtr` vs x.
    
    Returns the inverse with respect to the parameter `x` of ``p =
    gdtr(a, b, x)``, the cumulative distribution function of the gamma
    distribution. This is also known as the pth quantile of the
    distribution.
    
    Parameters
    ----------
    a : array_like
        `a` parameter values of ``gdtr(a, b, x)``. ``1/a`` is the "scale"
        parameter of the gamma distribution.
    b : array_like
        `b` parameter values of ``gdtr(a, b, x)``. `b` is the "shape" parameter
        of the gamma distribution.
    p : array_like
        Probability values.
    out : ndarray, optional
        If a fourth argument is given, it must be a numpy.ndarray whose size
        matches the broadcast result of `a`, `b` and `x`. `out` is then the
        array returned by the function.
    
    Returns
    -------
    x : scalar or ndarray
        Values of the `x` parameter such that `p = gdtr(a, b, x)`.
    
    See Also
    --------
    gdtr : CDF of the gamma distribution.
    gdtria : Inverse with respect to `a` of ``gdtr(a, b, x)``.
    gdtrib : Inverse with respect to `b` of ``gdtr(a, b, x)``.
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfgam`.
    
    The cumulative distribution function `p` is computed using a routine by
    DiDinato and Morris [2]_. Computation of `x` involves a search for a value
    that produces the desired value of `p`. The search relies on the
    monotonicity of `p` with `x`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] DiDinato, A. R. and Morris, A. H.,
           Computation of the incomplete gamma function ratios and their
           inverse.  ACM Trans. Math. Softw. 12 (1986), 377-393.
    
    Examples
    --------
    First evaluate `gdtr`.
    
    >>> from scipy.special import gdtr, gdtrix
    >>> p = gdtr(1.2, 3.4, 5.6)
    >>> print(p)
    0.94378087442
    
    Verify the inverse.
    
    >>> gdtrix(1.2, 3.4, p)
    5.5999999999999996
    """
    pass

def geterr(): # real signature unknown; restored from __doc__
    """
    Get the current way of handling special-function errors.
    
        Returns
        -------
        err : dict
            A dictionary with keys "singular", "underflow", "overflow",
            "slow", "loss", "no_result", "domain", "arg", and "other",
            whose values are from the strings "ignore", "warn", and
            "raise". The keys represent possible special-function errors,
            and the values define how these errors are handled.
    
        See Also
        --------
        seterr : set how special-function errors are handled
        errstate : context manager for special-function error handling
        numpy.geterr : similar numpy function for floating-point errors
    
        Notes
        -----
        For complete documentation of the types of special-function errors
        and treatment options, see `seterr`.
    
        Examples
        --------
        By default all errors are ignored.
    
        >>> import scipy.special as sc
        >>> for key, value in sorted(sc.geterr().items()):
        ...     print(f'{key}: {value}')
        ...
        arg: ignore
        domain: ignore
        loss: ignore
        memory: raise
        no_result: ignore
        other: ignore
        overflow: ignore
        singular: ignore
        slow: ignore
        underflow: ignore
    """
    pass

def hankel1(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hankel1(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        hankel1(v, z, out=None)
    
        Hankel function of the first kind
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the Hankel function of the first kind.
    
        See Also
        --------
        hankel1e : ndarray
            This function with leading exponential behavior stripped off.
    
        Notes
        -----
        A wrapper for the AMOS [1]_ routine `zbesh`, which carries out the
        computation using the relation,
    
        .. math:: H^{(1)}_v(z) =
                  \frac{2}{\imath\pi} \exp(-\imath \pi v/2) K_v(z \exp(-\imath\pi/2))
    
        where :math:`K_v` is the modified Bessel function of the second kind.
        For negative orders, the relation
    
        .. math:: H^{(1)}_{-v}(z) = H^{(1)}_v(z) \exp(\imath\pi v)
    
        is used.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    """
    pass

def hankel1e(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hankel1e(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        hankel1e(v, z, out=None)
    
        Exponentially scaled Hankel function of the first kind
    
        Defined as::
    
            hankel1e(v, z) = hankel1(v, z) * exp(-1j * z)
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the exponentially scaled Hankel function.
    
        Notes
        -----
        A wrapper for the AMOS [1]_ routine `zbesh`, which carries out the
        computation using the relation,
    
        .. math:: H^{(1)}_v(z) =
                  \frac{2}{\imath\pi} \exp(-\imath \pi v/2) K_v(z \exp(-\imath\pi/2))
    
        where :math:`K_v` is the modified Bessel function of the second kind.
        For negative orders, the relation
    
        .. math:: H^{(1)}_{-v}(z) = H^{(1)}_v(z) \exp(\imath\pi v)
    
        is used.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    """
    pass

def hankel2(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hankel2(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        hankel2(v, z, out=None)
    
        Hankel function of the second kind
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the Hankel function of the second kind.
    
        See Also
        --------
        hankel2e : this function with leading exponential behavior stripped off.
    
        Notes
        -----
        A wrapper for the AMOS [1]_ routine `zbesh`, which carries out the
        computation using the relation,
    
        .. math:: H^{(2)}_v(z) =
                  -\frac{2}{\imath\pi} \exp(\imath \pi v/2) K_v(z \exp(\imath\pi/2))
    
        where :math:`K_v` is the modified Bessel function of the second kind.
        For negative orders, the relation
    
        .. math:: H^{(2)}_{-v}(z) = H^{(2)}_v(z) \exp(-\imath\pi v)
    
        is used.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    """
    pass

def hankel2e(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hankel2e(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        hankel2e(v, z, out=None)
    
        Exponentially scaled Hankel function of the second kind
    
        Defined as::
    
            hankel2e(v, z) = hankel2(v, z) * exp(1j * z)
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the exponentially scaled Hankel function of the second kind.
    
        Notes
        -----
        A wrapper for the AMOS [1]_ routine `zbesh`, which carries out the
        computation using the relation,
    
        .. math:: H^{(2)}_v(z) = -\frac{2}{\imath\pi}
                  \exp(\frac{\imath \pi v}{2}) K_v(z exp(\frac{\imath\pi}{2}))
    
        where :math:`K_v` is the modified Bessel function of the second kind.
        For negative orders, the relation
    
        .. math:: H^{(2)}_{-v}(z) = H^{(2)}_v(z) \exp(-\imath\pi v)
    
        is used.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    """
    pass

def huber(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    huber(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    huber(delta, r, out=None)
    
    Huber loss function.
    
    .. math:: \text{huber}(\delta, r) = \begin{cases} \infty & \delta < 0  \\
              \frac{1}{2}r^2 & 0 \le \delta, | r | \le \delta \\
              \delta ( |r| - \frac{1}{2}\delta ) & \text{otherwise} \end{cases}
    
    Parameters
    ----------
    delta : ndarray
        Input array, indicating the quadratic vs. linear loss changepoint.
    r : ndarray
        Input array, possibly representing residuals.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        The computed Huber loss function values.
    
    See Also
    --------
    pseudo_huber : smooth approximation of this function
    
    Notes
    -----
    `huber` is useful as a loss function in robust statistics or machine
    learning to reduce the influence of outliers as compared to the common
    squared error loss, residuals with a magnitude higher than `delta` are
    not squared [1]_.
    
    Typically, `r` represents residuals, the difference
    between a model prediction and data. Then, for :math:`|r|\leq\delta`,
    `huber` resembles the squared error and for :math:`|r|>\delta` the
    absolute error. This way, the Huber loss often achieves
    a fast convergence in model fitting for small residuals like the squared
    error loss function and still reduces the influence of outliers
    (:math:`|r|>\delta`) like the absolute error loss. As :math:`\delta` is
    the cutoff between squared and absolute error regimes, it has
    to be tuned carefully for each problem. `huber` is also
    convex, making it suitable for gradient based optimization.
    
    .. versionadded:: 0.15.0
    
    References
    ----------
    .. [1] Peter Huber. "Robust Estimation of a Location Parameter",
           1964. Annals of Statistics. 53 (1): 73 - 101.
    
    Examples
    --------
    Import all necessary modules.
    
    >>> import numpy as np
    >>> from scipy.special import huber
    >>> import matplotlib.pyplot as plt
    
    Compute the function for ``delta=1`` at ``r=2``
    
    >>> huber(1., 2.)
    1.5
    
    Compute the function for different `delta` by providing a NumPy array or
    list for `delta`.
    
    >>> huber([1., 3., 5.], 4.)
    array([3.5, 7.5, 8. ])
    
    Compute the function at different points by providing a NumPy array or
    list for `r`.
    
    >>> huber(2., np.array([1., 1.5, 3.]))
    array([0.5  , 1.125, 4.   ])
    
    The function can be calculated for different `delta` and `r` by
    providing arrays for both with compatible shapes for broadcasting.
    
    >>> r = np.array([1., 2.5, 8., 10.])
    >>> deltas = np.array([[1.], [5.], [9.]])
    >>> print(r.shape, deltas.shape)
    (4,) (3, 1)
    
    >>> huber(deltas, r)
    array([[ 0.5  ,  2.   ,  7.5  ,  9.5  ],
           [ 0.5  ,  3.125, 27.5  , 37.5  ],
           [ 0.5  ,  3.125, 32.   , 49.5  ]])
    
    Plot the function for different `delta`.
    
    >>> x = np.linspace(-4, 4, 500)
    >>> deltas = [1, 2, 3]
    >>> linestyles = ["dashed", "dotted", "dashdot"]
    >>> fig, ax = plt.subplots()
    >>> combined_plot_parameters = list(zip(deltas, linestyles))
    >>> for delta, style in combined_plot_parameters:
    ...     ax.plot(x, huber(delta, x), label=fr"$\delta={delta}$", ls=style)
    >>> ax.legend(loc="upper center")
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title(r"Huber loss function $h_{\delta}(x)$")
    >>> ax.set_xlim(-4, 4)
    >>> ax.set_ylim(0, 8)
    >>> plt.show()
    """
    pass

def hyp0f1(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hyp0f1(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    hyp0f1(v, z, out=None)
    
    Confluent hypergeometric limit function 0F1.
    
    Parameters
    ----------
    v : array_like
        Real-valued parameter
    z : array_like
        Real- or complex-valued argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The confluent hypergeometric limit function
    
    Notes
    -----
    This function is defined as:
    
    .. math:: _0F_1(v, z) = \sum_{k=0}^{\infty}\frac{z^k}{(v)_k k!}.
    
    It's also the limit as :math:`q \to \infty` of :math:`_1F_1(q; v; z/q)`,
    and satisfies the differential equation :math:`f''(z) + vf'(z) =
    f(z)`. See [1]_ for more information.
    
    References
    ----------
    .. [1] Wolfram MathWorld, "Confluent Hypergeometric Limit Function",
           http://mathworld.wolfram.com/ConfluentHypergeometricLimitFunction.html
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It is one when `z` is zero.
    
    >>> sc.hyp0f1(1, 0)
    1.0
    
    It is the limit of the confluent hypergeometric function as `q`
    goes to infinity.
    
    >>> q = np.array([1, 10, 100, 1000])
    >>> v = 1
    >>> z = 1
    >>> sc.hyp1f1(q, v, z / q)
    array([2.71828183, 2.31481985, 2.28303778, 2.27992985])
    >>> sc.hyp0f1(v, z)
    2.2795853023360673
    
    It is related to Bessel functions.
    
    >>> n = 1
    >>> x = np.linspace(0, 1, 5)
    >>> sc.jv(n, x)
    array([0.        , 0.12402598, 0.24226846, 0.3492436 , 0.44005059])
    >>> (0.5 * x)**n / sc.factorial(n) * sc.hyp0f1(n + 1, -0.25 * x**2)
    array([0.        , 0.12402598, 0.24226846, 0.3492436 , 0.44005059])
    """
    pass

def hyp1f1(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hyp1f1(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    hyp1f1(a, b, x, out=None)
    
    Confluent hypergeometric function 1F1.
    
    The confluent hypergeometric function is defined by the series
    
    .. math::
    
       {}_1F_1(a; b; x) = \sum_{k = 0}^\infty \frac{(a)_k}{(b)_k k!} x^k.
    
    See [dlmf]_ for more details. Here :math:`(\cdot)_k` is the
    Pochhammer symbol; see `poch`.
    
    Parameters
    ----------
    a, b : array_like
        Real parameters
    x : array_like
        Real or complex argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the confluent hypergeometric function
    
    See Also
    --------
    hyperu : another confluent hypergeometric function
    hyp0f1 : confluent hypergeometric limit function
    hyp2f1 : Gaussian hypergeometric function
    
    Notes
    -----
    For real values, this function uses the ``hyp1f1`` routine from the C++ Boost
    library [2]_, for complex values a C translation of the specfun
    Fortran library [3]_.
    
    References
    ----------
    .. [dlmf] NIST Digital Library of Mathematical Functions
              https://dlmf.nist.gov/13.2#E2
    .. [2] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    .. [3] Zhang, Jin, "Computation of Special Functions", John Wiley
           and Sons, Inc, 1996.
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It is one when `x` is zero:
    
    >>> sc.hyp1f1(0.5, 0.5, 0)
    1.0
    
    It is singular when `b` is a nonpositive integer.
    
    >>> sc.hyp1f1(0.5, -1, 0)
    inf
    
    It is a polynomial when `a` is a nonpositive integer.
    
    >>> a, b, x = -1, 0.5, np.array([1.0, 2.0, 3.0, 4.0])
    >>> sc.hyp1f1(a, b, x)
    array([-1., -3., -5., -7.])
    >>> 1 + (a / b) * x
    array([-1., -3., -5., -7.])
    
    It reduces to the exponential function when ``a = b``.
    
    >>> sc.hyp1f1(2, 2, [1, 2, 3, 4])
    array([ 2.71828183,  7.3890561 , 20.08553692, 54.59815003])
    >>> np.exp([1, 2, 3, 4])
    array([ 2.71828183,  7.3890561 , 20.08553692, 54.59815003])
    """
    pass

def hyp2f1(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hyp2f1(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        hyp2f1(a, b, c, z, out=None)
    
        Gauss hypergeometric function 2F1(a, b; c; z)
    
        Parameters
        ----------
        a, b, c : array_like
            Arguments, should be real-valued.
        z : array_like
            Argument, real or complex.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        hyp2f1 : scalar or ndarray
            The values of the gaussian hypergeometric function.
    
        See Also
        --------
        hyp0f1 : confluent hypergeometric limit function.
        hyp1f1 : Kummer's (confluent hypergeometric) function.
    
        Notes
        -----
        This function is defined for :math:`|z| < 1` as
    
        .. math::
    
           \mathrm{hyp2f1}(a, b, c, z) = \sum_{n=0}^\infty
           \frac{(a)_n (b)_n}{(c)_n}\frac{z^n}{n!},
    
        and defined on the rest of the complex z-plane by analytic
        continuation [1]_.
        Here :math:`(\cdot)_n` is the Pochhammer symbol; see `poch`. When
        :math:`n` is an integer the result is a polynomial of degree :math:`n`.
    
        The implementation for complex values of ``z`` is described in [2]_,
        except for ``z`` in the region defined by
    
        .. math::
    
             0.9 <= \left|z\right| < 1.1,
             \left|1 - z\right| >= 0.9,
             \mathrm{real}(z) >= 0
    
        in which the implementation follows [4]_.
    
        References
        ----------
        .. [1] NIST Digital Library of Mathematical Functions
               https://dlmf.nist.gov/15.2
        .. [2] S. Zhang and J.M. Jin, "Computation of Special Functions", Wiley 1996
        .. [3] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
        .. [4] J.L. Lopez and N.M. Temme, "New series expansions of the Gauss
               hypergeometric function", Adv Comput Math 39, 349-365 (2013).
               https://doi.org/10.1007/s10444-012-9283-y
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It has poles when `c` is a negative integer.
    
        >>> sc.hyp2f1(1, 1, -2, 1)
        inf
    
        It is a polynomial when `a` or `b` is a negative integer.
    
        >>> a, b, c = -1, 1, 1.5
        >>> z = np.linspace(0, 1, 5)
        >>> sc.hyp2f1(a, b, c, z)
        array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])
        >>> 1 + a * b * z / c
        array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])
    
        It is symmetric in `a` and `b`.
    
        >>> a = np.linspace(0, 1, 5)
        >>> b = np.linspace(0, 1, 5)
        >>> sc.hyp2f1(a, b, 1, 0.5)
        array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])
        >>> sc.hyp2f1(b, a, 1, 0.5)
        array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])
    
        It contains many other functions as special cases.
    
        >>> z = 0.5
        >>> sc.hyp2f1(1, 1, 2, z)
        1.3862943611198901
        >>> -np.log(1 - z) / z
        1.3862943611198906
    
        >>> sc.hyp2f1(0.5, 1, 1.5, z**2)
        1.098612288668109
        >>> np.log((1 + z) / (1 - z)) / (2 * z)
        1.0986122886681098
    
        >>> sc.hyp2f1(0.5, 1, 1.5, -z**2)
        0.9272952180016117
        >>> np.arctan(z) / z
        0.9272952180016122
    """
    pass

def hyperu(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    hyperu(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    hyperu(a, b, x, out=None)
    
    Confluent hypergeometric function U
    
    It is defined as the solution to the equation
    
    .. math::
    
       x \frac{d^2w}{dx^2} + (b - x) \frac{dw}{dx} - aw = 0
    
    which satisfies the property
    
    .. math::
    
       U(a, b, x) \sim x^{-a}
    
    as :math:`x \to \infty`. See [dlmf]_ for more details.
    
    Parameters
    ----------
    a, b : array_like
        Real-valued parameters
    x : array_like
        Real-valued argument
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        Values of `U`
    
    References
    ----------
    .. [dlmf] NIST Digital Library of Mathematics Functions
              https://dlmf.nist.gov/13.2#E6
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It has a branch cut along the negative `x` axis.
    
    >>> x = np.linspace(-0.1, -10, 5)
    >>> sc.hyperu(1, 1, x)
    array([nan, nan, nan, nan, nan])
    
    It approaches zero as `x` goes to infinity.
    
    >>> x = np.array([1, 10, 100])
    >>> sc.hyperu(1, 1, x)
    array([0.59634736, 0.09156333, 0.00990194])
    
    It satisfies Kummer's transformation.
    
    >>> a, b, x = 2, 1, 1
    >>> sc.hyperu(a, b, x)
    0.1926947246463881
    >>> x**(1 - b) * sc.hyperu(a - b + 1, 2 - b, x)
    0.1926947246463881
    """
    pass

def i0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    i0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        i0(x, out=None)
    
        Modified Bessel function of order 0.
    
        Defined as,
    
        .. math::
            I_0(x) = \sum_{k=0}^\infty \frac{(x^2/4)^k}{(k!)^2} = J_0(\imath x),
    
        where :math:`J_0` is the Bessel function of the first kind of order 0.
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            Value of the modified Bessel function of order 0 at `x`.
    
        See Also
        --------
        iv: Modified Bessel function of any order
        i0e: Exponentially scaled modified Bessel function of order 0
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 8] and (8, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `i0`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import i0
        >>> i0(1.)
        1.2660658777520082
    
        Calculate at several points:
    
        >>> import numpy as np
        >>> i0(np.array([-2., 0., 3.5]))
        array([2.2795853 , 1.        , 7.37820343])
    
        Plot the function from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> y = i0(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def i0e(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    i0e(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        i0e(x, out=None)
    
        Exponentially scaled modified Bessel function of order 0.
    
        Defined as::
    
            i0e(x) = exp(-abs(x)) * i0(x).
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            Value of the exponentially scaled modified Bessel function of order 0
            at `x`.
    
        See Also
        --------
        iv: Modified Bessel function of the first kind
        i0: Modified Bessel function of order 0
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 8] and (8, infinity).
        Chebyshev polynomial expansions are employed in each interval. The
        polynomial expansions used are the same as those in `i0`, but
        they are not multiplied by the dominant exponential factor.
    
        This function is a wrapper for the Cephes [1]_ routine `i0e`. `i0e`
        is useful for large arguments `x`: for these, `i0` quickly overflows.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        In the following example `i0` returns infinity whereas `i0e` still returns
        a finite number.
    
        >>> from scipy.special import i0, i0e
        >>> i0(1000.), i0e(1000.)
        (inf, 0.012617240455891257)
    
        Calculate the function at several points by providing a NumPy array or
        list for `x`:
    
        >>> import numpy as np
        >>> i0e(np.array([-2., 0., 3.]))
        array([0.30850832, 1.        , 0.24300035])
    
        Plot the function from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> y = i0e(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def i1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    i1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        i1(x, out=None)
    
        Modified Bessel function of order 1.
    
        Defined as,
    
        .. math::
            I_1(x) = \frac{1}{2}x \sum_{k=0}^\infty \frac{(x^2/4)^k}{k! (k + 1)!}
                   = -\imath J_1(\imath x),
    
        where :math:`J_1` is the Bessel function of the first kind of order 1.
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            Value of the modified Bessel function of order 1 at `x`.
    
        See Also
        --------
        iv: Modified Bessel function of the first kind
        i1e: Exponentially scaled modified Bessel function of order 1
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 8] and (8, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `i1`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import i1
        >>> i1(1.)
        0.5651591039924851
    
        Calculate the function at several points:
    
        >>> import numpy as np
        >>> i1(np.array([-2., 0., 6.]))
        array([-1.59063685,  0.        , 61.34193678])
    
        Plot the function between -10 and 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> y = i1(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def i1e(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    i1e(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        i1e(x, out=None)
    
        Exponentially scaled modified Bessel function of order 1.
    
        Defined as::
    
            i1e(x) = exp(-abs(x)) * i1(x)
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            Value of the exponentially scaled modified Bessel function of order 1
            at `x`.
    
        See Also
        --------
        iv: Modified Bessel function of the first kind
        i1: Modified Bessel function of order 1
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 8] and (8, infinity).
        Chebyshev polynomial expansions are employed in each interval. The
        polynomial expansions used are the same as those in `i1`, but
        they are not multiplied by the dominant exponential factor.
    
        This function is a wrapper for the Cephes [1]_ routine `i1e`. `i1e`
        is useful for large arguments `x`: for these, `i1` quickly overflows.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        In the following example `i1` returns infinity whereas `i1e` still returns
        a finite number.
    
        >>> from scipy.special import i1, i1e
        >>> i1(1000.), i1e(1000.)
        (inf, 0.01261093025692863)
    
        Calculate the function at several points by providing a NumPy array or
        list for `x`:
    
        >>> import numpy as np
        >>> i1e(np.array([-2., 0., 6.]))
        array([-0.21526929,  0.        ,  0.15205146])
    
        Plot the function between -10 and 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> y = i1e(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def inv_boxcox(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    inv_boxcox(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    inv_boxcox(y, lmbda, out=None)
    
    Compute the inverse of the Box-Cox transformation.
    
    Find ``x`` such that::
    
        y = (x**lmbda - 1) / lmbda  if lmbda != 0
            log(x)                  if lmbda == 0
    
    Parameters
    ----------
    y : array_like
        Data to be transformed.
    lmbda : array_like
        Power parameter of the Box-Cox transform.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    x : scalar or ndarray
        Transformed data.
    
    Notes
    -----
    
    .. versionadded:: 0.16.0
    
    Examples
    --------
    >>> from scipy.special import boxcox, inv_boxcox
    >>> y = boxcox([1, 4, 10], 2.5)
    >>> inv_boxcox(y, 2.5)
    array([1., 4., 10.])
    """
    pass

def inv_boxcox1p(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    inv_boxcox1p(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    inv_boxcox1p(y, lmbda, out=None)
    
    Compute the inverse of the Box-Cox transformation.
    
    Find ``x`` such that::
    
        y = ((1+x)**lmbda - 1) / lmbda  if lmbda != 0
            log(1+x)                    if lmbda == 0
    
    Parameters
    ----------
    y : array_like
        Data to be transformed.
    lmbda : array_like
        Power parameter of the Box-Cox transform.
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    x : scalar or ndarray
        Transformed data.
    
    Notes
    -----
    
    .. versionadded:: 0.16.0
    
    Examples
    --------
    >>> from scipy.special import boxcox1p, inv_boxcox1p
    >>> y = boxcox1p([1, 4, 10], 2.5)
    >>> inv_boxcox1p(y, 2.5)
    array([1., 4., 10.])
    """
    pass

def it2i0k0(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    it2i0k0(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        it2i0k0(x, out=None)
    
        Integrals related to modified Bessel functions of order 0.
    
        Computes the integrals
    
        .. math::
    
            \int_0^x \frac{I_0(t) - 1}{t} dt \\
            \int_x^\infty \frac{K_0(t)}{t} dt.
    
        Parameters
        ----------
        x : array_like
            Values at which to evaluate the integrals.
        out : tuple of ndarrays, optional
            Optional output arrays for the function results.
    
        Returns
        -------
        ii0 : scalar or ndarray
            The integral for `i0`
        ik0 : scalar or ndarray
            The integral for `k0`
    
        References
        ----------
        .. [1] S. Zhang and J.M. Jin, "Computation of Special Functions",
               Wiley 1996
    
        Examples
        --------
        Evaluate the functions at one point.
    
        >>> from scipy.special import it2i0k0
        >>> int_i, int_k = it2i0k0(1.)
        >>> int_i, int_k
        (0.12897944249456852, 0.2085182909001295)
    
        Evaluate the functions at several points.
    
        >>> import numpy as np
        >>> points = np.array([0.5, 1.5, 3.])
        >>> int_i, int_k = it2i0k0(points)
        >>> int_i, int_k
        (array([0.03149527, 0.30187149, 1.50012461]),
         array([0.66575102, 0.0823715 , 0.00823631]))
    
        Plot the functions from 0 to 5.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 5., 1000)
        >>> int_i, int_k = it2i0k0(x)
        >>> ax.plot(x, int_i, label=r"$\int_0^x \frac{I_0(t)-1}{t}\,dt$")
        >>> ax.plot(x, int_k, label=r"$\int_x^{\infty} \frac{K_0(t)}{t}\,dt$")
        >>> ax.legend()
        >>> ax.set_ylim(0, 10)
        >>> plt.show()
    """
    pass

def it2j0y0(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    it2j0y0(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        it2j0y0(x, out=None)
    
        Integrals related to Bessel functions of the first kind of order 0.
    
        Computes the integrals
    
        .. math::
    
            \int_0^x \frac{1 - J_0(t)}{t} dt \\
            \int_x^\infty \frac{Y_0(t)}{t} dt.
    
        For more on :math:`J_0` and :math:`Y_0` see `j0` and `y0`.
    
        Parameters
        ----------
        x : array_like
            Values at which to evaluate the integrals.
        out : tuple of ndarrays, optional
            Optional output arrays for the function results.
    
        Returns
        -------
        ij0 : scalar or ndarray
            The integral for `j0`
        iy0 : scalar or ndarray
            The integral for `y0`
    
        References
        ----------
        .. [1] S. Zhang and J.M. Jin, "Computation of Special Functions",
               Wiley 1996
    
        Examples
        --------
        Evaluate the functions at one point.
    
        >>> from scipy.special import it2j0y0
        >>> int_j, int_y = it2j0y0(1.)
        >>> int_j, int_y
        (0.12116524699506871, 0.39527290169929336)
    
        Evaluate the functions at several points.
    
        >>> import numpy as np
        >>> points = np.array([0.5, 1.5, 3.])
        >>> int_j, int_y = it2j0y0(points)
        >>> int_j, int_y
        (array([0.03100699, 0.26227724, 0.85614669]),
         array([ 0.26968854,  0.29769696, -0.02987272]))
    
        Plot the functions from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> int_j, int_y = it2j0y0(x)
        >>> ax.plot(x, int_j, label=r"$\int_0^x \frac{1-J_0(t)}{t}\,dt$")
        >>> ax.plot(x, int_y, label=r"$\int_x^{\infty} \frac{Y_0(t)}{t}\,dt$")
        >>> ax.legend()
        >>> ax.set_ylim(-2.5, 2.5)
        >>> plt.show()
    """
    pass

def it2struve0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    it2struve0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        it2struve0(x, out=None)
    
        Integral related to the Struve function of order 0.
    
        Returns the integral,
    
        .. math::
            \int_x^\infty \frac{H_0(t)}{t}\,dt
    
        where :math:`H_0` is the Struve function of order 0.
    
        Parameters
        ----------
        x : array_like
            Lower limit of integration.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            The value of the integral.
    
        See Also
        --------
        struve
    
        Notes
        -----
        Wrapper for a Fortran routine created by Shanjie Zhang and Jianming
        Jin [1]_.
    
        References
        ----------
        .. [1] Zhang, Shanjie and Jin, Jianming. "Computation of Special
               Functions", John Wiley and Sons, 1996.
               https://people.sc.fsu.edu/~jburkardt/f_src/special_functions/special_functions.html
    
        Examples
        --------
        Evaluate the function at one point.
    
        >>> import numpy as np
        >>> from scipy.special import it2struve0
        >>> it2struve0(1.)
        0.9571973506383524
    
        Evaluate the function at several points by supplying
        an array for `x`.
    
        >>> points = np.array([1., 2., 3.5])
        >>> it2struve0(points)
        array([0.95719735, 0.46909296, 0.10366042])
    
        Plot the function from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(-10., 10., 1000)
        >>> it2struve0_values = it2struve0(x)
        >>> fig, ax = plt.subplots()
        >>> ax.plot(x, it2struve0_values)
        >>> ax.set_xlabel(r'$x$')
        >>> ax.set_ylabel(r'$\int_x^{\infty}\frac{H_0(t)}{t}\,dt$')
        >>> plt.show()
    """
    pass

def itairy(x, out1=None, out2=None, out3=None, out4=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    itairy(x[, out1, out2, out3, out4], / [, out=(None, None, None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        itairy(x, out=None)
    
        Integrals of Airy functions
    
        Calculates the integrals of Airy functions from 0 to `x`.
    
        Parameters
        ----------
    
        x : array_like
            Upper limit of integration (float).
        out : tuple of ndarray, optional
            Optional output arrays for the function values
    
        Returns
        -------
        Apt : scalar or ndarray
            Integral of Ai(t) from 0 to x.
        Bpt : scalar or ndarray
            Integral of Bi(t) from 0 to x.
        Ant : scalar or ndarray
            Integral of Ai(-t) from 0 to x.
        Bnt : scalar or ndarray
            Integral of Bi(-t) from 0 to x.
    
        Notes
        -----
    
        Wrapper for a Fortran routine created by Shanjie Zhang and Jianming
        Jin [1]_.
    
        References
        ----------
    
        .. [1] Zhang, Shanjie and Jin, Jianming. "Computation of Special
               Functions", John Wiley and Sons, 1996.
               https://people.sc.fsu.edu/~jburkardt/f_src/special_functions/special_functions.html
    
        Examples
        --------
        Compute the functions at ``x=1.``.
    
        >>> import numpy as np
        >>> from scipy.special import itairy
        >>> import matplotlib.pyplot as plt
        >>> apt, bpt, ant, bnt = itairy(1.)
        >>> apt, bpt, ant, bnt
        (0.23631734191710949,
         0.8727691167380077,
         0.46567398346706845,
         0.3730050096342943)
    
        Compute the functions at several points by providing a NumPy array for `x`.
    
        >>> x = np.array([1., 1.5, 2.5, 5])
        >>> apt, bpt, ant, bnt = itairy(x)
        >>> apt, bpt, ant, bnt
        (array([0.23631734, 0.28678675, 0.324638  , 0.33328759]),
         array([  0.87276912,   1.62470809,   5.20906691, 321.47831857]),
         array([0.46567398, 0.72232876, 0.93187776, 0.7178822 ]),
         array([ 0.37300501,  0.35038814, -0.02812939,  0.15873094]))
    
        Plot the functions from -10 to 10.
    
        >>> x = np.linspace(-10, 10, 500)
        >>> apt, bpt, ant, bnt = itairy(x)
        >>> fig, ax = plt.subplots(figsize=(6, 5))
        >>> ax.plot(x, apt, label=r"$\int_0^x\, Ai(t)\, dt$")
        >>> ax.plot(x, bpt, ls="dashed", label=r"$\int_0^x\, Bi(t)\, dt$")
        >>> ax.plot(x, ant, ls="dashdot", label=r"$\int_0^x\, Ai(-t)\, dt$")
        >>> ax.plot(x, bnt, ls="dotted", label=r"$\int_0^x\, Bi(-t)\, dt$")
        >>> ax.set_ylim(-2, 1.5)
        >>> ax.legend(loc="lower right")
        >>> plt.show()
    """
    pass

def iti0k0(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    iti0k0(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        iti0k0(x, out=None)
    
        Integrals of modified Bessel functions of order 0.
    
        Computes the integrals
    
        .. math::
    
            \int_0^x I_0(t) dt \\
            \int_0^x K_0(t) dt.
    
        For more on :math:`I_0` and :math:`K_0` see `i0` and `k0`.
    
        Parameters
        ----------
        x : array_like
            Values at which to evaluate the integrals.
        out : tuple of ndarrays, optional
            Optional output arrays for the function results.
    
        Returns
        -------
        ii0 : scalar or ndarray
            The integral for `i0`
        ik0 : scalar or ndarray
            The integral for `k0`
    
        References
        ----------
        .. [1] S. Zhang and J.M. Jin, "Computation of Special Functions",
               Wiley 1996
    
        Examples
        --------
        Evaluate the functions at one point.
    
        >>> from scipy.special import iti0k0
        >>> int_i, int_k = iti0k0(1.)
        >>> int_i, int_k
        (1.0865210970235892, 1.2425098486237771)
    
        Evaluate the functions at several points.
    
        >>> import numpy as np
        >>> points = np.array([0., 1.5, 3.])
        >>> int_i, int_k = iti0k0(points)
        >>> int_i, int_k
        (array([0.        , 1.80606937, 6.16096149]),
         array([0.        , 1.39458246, 1.53994809]))
    
        Plot the functions from 0 to 5.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 5., 1000)
        >>> int_i, int_k = iti0k0(x)
        >>> ax.plot(x, int_i, label=r"$\int_0^x I_0(t)\,dt$")
        >>> ax.plot(x, int_k, label=r"$\int_0^x K_0(t)\,dt$")
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def itj0y0(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    itj0y0(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        itj0y0(x, out=None)
    
        Integrals of Bessel functions of the first kind of order 0.
    
        Computes the integrals
    
        .. math::
    
            \int_0^x J_0(t) dt \\
            \int_0^x Y_0(t) dt.
    
        For more on :math:`J_0` and :math:`Y_0` see `j0` and `y0`.
    
        Parameters
        ----------
        x : array_like
            Values at which to evaluate the integrals.
        out : tuple of ndarrays, optional
            Optional output arrays for the function results.
    
        Returns
        -------
        ij0 : scalar or ndarray
            The integral of `j0`
        iy0 : scalar or ndarray
            The integral of `y0`
    
        References
        ----------
        .. [1] S. Zhang and J.M. Jin, "Computation of Special Functions",
               Wiley 1996
    
        Examples
        --------
        Evaluate the functions at one point.
    
        >>> from scipy.special import itj0y0
        >>> int_j, int_y = itj0y0(1.)
        >>> int_j, int_y
        (0.9197304100897596, -0.637069376607422)
    
        Evaluate the functions at several points.
    
        >>> import numpy as np
        >>> points = np.array([0., 1.5, 3.])
        >>> int_j, int_y = itj0y0(points)
        >>> int_j, int_y
        (array([0.        , 1.24144951, 1.38756725]),
         array([ 0.        , -0.51175903,  0.19765826]))
    
        Plot the functions from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> int_j, int_y = itj0y0(x)
        >>> ax.plot(x, int_j, label=r"$\int_0^x J_0(t)\,dt$")
        >>> ax.plot(x, int_y, label=r"$\int_0^x Y_0(t)\,dt$")
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def itmodstruve0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    itmodstruve0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        itmodstruve0(x, out=None)
    
        Integral of the modified Struve function of order 0.
    
        .. math::
            I = \int_0^x L_0(t)\,dt
    
        Parameters
        ----------
        x : array_like
            Upper limit of integration (float).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            The integral of :math:`L_0` from 0 to `x`.
    
        See Also
        --------
        modstruve: Modified Struve function which is integrated by this function
    
        Notes
        -----
        Wrapper for a Fortran routine created by Shanjie Zhang and Jianming
        Jin [1]_.
    
        References
        ----------
        .. [1] Zhang, Shanjie and Jin, Jianming. "Computation of Special
               Functions", John Wiley and Sons, 1996.
               https://people.sc.fsu.edu/~jburkardt/f_src/special_functions/special_functions.html
    
        Examples
        --------
        Evaluate the function at one point.
    
        >>> import numpy as np
        >>> from scipy.special import itmodstruve0
        >>> itmodstruve0(1.)
        0.3364726286440384
    
        Evaluate the function at several points by supplying
        an array for `x`.
    
        >>> points = np.array([1., 2., 3.5])
        >>> itmodstruve0(points)
        array([0.33647263, 1.588285  , 7.60382578])
    
        Plot the function from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(-10., 10., 1000)
        >>> itmodstruve0_values = itmodstruve0(x)
        >>> fig, ax = plt.subplots()
        >>> ax.plot(x, itmodstruve0_values)
        >>> ax.set_xlabel(r'$x$')
        >>> ax.set_ylabel(r'$\int_0^xL_0(t)\,dt$')
        >>> plt.show()
    """
    pass

def itstruve0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    itstruve0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        itstruve0(x, out=None)
    
        Integral of the Struve function of order 0.
    
        .. math::
            I = \int_0^x H_0(t)\,dt
    
        Parameters
        ----------
        x : array_like
            Upper limit of integration (float).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        I : scalar or ndarray
            The integral of :math:`H_0` from 0 to `x`.
    
        See Also
        --------
        struve: Function which is integrated by this function
    
        Notes
        -----
        Wrapper for a Fortran routine created by Shanjie Zhang and Jianming
        Jin [1]_.
    
        References
        ----------
        .. [1] Zhang, Shanjie and Jin, Jianming. "Computation of Special
               Functions", John Wiley and Sons, 1996.
               https://people.sc.fsu.edu/~jburkardt/f_src/special_functions/special_functions.html
    
        Examples
        --------
        Evaluate the function at one point.
    
        >>> import numpy as np
        >>> from scipy.special import itstruve0
        >>> itstruve0(1.)
        0.30109042670805547
    
        Evaluate the function at several points by supplying
        an array for `x`.
    
        >>> points = np.array([1., 2., 3.5])
        >>> itstruve0(points)
        array([0.30109043, 1.01870116, 1.96804581])
    
        Plot the function from -20 to 20.
    
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(-20., 20., 1000)
        >>> istruve0_values = itstruve0(x)
        >>> fig, ax = plt.subplots()
        >>> ax.plot(x, istruve0_values)
        >>> ax.set_xlabel(r'$x$')
        >>> ax.set_ylabel(r'$\int_0^{x}H_0(t)\,dt$')
        >>> plt.show()
    """
    pass

def iv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    iv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        iv(v, z, out=None)
    
        Modified Bessel function of the first kind of real order.
    
        Parameters
        ----------
        v : array_like
            Order. If `z` is of real type and negative, `v` must be integer
            valued.
        z : array_like of float or complex
            Argument.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the modified Bessel function.
    
        See Also
        --------
        ive : This function with leading exponential behavior stripped off.
        i0 : Faster version of this function for order 0.
        i1 : Faster version of this function for order 1.
    
        Notes
        -----
        For real `z` and :math:`v \in [-50, 50]`, the evaluation is carried out
        using Temme's method [1]_.  For larger orders, uniform asymptotic
        expansions are applied.
    
        For complex `z` and positive `v`, the AMOS [2]_ `zbesi` routine is
        called. It uses a power series for small `z`, the asymptotic expansion
        for large `abs(z)`, the Miller algorithm normalized by the Wronskian
        and a Neumann series for intermediate magnitudes, and the uniform
        asymptotic expansions for :math:`I_v(z)` and :math:`J_v(z)` for large
        orders. Backward recurrence is used to generate sequences or reduce
        orders when necessary.
    
        The calculations above are done in the right half plane and continued
        into the left half plane by the formula,
    
        .. math:: I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)
    
        (valid when the real part of `z` is positive).  For negative `v`, the
        formula
    
        .. math:: I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)
    
        is used, where :math:`K_v(z)` is the modified Bessel function of the
        second kind, evaluated using the AMOS routine `zbesk`.
    
        References
        ----------
        .. [1] Temme, Journal of Computational Physics, vol 21, 343 (1976)
        .. [2] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Evaluate the function of order 0 at one point.
    
        >>> from scipy.special import iv
        >>> iv(0, 1.)
        1.2660658777520084
    
        Evaluate the function at one point for different orders.
    
        >>> iv(0, 1.), iv(1, 1.), iv(1.5, 1.)
        (1.2660658777520084, 0.565159103992485, 0.2935253263474798)
    
        The evaluation for different orders can be carried out in one call by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> iv([0, 1, 1.5], 1.)
        array([1.26606588, 0.5651591 , 0.29352533])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> import numpy as np
        >>> points = np.array([-2., 0., 3.])
        >>> iv(0, points)
        array([2.2795853 , 1.        , 4.88079259])
    
        If `z` is an array, the order parameter `v` must be broadcastable to
        the correct shape if different orders shall be computed in one call.
        To calculate the orders 0 and 1 for an 1D array:
    
        >>> orders = np.array([[0], [1]])
        >>> orders.shape
        (2, 1)
    
        >>> iv(orders, points)
        array([[ 2.2795853 ,  1.        ,  4.88079259],
               [-1.59063685,  0.        ,  3.95337022]])
    
        Plot the functions of order 0 to 3 from -5 to 5.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-5., 5., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, iv(i, x), label=f'$I_{i!r}$')
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def ive(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ive(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ive(v, z, out=None)
    
        Exponentially scaled modified Bessel function of the first kind.
    
        Defined as::
    
            ive(v, z) = iv(v, z) * exp(-abs(z.real))
    
        For imaginary numbers without a real part, returns the unscaled
        Bessel function of the first kind `iv`.
    
        Parameters
        ----------
        v : array_like of float
            Order.
        z : array_like of float or complex
            Argument.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Values of the exponentially scaled modified Bessel function.
    
        See Also
        --------
        iv: Modified Bessel function of the first kind
        i0e: Faster implementation of this function for order 0
        i1e: Faster implementation of this function for order 1
    
        Notes
        -----
        For positive `v`, the AMOS [1]_ `zbesi` routine is called. It uses a
        power series for small `z`, the asymptotic expansion for large
        `abs(z)`, the Miller algorithm normalized by the Wronskian and a
        Neumann series for intermediate magnitudes, and the uniform asymptotic
        expansions for :math:`I_v(z)` and :math:`J_v(z)` for large orders.
        Backward recurrence is used to generate sequences or reduce orders when
        necessary.
    
        The calculations above are done in the right half plane and continued
        into the left half plane by the formula,
    
        .. math:: I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)
    
        (valid when the real part of `z` is positive).  For negative `v`, the
        formula
    
        .. math:: I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)
    
        is used, where :math:`K_v(z)` is the modified Bessel function of the
        second kind, evaluated using the AMOS routine `zbesk`.
    
        `ive` is useful for large arguments `z`: for these, `iv` easily overflows,
        while `ive` does not due to the exponential scaling.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        In the following example `iv` returns infinity whereas `ive` still returns
        a finite number.
    
        >>> from scipy.special import iv, ive
        >>> import numpy as np
        >>> import matplotlib.pyplot as plt
        >>> iv(3, 1000.), ive(3, 1000.)
        (inf, 0.01256056218254712)
    
        Evaluate the function at one point for different orders by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> ive([0, 1, 1.5], 1.)
        array([0.46575961, 0.20791042, 0.10798193])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> points = np.array([-2., 0., 3.])
        >>> ive(0, points)
        array([0.30850832, 1.        , 0.24300035])
    
        Evaluate the function at several points for different orders by
        providing arrays for both `v` for `z`. Both arrays have to be
        broadcastable to the correct shape. To calculate the orders 0, 1
        and 2 for a 1D array of points:
    
        >>> ive([[0], [1], [2]], points)
        array([[ 0.30850832,  1.        ,  0.24300035],
               [-0.21526929,  0.        ,  0.19682671],
               [ 0.09323903,  0.        ,  0.11178255]])
    
        Plot the functions of order 0 to 3 from -5 to 5.
    
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-5., 5., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, ive(i, x), label=fr'$I_{i!r}(z)\cdot e^{{-|z|}}$')
        >>> ax.legend()
        >>> ax.set_xlabel(r"$z$")
        >>> plt.show()
    """
    pass

def j0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    j0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        j0(x, out=None)
    
        Bessel function of the first kind of order 0.
    
        Parameters
        ----------
        x : array_like
            Argument (float).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        J : scalar or ndarray
            Value of the Bessel function of the first kind of order 0 at `x`.
    
        See Also
        --------
        jv : Bessel function of real order and complex argument.
        spherical_jn : spherical Bessel functions.
    
        Notes
        -----
        The domain is divided into the intervals [0, 5] and (5, infinity). In the
        first interval the following rational approximation is used:
    
        .. math::
    
            J_0(x) \approx (w - r_1^2)(w - r_2^2) \frac{P_3(w)}{Q_8(w)},
    
        where :math:`w = x^2` and :math:`r_1`, :math:`r_2` are the zeros of
        :math:`J_0`, and :math:`P_3` and :math:`Q_8` are polynomials of degrees 3
        and 8, respectively.
    
        In the second interval, the Hankel asymptotic expansion is employed with
        two rational functions of degree 6/6 and 7/7.
    
        This function is a wrapper for the Cephes [1]_ routine `j0`.
        It should not be confused with the spherical Bessel functions (see
        `spherical_jn`).
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import j0
        >>> j0(1.)
        0.7651976865579665
    
        Calculate the function at several points:
    
        >>> import numpy as np
        >>> j0(np.array([-2., 0., 4.]))
        array([ 0.22389078,  1.        , -0.39714981])
    
        Plot the function from -20 to 20.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-20., 20., 1000)
        >>> y = j0(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def j1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    j1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        j1(x, out=None)
    
        Bessel function of the first kind of order 1.
    
        Parameters
        ----------
        x : array_like
            Argument (float).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        J : scalar or ndarray
            Value of the Bessel function of the first kind of order 1 at `x`.
    
        See Also
        --------
        jv: Bessel function of the first kind
        spherical_jn: spherical Bessel functions.
    
        Notes
        -----
        The domain is divided into the intervals [0, 8] and (8, infinity). In the
        first interval a 24 term Chebyshev expansion is used. In the second, the
        asymptotic trigonometric representation is employed using two rational
        functions of degree 5/5.
    
        This function is a wrapper for the Cephes [1]_ routine `j1`.
        It should not be confused with the spherical Bessel functions (see
        `spherical_jn`).
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import j1
        >>> j1(1.)
        0.44005058574493355
    
        Calculate the function at several points:
    
        >>> import numpy as np
        >>> j1(np.array([-2., 0., 4.]))
        array([-0.57672481,  0.        , -0.06604333])
    
        Plot the function from -20 to 20.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-20., 20., 1000)
        >>> y = j1(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def jn(*args, **kwargs): # real signature unknown
    """
    jv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        jv(v, z, out=None)
    
        Bessel function of the first kind of real order and complex argument.
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        J : scalar or ndarray
            Value of the Bessel function, :math:`J_v(z)`.
    
        See Also
        --------
        jve : :math:`J_v` with leading exponential behavior stripped off.
        spherical_jn : spherical Bessel functions.
        j0 : faster version of this function for order 0.
        j1 : faster version of this function for order 1.
    
        Notes
        -----
        For positive `v` values, the computation is carried out using the AMOS
        [1]_ `zbesj` routine, which exploits the connection to the modified
        Bessel function :math:`I_v`,
    
        .. math::
            J_v(z) = \exp(v\pi\imath/2) I_v(-\imath z)\qquad (\Im z > 0)
    
            J_v(z) = \exp(-v\pi\imath/2) I_v(\imath z)\qquad (\Im z < 0)
    
        For negative `v` values the formula,
    
        .. math:: J_{-v}(z) = J_v(z) \cos(\pi v) - Y_v(z) \sin(\pi v)
    
        is used, where :math:`Y_v(z)` is the Bessel function of the second
        kind, computed using the AMOS routine `zbesy`.  Note that the second
        term is exactly zero for integer `v`; to improve accuracy the second
        term is explicitly omitted for `v` values such that `v = floor(v)`.
    
        Not to be confused with the spherical Bessel functions (see `spherical_jn`).
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Evaluate the function of order 0 at one point.
    
        >>> from scipy.special import jv
        >>> jv(0, 1.)
        0.7651976865579666
    
        Evaluate the function at one point for different orders.
    
        >>> jv(0, 1.), jv(1, 1.), jv(1.5, 1.)
        (0.7651976865579666, 0.44005058574493355, 0.24029783912342725)
    
        The evaluation for different orders can be carried out in one call by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> jv([0, 1, 1.5], 1.)
        array([0.76519769, 0.44005059, 0.24029784])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> import numpy as np
        >>> points = np.array([-2., 0., 3.])
        >>> jv(0, points)
        array([ 0.22389078,  1.        , -0.26005195])
    
        If `z` is an array, the order parameter `v` must be broadcastable to
        the correct shape if different orders shall be computed in one call.
        To calculate the orders 0 and 1 for an 1D array:
    
        >>> orders = np.array([[0], [1]])
        >>> orders.shape
        (2, 1)
    
        >>> jv(orders, points)
        array([[ 0.22389078,  1.        , -0.26005195],
               [-0.57672481,  0.        ,  0.33905896]])
    
        Plot the functions of order 0 to 3 from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, jv(i, x), label=f'$J_{i!r}$')
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def jv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    jv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        jv(v, z, out=None)
    
        Bessel function of the first kind of real order and complex argument.
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        J : scalar or ndarray
            Value of the Bessel function, :math:`J_v(z)`.
    
        See Also
        --------
        jve : :math:`J_v` with leading exponential behavior stripped off.
        spherical_jn : spherical Bessel functions.
        j0 : faster version of this function for order 0.
        j1 : faster version of this function for order 1.
    
        Notes
        -----
        For positive `v` values, the computation is carried out using the AMOS
        [1]_ `zbesj` routine, which exploits the connection to the modified
        Bessel function :math:`I_v`,
    
        .. math::
            J_v(z) = \exp(v\pi\imath/2) I_v(-\imath z)\qquad (\Im z > 0)
    
            J_v(z) = \exp(-v\pi\imath/2) I_v(\imath z)\qquad (\Im z < 0)
    
        For negative `v` values the formula,
    
        .. math:: J_{-v}(z) = J_v(z) \cos(\pi v) - Y_v(z) \sin(\pi v)
    
        is used, where :math:`Y_v(z)` is the Bessel function of the second
        kind, computed using the AMOS routine `zbesy`.  Note that the second
        term is exactly zero for integer `v`; to improve accuracy the second
        term is explicitly omitted for `v` values such that `v = floor(v)`.
    
        Not to be confused with the spherical Bessel functions (see `spherical_jn`).
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Evaluate the function of order 0 at one point.
    
        >>> from scipy.special import jv
        >>> jv(0, 1.)
        0.7651976865579666
    
        Evaluate the function at one point for different orders.
    
        >>> jv(0, 1.), jv(1, 1.), jv(1.5, 1.)
        (0.7651976865579666, 0.44005058574493355, 0.24029783912342725)
    
        The evaluation for different orders can be carried out in one call by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> jv([0, 1, 1.5], 1.)
        array([0.76519769, 0.44005059, 0.24029784])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> import numpy as np
        >>> points = np.array([-2., 0., 3.])
        >>> jv(0, points)
        array([ 0.22389078,  1.        , -0.26005195])
    
        If `z` is an array, the order parameter `v` must be broadcastable to
        the correct shape if different orders shall be computed in one call.
        To calculate the orders 0 and 1 for an 1D array:
    
        >>> orders = np.array([[0], [1]])
        >>> orders.shape
        (2, 1)
    
        >>> jv(orders, points)
        array([[ 0.22389078,  1.        , -0.26005195],
               [-0.57672481,  0.        ,  0.33905896]])
    
        Plot the functions of order 0 to 3 from -10 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, jv(i, x), label=f'$J_{i!r}$')
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def jve(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    jve(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        jve(v, z, out=None)
    
        Exponentially scaled Bessel function of the first kind of order `v`.
    
        Defined as::
    
            jve(v, z) = jv(v, z) * exp(-abs(z.imag))
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        J : scalar or ndarray
            Value of the exponentially scaled Bessel function.
    
        See Also
        --------
        jv: Unscaled Bessel function of the first kind
    
        Notes
        -----
        For positive `v` values, the computation is carried out using the AMOS
        [1]_ `zbesj` routine, which exploits the connection to the modified
        Bessel function :math:`I_v`,
    
        .. math::
            J_v(z) = \exp(v\pi\imath/2) I_v(-\imath z)\qquad (\Im z > 0)
    
            J_v(z) = \exp(-v\pi\imath/2) I_v(\imath z)\qquad (\Im z < 0)
    
        For negative `v` values the formula,
    
        .. math:: J_{-v}(z) = J_v(z) \cos(\pi v) - Y_v(z) \sin(\pi v)
    
        is used, where :math:`Y_v(z)` is the Bessel function of the second
        kind, computed using the AMOS routine `zbesy`.  Note that the second
        term is exactly zero for integer `v`; to improve accuracy the second
        term is explicitly omitted for `v` values such that `v = floor(v)`.
    
        Exponentially scaled Bessel functions are useful for large arguments `z`:
        for these, the unscaled Bessel functions can easily under-or overflow.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Compare the output of `jv` and `jve` for large complex arguments for `z`
        by computing their values for order ``v=1`` at ``z=1000j``. We see that
        `jv` overflows but `jve` returns a finite number:
    
        >>> import numpy as np
        >>> from scipy.special import jv, jve
        >>> v = 1
        >>> z = 1000j
        >>> jv(v, z), jve(v, z)
        ((inf+infj), (7.721967686709077e-19+0.012610930256928629j))
    
        For real arguments for `z`, `jve` returns the same as `jv`.
    
        >>> v, z = 1, 1000
        >>> jv(v, z), jve(v, z)
        (0.004728311907089523, 0.004728311907089523)
    
        The function can be evaluated for several orders at the same time by
        providing a list or NumPy array for `v`:
    
        >>> jve([1, 3, 5], 1j)
        array([1.27304208e-17+2.07910415e-01j, -4.99352086e-19-8.15530777e-03j,
               6.11480940e-21+9.98657141e-05j])
    
        In the same way, the function can be evaluated at several points in one
        call by providing a list or NumPy array for `z`:
    
        >>> jve(1, np.array([1j, 2j, 3j]))
        array([1.27308412e-17+0.20791042j, 1.31814423e-17+0.21526929j,
               1.20521602e-17+0.19682671j])
    
        It is also possible to evaluate several orders at several points
        at the same time by providing arrays for `v` and `z` with
        compatible shapes for broadcasting. Compute `jve` for two different orders
        `v` and three points `z` resulting in a 2x3 array.
    
        >>> v = np.array([[1], [3]])
        >>> z = np.array([1j, 2j, 3j])
        >>> v.shape, z.shape
        ((2, 1), (3,))
    
        >>> jve(v, z)
        array([[1.27304208e-17+0.20791042j,  1.31810070e-17+0.21526929j,
                1.20517622e-17+0.19682671j],
               [-4.99352086e-19-0.00815531j, -1.76289571e-18-0.02879122j,
                -2.92578784e-18-0.04778332j]])
    """
    pass

def k0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    k0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        k0(x, out=None)
    
        Modified Bessel function of the second kind of order 0, :math:`K_0`.
    
        This function is also sometimes referred to as the modified Bessel
        function of the third kind of order 0.
    
        Parameters
        ----------
        x : array_like
            Argument (float).
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the modified Bessel function :math:`K_0` at `x`.
    
        See Also
        --------
        kv: Modified Bessel function of the second kind of any order
        k0e: Exponentially scaled modified Bessel function of the second kind
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 2] and (2, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `k0`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import k0
        >>> k0(1.)
        0.42102443824070823
    
        Calculate the function at several points:
    
        >>> import numpy as np
        >>> k0(np.array([0.5, 2., 3.]))
        array([0.92441907, 0.11389387, 0.0347395 ])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = k0(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def k0e(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    k0e(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        k0e(x, out=None)
    
        Exponentially scaled modified Bessel function K of order 0
    
        Defined as::
    
            k0e(x) = exp(x) * k0(x).
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the exponentially scaled modified Bessel function K of order
            0 at `x`.
    
        See Also
        --------
        kv: Modified Bessel function of the second kind of any order
        k0: Modified Bessel function of the second kind
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 2] and (2, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `k0e`. `k0e` is
        useful for large arguments: for these, `k0` easily underflows.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        In the following example `k0` returns 0 whereas `k0e` still returns a
        useful finite number:
    
        >>> from scipy.special import k0, k0e
        >>> k0(1000.), k0e(1000)
        (0., 0.03962832160075422)
    
        Calculate the function at several points by providing a NumPy array or
        list for `x`:
    
        >>> import numpy as np
        >>> k0e(np.array([0.5, 2., 3.]))
        array([1.52410939, 0.84156822, 0.6977616 ])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = k0e(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def k1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    k1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        k1(x, out=None)
    
        Modified Bessel function of the second kind of order 1, :math:`K_1(x)`.
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the modified Bessel function K of order 1 at `x`.
    
        See Also
        --------
        kv: Modified Bessel function of the second kind of any order
        k1e: Exponentially scaled modified Bessel function K of order 1
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 2] and (2, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `k1`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import k1
        >>> k1(1.)
        0.6019072301972346
    
        Calculate the function at several points:
    
        >>> import numpy as np
        >>> k1(np.array([0.5, 2., 3.]))
        array([1.65644112, 0.13986588, 0.04015643])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = k1(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def k1e(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    k1e(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        k1e(x, out=None)
    
        Exponentially scaled modified Bessel function K of order 1
    
        Defined as::
    
            k1e(x) = exp(x) * k1(x)
    
        Parameters
        ----------
        x : array_like
            Argument (float)
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        K : scalar or ndarray
            Value of the exponentially scaled modified Bessel function K of order
            1 at `x`.
    
        See Also
        --------
        kv: Modified Bessel function of the second kind of any order
        k1: Modified Bessel function of the second kind of order 1
    
        Notes
        -----
        The range is partitioned into the two intervals [0, 2] and (2, infinity).
        Chebyshev polynomial expansions are employed in each interval.
    
        This function is a wrapper for the Cephes [1]_ routine `k1e`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        In the following example `k1` returns 0 whereas `k1e` still returns a
        useful floating point number.
    
        >>> from scipy.special import k1, k1e
        >>> k1(1000.), k1e(1000.)
        (0., 0.03964813081296021)
    
        Calculate the function at several points by providing a NumPy array or
        list for `x`:
    
        >>> import numpy as np
        >>> k1e(np.array([0.5, 2., 3.]))
        array([2.73100971, 1.03347685, 0.80656348])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = k1e(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def kei(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kei(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        kei(x, out=None)
    
        Kelvin function kei.
    
        Defined as
    
        .. math::
    
            \mathrm{kei}(x) = \Im[K_0(x e^{\pi i / 4})]
    
        where :math:`K_0` is the modified Bessel function of the second
        kind (see `kv`). See [dlmf]_ for more details.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the Kelvin function.
    
        See Also
        --------
        ker : the corresponding real part
        keip : the derivative of kei
        kv : modified Bessel function of the second kind
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10.61
    
        Examples
        --------
        It can be expressed using the modified Bessel function of the
        second kind.
    
        >>> import numpy as np
        >>> import scipy.special as sc
        >>> x = np.array([1.0, 2.0, 3.0, 4.0])
        >>> sc.kv(0, x * np.exp(np.pi * 1j / 4)).imag
        array([-0.49499464, -0.20240007, -0.05112188,  0.0021984 ])
        >>> sc.kei(x)
        array([-0.49499464, -0.20240007, -0.05112188,  0.0021984 ])
    """
    pass

def keip(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    keip(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        keip(x, out=None)
    
        Derivative of the Kelvin function kei.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            The values of the derivative of kei.
    
        See Also
        --------
        kei
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10#PT5
    """
    pass

def kelvin(x, out1=None, out2=None, out3=None, out4=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kelvin(x[, out1, out2, out3, out4], / [, out=(None, None, None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        kelvin(x, out=None)
    
        Kelvin functions as complex numbers
    
        Parameters
        ----------
        x : array_like
            Argument
        out : tuple of ndarray, optional
            Optional output arrays for the function values
    
        Returns
        -------
        Be, Ke, Bep, Kep : 4-tuple of scalar or ndarray
            The tuple (Be, Ke, Bep, Kep) contains complex numbers
            representing the real and imaginary Kelvin functions and their
            derivatives evaluated at `x`.  For example, kelvin(x)[0].real =
            ber x and kelvin(x)[0].imag = bei x with similar relationships
            for ker and kei.
    """
    pass

def ker(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ker(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        ker(x, out=None)
    
        Kelvin function ker.
    
        Defined as
    
        .. math::
    
            \mathrm{ker}(x) = \Re[K_0(x e^{\pi i / 4})]
    
        Where :math:`K_0` is the modified Bessel function of the second
        kind (see `kv`). See [dlmf]_ for more details.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the Kelvin function.
    
        See Also
        --------
        kei : the corresponding imaginary part
        kerp : the derivative of ker
        kv : modified Bessel function of the second kind
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10.61
    
        Examples
        --------
        It can be expressed using the modified Bessel function of the
        second kind.
    
        >>> import numpy as np
        >>> import scipy.special as sc
        >>> x = np.array([1.0, 2.0, 3.0, 4.0])
        >>> sc.kv(0, x * np.exp(np.pi * 1j / 4)).real
        array([ 0.28670621, -0.04166451, -0.06702923, -0.03617885])
        >>> sc.ker(x)
        array([ 0.28670621, -0.04166451, -0.06702923, -0.03617885])
    """
    pass

def kerp(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kerp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        kerp(x, out=None)
    
        Derivative of the Kelvin function ker.
    
        Parameters
        ----------
        x : array_like
            Real argument.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the derivative of ker.
    
        See Also
        --------
        ker
    
        References
        ----------
        .. [dlmf] NIST, Digital Library of Mathematical Functions,
            https://dlmf.nist.gov/10#PT5
    """
    pass

def kl_div(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kl_div(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    kl_div(x, y, out=None)
    
    Elementwise function for computing Kullback-Leibler divergence.
    
    .. math::
    
        \mathrm{kl\_div}(x, y) =
          \begin{cases}
            x \log(x / y) - x + y & x > 0, y > 0 \\
            y & x = 0, y \ge 0 \\
            \infty & \text{otherwise}
          \end{cases}
    
    Parameters
    ----------
    x, y : array_like
        Real arguments
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the Kullback-Liebler divergence.
    
    See Also
    --------
    entr, rel_entr, scipy.stats.entropy
    
    Notes
    -----
    .. versionadded:: 0.15.0
    
    This function is non-negative and is jointly convex in `x` and `y`.
    
    The origin of this function is in convex programming; see [1]_ for
    details. This is why the function contains the extra :math:`-x
    + y` terms over what might be expected from the Kullback-Leibler
    divergence. For a version of the function without the extra terms,
    see `rel_entr`.
    
    References
    ----------
    .. [1] Boyd, Stephen and Lieven Vandenberghe. *Convex optimization*.
           Cambridge University Press, 2004.
           :doi:`https://doi.org/10.1017/CBO9780511804441`
    """
    pass

def kn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    kn(n, x, out=None)
    
    Modified Bessel function of the second kind of integer order `n`
    
    Returns the modified Bessel function of the second kind for integer order
    `n` at real `z`.
    
    These are also sometimes called functions of the third kind, Basset
    functions, or Macdonald functions.
    
    Parameters
    ----------
    n : array_like of int
        Order of Bessel functions (floats will truncate with a warning)
    x : array_like of float
        Argument at which to evaluate the Bessel functions
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        Value of the Modified Bessel function of the second kind,
        :math:`K_n(x)`.
    
    See Also
    --------
    kv : Same function, but accepts real order and complex argument
    kvp : Derivative of this function
    
    Notes
    -----
    Wrapper for AMOS [1]_ routine `zbesk`.  For a discussion of the
    algorithm used, see [2]_ and the references therein.
    
    References
    ----------
    .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
           of a Complex Argument and Nonnegative Order",
           http://netlib.org/amos/
    .. [2] Donald E. Amos, "Algorithm 644: A portable package for Bessel
           functions of a complex argument and nonnegative order", ACM
           TOMS Vol. 12 Issue 3, Sept. 1986, p. 265
    
    Examples
    --------
    Plot the function of several orders for real input:
    
    >>> import numpy as np
    >>> from scipy.special import kn
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(0, 5, 1000)
    >>> for N in range(6):
    ...     plt.plot(x, kn(N, x), label='$K_{}(x)$'.format(N))
    >>> plt.ylim(0, 10)
    >>> plt.legend()
    >>> plt.title(r'Modified Bessel function of the second kind $K_n(x)$')
    >>> plt.show()
    
    Calculate for a single value at multiple orders:
    
    >>> kn([4, 5, 6], 1)
    array([   44.23241585,   360.9605896 ,  3653.83831186])
    """
    pass

def kolmogi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kolmogi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    kolmogi(p, out=None)
    
    Inverse Survival Function of Kolmogorov distribution
    
    It is the inverse function to `kolmogorov`.
    Returns y such that ``kolmogorov(y) == p``.
    
    Parameters
    ----------
    p : float array_like
        Probability
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value(s) of kolmogi(p)
    
    See Also
    --------
    kolmogorov : The Survival Function for the distribution
    scipy.stats.kstwobign : Provides the functionality as a continuous distribution
    smirnov, smirnovi : Functions for the one-sided distribution
    
    Notes
    -----
    `kolmogorov` is used by `stats.kstest` in the application of the
    Kolmogorov-Smirnov Goodness of Fit test. For historical reasons this
    function is exposed in `scpy.special`, but the recommended way to achieve
    the most accurate CDF/SF/PDF/PPF/ISF computations is to use the
    `stats.kstwobign` distribution.
    
    Examples
    --------
    >>> from scipy.special import kolmogi
    >>> kolmogi([0, 0.1, 0.25, 0.5, 0.75, 0.9, 1.0])
    array([        inf,  1.22384787,  1.01918472,  0.82757356,  0.67644769,
            0.57117327,  0.        ])
    """
    pass

def kolmogorov(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kolmogorov(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    kolmogorov(y, out=None)
    
    Complementary cumulative distribution (Survival Function) function of
    Kolmogorov distribution.
    
    Returns the complementary cumulative distribution function of
    Kolmogorov's limiting distribution (``D_n*\sqrt(n)`` as n goes to infinity)
    of a two-sided test for equality between an empirical and a theoretical
    distribution. It is equal to the (limit as n->infinity of the)
    probability that ``sqrt(n) * max absolute deviation > y``.
    
    Parameters
    ----------
    y : float array_like
      Absolute deviation between the Empirical CDF (ECDF) and the target CDF,
      multiplied by sqrt(n).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value(s) of kolmogorov(y)
    
    See Also
    --------
    kolmogi : The Inverse Survival Function for the distribution
    scipy.stats.kstwobign : Provides the functionality as a continuous distribution
    smirnov, smirnovi : Functions for the one-sided distribution
    
    Notes
    -----
    `kolmogorov` is used by `stats.kstest` in the application of the
    Kolmogorov-Smirnov Goodness of Fit test. For historical reasons this
    function is exposed in `scpy.special`, but the recommended way to achieve
    the most accurate CDF/SF/PDF/PPF/ISF computations is to use the
    `stats.kstwobign` distribution.
    
    Examples
    --------
    Show the probability of a gap at least as big as 0, 0.5 and 1.0.
    
    >>> import numpy as np
    >>> from scipy.special import kolmogorov
    >>> from scipy.stats import kstwobign
    >>> kolmogorov([0, 0.5, 1.0])
    array([ 1.        ,  0.96394524,  0.26999967])
    
    Compare a sample of size 1000 drawn from a Laplace(0, 1) distribution against
    the target distribution, a Normal(0, 1) distribution.
    
    >>> from scipy.stats import norm, laplace
    >>> rng = np.random.default_rng()
    >>> n = 1000
    >>> lap01 = laplace(0, 1)
    >>> x = np.sort(lap01.rvs(n, random_state=rng))
    >>> np.mean(x), np.std(x)
    (-0.05841730131499543, 1.3968109101997568)
    
    Construct the Empirical CDF and the K-S statistic Dn.
    
    >>> target = norm(0,1)  # Normal mean 0, stddev 1
    >>> cdfs = target.cdf(x)
    >>> ecdfs = np.arange(n+1, dtype=float)/n
    >>> gaps = np.column_stack([cdfs - ecdfs[:n], ecdfs[1:] - cdfs])
    >>> Dn = np.max(gaps)
    >>> Kn = np.sqrt(n) * Dn
    >>> print('Dn=%f, sqrt(n)*Dn=%f' % (Dn, Kn))
    Dn=0.043363, sqrt(n)*Dn=1.371265
    >>> print(chr(10).join(['For a sample of size n drawn from a N(0, 1) distribution:',
    ...   ' the approximate Kolmogorov probability that sqrt(n)*Dn>=%f is %f' %
    ...    (Kn, kolmogorov(Kn)),
    ...   ' the approximate Kolmogorov probability that sqrt(n)*Dn<=%f is %f' %
    ...    (Kn, kstwobign.cdf(Kn))]))
    For a sample of size n drawn from a N(0, 1) distribution:
     the approximate Kolmogorov probability that sqrt(n)*Dn>=1.371265 is 0.046533
     the approximate Kolmogorov probability that sqrt(n)*Dn<=1.371265 is 0.953467
    
    Plot the Empirical CDF against the target N(0, 1) CDF.
    
    >>> import matplotlib.pyplot as plt
    >>> plt.step(np.concatenate([[-3], x]), ecdfs, where='post', label='Empirical CDF')
    >>> x3 = np.linspace(-3, 3, 100)
    >>> plt.plot(x3, target.cdf(x3), label='CDF for N(0, 1)')
    >>> plt.ylim([0, 1]); plt.grid(True); plt.legend();
    >>> # Add vertical lines marking Dn+ and Dn-
    >>> iminus, iplus = np.argmax(gaps, axis=0)
    >>> plt.vlines([x[iminus]], ecdfs[iminus], cdfs[iminus],
    ...            color='r', linestyle='dashed', lw=4)
    >>> plt.vlines([x[iplus]], cdfs[iplus], ecdfs[iplus+1],
    ...            color='r', linestyle='dashed', lw=4)
    >>> plt.show()
    """
    pass

def kv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        kv(v, z, out=None)
    
        Modified Bessel function of the second kind of real order `v`
    
        Returns the modified Bessel function of the second kind for real order
        `v` at complex `z`.
    
        These are also sometimes called functions of the third kind, Basset
        functions, or Macdonald functions.  They are defined as those solutions
        of the modified Bessel equation for which,
    
        .. math::
            K_v(x) \sim \sqrt{\pi/(2x)} \exp(-x)
    
        as :math:`x \to \infty` [3]_.
    
        Parameters
        ----------
        v : array_like of float
            Order of Bessel functions
        z : array_like of complex
            Argument at which to evaluate the Bessel functions
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            The results. Note that input must be of complex type to get complex
            output, e.g. ``kv(3, -2+0j)`` instead of ``kv(3, -2)``.
    
        See Also
        --------
        kve : This function with leading exponential behavior stripped off.
        kvp : Derivative of this function
    
        Notes
        -----
        Wrapper for AMOS [1]_ routine `zbesk`.  For a discussion of the
        algorithm used, see [2]_ and the references therein.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
        .. [2] Donald E. Amos, "Algorithm 644: A portable package for Bessel
               functions of a complex argument and nonnegative order", ACM
               TOMS Vol. 12 Issue 3, Sept. 1986, p. 265
        .. [3] NIST Digital Library of Mathematical Functions,
               Eq. 10.25.E3. https://dlmf.nist.gov/10.25.E3
    
        Examples
        --------
        Plot the function of several orders for real input:
    
        >>> import numpy as np
        >>> from scipy.special import kv
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(0, 5, 1000)
        >>> for N in np.linspace(0, 6, 5):
        ...     plt.plot(x, kv(N, x), label='$K_{{{}}}(x)$'.format(N))
        >>> plt.ylim(0, 10)
        >>> plt.legend()
        >>> plt.title(r'Modified Bessel function of the second kind $K_\nu(x)$')
        >>> plt.show()
    
        Calculate for a single value at multiple orders:
    
        >>> kv([4, 4.5, 5], 1+2j)
        array([ 0.1992+2.3892j,  2.3493+3.6j   ,  7.2827+3.8104j])
    """
    pass

def kve(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    kve(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        kve(v, z, out=None)
    
        Exponentially scaled modified Bessel function of the second kind.
    
        Returns the exponentially scaled, modified Bessel function of the
        second kind (sometimes called the third kind) for real order `v` at
        complex `z`::
    
            kve(v, z) = kv(v, z) * exp(z)
    
        Parameters
        ----------
        v : array_like of float
            Order of Bessel functions
        z : array_like of complex
            Argument at which to evaluate the Bessel functions
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            The exponentially scaled modified Bessel function of the second kind.
    
        See Also
        --------
        kv : This function without exponential scaling.
        k0e : Faster version of this function for order 0.
        k1e : Faster version of this function for order 1.
    
        Notes
        -----
        Wrapper for AMOS [1]_ routine `zbesk`.  For a discussion of the
        algorithm used, see [2]_ and the references therein.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
        .. [2] Donald E. Amos, "Algorithm 644: A portable package for Bessel
               functions of a complex argument and nonnegative order", ACM
               TOMS Vol. 12 Issue 3, Sept. 1986, p. 265
    
        Examples
        --------
        In the following example `kv` returns 0 whereas `kve` still returns
        a useful finite number.
    
        >>> import numpy as np
        >>> from scipy.special import kv, kve
        >>> import matplotlib.pyplot as plt
        >>> kv(3, 1000.), kve(3, 1000.)
        (0.0, 0.03980696128440973)
    
        Evaluate the function at one point for different orders by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> kve([0, 1, 1.5], 1.)
        array([1.14446308, 1.63615349, 2.50662827])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> points = np.array([1., 3., 10.])
        >>> kve(0, points)
        array([1.14446308, 0.6977616 , 0.39163193])
    
        Evaluate the function at several points for different orders by
        providing arrays for both `v` for `z`. Both arrays have to be
        broadcastable to the correct shape. To calculate the orders 0, 1
        and 2 for a 1D array of points:
    
        >>> kve([[0], [1], [2]], points)
        array([[1.14446308, 0.6977616 , 0.39163193],
               [1.63615349, 0.80656348, 0.41076657],
               [4.41677005, 1.23547058, 0.47378525]])
    
        Plot the functions of order 0 to 3 from 0 to 5.
    
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 5., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, kve(i, x), label=fr'$K_{i!r}(z)\cdot e^z$')
        >>> ax.legend()
        >>> ax.set_xlabel(r"$z$")
        >>> ax.set_ylim(0, 4)
        >>> ax.set_xlim(0, 5)
        >>> plt.show()
    """
    pass

def log1p(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    log1p(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    log1p(x, out=None)
    
    Calculates log(1 + x) for use when `x` is near zero.
    
    Parameters
    ----------
    x : array_like
        Real or complex valued input.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        Values of ``log(1 + x)``.
    
    See Also
    --------
    expm1, cosm1
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It is more accurate than using ``log(1 + x)`` directly for ``x``
    near 0. Note that in the below example ``1 + 1e-17 == 1`` to
    double precision.
    
    >>> sc.log1p(1e-17)
    1e-17
    >>> np.log(1 + 1e-17)
    0.0
    """
    pass

def loggamma(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    loggamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        loggamma(z, out=None)
    
        Principal branch of the logarithm of the gamma function.
    
        Defined to be :math:`\log(\Gamma(x))` for :math:`x > 0` and
        extended to the complex plane by analytic continuation. The
        function has a single branch cut on the negative real axis.
    
        .. versionadded:: 0.18.0
    
        Parameters
        ----------
        z : array_like
            Values in the complex plane at which to compute ``loggamma``
        out : ndarray, optional
            Output array for computed values of ``loggamma``
    
        Returns
        -------
        loggamma : scalar or ndarray
            Values of ``loggamma`` at z.
    
        See Also
        --------
        gammaln : logarithm of the absolute value of the gamma function
        gammasgn : sign of the gamma function
    
        Notes
        -----
        It is not generally true that :math:`\log\Gamma(z) =
        \log(\Gamma(z))`, though the real parts of the functions do
        agree. The benefit of not defining `loggamma` as
        :math:`\log(\Gamma(z))` is that the latter function has a
        complicated branch cut structure whereas `loggamma` is analytic
        except for on the negative real axis.
    
        The identities
    
        .. math::
          \exp(\log\Gamma(z)) &= \Gamma(z) \\
          \log\Gamma(z + 1) &= \log(z) + \log\Gamma(z)
    
        make `loggamma` useful for working in complex logspace.
    
        On the real line `loggamma` is related to `gammaln` via
        ``exp(loggamma(x + 0j)) = gammasgn(x)*exp(gammaln(x))``, up to
        rounding error.
    
        The implementation here is based on [hare1997]_.
    
        References
        ----------
        .. [hare1997] D.E.G. Hare,
          *Computing the Principal Branch of log-Gamma*,
          Journal of Algorithms, Volume 25, Issue 2, November 1997, pages 221-236.
    """
    pass

def logit(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    logit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        logit(x, out=None)
    
        Logit ufunc for ndarrays.
    
        The logit function is defined as logit(p) = log(p/(1-p)).
        Note that logit(0) = -inf, logit(1) = inf, and logit(p)
        for p<0 or p>1 yields nan.
    
        Parameters
        ----------
        x : ndarray
            The ndarray to apply logit to element-wise.
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            An ndarray of the same shape as x. Its entries
            are logit of the corresponding entry of x.
    
        See Also
        --------
        expit
    
        Notes
        -----
        As a ufunc logit takes a number of optional
        keyword arguments. For more information
        see `ufuncs <https://docs.scipy.org/doc/numpy/reference/ufuncs.html>`_
    
        .. versionadded:: 0.10.0
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import logit, expit
    
        >>> logit([0, 0.25, 0.5, 0.75, 1])
        array([       -inf, -1.09861229,  0.        ,  1.09861229,         inf])
    
        `expit` is the inverse of `logit`:
    
        >>> expit(logit([0.1, 0.75, 0.999]))
        array([ 0.1  ,  0.75 ,  0.999])
    
        Plot logit(x) for x in [0, 1]:
    
        >>> import matplotlib.pyplot as plt
        >>> x = np.linspace(0, 1, 501)
        >>> y = logit(x)
        >>> plt.plot(x, y)
        >>> plt.grid()
        >>> plt.ylim(-6, 6)
        >>> plt.xlabel('x')
        >>> plt.title('logit(x)')
        >>> plt.show()
    """
    pass

def log_expit(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    log_expit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        log_expit(x, out=None)
    
        Logarithm of the logistic sigmoid function.
    
        The SciPy implementation of the logistic sigmoid function is
        `scipy.special.expit`, so this function is called ``log_expit``.
    
        The function is mathematically equivalent to ``log(expit(x))``, but
        is formulated to avoid loss of precision for inputs with large
        (positive or negative) magnitude.
    
        Parameters
        ----------
        x : array_like
            The values to apply ``log_expit`` to element-wise.
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        out : scalar or ndarray
            The computed values, an ndarray of the same shape as ``x``.
    
        See Also
        --------
        expit
    
        Notes
        -----
        As a ufunc, ``log_expit`` takes a number of optional keyword arguments.
        For more information see
        `ufuncs <https://docs.scipy.org/doc/numpy/reference/ufuncs.html>`_
    
        .. versionadded:: 1.8.0
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import log_expit, expit
    
        >>> log_expit([-3.0, 0.25, 2.5, 5.0])
        array([-3.04858735, -0.57593942, -0.07888973, -0.00671535])
    
        Large negative values:
    
        >>> log_expit([-100, -500, -1000])
        array([ -100.,  -500., -1000.])
    
        Note that ``expit(-1000)`` returns 0, so the naive implementation
        ``log(expit(-1000))`` return ``-inf``.
    
        Large positive values:
    
        >>> log_expit([29, 120, 400])
        array([-2.54366565e-013, -7.66764807e-053, -1.91516960e-174])
    
        Compare that to the naive implementation:
    
        >>> np.log(expit([29, 120, 400]))
        array([-2.54463117e-13,  0.00000000e+00,  0.00000000e+00])
    
        The first value is accurate to only 3 digits, and the larger inputs
        lose all precision and return 0.
    """
    pass

def log_ndtr(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    log_ndtr(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    log_ndtr(x, out=None)
    
    Logarithm of Gaussian cumulative distribution function.
    
    Returns the log of the area under the standard Gaussian probability
    density function, integrated from minus infinity to `x`::
    
        log(1/sqrt(2*pi) * integral(exp(-t**2 / 2), t=-inf..x))
    
    Parameters
    ----------
    x : array_like, real or complex
        Argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value of the log of the normal CDF evaluated at `x`
    
    See Also
    --------
    erf
    erfc
    scipy.stats.norm
    ndtr
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import log_ndtr, ndtr
    
    The benefit of ``log_ndtr(x)`` over the naive implementation
    ``np.log(ndtr(x))`` is most evident with moderate to large positive
    values of ``x``:
    
    >>> x = np.array([6, 7, 9, 12, 15, 25])
    >>> log_ndtr(x)
    array([-9.86587646e-010, -1.27981254e-012, -1.12858841e-019,
           -1.77648211e-033, -3.67096620e-051, -3.05669671e-138])
    
    The results of the naive calculation for the moderate ``x`` values
    have only 5 or 6 correct significant digits. For values of ``x``
    greater than approximately 8.3, the naive expression returns 0:
    
    >>> np.log(ndtr(x))
    array([-9.86587701e-10, -1.27986510e-12,  0.00000000e+00,
            0.00000000e+00,  0.00000000e+00,  0.00000000e+00])
    """
    pass

def log_wright_bessel(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    log_wright_bessel(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        log_wright_bessel(a, b, x, out=None)
    
        Natural logarithm of Wright's generalized Bessel function, see `wright_bessel`.
        This function comes in handy in particular for large values of x.
    
        Parameters
        ----------
        a : array_like of float
            a >= 0
        b : array_like of float
            b >= 0
        x : array_like of float
            x >= 0
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Value of the logarithm of Wright's generalized Bessel function
    
        Notes
        -----
        Due to the complexity of the function with its three parameters, only
        non-negative arguments are implemented.
    
        .. versionadded:: 1.14.0
    
        Examples
        --------
        >>> from scipy.special import log_wright_bessel
        >>> a, b, x = 1.5, 1.1, 2.5
        >>> log_wright_bessel(a, b, x)
        1.1947654935299217
    """
    pass

def lpmv(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    lpmv(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    lpmv(m, v, x, out=None)
    
    Associated Legendre function of integer order and real degree.
    
    Defined as
    
    .. math::
    
        P_v^m = (-1)^m (1 - x^2)^{m/2} \frac{d^m}{dx^m} P_v(x)
    
    where
    
    .. math::
    
        P_v = \sum_{k = 0}^\infty \frac{(-v)_k (v + 1)_k}{(k!)^2}
                \left(\frac{1 - x}{2}\right)^k
    
    is the Legendre function of the first kind. Here :math:`(\cdot)_k`
    is the Pochhammer symbol; see `poch`.
    
    Parameters
    ----------
    m : array_like
        Order (int or float). If passed a float not equal to an
        integer the function returns NaN.
    v : array_like
        Degree (float).
    x : array_like
        Argument (float). Must have ``|x| <= 1``.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    pmv : scalar or ndarray
        Value of the associated Legendre function.
    
    See Also
    --------
    lpmn : Compute the associated Legendre function for all orders
           ``0, ..., m`` and degrees ``0, ..., n``.
    clpmn : Compute the associated Legendre function at complex
            arguments.
    
    Notes
    -----
    Note that this implementation includes the Condon-Shortley phase.
    
    References
    ----------
    .. [1] Zhang, Jin, "Computation of Special Functions", John Wiley
           and Sons, Inc, 1996.
    """
    pass

def mathieu_a(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_a(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_a(m, q, out=None)
    
        Characteristic value of even Mathieu functions
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Characteristic value for the even solution, ``ce_m(z, q)``, of
            Mathieu's equation.
    
        See Also
        --------
        mathieu_b, mathieu_cem, mathieu_sem
    """
    pass

def mathieu_b(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_b(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_b(m, q, out=None)
    
        Characteristic value of odd Mathieu functions
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Characteristic value for the odd solution, ``se_m(z, q)``, of Mathieu's
            equation.
    
        See Also
        --------
        mathieu_a, mathieu_cem, mathieu_sem
    """
    pass

def mathieu_cem(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_cem(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_cem(m, q, x, out=None)
    
        Even Mathieu function and its derivative
    
        Returns the even Mathieu function, ``ce_m(x, q)``, of order `m` and
        parameter `q` evaluated at `x` (given in degrees).  Also returns the
        derivative with respect to `x` of ce_m(x, q)
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_a, mathieu_b, mathieu_sem
    
        Notes
        -----
        The even Mathieu functions are the solutions to Mathieu's differential equation
    
        .. math::
    
            \frac{d^2y}{dx^2} + (a_m - 2q \cos(2x))y = 0
    
        for which the characteristic number :math:`a_m` (calculated with `mathieu_a`)
        results in an odd, periodic solution :math:`y(x)` with period 180 degrees
        (for even :math:`m`) or 360 degrees (for odd :math:`m`).
    
        References
        ----------
        .. [1] 'Mathieu function'. *Wikipedia*.
               https://en.wikipedia.org/wiki/Mathieu_function
    
        Examples
        --------
        Plot even Mathieu functions of orders ``2`` and ``4``.
    
        >>> import numpy as np
        >>> from scipy import special
        >>> import matplotlib.pyplot as plt
        >>> m = np.asarray([2, 4])
        >>> q = 50
        >>> x = np.linspace(-180, 180, 300)[:, np.newaxis]
        >>> y, _ = special.mathieu_cem(m, q, x)
        >>> plt.plot(x, y)
        >>> plt.xlabel('x (degrees)')
        >>> plt.ylabel('y')
        >>> plt.legend(('m = 2', 'm = 4'))
    
        Because the orders ``2`` and
        ``4`` are even, the period of each function is 180 degrees.
    """
    pass

def mathieu_modcem1(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_modcem1(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_modcem1(m, q, x, out=None)
    
        Even modified Mathieu function of the first kind and its derivative
    
        Evaluates the even modified Mathieu function of the first kind,
        ``Mc1m(x, q)``, and its derivative at `x` for order `m` and parameter
        `q`.
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_modsem1
    """
    pass

def mathieu_modcem2(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_modcem2(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_modcem2(m, q, x, out=None)
    
        Even modified Mathieu function of the second kind and its derivative
    
        Evaluates the even modified Mathieu function of the second kind,
        Mc2m(x, q), and its derivative at `x` (given in degrees) for order `m`
        and parameter `q`.
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_modsem2
    """
    pass

def mathieu_modsem1(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_modsem1(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_modsem1(m, q, x, out=None)
    
        Odd modified Mathieu function of the first kind and its derivative
    
        Evaluates the odd modified Mathieu function of the first kind,
        Ms1m(x, q), and its derivative at `x` (given in degrees) for order `m`
        and parameter `q`.
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_modcem1
    """
    pass

def mathieu_modsem2(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_modsem2(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_modsem2(m, q, x, out=None)
    
        Odd modified Mathieu function of the second kind and its derivative
    
        Evaluates the odd modified Mathieu function of the second kind,
        Ms2m(x, q), and its derivative at `x` (given in degrees) for order `m`
        and parameter q.
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_modcem2
    """
    pass

def mathieu_sem(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    mathieu_sem(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        mathieu_sem(m, q, x, out=None)
    
        Odd Mathieu function and its derivative
    
        Returns the odd Mathieu function, se_m(x, q), of order `m` and
        parameter `q` evaluated at `x` (given in degrees).  Also returns the
        derivative with respect to `x` of se_m(x, q).
    
        Parameters
        ----------
        m : array_like
            Order of the function
        q : array_like
            Parameter of the function
        x : array_like
            Argument of the function, *given in degrees, not radians*.
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        y : scalar or ndarray
            Value of the function
        yp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        mathieu_a, mathieu_b, mathieu_cem
    
        Notes
        -----
        Odd Mathieu functions are the solutions to Mathieu's differential equation
    
        .. math::
    
            \frac{d^2y}{dx^2} + (b_m - 2q \cos(2x))y = 0
    
        for which the characteristic number :math:`b_m` (calculated with `mathieu_b`)
        results in an odd, periodic solution :math:`y(x)` with period 180 degrees
        (for even :math:`m`) or 360 degrees (for odd :math:`m`).
    
        References
        ----------
        .. [1] 'Mathieu function'. *Wikipedia*.
               https://en.wikipedia.org/wiki/Mathieu_function
    
        Examples
        --------
        Plot odd Mathieu functions of orders ``2`` and ``4``.
    
        >>> import numpy as np
        >>> from scipy import special
        >>> import matplotlib.pyplot as plt
        >>> m = np.asarray([2, 4])
        >>> q = 50
        >>> x = np.linspace(-180, 180, 300)[:, np.newaxis]
        >>> y, _ = special.mathieu_sem(m, q, x)
        >>> plt.plot(x, y)
        >>> plt.xlabel('x (degrees)')
        >>> plt.ylabel('y')
        >>> plt.legend(('m = 2', 'm = 4'))
    
        Because the orders ``2`` and
        ``4`` are even, the period of each function is 180 degrees.
    """
    pass

def modfresnelm(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    modfresnelm(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        modfresnelm(x, out=None)
    
        Modified Fresnel negative integrals
    
        Parameters
        ----------
        x : array_like
            Function argument
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        fm : scalar or ndarray
            Integral ``F_-(x)``: ``integral(exp(-1j*t*t), t=x..inf)``
        km : scalar or ndarray
            Integral ``K_-(x)``: ``1/sqrt(pi)*exp(1j*(x*x+pi/4))*fp``
    
        See Also
        --------
        modfresnelp
    """
    pass

def modfresnelp(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    modfresnelp(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        modfresnelp(x, out=None)
    
        Modified Fresnel positive integrals
    
        Parameters
        ----------
        x : array_like
            Function argument
        out : tuple of ndarray, optional
            Optional output arrays for the function results
    
        Returns
        -------
        fp : scalar or ndarray
            Integral ``F_+(x)``: ``integral(exp(1j*t*t), t=x..inf)``
        kp : scalar or ndarray
            Integral ``K_+(x)``: ``1/sqrt(pi)*exp(-1j*(x*x+pi/4))*fp``
    
        See Also
        --------
        modfresnelm
    """
    pass

def modstruve(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    modstruve(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        modstruve(v, x, out=None)
    
        Modified Struve function.
    
        Return the value of the modified Struve function of order `v` at `x`.  The
        modified Struve function is defined as,
    
        .. math::
            L_v(x) = -\imath \exp(-\pi\imath v/2) H_v(\imath x),
    
        where :math:`H_v` is the Struve function.
    
        Parameters
        ----------
        v : array_like
            Order of the modified Struve function (float).
        x : array_like
            Argument of the Struve function (float; must be positive unless `v` is
            an integer).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        L : scalar or ndarray
            Value of the modified Struve function of order `v` at `x`.
    
        See Also
        --------
        struve
    
        Notes
        -----
        Three methods discussed in [1]_ are used to evaluate the function:
    
        - power series
        - expansion in Bessel functions (if :math:`|x| < |v| + 20`)
        - asymptotic large-x expansion (if :math:`x \geq 0.7v + 12`)
    
        Rounding errors are estimated based on the largest terms in the sums, and
        the result associated with the smallest error is returned.
    
        References
        ----------
        .. [1] NIST Digital Library of Mathematical Functions
               https://dlmf.nist.gov/11
    
        Examples
        --------
        Calculate the modified Struve function of order 1 at 2.
    
        >>> import numpy as np
        >>> from scipy.special import modstruve
        >>> import matplotlib.pyplot as plt
        >>> modstruve(1, 2.)
        1.102759787367716
    
        Calculate the modified Struve function at 2 for orders 1, 2 and 3 by
        providing a list for the order parameter `v`.
    
        >>> modstruve([1, 2, 3], 2.)
        array([1.10275979, 0.41026079, 0.11247294])
    
        Calculate the modified Struve function of order 1 for several points
        by providing an array for `x`.
    
        >>> points = np.array([2., 5., 8.])
        >>> modstruve(1, points)
        array([  1.10275979,  23.72821578, 399.24709139])
    
        Compute the modified Struve function for several orders at several
        points by providing arrays for `v` and `z`. The arrays have to be
        broadcastable to the correct shapes.
    
        >>> orders = np.array([[1], [2], [3]])
        >>> points.shape, orders.shape
        ((3,), (3, 1))
    
        >>> modstruve(orders, points)
        array([[1.10275979e+00, 2.37282158e+01, 3.99247091e+02],
               [4.10260789e-01, 1.65535979e+01, 3.25973609e+02],
               [1.12472937e-01, 9.42430454e+00, 2.33544042e+02]])
    
        Plot the modified Struve functions of order 0 to 3 from -5 to 5.
    
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-5., 5., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, modstruve(i, x), label=f'$L_{i!r}$')
        >>> ax.legend(ncol=2)
        >>> ax.set_xlim(-5, 5)
        >>> ax.set_title(r"Modified Struve functions $L_{\nu}$")
        >>> plt.show()
    """
    pass

def nbdtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nbdtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nbdtr(k, n, p, out=None)
    
    Negative binomial cumulative distribution function.
    
    Returns the sum of the terms 0 through `k` of the negative binomial
    distribution probability mass function,
    
    .. math::
    
        F = \sum_{j=0}^k {{n + j - 1}\choose{j}} p^n (1 - p)^j.
    
    In a sequence of Bernoulli trials with individual success probabilities
    `p`, this is the probability that `k` or fewer failures precede the nth
    success.
    
    Parameters
    ----------
    k : array_like
        The maximum number of allowed failures (nonnegative int).
    n : array_like
        The target number of successes (positive int).
    p : array_like
        Probability of success in a single event (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    F : scalar or ndarray
        The probability of `k` or fewer failures before `n` successes in a
        sequence of events with individual success probability `p`.
    
    See Also
    --------
    nbdtrc : Negative binomial survival function
    nbdtrik : Negative binomial quantile function
    scipy.stats.nbinom : Negative binomial distribution
    
    Notes
    -----
    If floating point values are passed for `k` or `n`, they will be truncated
    to integers.
    
    The terms are not summed directly; instead the regularized incomplete beta
    function is employed, according to the formula,
    
    .. math::
        \mathrm{nbdtr}(k, n, p) = I_{p}(n, k + 1).
    
    Wrapper for the Cephes [1]_ routine `nbdtr`.
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. Using `nbdtr` directly can improve performance
    compared to the ``cdf`` method of `scipy.stats.nbinom` (see last example).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Compute the function for ``k=10`` and ``n=5`` at ``p=0.5``.
    
    >>> import numpy as np
    >>> from scipy.special import nbdtr
    >>> nbdtr(10, 5, 0.5)
    0.940765380859375
    
    Compute the function for ``n=10`` and ``p=0.5`` at several points by
    providing a NumPy array or list for `k`.
    
    >>> nbdtr([5, 10, 15], 10, 0.5)
    array([0.15087891, 0.58809853, 0.88523853])
    
    Plot the function for four different parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> k = np.arange(130)
    >>> n_parameters = [20, 20, 20, 80]
    >>> p_parameters = [0.2, 0.5, 0.8, 0.5]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(p_parameters, n_parameters,
    ...                            linestyles))
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> for parameter_set in parameters_list:
    ...     p, n, style = parameter_set
    ...     nbdtr_vals = nbdtr(k, n, p)
    ...     ax.plot(k, nbdtr_vals, label=rf"$n={n},\, p={p}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$k$")
    >>> ax.set_title("Negative binomial cumulative distribution function")
    >>> plt.show()
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. Using `nbdtr` directly can be much faster than
    calling the ``cdf`` method of `scipy.stats.nbinom`, especially for small
    arrays or individual values. To get the same results one must use the
    following parametrization: ``nbinom(n, p).cdf(k)=nbdtr(k, n, p)``.
    
    >>> from scipy.stats import nbinom
    >>> k, n, p = 5, 3, 0.5
    >>> nbdtr_res = nbdtr(k, n, p)  # this will often be faster than below
    >>> stats_res = nbinom(n, p).cdf(k)
    >>> stats_res, nbdtr_res  # test that results are equal
    (0.85546875, 0.85546875)
    
    `nbdtr` can evaluate different parameter sets by providing arrays with
    shapes compatible for broadcasting for `k`, `n` and `p`. Here we compute
    the function for three different `k` at four locations `p`, resulting in
    a 3x4 array.
    
    >>> k = np.array([[5], [10], [15]])
    >>> p = np.array([0.3, 0.5, 0.7, 0.9])
    >>> k.shape, p.shape
    ((3, 1), (4,))
    
    >>> nbdtr(k, 5, p)
    array([[0.15026833, 0.62304687, 0.95265101, 0.9998531 ],
           [0.48450894, 0.94076538, 0.99932777, 0.99999999],
           [0.76249222, 0.99409103, 0.99999445, 1.        ]])
    """
    pass

def nbdtrc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nbdtrc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nbdtrc(k, n, p, out=None)
    
    Negative binomial survival function.
    
    Returns the sum of the terms `k + 1` to infinity of the negative binomial
    distribution probability mass function,
    
    .. math::
    
        F = \sum_{j=k + 1}^\infty {{n + j - 1}\choose{j}} p^n (1 - p)^j.
    
    In a sequence of Bernoulli trials with individual success probabilities
    `p`, this is the probability that more than `k` failures precede the nth
    success.
    
    Parameters
    ----------
    k : array_like
        The maximum number of allowed failures (nonnegative int).
    n : array_like
        The target number of successes (positive int).
    p : array_like
        Probability of success in a single event (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    F : scalar or ndarray
        The probability of `k + 1` or more failures before `n` successes in a
        sequence of events with individual success probability `p`.
    
    See Also
    --------
    nbdtr : Negative binomial cumulative distribution function
    nbdtrik : Negative binomial percentile function
    scipy.stats.nbinom : Negative binomial distribution
    
    Notes
    -----
    If floating point values are passed for `k` or `n`, they will be truncated
    to integers.
    
    The terms are not summed directly; instead the regularized incomplete beta
    function is employed, according to the formula,
    
    .. math::
        \mathrm{nbdtrc}(k, n, p) = I_{1 - p}(k + 1, n).
    
    Wrapper for the Cephes [1]_ routine `nbdtrc`.
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. Using `nbdtrc` directly can improve performance
    compared to the ``sf`` method of `scipy.stats.nbinom` (see last example).
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Compute the function for ``k=10`` and ``n=5`` at ``p=0.5``.
    
    >>> import numpy as np
    >>> from scipy.special import nbdtrc
    >>> nbdtrc(10, 5, 0.5)
    0.059234619140624986
    
    Compute the function for ``n=10`` and ``p=0.5`` at several points by
    providing a NumPy array or list for `k`.
    
    >>> nbdtrc([5, 10, 15], 10, 0.5)
    array([0.84912109, 0.41190147, 0.11476147])
    
    Plot the function for four different parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> k = np.arange(130)
    >>> n_parameters = [20, 20, 20, 80]
    >>> p_parameters = [0.2, 0.5, 0.8, 0.5]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(p_parameters, n_parameters,
    ...                            linestyles))
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> for parameter_set in parameters_list:
    ...     p, n, style = parameter_set
    ...     nbdtrc_vals = nbdtrc(k, n, p)
    ...     ax.plot(k, nbdtrc_vals, label=rf"$n={n},\, p={p}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_xlabel("$k$")
    >>> ax.set_title("Negative binomial distribution survival function")
    >>> plt.show()
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. Using `nbdtrc` directly can be much faster than
    calling the ``sf`` method of `scipy.stats.nbinom`, especially for small
    arrays or individual values. To get the same results one must use the
    following parametrization: ``nbinom(n, p).sf(k)=nbdtrc(k, n, p)``.
    
    >>> from scipy.stats import nbinom
    >>> k, n, p = 3, 5, 0.5
    >>> nbdtr_res = nbdtrc(k, n, p)  # this will often be faster than below
    >>> stats_res = nbinom(n, p).sf(k)
    >>> stats_res, nbdtr_res  # test that results are equal
    (0.6367187499999999, 0.6367187499999999)
    
    `nbdtrc` can evaluate different parameter sets by providing arrays with
    shapes compatible for broadcasting for `k`, `n` and `p`. Here we compute
    the function for three different `k` at four locations `p`, resulting in
    a 3x4 array.
    
    >>> k = np.array([[5], [10], [15]])
    >>> p = np.array([0.3, 0.5, 0.7, 0.9])
    >>> k.shape, p.shape
    ((3, 1), (4,))
    
    >>> nbdtrc(k, 5, p)
    array([[8.49731667e-01, 3.76953125e-01, 4.73489874e-02, 1.46902600e-04],
           [5.15491059e-01, 5.92346191e-02, 6.72234070e-04, 9.29610100e-09],
           [2.37507779e-01, 5.90896606e-03, 5.55025308e-06, 3.26346760e-13]])
    """
    pass

def nbdtri(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nbdtri(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nbdtri(k, n, y, out=None)
    
    Returns the inverse with respect to the parameter `p` of
    ``y = nbdtr(k, n, p)``, the negative binomial cumulative distribution
    function.
    
    Parameters
    ----------
    k : array_like
        The maximum number of allowed failures (nonnegative int).
    n : array_like
        The target number of successes (positive int).
    y : array_like
        The probability of `k` or fewer failures before `n` successes (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    p : scalar or ndarray
        Probability of success in a single event (float) such that
        `nbdtr(k, n, p) = y`.
    
    See Also
    --------
    nbdtr : Cumulative distribution function of the negative binomial.
    nbdtrc : Negative binomial survival function.
    scipy.stats.nbinom : negative binomial distribution.
    nbdtrik : Inverse with respect to `k` of `nbdtr(k, n, p)`.
    nbdtrin : Inverse with respect to `n` of `nbdtr(k, n, p)`.
    scipy.stats.nbinom : Negative binomial distribution
    
    Notes
    -----
    Wrapper for the Cephes [1]_ routine `nbdtri`.
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. Using `nbdtri` directly can improve performance
    compared to the ``ppf`` method of `scipy.stats.nbinom`.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    `nbdtri` is the inverse of `nbdtr` with respect to `p`.
    Up to floating point errors the following holds:
    ``nbdtri(k, n, nbdtr(k, n, p))=p``.
    
    >>> import numpy as np
    >>> from scipy.special import nbdtri, nbdtr
    >>> k, n, y = 5, 10, 0.2
    >>> cdf_val = nbdtr(k, n, y)
    >>> nbdtri(k, n, cdf_val)
    0.20000000000000004
    
    Compute the function for ``k=10`` and ``n=5`` at several points by
    providing a NumPy array or list for `y`.
    
    >>> y = np.array([0.1, 0.4, 0.8])
    >>> nbdtri(3, 5, y)
    array([0.34462319, 0.51653095, 0.69677416])
    
    Plot the function for three different parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> n_parameters = [5, 20, 30, 30]
    >>> k_parameters = [20, 20, 60, 80]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(n_parameters, k_parameters, linestyles))
    >>> cdf_vals = np.linspace(0, 1, 1000)
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> for parameter_set in parameters_list:
    ...     n, k, style = parameter_set
    ...     nbdtri_vals = nbdtri(k, n, cdf_vals)
    ...     ax.plot(cdf_vals, nbdtri_vals, label=rf"$k={k},\ n={n}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_ylabel("$p$")
    >>> ax.set_xlabel("$CDF$")
    >>> title = "nbdtri: inverse of negative binomial CDF with respect to $p$"
    >>> ax.set_title(title)
    >>> plt.show()
    
    `nbdtri` can evaluate different parameter sets by providing arrays with
    shapes compatible for broadcasting for `k`, `n` and `p`. Here we compute
    the function for three different `k` at four locations `p`, resulting in
    a 3x4 array.
    
    >>> k = np.array([[5], [10], [15]])
    >>> y = np.array([0.3, 0.5, 0.7, 0.9])
    >>> k.shape, y.shape
    ((3, 1), (4,))
    
    >>> nbdtri(k, 5, y)
    array([[0.37258157, 0.45169416, 0.53249956, 0.64578407],
           [0.24588501, 0.30451981, 0.36778453, 0.46397088],
           [0.18362101, 0.22966758, 0.28054743, 0.36066188]])
    """
    pass

def nbdtrik(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nbdtrik(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nbdtrik(y, n, p, out=None)
    
    Negative binomial percentile function.
    
    Returns the inverse with respect to the parameter `k` of
    ``y = nbdtr(k, n, p)``, the negative binomial cumulative distribution
    function.
    
    Parameters
    ----------
    y : array_like
        The probability of `k` or fewer failures before `n` successes (float).
    n : array_like
        The target number of successes (positive int).
    p : array_like
        Probability of success in a single event (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    k : scalar or ndarray
        The maximum number of allowed failures such that `nbdtr(k, n, p) = y`.
    
    See Also
    --------
    nbdtr : Cumulative distribution function of the negative binomial.
    nbdtrc : Survival function of the negative binomial.
    nbdtri : Inverse with respect to `p` of `nbdtr(k, n, p)`.
    nbdtrin : Inverse with respect to `n` of `nbdtr(k, n, p)`.
    scipy.stats.nbinom : Negative binomial distribution
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfnbn`.
    
    Formula 26.5.26 of [2]_,
    
    .. math::
        \sum_{j=k + 1}^\infty {{n + j - 1}
        \choose{j}} p^n (1 - p)^j = I_{1 - p}(k + 1, n),
    
    is used to reduce calculation of the cumulative distribution function to
    that of a regularized incomplete beta :math:`I`.
    
    Computation of `k` involves a search for a value that produces the desired
    value of `y`.  The search relies on the monotonicity of `y` with `k`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    Compute the negative binomial cumulative distribution function for an
    exemplary parameter set.
    
    >>> import numpy as np
    >>> from scipy.special import nbdtr, nbdtrik
    >>> k, n, p = 5, 2, 0.5
    >>> cdf_value = nbdtr(k, n, p)
    >>> cdf_value
    0.9375
    
    Verify that `nbdtrik` recovers the original value for `k`.
    
    >>> nbdtrik(cdf_value, n, p)
    5.0
    
    Plot the function for different parameter sets.
    
    >>> import matplotlib.pyplot as plt
    >>> p_parameters = [0.2, 0.5, 0.7, 0.5]
    >>> n_parameters = [30, 30, 30, 80]
    >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot']
    >>> parameters_list = list(zip(p_parameters, n_parameters, linestyles))
    >>> cdf_vals = np.linspace(0, 1, 1000)
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> for parameter_set in parameters_list:
    ...     p, n, style = parameter_set
    ...     nbdtrik_vals = nbdtrik(cdf_vals, n, p)
    ...     ax.plot(cdf_vals, nbdtrik_vals, label=rf"$n={n},\ p={p}$",
    ...             ls=style)
    >>> ax.legend()
    >>> ax.set_ylabel("$k$")
    >>> ax.set_xlabel("$CDF$")
    >>> ax.set_title("Negative binomial percentile function")
    >>> plt.show()
    
    The negative binomial distribution is also available as
    `scipy.stats.nbinom`. The percentile function  method ``ppf``
    returns the result of `nbdtrik` rounded up to integers:
    
    >>> from scipy.stats import nbinom
    >>> q, n, p = 0.6, 5, 0.5
    >>> nbinom.ppf(q, n, p), nbdtrik(q, n, p)
    (5.0, 4.800428460273882)
    """
    pass

def nbdtrin(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nbdtrin(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nbdtrin(k, y, p, out=None)
    
    Inverse of `nbdtr` vs `n`.
    
    Returns the inverse with respect to the parameter `n` of
    ``y = nbdtr(k, n, p)``, the negative binomial cumulative distribution
    function.
    
    Parameters
    ----------
    k : array_like
        The maximum number of allowed failures (nonnegative int).
    y : array_like
        The probability of `k` or fewer failures before `n` successes (float).
    p : array_like
        Probability of success in a single event (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    n : scalar or ndarray
        The number of successes `n` such that `nbdtr(k, n, p) = y`.
    
    See Also
    --------
    nbdtr : Cumulative distribution function of the negative binomial.
    nbdtri : Inverse with respect to `p` of `nbdtr(k, n, p)`.
    nbdtrik : Inverse with respect to `k` of `nbdtr(k, n, p)`.
    
    Notes
    -----
    Wrapper for the CDFLIB [1]_ Fortran routine `cdfnbn`.
    
    Formula 26.5.26 of [2]_,
    
    .. math::
        \sum_{j=k + 1}^\infty {{n + j - 1}
        \choose{j}} p^n (1 - p)^j = I_{1 - p}(k + 1, n),
    
    is used to reduce calculation of the cumulative distribution function to
    that of a regularized incomplete beta :math:`I`.
    
    Computation of `n` involves a search for a value that produces the desired
    value of `y`.  The search relies on the monotonicity of `y` with `n`.
    
    References
    ----------
    .. [1] Barry Brown, James Lovato, and Kathy Russell,
           CDFLIB: Library of Fortran Routines for Cumulative Distribution
           Functions, Inverses, and Other Parameters.
    .. [2] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    Compute the negative binomial cumulative distribution function for an
    exemplary parameter set.
    
    >>> from scipy.special import nbdtr, nbdtrin
    >>> k, n, p = 5, 2, 0.5
    >>> cdf_value = nbdtr(k, n, p)
    >>> cdf_value
    0.9375
    
    Verify that `nbdtrin` recovers the original value for `n` up to floating
    point accuracy.
    
    >>> nbdtrin(k, cdf_value, p)
    1.999999999998137
    """
    pass

def ncfdtr(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ncfdtr(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ncfdtr(dfn, dfd, nc, f, out=None)
    
    Cumulative distribution function of the non-central F distribution.
    
    The non-central F describes the distribution of,
    
    .. math::
        Z = \frac{X/d_n}{Y/d_d}
    
    where :math:`X` and :math:`Y` are independently distributed, with
    :math:`X` distributed non-central :math:`\chi^2` with noncentrality
    parameter `nc` and :math:`d_n` degrees of freedom, and :math:`Y`
    distributed :math:`\chi^2` with :math:`d_d` degrees of freedom.
    
    Parameters
    ----------
    dfn : array_like
        Degrees of freedom of the numerator sum of squares.  Range (0, inf).
    dfd : array_like
        Degrees of freedom of the denominator sum of squares.  Range (0, inf).
    nc : array_like
        Noncentrality parameter.  Range [0, inf).
    f : array_like
        Quantiles, i.e. the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    cdf : scalar or ndarray
        The calculated CDF.  If all inputs are scalar, the return will be a
        float.  Otherwise it will be an array.
    
    See Also
    --------
    ncfdtri : Quantile function; inverse of `ncfdtr` with respect to `f`.
    ncfdtridfd : Inverse of `ncfdtr` with respect to `dfd`.
    ncfdtridfn : Inverse of `ncfdtr` with respect to `dfn`.
    ncfdtrinc : Inverse of `ncfdtr` with respect to `nc`.
    scipy.stats.ncf : Non-central F distribution.
    
    Notes
    -----
    This function calculates the CDF of the non-central f distribution using
    the Boost Math C++ library [1]_.
    
    The cumulative distribution function is computed using Formula 26.6.20 of
    [2]_:
    
    .. math::
        F(d_n, d_d, n_c, f) = \sum_{j=0}^\infty e^{-n_c/2}
        \frac{(n_c/2)^j}{j!} I_{x}(\frac{d_n}{2} + j, \frac{d_d}{2}),
    
    where :math:`I` is the regularized incomplete beta function, and
    :math:`x = f d_n/(f d_n + d_d)`.
    
    Note that argument order of `ncfdtr` is different from that of the
    similar ``cdf`` method of `scipy.stats.ncf`: `f` is the last
    parameter of `ncfdtr` but the first parameter of ``scipy.stats.ncf.cdf``.
    
    References
    ----------
    .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    .. [2] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> from scipy import stats
    >>> import matplotlib.pyplot as plt
    
    Plot the CDF of the non-central F distribution, for nc=0.  Compare with the
    F-distribution from scipy.stats:
    
    >>> x = np.linspace(-1, 8, num=500)
    >>> dfn = 3
    >>> dfd = 2
    >>> ncf_stats = stats.f.cdf(x, dfn, dfd)
    >>> ncf_special = special.ncfdtr(dfn, dfd, 0, x)
    
    >>> fig = plt.figure()
    >>> ax = fig.add_subplot(111)
    >>> ax.plot(x, ncf_stats, 'b-', lw=3)
    >>> ax.plot(x, ncf_special, 'r-')
    >>> plt.show()
    """
    pass

def ncfdtri(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ncfdtri(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ncfdtri(dfn, dfd, nc, p, out=None)
    
    Inverse with respect to `f` of the CDF of the non-central F distribution.
    
    See `ncfdtr` for more details.
    
    Parameters
    ----------
    dfn : array_like
        Degrees of freedom of the numerator sum of squares.  Range (0, inf).
    dfd : array_like
        Degrees of freedom of the denominator sum of squares.  Range (0, inf).
    nc : array_like
        Noncentrality parameter.  Range [0, inf).
    p : array_like
        Value of the cumulative distribution function.  Must be in the
        range [0, 1].
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    f : scalar or ndarray
        Quantiles, i.e., the upper limit of integration.
    
    See Also
    --------
    ncfdtr : CDF of the non-central F distribution.
    ncfdtridfd : Inverse of `ncfdtr` with respect to `dfd`.
    ncfdtridfn : Inverse of `ncfdtr` with respect to `dfn`.
    ncfdtrinc : Inverse of `ncfdtr` with respect to `nc`.
    scipy.stats.ncf : Non-central F distribution.
    
    Notes
    -----
    This function calculates the Quantile of the non-central f distribution
    using the Boost Math C++ library [1]_.
    
    Note that argument order of `ncfdtri` is different from that of the
    similar ``ppf`` method of `scipy.stats.ncf`. `p` is the last parameter
    of `ncfdtri` but the first parameter of ``scipy.stats.ncf.ppf``.
    
    References
    ----------
    .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> from scipy.special import ncfdtr, ncfdtri
    
    Compute the CDF for several values of `f`:
    
    >>> f = [0.5, 1, 1.5]
    >>> p = ncfdtr(2, 3, 1.5, f)
    >>> p
    array([ 0.20782291,  0.36107392,  0.47345752])
    
    Compute the inverse.  We recover the values of `f`, as expected:
    
    >>> ncfdtri(2, 3, 1.5, p)
    array([ 0.5,  1. ,  1.5])
    """
    pass

def ncfdtridfd(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ncfdtridfd(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ncfdtridfd(dfn, p, nc, f, out=None)
    
    Calculate degrees of freedom (denominator) for the noncentral F-distribution.
    
    This is the inverse with respect to `dfd` of `ncfdtr`.
    See `ncfdtr` for more details.
    
    Parameters
    ----------
    dfn : array_like
        Degrees of freedom of the numerator sum of squares.  Range (0, inf).
    p : array_like
        Value of the cumulative distribution function.  Must be in the
        range [0, 1].
    nc : array_like
        Noncentrality parameter.  Should be in range (0, 1e4).
    f : array_like
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    dfd : scalar or ndarray
        Degrees of freedom of the denominator sum of squares.
    
    See Also
    --------
    ncfdtr : CDF of the non-central F distribution.
    ncfdtri : Quantile function; inverse of `ncfdtr` with respect to `f`.
    ncfdtridfn : Inverse of `ncfdtr` with respect to `dfn`.
    ncfdtrinc : Inverse of `ncfdtr` with respect to `nc`.
    
    Notes
    -----
    The value of the cumulative noncentral F distribution is not necessarily
    monotone in either degrees of freedom. There thus may be two values that
    provide a given CDF value. This routine assumes monotonicity and will
    find an arbitrary one of the two values.
    
    Examples
    --------
    >>> from scipy.special import ncfdtr, ncfdtridfd
    
    Compute the CDF for several values of `dfd`:
    
    >>> dfd = [1, 2, 3]
    >>> p = ncfdtr(2, dfd, 0.25, 15)
    >>> p
    array([ 0.8097138 ,  0.93020416,  0.96787852])
    
    Compute the inverse.  We recover the values of `dfd`, as expected:
    
    >>> ncfdtridfd(2, p, 0.25, 15)
    array([ 1.,  2.,  3.])
    """
    pass

def ncfdtridfn(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ncfdtridfn(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ncfdtridfn(p, dfd, nc, f, out=None)
    
    Calculate degrees of freedom (numerator) for the noncentral F-distribution.
    
    This is the inverse with respect to `dfn` of `ncfdtr`.
    See `ncfdtr` for more details.
    
    Parameters
    ----------
    p : array_like
        Value of the cumulative distribution function. Must be in the
        range [0, 1].
    dfd : array_like
        Degrees of freedom of the denominator sum of squares. Range (0, inf).
    nc : array_like
        Noncentrality parameter.  Should be in range (0, 1e4).
    f : float
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    dfn : scalar or ndarray
        Degrees of freedom of the numerator sum of squares.
    
    See Also
    --------
    ncfdtr : CDF of the non-central F distribution.
    ncfdtri : Quantile function; inverse of `ncfdtr` with respect to `f`.
    ncfdtridfd : Inverse of `ncfdtr` with respect to `dfd`.
    ncfdtrinc : Inverse of `ncfdtr` with respect to `nc`.
    
    Notes
    -----
    The value of the cumulative noncentral F distribution is not necessarily
    monotone in either degrees of freedom. There thus may be two values that
    provide a given CDF value. This routine assumes monotonicity and will
    find an arbitrary one of the two values.
    
    Examples
    --------
    >>> from scipy.special import ncfdtr, ncfdtridfn
    
    Compute the CDF for several values of `dfn`:
    
    >>> dfn = [1, 2, 3]
    >>> p = ncfdtr(dfn, 2, 0.25, 15)
    >>> p
    array([ 0.92562363,  0.93020416,  0.93188394])
    
    Compute the inverse. We recover the values of `dfn`, as expected:
    
    >>> ncfdtridfn(p, 2, 0.25, 15)
    array([ 1.,  2.,  3.])
    """
    pass

def ncfdtrinc(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ncfdtrinc(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ncfdtrinc(dfn, dfd, p, f, out=None)
    
    Calculate non-centrality parameter for non-central F distribution.
    
    This is the inverse with respect to `nc` of `ncfdtr`.
    See `ncfdtr` for more details.
    
    Parameters
    ----------
    dfn : array_like
        Degrees of freedom of the numerator sum of squares. Range (0, inf).
    dfd : array_like
        Degrees of freedom of the denominator sum of squares. Range (0, inf).
    p : array_like
        Value of the cumulative distribution function. Must be in the
        range [0, 1].
    f : array_like
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    nc : scalar or ndarray
        Noncentrality parameter.
    
    See Also
    --------
    ncfdtr : CDF of the non-central F distribution.
    ncfdtri : Quantile function; inverse of `ncfdtr` with respect to `f`.
    ncfdtridfd : Inverse of `ncfdtr` with respect to `dfd`.
    ncfdtridfn : Inverse of `ncfdtr` with respect to `dfn`.
    
    Examples
    --------
    >>> from scipy.special import ncfdtr, ncfdtrinc
    
    Compute the CDF for several values of `nc`:
    
    >>> nc = [0.5, 1.5, 2.0]
    >>> p = ncfdtr(2, 3, nc, 15)
    >>> p
    array([ 0.96309246,  0.94327955,  0.93304098])
    
    Compute the inverse. We recover the values of `nc`, as expected:
    
    >>> ncfdtrinc(2, 3, p, 15)
    array([ 0.5,  1.5,  2. ])
    """
    pass

def nctdtr(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nctdtr(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nctdtr(df, nc, t, out=None)
    
    Cumulative distribution function of the non-central `t` distribution.
    
    Parameters
    ----------
    df : array_like
        Degrees of freedom of the distribution. Should be in range (0, inf).
    nc : array_like
        Noncentrality parameter.
    t : array_like
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    cdf : scalar or ndarray
        The calculated CDF. If all inputs are scalar, the return will be a
        float. Otherwise, it will be an array.
    
    See Also
    --------
    nctdtrit : Inverse CDF (iCDF) of the non-central t distribution.
    nctdtridf : Calculate degrees of freedom, given CDF and iCDF values.
    nctdtrinc : Calculate non-centrality parameter, given CDF iCDF values.
    
    Notes
    -----
    This function calculates the CDF of the non-central t distribution using
    the Boost Math C++ library [1]_.
    
    Note that the argument order of `nctdtr` is different from that of the
    similar ``cdf`` method of `scipy.stats.nct`: `t` is the last
    parameter of `nctdtr` but the first parameter of ``scipy.stats.nct.cdf``.
    
    References
    ----------
    .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> from scipy import stats
    >>> import matplotlib.pyplot as plt
    
    Plot the CDF of the non-central t distribution, for nc=0. Compare with the
    t-distribution from scipy.stats:
    
    >>> x = np.linspace(-5, 5, num=500)
    >>> df = 3
    >>> nct_stats = stats.t.cdf(x, df)
    >>> nct_special = special.nctdtr(df, 0, x)
    
    >>> fig = plt.figure()
    >>> ax = fig.add_subplot(111)
    >>> ax.plot(x, nct_stats, 'b-', lw=3)
    >>> ax.plot(x, nct_special, 'r-')
    >>> plt.show()
    """
    pass

def nctdtridf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nctdtridf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nctdtridf(p, nc, t, out=None)
    
    Calculate degrees of freedom for non-central t distribution.
    
    See `nctdtr` for more details.
    
    Parameters
    ----------
    p : array_like
        CDF values, in range (0, 1].
    nc : array_like
        Noncentrality parameter. Should be in range (-1e6, 1e6).
    t : array_like
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    df : scalar or ndarray
        The degrees of freedom. If all inputs are scalar, the return will be a
        float. Otherwise, it will be an array.
    
    See Also
    --------
    nctdtr :  CDF of the non-central `t` distribution.
    nctdtrit : Inverse CDF (iCDF) of the non-central t distribution.
    nctdtrinc : Calculate non-centrality parameter, given CDF iCDF values.
    
    Examples
    --------
    >>> from scipy.special import nctdtr, nctdtridf
    
    Compute the CDF for several values of `df`:
    
    >>> df = [1, 2, 3]
    >>> p = nctdtr(df, 0.25, 1)
    >>> p
    array([0.67491974, 0.716464  , 0.73349456])
    
    Compute the inverse. We recover the values of `df`, as expected:
    
    >>> nctdtridf(p, 0.25, 1)
    array([1., 2., 3.])
    """
    pass

def nctdtrinc(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nctdtrinc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nctdtrinc(df, p, t, out=None)
    
    Calculate non-centrality parameter for non-central t distribution.
    
    See `nctdtr` for more details.
    
    Parameters
    ----------
    df : array_like
        Degrees of freedom of the distribution. Should be in range (0, inf).
    p : array_like
        CDF values, in range (0, 1].
    t : array_like
        Quantiles, i.e., the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    nc : scalar or ndarray
        Noncentrality parameter
    
    See Also
    --------
    nctdtr :  CDF of the non-central `t` distribution.
    nctdtrit : Inverse CDF (iCDF) of the non-central t distribution.
    nctdtridf : Calculate degrees of freedom, given CDF and iCDF values.
    
    Examples
    --------
    >>> from scipy.special import nctdtr, nctdtrinc
    
    Compute the CDF for several values of `nc`:
    
    >>> nc = [0.5, 1.5, 2.5]
    >>> p = nctdtr(3, nc, 1.5)
    >>> p
    array([0.77569497, 0.45524533, 0.1668691 ])
    
    Compute the inverse. We recover the values of `nc`, as expected:
    
    >>> nctdtrinc(3, p, 1.5)
    array([0.5, 1.5, 2.5])
    """
    pass

def nctdtrit(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nctdtrit(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nctdtrit(df, nc, p, out=None)
    
    Inverse cumulative distribution function of the non-central t distribution.
    
    See `nctdtr` for more details.
    
    Parameters
    ----------
    df : array_like
        Degrees of freedom of the distribution. Should be in range (0, inf).
    nc : array_like
        Noncentrality parameter. Should be in range (-1e6, 1e6).
    p : array_like
        CDF values, in range (0, 1].
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    t : scalar or ndarray
        Quantiles
    
    See Also
    --------
    nctdtr :  CDF of the non-central `t` distribution.
    nctdtridf : Calculate degrees of freedom, given CDF and iCDF values.
    nctdtrinc : Calculate non-centrality parameter, given CDF iCDF values.
    
    Examples
    --------
    >>> from scipy.special import nctdtr, nctdtrit
    
    Compute the CDF for several values of `t`:
    
    >>> t = [0.5, 1, 1.5]
    >>> p = nctdtr(3, 1, t)
    >>> p
    array([0.29811049, 0.46922687, 0.6257559 ])
    
    Compute the inverse. We recover the values of `t`, as expected:
    
    >>> nctdtrit(3, 1, p)
    array([0.5, 1. , 1.5])
    """
    pass

def ndtr(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ndtr(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ndtr(x, out=None)
    
    Cumulative distribution of the standard normal distribution.
    
    Returns the area under the standard Gaussian probability
    density function, integrated from minus infinity to `x`
    
    .. math::
    
       \frac{1}{\sqrt{2\pi}} \int_{-\infty}^x \exp(-t^2/2) dt
    
    Parameters
    ----------
    x : array_like, real or complex
        Argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value of the normal CDF evaluated at `x`
    
    See Also
    --------
    log_ndtr : Logarithm of ndtr
    ndtri : Inverse of ndtr, standard normal percentile function
    erf : Error function
    erfc : 1 - erf
    scipy.stats.norm : Normal distribution
    
    Examples
    --------
    Evaluate `ndtr` at one point.
    
    >>> import numpy as np
    >>> from scipy.special import ndtr
    >>> ndtr(0.5)
    0.6914624612740131
    
    Evaluate the function at several points by providing a NumPy array
    or list for `x`.
    
    >>> ndtr([0, 0.5, 2])
    array([0.5       , 0.69146246, 0.97724987])
    
    Plot the function.
    
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-5, 5, 100)
    >>> fig, ax = plt.subplots()
    >>> ax.plot(x, ndtr(x))
    >>> ax.set_title(r"Standard normal cumulative distribution function $\Phi$")
    >>> plt.show()
    """
    pass

def ndtri(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ndtri(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ndtri(y, out=None)
    
    Inverse of `ndtr` vs x
    
    Returns the argument x for which the area under the standard normal
    probability density function (integrated from minus infinity to `x`)
    is equal to y.
    
    Parameters
    ----------
    p : array_like
        Probability
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    x : scalar or ndarray
        Value of x such that ``ndtr(x) == p``.
    
    See Also
    --------
    ndtr : Standard normal cumulative probability distribution
    ndtri_exp : Inverse of log_ndtr
    
    Examples
    --------
    `ndtri` is the percentile function of the standard normal distribution.
    This means it returns the inverse of the cumulative density `ndtr`. First,
    let us compute a cumulative density value.
    
    >>> import numpy as np
    >>> from scipy.special import ndtri, ndtr
    >>> cdf_val = ndtr(2)
    >>> cdf_val
    0.9772498680518208
    
    Verify that `ndtri` yields the original value for `x` up to floating point
    errors.
    
    >>> ndtri(cdf_val)
    2.0000000000000004
    
    Plot the function. For that purpose, we provide a NumPy array as argument.
    
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(0.01, 1, 200)
    >>> fig, ax = plt.subplots()
    >>> ax.plot(x, ndtri(x))
    >>> ax.set_title("Standard normal percentile function")
    >>> plt.show()
    """
    pass

def ndtri_exp(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    ndtri_exp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    ndtri_exp(y, out=None)
    
    Inverse of `log_ndtr` vs x. Allows for greater precision than
    `ndtri` composed with `numpy.exp` for very small values of y and for
    y close to 0.
    
    Parameters
    ----------
    y : array_like of float
        Function argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Inverse of the log CDF of the standard normal distribution, evaluated
        at y.
    
    See Also
    --------
    log_ndtr : log of the standard normal cumulative distribution function
    ndtr : standard normal cumulative distribution function
    ndtri : standard normal percentile function
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    `ndtri_exp` agrees with the naive implementation when the latter does
    not suffer from underflow.
    
    >>> sc.ndtri_exp(-1)
    -0.33747496376420244
    >>> sc.ndtri(np.exp(-1))
    -0.33747496376420244
    
    For extreme values of y, the naive approach fails
    
    >>> sc.ndtri(np.exp(-800))
    -inf
    >>> sc.ndtri(np.exp(-1e-20))
    inf
    
    whereas `ndtri_exp` is still able to compute the result to high precision.
    
    >>> sc.ndtri_exp(-800)
    -39.88469483825668
    >>> sc.ndtri_exp(-1e-20)
    9.262340089798409
    """
    pass

def nrdtrimn(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nrdtrimn(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nrdtrimn(p, std, x, out=None)
    
    Calculate mean of normal distribution given other params.
    
    Parameters
    ----------
    p : array_like
        CDF values, in range (0, 1].
    std : array_like
        Standard deviation.
    x : array_like
        Quantiles, i.e. the upper limit of integration.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    mn : scalar or ndarray
        The mean of the normal distribution.
    
    See Also
    --------
    scipy.stats.norm : Normal distribution
    ndtr : Standard normal cumulative probability distribution
    ndtri : Inverse of standard normal CDF with respect to quantile
    nrdtrisd : Inverse of normal distribution CDF with respect to
               standard deviation
    
    Examples
    --------
    `nrdtrimn` can be used to recover the mean of a normal distribution
    if we know the CDF value `p` for a given quantile `x` and the
    standard deviation `std`. First, we calculate
    the normal distribution CDF for an exemplary parameter set.
    
    >>> from scipy.stats import norm
    >>> mean = 3.
    >>> std = 2.
    >>> x = 6.
    >>> p = norm.cdf(x, loc=mean, scale=std)
    >>> p
    0.9331927987311419
    
    Verify that `nrdtrimn` returns the original value for `mean`.
    
    >>> from scipy.special import nrdtrimn
    >>> nrdtrimn(p, std, x)
    3.0000000000000004
    """
    pass

def nrdtrisd(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    nrdtrisd(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    nrdtrisd(mn, p, x, out=None)
    
    Calculate standard deviation of normal distribution given other params.
    
    Parameters
    ----------
    mn : scalar or ndarray
        The mean of the normal distribution.
    p : array_like
        CDF values, in range (0, 1].
    x : array_like
        Quantiles, i.e. the upper limit of integration.
    
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    std : scalar or ndarray
        Standard deviation.
    
    See Also
    --------
    scipy.stats.norm : Normal distribution
    ndtr : Standard normal cumulative probability distribution
    ndtri : Inverse of standard normal CDF with respect to quantile
    nrdtrimn : Inverse of normal distribution CDF with respect to
               mean
    
    Examples
    --------
    `nrdtrisd` can be used to recover the standard deviation of a normal
    distribution if we know the CDF value `p` for a given quantile `x` and
    the mean `mn`. First, we calculate the normal distribution CDF for an
    exemplary parameter set.
    
    >>> from scipy.stats import norm
    >>> mean = 3.
    >>> std = 2.
    >>> x = 6.
    >>> p = norm.cdf(x, loc=mean, scale=std)
    >>> p
    0.9331927987311419
    
    Verify that `nrdtrisd` returns the original value for `std`.
    
    >>> from scipy.special import nrdtrisd
    >>> nrdtrisd(mean, p, x)
    2.0000000000000004
    """
    pass

def obl_ang1(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_ang1(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_ang1(m, n, c, x, out=None)
    
        Oblate spheroidal angular function of the first kind and its derivative
    
        Computes the oblate spheroidal angular function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``|x| < 1.0``.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Parameter x (``|x| < 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_ang1_cv
    """
    pass

def obl_ang1_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_ang1_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_ang1_cv(m, n, c, cv, x, out=None)
    
        Oblate spheroidal angular function obl_ang1 for precomputed characteristic value
    
        Computes the oblate spheroidal angular function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``|x| < 1.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Parameter x (``|x| < 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_ang1
    """
    pass

def obl_cv(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_cv(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_cv(m, n, c, out=None)
    
        Characteristic value of oblate spheroidal function
    
        Computes the characteristic value of oblate spheroidal wave
        functions of order `m`, `n` (n>=m) and spheroidal parameter `c`.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        cv : scalar or ndarray
            Characteristic value
    """
    pass

def obl_rad1(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_rad1(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_rad1(m, n, c, x, out=None)
    
        Oblate spheroidal radial function of the first kind and its derivative
    
        Computes the oblate spheroidal radial function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x >= 0.0``.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Parameter x (``x >= 0.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_rad1_cv
    """
    pass

def obl_rad1_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_rad1_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_rad1_cv(m, n, c, cv, x, out=None)
    
        Oblate spheroidal radial function obl_rad1 for precomputed characteristic value
    
        Computes the oblate spheroidal radial function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x >= 0.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Parameter x (``x >= 0.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_rad1
    """
    pass

def obl_rad2(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_rad2(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_rad2(m, n, c, x, out=None)
    
        Oblate spheroidal radial function of the second kind and its derivative.
    
        Computes the oblate spheroidal radial function of the second kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x >= 0.0``.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Parameter x (``x >= 0.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_rad2_cv
    """
    pass

def obl_rad2_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    obl_rad2_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        obl_rad2_cv(m, n, c, cv, x, out=None)
    
        Oblate spheroidal radial function obl_rad2 for precomputed characteristic value
    
        Computes the oblate spheroidal radial function of the second kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x >= 0.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Mode parameter m (nonnegative)
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Parameter x (``x >= 0.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    
        See Also
        --------
        obl_rad2
    """
    pass

def owens_t(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    owens_t(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    owens_t(h, a, out=None)
    
    Owen's T Function.
    
    The function T(h, a) gives the probability of the event
    (X > h and 0 < Y < a * X) where X and Y are independent
    standard normal random variables.
    
    Parameters
    ----------
    h: array_like
        Input value.
    a: array_like
        Input value.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    t: scalar or ndarray
        Probability of the event (X > h and 0 < Y < a * X),
        where X and Y are independent standard normal random variables.
    
    References
    ----------
    .. [1] M. Patefield and D. Tandy, "Fast and accurate calculation of
           Owen's T Function", Statistical Software vol. 5, pp. 1-25, 2000.
    
    Examples
    --------
    >>> from scipy import special
    >>> a = 3.5
    >>> h = 0.78
    >>> special.owens_t(h, a)
    0.10877216734852274
    """
    pass

def pbdv(x1, x2, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pbdv(x1, x2[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pbdv(v, x, out=None)
    
        Parabolic cylinder function D
    
        Returns (d, dp) the parabolic cylinder function Dv(x) in d and the
        derivative, Dv'(x) in dp.
    
        Parameters
        ----------
        v : array_like
            Real parameter
        x : array_like
            Real argument
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        d : scalar or ndarray
            Value of the function
        dp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pbvv(x1, x2, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pbvv(x1, x2[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pbvv(v, x, out=None)
    
        Parabolic cylinder function V
    
        Returns the parabolic cylinder function Vv(x) in v and the
        derivative, Vv'(x) in vp.
    
        Parameters
        ----------
        v : array_like
            Real parameter
        x : array_like
            Real argument
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        v : scalar or ndarray
            Value of the function
        vp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pbwa(x1, x2, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pbwa(x1, x2[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pbwa(a, x, out=None)
    
        Parabolic cylinder function W.
    
        The function is a particular solution to the differential equation
    
        .. math::
    
            y'' + \left(\frac{1}{4}x^2 - a\right)y = 0,
    
        for a full definition see section 12.14 in [1]_.
    
        Parameters
        ----------
        a : array_like
            Real parameter
        x : array_like
            Real argument
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        w : scalar or ndarray
            Value of the function
        wp : scalar or ndarray
            Value of the derivative in x
    
        Notes
        -----
        The function is a wrapper for a Fortran routine by Zhang and Jin
        [2]_. The implementation is accurate only for ``|a|, |x| < 5`` and
        returns NaN outside that range.
    
        References
        ----------
        .. [1] Digital Library of Mathematical Functions, 14.30.
               https://dlmf.nist.gov/14.30
        .. [2] Zhang, Shanjie and Jin, Jianming. "Computation of Special
               Functions", John Wiley and Sons, 1996.
               https://people.sc.fsu.edu/~jburkardt/f_src/special_functions/special_functions.html
    """
    pass

def pdtr(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pdtr(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    pdtr(k, m, out=None)
    
    Poisson cumulative distribution function.
    
    Defined as the probability that a Poisson-distributed random
    variable with event rate :math:`m` is less than or equal to
    :math:`k`. More concretely, this works out to be [1]_
    
    .. math::
    
       \exp(-m) \sum_{j = 0}^{\lfloor{k}\rfloor} \frac{m^j}{j!}.
    
    Parameters
    ----------
    k : array_like
        Number of occurrences (nonnegative, real)
    m : array_like
        Shape parameter (nonnegative, real)
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the Poisson cumulative distribution function
    
    See Also
    --------
    pdtrc : Poisson survival function
    pdtrik : inverse of `pdtr` with respect to `k`
    pdtri : inverse of `pdtr` with respect to `m`
    
    References
    ----------
    .. [1] https://en.wikipedia.org/wiki/Poisson_distribution
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It is a cumulative distribution function, so it converges to 1
    monotonically as `k` goes to infinity.
    
    >>> sc.pdtr([1, 10, 100, np.inf], 1)
    array([0.73575888, 0.99999999, 1.        , 1.        ])
    
    It is discontinuous at integers and constant between integers.
    
    >>> sc.pdtr([1, 1.5, 1.9, 2], 1)
    array([0.73575888, 0.73575888, 0.73575888, 0.9196986 ])
    """
    pass

def pdtrc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pdtrc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    pdtrc(k, m, out=None)
    
    Poisson survival function
    
    Returns the sum of the terms from k+1 to infinity of the Poisson
    distribution: sum(exp(-m) * m**j / j!, j=k+1..inf) = gammainc(
    k+1, m). Arguments must both be non-negative doubles.
    
    Parameters
    ----------
    k : array_like
        Number of occurrences (nonnegative, real)
    m : array_like
        Shape parameter (nonnegative, real)
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the Poisson survival function
    
    See Also
    --------
    pdtr : Poisson cumulative distribution function
    pdtrik : inverse of `pdtr` with respect to `k`
    pdtri : inverse of `pdtr` with respect to `m`
    
    Examples
    --------
    >>> import numpy as np
    >>> import scipy.special as sc
    
    It is a survival function, so it decreases to 0
    monotonically as `k` goes to infinity.
    
    >>> k = np.array([1, 10, 100, np.inf])
    >>> sc.pdtrc(k, 1)
    array([2.64241118e-001, 1.00477664e-008, 3.94147589e-161, 0.00000000e+000])
    
    It can be expressed in terms of the lower incomplete gamma
    function `gammainc`.
    
    >>> sc.gammainc(k + 1, 1)
    array([2.64241118e-001, 1.00477664e-008, 3.94147589e-161, 0.00000000e+000])
    """
    pass

def pdtri(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pdtri(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    pdtri(k, y, out=None)
    
    Inverse to `pdtr` vs m
    
    Returns the Poisson variable `m` such that the sum from 0 to `k` of
    the Poisson density is equal to the given probability `y`:
    calculated by ``gammaincinv(k + 1, y)``. `k` must be a nonnegative
    integer and `y` between 0 and 1.
    
    Parameters
    ----------
    k : array_like
        Number of occurrences (nonnegative, real)
    y : array_like
        Probability
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Values of the shape parameter `m` such that ``pdtr(k, m) = p``
    
    See Also
    --------
    pdtr : Poisson cumulative distribution function
    pdtrc : Poisson survival function
    pdtrik : inverse of `pdtr` with respect to `k`
    
    Examples
    --------
    >>> import scipy.special as sc
    
    Compute the CDF for several values of `m`:
    
    >>> m = [0.5, 1, 1.5]
    >>> p = sc.pdtr(1, m)
    >>> p
    array([0.90979599, 0.73575888, 0.5578254 ])
    
    Compute the inverse. We recover the values of `m`, as expected:
    
    >>> sc.pdtri(1, p)
    array([0.5, 1. , 1.5])
    """
    pass

def pdtrik(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pdtrik(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    pdtrik(p, m, out=None)
    
    Inverse to `pdtr` vs `k`.
    
    Parameters
    ----------
    p : array_like
        Probability
    m : array_like
        Shape parameter (nonnegative, real)
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The number of occurrences `k` such that ``pdtr(k, m) = p``
    
    See Also
    --------
    pdtr : Poisson cumulative distribution function
    pdtrc : Poisson survival function
    pdtri : inverse of `pdtr` with respect to `m`
    
    Examples
    --------
    >>> import scipy.special as sc
    
    Compute the CDF for several values of `k`:
    
    >>> k = [1, 2, 3]
    >>> p = sc.pdtr(k, 2)
    >>> p
    array([0.40600585, 0.67667642, 0.85712346])
    
    Compute the inverse. We recover the values of `k`, as expected:
    
    >>> sc.pdtrik(p, 2)
    array([1., 2., 3.])
    """
    pass

def poch(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    poch(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    poch(z, m, out=None)
    
    Pochhammer symbol.
    
    The Pochhammer symbol (rising factorial) is defined as
    
    .. math::
    
        (z)_m = \frac{\Gamma(z + m)}{\Gamma(z)}
    
    For positive integer `m` it reads
    
    .. math::
    
        (z)_m = z (z + 1) ... (z + m - 1)
    
    See [dlmf]_ for more details.
    
    Parameters
    ----------
    z, m : array_like
        Real-valued arguments.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value of the function.
    
    References
    ----------
    .. [dlmf] Nist, Digital Library of Mathematical Functions
        https://dlmf.nist.gov/5.2#iii
    
    Examples
    --------
    >>> import scipy.special as sc
    
    It is 1 when m is 0.
    
    >>> sc.poch([1, 2, 3, 4], 0)
    array([1., 1., 1., 1.])
    
    For z equal to 1 it reduces to the factorial function.
    
    >>> sc.poch(1, 5)
    120.0
    >>> 1 * 2 * 3 * 4 * 5
    120
    
    It can be expressed in terms of the gamma function.
    
    >>> z, m = 3.7, 2.1
    >>> sc.poch(z, m)
    20.529581933776953
    >>> sc.gamma(z + m) / sc.gamma(z)
    20.52958193377696
    """
    pass

def powm1(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    powm1(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    powm1(x, y, out=None)
    
    Computes ``x**y - 1``.
    
    This function is useful when `y` is near 0, or when `x` is near 1.
    
    The function is implemented for real types only (unlike ``numpy.power``,
    which accepts complex inputs).
    
    Parameters
    ----------
    x : array_like
        The base. Must be a real type (i.e. integer or float, not complex).
    y : array_like
        The exponent. Must be a real type (i.e. integer or float, not complex).
    
    Returns
    -------
    array_like
        Result of the calculation
    
    Notes
    -----
    .. versionadded:: 1.10.0
    
    The underlying code is implemented for single precision and double
    precision floats only.  Unlike `numpy.power`, integer inputs to
    `powm1` are converted to floating point, and complex inputs are
    not accepted.
    
    Note the following edge cases:
    
    * ``powm1(x, 0)`` returns 0 for any ``x``, including 0, ``inf``
      and ``nan``.
    * ``powm1(1, y)`` returns 0 for any ``y``, including ``nan``
      and ``inf``.
    
    This function wraps the ``powm1`` routine from the
    Boost Math C++ library [1]_.
    
    References
    ----------
    .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import powm1
    
    >>> x = np.array([1.2, 10.0, 0.9999999975])
    >>> y = np.array([1e-9, 1e-11, 0.1875])
    >>> powm1(x, y)
    array([ 1.82321557e-10,  2.30258509e-11, -4.68749998e-10])
    
    It can be verified that the relative errors in those results
    are less than 2.5e-16.
    
    Compare that to the result of ``x**y - 1``, where the
    relative errors are all larger than 8e-8:
    
    >>> x**y - 1
    array([ 1.82321491e-10,  2.30258035e-11, -4.68750039e-10])
    """
    pass

def pro_ang1(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_ang1(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_ang1(m, n, c, x, out=None)
    
        Prolate spheroidal angular function of the first kind and its derivative
    
        Computes the prolate spheroidal angular function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``|x| < 1.0``.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Real parameter (``|x| < 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pro_ang1_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_ang1_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_ang1_cv(m, n, c, cv, x, out=None)
    
        Prolate spheroidal angular function pro_ang1 for precomputed characteristic value
    
        Computes the prolate spheroidal angular function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``|x| < 1.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Real parameter (``|x| < 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pro_cv(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_cv(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_cv(m, n, c, out=None)
    
        Characteristic value of prolate spheroidal function
    
        Computes the characteristic value of prolate spheroidal wave
        functions of order `m`, `n` (n>=m) and spheroidal parameter `c`.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        cv : scalar or ndarray
            Characteristic value
    """
    pass

def pro_rad1(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_rad1(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_rad1(m, n, c, x, out=None)
    
        Prolate spheroidal radial function of the first kind and its derivative
    
        Computes the prolate spheroidal radial function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x > 1.0``.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Real parameter (``x > 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pro_rad1_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_rad1_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_rad1_cv(m, n, c, cv, x, out=None)
    
        Prolate spheroidal radial function pro_rad1 for precomputed characteristic value
    
        Computes the prolate spheroidal radial function of the first kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x > 1.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Real parameter (``x > 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pro_rad2(x1, x2, x3, x4, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_rad2(x1, x2, x3, x4[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_rad2(m, n, c, x, out=None)
    
        Prolate spheroidal radial function of the second kind and its derivative
    
        Computes the prolate spheroidal radial function of the second kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x > 1.0``.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        x : array_like
            Real parameter (``x > 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pro_rad2_cv(x1, x2, x3, x4, x5, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pro_rad2_cv(x1, x2, x3, x4, x5[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        pro_rad2_cv(m, n, c, cv, x, out=None)
    
        Prolate spheroidal radial function pro_rad2 for precomputed characteristic value
    
        Computes the prolate spheroidal radial function of the second kind
        and its derivative (with respect to `x`) for mode parameters m>=0
        and n>=m, spheroidal parameter `c` and ``x > 1.0``. Requires
        pre-computed characteristic value.
    
        Parameters
        ----------
        m : array_like
            Nonnegative mode parameter m
        n : array_like
            Mode parameter n (>= m)
        c : array_like
            Spheroidal parameter
        cv : array_like
            Characteristic value
        x : array_like
            Real parameter (``x > 1.0``)
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        s : scalar or ndarray
            Value of the function
        sp : scalar or ndarray
            Value of the derivative vs x
    """
    pass

def pseudo_huber(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    pseudo_huber(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    pseudo_huber(delta, r, out=None)
    
    Pseudo-Huber loss function.
    
    .. math:: \mathrm{pseudo\_huber}(\delta, r) =
              \delta^2 \left( \sqrt{ 1 + \left( \frac{r}{\delta} \right)^2 } - 1 \right)
    
    Parameters
    ----------
    delta : array_like
        Input array, indicating the soft quadratic vs. linear loss changepoint.
    r : array_like
        Input array, possibly representing residuals.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    res : scalar or ndarray
        The computed Pseudo-Huber loss function values.
    
    See Also
    --------
    huber: Similar function which this function approximates
    
    Notes
    -----
    Like `huber`, `pseudo_huber` often serves as a robust loss function
    in statistics or machine learning to reduce the influence of outliers.
    Unlike `huber`, `pseudo_huber` is smooth.
    
    Typically, `r` represents residuals, the difference
    between a model prediction and data. Then, for :math:`|r|\leq\delta`,
    `pseudo_huber` resembles the squared error and for :math:`|r|>\delta` the
    absolute error. This way, the Pseudo-Huber loss often achieves
    a fast convergence in model fitting for small residuals like the squared
    error loss function and still reduces the influence of outliers
    (:math:`|r|>\delta`) like the absolute error loss. As :math:`\delta` is
    the cutoff between squared and absolute error regimes, it has
    to be tuned carefully for each problem. `pseudo_huber` is also
    convex, making it suitable for gradient based optimization. [1]_ [2]_
    
    .. versionadded:: 0.15.0
    
    References
    ----------
    .. [1] Hartley, Zisserman, "Multiple View Geometry in Computer Vision".
           2003. Cambridge University Press. p. 619
    .. [2] Charbonnier et al. "Deterministic edge-preserving regularization
           in computed imaging". 1997. IEEE Trans. Image Processing.
           6 (2): 298 - 311.
    
    Examples
    --------
    Import all necessary modules.
    
    >>> import numpy as np
    >>> from scipy.special import pseudo_huber, huber
    >>> import matplotlib.pyplot as plt
    
    Calculate the function for ``delta=1`` at ``r=2``.
    
    >>> pseudo_huber(1., 2.)
    1.2360679774997898
    
    Calculate the function at ``r=2`` for different `delta` by providing
    a list or NumPy array for `delta`.
    
    >>> pseudo_huber([1., 2., 4.], 3.)
    array([2.16227766, 3.21110255, 4.        ])
    
    Calculate the function for ``delta=1`` at several points by providing
    a list or NumPy array for `r`.
    
    >>> pseudo_huber(2., np.array([1., 1.5, 3., 4.]))
    array([0.47213595, 1.        , 3.21110255, 4.94427191])
    
    The function can be calculated for different `delta` and `r` by
    providing arrays for both with compatible shapes for broadcasting.
    
    >>> r = np.array([1., 2.5, 8., 10.])
    >>> deltas = np.array([[1.], [5.], [9.]])
    >>> print(r.shape, deltas.shape)
    (4,) (3, 1)
    
    >>> pseudo_huber(deltas, r)
    array([[ 0.41421356,  1.6925824 ,  7.06225775,  9.04987562],
           [ 0.49509757,  2.95084972, 22.16990566, 30.90169944],
           [ 0.49846624,  3.06693762, 27.37435121, 40.08261642]])
    
    Plot the function for different `delta`.
    
    >>> x = np.linspace(-4, 4, 500)
    >>> deltas = [1, 2, 3]
    >>> linestyles = ["dashed", "dotted", "dashdot"]
    >>> fig, ax = plt.subplots()
    >>> combined_plot_parameters = list(zip(deltas, linestyles))
    >>> for delta, style in combined_plot_parameters:
    ...     ax.plot(x, pseudo_huber(delta, x), label=rf"$\delta={delta}$",
    ...             ls=style)
    >>> ax.legend(loc="upper center")
    >>> ax.set_xlabel("$x$")
    >>> ax.set_title(r"Pseudo-Huber loss function $h_{\delta}(x)$")
    >>> ax.set_xlim(-4, 4)
    >>> ax.set_ylim(0, 8)
    >>> plt.show()
    
    Finally, illustrate the difference between `huber` and `pseudo_huber` by
    plotting them and their gradients with respect to `r`. The plot shows
    that `pseudo_huber` is continuously differentiable while `huber` is not
    at the points :math:`\pm\delta`.
    
    >>> def huber_grad(delta, x):
    ...     grad = np.copy(x)
    ...     linear_area = np.argwhere(np.abs(x) > delta)
    ...     grad[linear_area]=delta*np.sign(x[linear_area])
    ...     return grad
    >>> def pseudo_huber_grad(delta, x):
    ...     return x* (1+(x/delta)**2)**(-0.5)
    >>> x=np.linspace(-3, 3, 500)
    >>> delta = 1.
    >>> fig, ax = plt.subplots(figsize=(7, 7))
    >>> ax.plot(x, huber(delta, x), label="Huber", ls="dashed")
    >>> ax.plot(x, huber_grad(delta, x), label="Huber Gradient", ls="dashdot")
    >>> ax.plot(x, pseudo_huber(delta, x), label="Pseudo-Huber", ls="dotted")
    >>> ax.plot(x, pseudo_huber_grad(delta, x), label="Pseudo-Huber Gradient",
    ...         ls="solid")
    >>> ax.legend(loc="upper center")
    >>> plt.show()
    """
    pass

def psi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    psi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        psi(z, out=None)
    
        The digamma function.
    
        The logarithmic derivative of the gamma function evaluated at ``z``.
    
        Parameters
        ----------
        z : array_like
            Real or complex argument.
        out : ndarray, optional
            Array for the computed values of ``psi``.
    
        Returns
        -------
        digamma : scalar or ndarray
            Computed values of ``psi``.
    
        Notes
        -----
        For large values not close to the negative real axis, ``psi`` is
        computed using the asymptotic series (5.11.2) from [1]_. For small
        arguments not close to the negative real axis, the recurrence
        relation (5.5.2) from [1]_ is used until the argument is large
        enough to use the asymptotic series. For values close to the
        negative real axis, the reflection formula (5.5.4) from [1]_ is
        used first. Note that ``psi`` has a family of zeros on the
        negative real axis which occur between the poles at nonpositive
        integers. Around the zeros the reflection formula suffers from
        cancellation and the implementation loses precision. The sole
        positive zero and the first negative zero, however, are handled
        separately by precomputing series expansions using [2]_, so the
        function should maintain full accuracy around the origin.
    
        References
        ----------
        .. [1] NIST Digital Library of Mathematical Functions
               https://dlmf.nist.gov/5
        .. [2] Fredrik Johansson and others.
               "mpmath: a Python library for arbitrary-precision floating-point arithmetic"
               (Version 0.19) http://mpmath.org/
    
        Examples
        --------
        >>> from scipy.special import psi
        >>> z = 3 + 4j
        >>> psi(z)
        (1.55035981733341+1.0105022091860445j)
    
        Verify psi(z) = psi(z + 1) - 1/z:
    
        >>> psi(z + 1) - 1/z
        (1.55035981733341+1.0105022091860445j)
    """
    pass

def radian(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    radian(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        radian(d, m, s, out=None)
    
        Convert from degrees to radians.
    
        Returns the angle given in (d)egrees, (m)inutes, and (s)econds in
        radians.
    
        Parameters
        ----------
        d : array_like
            Degrees, can be real-valued.
        m : array_like
            Minutes, can be real-valued.
        s : array_like
            Seconds, can be real-valued.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Values of the inputs in radians.
    
        Examples
        --------
        >>> import scipy.special as sc
    
        There are many ways to specify an angle.
    
        >>> sc.radian(90, 0, 0)
        1.5707963267948966
        >>> sc.radian(0, 60 * 90, 0)
        1.5707963267948966
        >>> sc.radian(0, 0, 60**2 * 90)
        1.5707963267948966
    
        The inputs can be real-valued.
    
        >>> sc.radian(1.5, 0, 0)
        0.02617993877991494
        >>> sc.radian(1, 30, 0)
        0.02617993877991494
    """
    pass

def rel_entr(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    rel_entr(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    rel_entr(x, y, out=None)
    
    Elementwise function for computing relative entropy.
    
    .. math::
    
        \mathrm{rel\_entr}(x, y) =
            \begin{cases}
                x \log(x / y) & x > 0, y > 0 \\
                0 & x = 0, y \ge 0 \\
                \infty & \text{otherwise}
            \end{cases}
    
    Parameters
    ----------
    x, y : array_like
        Input arrays
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Relative entropy of the inputs
    
    See Also
    --------
    entr, kl_div, scipy.stats.entropy
    
    Notes
    -----
    .. versionadded:: 0.15.0
    
    This function is jointly convex in x and y.
    
    The origin of this function is in convex programming; see
    [1]_. Given two discrete probability distributions :math:`p_1,
    \ldots, p_n` and :math:`q_1, \ldots, q_n`, the definition of relative
    entropy in the context of *information theory* is
    
    .. math::
    
        \sum_{i = 1}^n \mathrm{rel\_entr}(p_i, q_i).
    
    To compute the latter quantity, use `scipy.stats.entropy`.
    
    See [2]_ for details.
    
    References
    ----------
    .. [1] Boyd, Stephen and Lieven Vandenberghe. *Convex optimization*.
           Cambridge University Press, 2004.
           :doi:`https://doi.org/10.1017/CBO9780511804441`
    .. [2] Kullback-Leibler divergence,
           https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
    """
    pass

def rgamma(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    rgamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        rgamma(z, out=None)
    
        Reciprocal of the gamma function.
    
        Defined as :math:`1 / \Gamma(z)`, where :math:`\Gamma` is the
        gamma function. For more on the gamma function see `gamma`.
    
        Parameters
        ----------
        z : array_like
            Real or complex valued input
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Function results
    
        See Also
        --------
        gamma, gammaln, loggamma
    
        Notes
        -----
        The gamma function has no zeros and has simple poles at
        nonpositive integers, so `rgamma` is an entire function with zeros
        at the nonpositive integers. See the discussion in [dlmf]_ for
        more details.
    
        References
        ----------
        .. [dlmf] Nist, Digital Library of Mathematical functions,
            https://dlmf.nist.gov/5.2#i
    
        Examples
        --------
        >>> import scipy.special as sc
    
        It is the reciprocal of the gamma function.
    
        >>> sc.rgamma([1, 2, 3, 4])
        array([1.        , 1.        , 0.5       , 0.16666667])
        >>> 1 / sc.gamma([1, 2, 3, 4])
        array([1.        , 1.        , 0.5       , 0.16666667])
    
        It is zero at nonpositive integers.
    
        >>> sc.rgamma([0, -1, -2, -3])
        array([0., 0., 0., 0.])
    
        It rapidly underflows to zero along the positive real axis.
    
        >>> sc.rgamma([10, 100, 179])
        array([2.75573192e-006, 1.07151029e-156, 0.00000000e+000])
    """
    pass

def round(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    round(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    round(x, out=None)
    
    Round to the nearest integer.
    
    Returns the nearest integer to `x`.  If `x` ends in 0.5 exactly,
    the nearest even integer is chosen.
    
    Parameters
    ----------
    x : array_like
        Real valued input.
    out : ndarray, optional
        Optional output array for the function results.
    
    Returns
    -------
    scalar or ndarray
        The nearest integers to the elements of `x`. The result is of
        floating type, not integer type.
    
    Examples
    --------
    >>> import scipy.special as sc
    
    It rounds to even.
    
    >>> sc.round([0.5, 1.5])
    array([0., 2.])
    """
    pass

def seterr(singular='raise'): # real signature unknown; restored from __doc__
    """
    Set how special-function errors are handled.
    
        Parameters
        ----------
        all : {'ignore', 'warn' 'raise'}, optional
            Set treatment for all type of special-function errors at
            once. The options are:
    
            - 'ignore' Take no action when the error occurs
            - 'warn' Print a `SpecialFunctionWarning` when the error
              occurs (via the Python `warnings` module)
            - 'raise' Raise a `SpecialFunctionError` when the error
              occurs.
    
            The default is to not change the current behavior. If
            behaviors for additional categories of special-function errors
            are specified, then ``all`` is applied first, followed by the
            additional categories.
        singular : {'ignore', 'warn', 'raise'}, optional
            Treatment for singularities.
        underflow : {'ignore', 'warn', 'raise'}, optional
            Treatment for underflow.
        overflow : {'ignore', 'warn', 'raise'}, optional
            Treatment for overflow.
        slow : {'ignore', 'warn', 'raise'}, optional
            Treatment for slow convergence.
        loss : {'ignore', 'warn', 'raise'}, optional
            Treatment for loss of accuracy.
        no_result : {'ignore', 'warn', 'raise'}, optional
            Treatment for failing to find a result.
        domain : {'ignore', 'warn', 'raise'}, optional
            Treatment for an invalid argument to a function.
        arg : {'ignore', 'warn', 'raise'}, optional
            Treatment for an invalid parameter to a function.
        other : {'ignore', 'warn', 'raise'}, optional
            Treatment for an unknown error.
    
        Returns
        -------
        olderr : dict
            Dictionary containing the old settings.
    
        See Also
        --------
        geterr : get the current way of handling special-function errors
        errstate : context manager for special-function error handling
        numpy.seterr : similar numpy function for floating-point errors
    
        Examples
        --------
        >>> import scipy.special as sc
        >>> from pytest import raises
        >>> sc.gammaln(0)
        inf
        >>> olderr = sc.seterr(singular='raise')
        >>> with raises(sc.SpecialFunctionError):
        ...     sc.gammaln(0)
        ...
        >>> _ = sc.seterr(**olderr)
    
        We can also raise for every category except one.
    
        >>> olderr = sc.seterr(all='raise', singular='ignore')
        >>> sc.gammaln(0)
        inf
        >>> with raises(sc.SpecialFunctionError):
        ...     sc.spence(-1)
        ...
        >>> _ = sc.seterr(**olderr)
    """
    pass

def shichi(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    shichi(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    shichi(x, out=None)
    
    Hyperbolic sine and cosine integrals.
    
    The hyperbolic sine integral is
    
    .. math::
    
      \int_0^x \frac{\sinh{t}}{t}dt
    
    and the hyperbolic cosine integral is
    
    .. math::
    
      \gamma + \log(x) + \int_0^x \frac{\cosh{t} - 1}{t} dt
    
    where :math:`\gamma` is Euler's constant and :math:`\log` is the
    principal branch of the logarithm [1]_.
    
    Parameters
    ----------
    x : array_like
        Real or complex points at which to compute the hyperbolic sine
        and cosine integrals.
    out : tuple of ndarray, optional
        Optional output arrays for the function results
    
    Returns
    -------
    si : scalar or ndarray
        Hyperbolic sine integral at ``x``
    ci : scalar or ndarray
        Hyperbolic cosine integral at ``x``
    
    See Also
    --------
    sici : Sine and cosine integrals.
    exp1 : Exponential integral E1.
    expi : Exponential integral Ei.
    
    Notes
    -----
    For real arguments with ``x < 0``, ``chi`` is the real part of the
    hyperbolic cosine integral. For such points ``chi(x)`` and ``chi(x
    + 0j)`` differ by a factor of ``1j*pi``.
    
    For real arguments the function is computed by calling Cephes'
    [2]_ *shichi* routine. For complex arguments the algorithm is based
    on Mpmath's [3]_ *shi* and *chi* routines.
    
    References
    ----------
    .. [1] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
           (See Section 5.2.)
    .. [2] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    .. [3] Fredrik Johansson and others.
           "mpmath: a Python library for arbitrary-precision floating-point
           arithmetic" (Version 0.19) http://mpmath.org/
    
    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.special import shichi, sici
    
    `shichi` accepts real or complex input:
    
    >>> shichi(0.5)
    (0.5069967498196671, -0.05277684495649357)
    >>> shichi(0.5 + 2.5j)
    ((0.11772029666668238+1.831091777729851j),
     (0.29912435887648825+1.7395351121166562j))
    
    The hyperbolic sine and cosine integrals Shi(z) and Chi(z) are
    related to the sine and cosine integrals Si(z) and Ci(z) by
    
    * Shi(z) = -i*Si(i*z)
    * Chi(z) = Ci(-i*z) + i*pi/2
    
    >>> z = 0.25 + 5j
    >>> shi, chi = shichi(z)
    >>> shi, -1j*sici(1j*z)[0]            # Should be the same.
    ((-0.04834719325101729+1.5469354086921228j),
     (-0.04834719325101729+1.5469354086921228j))
    >>> chi, sici(-1j*z)[1] + 1j*np.pi/2  # Should be the same.
    ((-0.19568708973868087+1.556276312103824j),
     (-0.19568708973868087+1.556276312103824j))
    
    Plot the functions evaluated on the real axis:
    
    >>> xp = np.geomspace(1e-8, 4.0, 250)
    >>> x = np.concatenate((-xp[::-1], xp))
    >>> shi, chi = shichi(x)
    
    >>> fig, ax = plt.subplots()
    >>> ax.plot(x, shi, label='Shi(x)')
    >>> ax.plot(x, chi, '--', label='Chi(x)')
    >>> ax.set_xlabel('x')
    >>> ax.set_title('Hyperbolic Sine and Cosine Integrals')
    >>> ax.legend(shadow=True, framealpha=1, loc='lower right')
    >>> ax.grid(True)
    >>> plt.show()
    """
    pass

def sici(x, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    sici(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    sici(x, out=None)
    
    Sine and cosine integrals.
    
    The sine integral is
    
    .. math::
    
      \int_0^x \frac{\sin{t}}{t}dt
    
    and the cosine integral is
    
    .. math::
    
      \gamma + \log(x) + \int_0^x \frac{\cos{t} - 1}{t}dt
    
    where :math:`\gamma` is Euler's constant and :math:`\log` is the
    principal branch of the logarithm [1]_.
    
    Parameters
    ----------
    x : array_like
        Real or complex points at which to compute the sine and cosine
        integrals.
    out : tuple of ndarray, optional
        Optional output arrays for the function results
    
    Returns
    -------
    si : scalar or ndarray
        Sine integral at ``x``
    ci : scalar or ndarray
        Cosine integral at ``x``
    
    See Also
    --------
    shichi : Hyperbolic sine and cosine integrals.
    exp1 : Exponential integral E1.
    expi : Exponential integral Ei.
    
    Notes
    -----
    For real arguments with ``x < 0``, ``ci`` is the real part of the
    cosine integral. For such points ``ci(x)`` and ``ci(x + 0j)``
    differ by a factor of ``1j*pi``.
    
    For real arguments the function is computed by calling Cephes'
    [2]_ *sici* routine. For complex arguments the algorithm is based
    on Mpmath's [3]_ *si* and *ci* routines.
    
    References
    ----------
    .. [1] Milton Abramowitz and Irene A. Stegun, eds.
           Handbook of Mathematical Functions with Formulas,
           Graphs, and Mathematical Tables. New York: Dover, 1972.
           (See Section 5.2.)
    .. [2] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    .. [3] Fredrik Johansson and others.
           "mpmath: a Python library for arbitrary-precision floating-point
           arithmetic" (Version 0.19) http://mpmath.org/
    
    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.special import sici, exp1
    
    `sici` accepts real or complex input:
    
    >>> sici(2.5)
    (1.7785201734438267, 0.2858711963653835)
    >>> sici(2.5 + 3j)
    ((4.505735874563953+0.06863305018999577j),
    (0.0793644206906966-2.935510262937543j))
    
    For z in the right half plane, the sine and cosine integrals are
    related to the exponential integral E1 (implemented in SciPy as
    `scipy.special.exp1`) by
    
    * Si(z) = (E1(i*z) - E1(-i*z))/2i + pi/2
    * Ci(z) = -(E1(i*z) + E1(-i*z))/2
    
    See [1]_ (equations 5.2.21 and 5.2.23).
    
    We can verify these relations:
    
    >>> z = 2 - 3j
    >>> sici(z)
    ((4.54751388956229-1.3991965806460565j),
    (1.408292501520851+2.9836177420296055j))
    
    >>> (exp1(1j*z) - exp1(-1j*z))/2j + np.pi/2  # Same as sine integral
    (4.54751388956229-1.3991965806460565j)
    
    >>> -(exp1(1j*z) + exp1(-1j*z))/2            # Same as cosine integral
    (1.408292501520851+2.9836177420296055j)
    
    Plot the functions evaluated on the real axis; the dotted horizontal
    lines are at pi/2 and -pi/2:
    
    >>> x = np.linspace(-16, 16, 150)
    >>> si, ci = sici(x)
    
    >>> fig, ax = plt.subplots()
    >>> ax.plot(x, si, label='Si(x)')
    >>> ax.plot(x, ci, '--', label='Ci(x)')
    >>> ax.legend(shadow=True, framealpha=1, loc='upper left')
    >>> ax.set_xlabel('x')
    >>> ax.set_title('Sine and Cosine Integrals')
    >>> ax.axhline(np.pi/2, linestyle=':', alpha=0.5, color='k')
    >>> ax.axhline(-np.pi/2, linestyle=':', alpha=0.5, color='k')
    >>> ax.grid(True)
    >>> plt.show()
    """
    pass

def sindg(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    sindg(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        sindg(x, out=None)
    
        Sine of the angle `x` given in degrees.
    
        Parameters
        ----------
        x : array_like
            Angle, given in degrees.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Sine at the input.
    
        See Also
        --------
        cosdg, tandg, cotdg
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is more accurate than using sine directly.
    
        >>> x = 180 * np.arange(3)
        >>> sc.sindg(x)
        array([ 0., -0.,  0.])
        >>> np.sin(x * np.pi / 180)
        array([ 0.0000000e+00,  1.2246468e-16, -2.4492936e-16])
    """
    pass

def smirnov(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    smirnov(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    smirnov(n, d, out=None)
    
    Kolmogorov-Smirnov complementary cumulative distribution function
    
    Returns the exact Kolmogorov-Smirnov complementary cumulative
    distribution function,(aka the Survival Function) of Dn+ (or Dn-)
    for a one-sided test of equality between an empirical and a
    theoretical distribution. It is equal to the probability that the
    maximum difference between a theoretical distribution and an empirical
    one based on `n` samples is greater than d.
    
    Parameters
    ----------
    n : int
      Number of samples
    d : float array_like
      Deviation between the Empirical CDF (ECDF) and the target CDF.
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value(s) of smirnov(n, d), Prob(Dn+ >= d) (Also Prob(Dn- >= d))
    
    See Also
    --------
    smirnovi : The Inverse Survival Function for the distribution
    scipy.stats.ksone : Provides the functionality as a continuous distribution
    kolmogorov, kolmogi : Functions for the two-sided distribution
    
    Notes
    -----
    `smirnov` is used by `stats.kstest` in the application of the
    Kolmogorov-Smirnov Goodness of Fit test. For historical reasons this
    function is exposed in `scpy.special`, but the recommended way to achieve
    the most accurate CDF/SF/PDF/PPF/ISF computations is to use the
    `stats.ksone` distribution.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import smirnov
    >>> from scipy.stats import norm
    
    Show the probability of a gap at least as big as 0, 0.5 and 1.0 for a
    sample of size 5.
    
    >>> smirnov(5, [0, 0.5, 1.0])
    array([ 1.   ,  0.056,  0.   ])
    
    Compare a sample of size 5 against N(0, 1), the standard normal
    distribution with mean 0 and standard deviation 1.
    
    `x` is the sample.
    
    >>> x = np.array([-1.392, -0.135, 0.114, 0.190, 1.82])
    
    >>> target = norm(0, 1)
    >>> cdfs = target.cdf(x)
    >>> cdfs
    array([0.0819612 , 0.44630594, 0.5453811 , 0.57534543, 0.9656205 ])
    
    Construct the empirical CDF and the K-S statistics (Dn+, Dn-, Dn).
    
    >>> n = len(x)
    >>> ecdfs = np.arange(n+1, dtype=float)/n
    >>> cols = np.column_stack([x, ecdfs[1:], cdfs, cdfs - ecdfs[:n],
    ...                        ecdfs[1:] - cdfs])
    >>> with np.printoptions(precision=3):
    ...    print(cols)
    [[-1.392  0.2    0.082  0.082  0.118]
     [-0.135  0.4    0.446  0.246 -0.046]
     [ 0.114  0.6    0.545  0.145  0.055]
     [ 0.19   0.8    0.575 -0.025  0.225]
     [ 1.82   1.     0.966  0.166  0.034]]
    >>> gaps = cols[:, -2:]
    >>> Dnpm = np.max(gaps, axis=0)
    >>> print(f'Dn-={Dnpm[0]:f}, Dn+={Dnpm[1]:f}')
    Dn-=0.246306, Dn+=0.224655
    >>> probs = smirnov(n, Dnpm)
    >>> print(f'For a sample of size {n} drawn from N(0, 1):',
    ...       f' Smirnov n={n}: Prob(Dn- >= {Dnpm[0]:f}) = {probs[0]:.4f}',
    ...       f' Smirnov n={n}: Prob(Dn+ >= {Dnpm[1]:f}) = {probs[1]:.4f}',
    ...       sep='\n')
    For a sample of size 5 drawn from N(0, 1):
     Smirnov n=5: Prob(Dn- >= 0.246306) = 0.4711
     Smirnov n=5: Prob(Dn+ >= 0.224655) = 0.5245
    
    Plot the empirical CDF and the standard normal CDF.
    
    >>> import matplotlib.pyplot as plt
    >>> plt.step(np.concatenate(([-2.5], x, [2.5])),
    ...          np.concatenate((ecdfs, [1])),
    ...          where='post', label='Empirical CDF')
    >>> xx = np.linspace(-2.5, 2.5, 100)
    >>> plt.plot(xx, target.cdf(xx), '--', label='CDF for N(0, 1)')
    
    Add vertical lines marking Dn+ and Dn-.
    
    >>> iminus, iplus = np.argmax(gaps, axis=0)
    >>> plt.vlines([x[iminus]], ecdfs[iminus], cdfs[iminus], color='r',
    ...            alpha=0.5, lw=4)
    >>> plt.vlines([x[iplus]], cdfs[iplus], ecdfs[iplus+1], color='m',
    ...            alpha=0.5, lw=4)
    
    >>> plt.grid(True)
    >>> plt.legend(framealpha=1, shadow=True)
    >>> plt.show()
    """
    pass

def smirnovi(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    smirnovi(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    smirnovi(n, p, out=None)
    
    Inverse to `smirnov`
    
    Returns `d` such that ``smirnov(n, d) == p``, the critical value
    corresponding to `p`.
    
    Parameters
    ----------
    n : int
      Number of samples
    p : float array_like
        Probability
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        The value(s) of smirnovi(n, p), the critical values.
    
    See Also
    --------
    smirnov : The Survival Function (SF) for the distribution
    scipy.stats.ksone : Provides the functionality as a continuous distribution
    kolmogorov, kolmogi : Functions for the two-sided distribution
    scipy.stats.kstwobign : Two-sided Kolmogorov-Smirnov distribution, large n
    
    Notes
    -----
    `smirnov` is used by `stats.kstest` in the application of the
    Kolmogorov-Smirnov Goodness of Fit test. For historical reasons this
    function is exposed in `scpy.special`, but the recommended way to achieve
    the most accurate CDF/SF/PDF/PPF/ISF computations is to use the
    `stats.ksone` distribution.
    
    Examples
    --------
    >>> from scipy.special import smirnovi, smirnov
    
    >>> n = 24
    >>> deviations = [0.1, 0.2, 0.3]
    
    Use `smirnov` to compute the complementary CDF of the Smirnov
    distribution for the given number of samples and deviations.
    
    >>> p = smirnov(n, deviations)
    >>> p
    array([0.58105083, 0.12826832, 0.01032231])
    
    The inverse function ``smirnovi(n, p)`` returns ``deviations``.
    
    >>> smirnovi(n, p)
    array([0.1, 0.2, 0.3])
    """
    pass

def spence(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    spence(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    spence(z, out=None)
    
    Spence's function, also known as the dilogarithm.
    
    It is defined to be
    
    .. math::
      \int_1^z \frac{\log(t)}{1 - t}dt
    
    for complex :math:`z`, where the contour of integration is taken
    to avoid the branch cut of the logarithm. Spence's function is
    analytic everywhere except the negative real axis where it has a
    branch cut.
    
    Parameters
    ----------
    z : array_like
        Points at which to evaluate Spence's function
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    s : scalar or ndarray
        Computed values of Spence's function
    
    Notes
    -----
    There is a different convention which defines Spence's function by
    the integral
    
    .. math::
      -\int_0^z \frac{\log(1 - t)}{t}dt;
    
    this is our ``spence(1 - z)``.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import spence
    >>> import matplotlib.pyplot as plt
    
    The function is defined for complex inputs:
    
    >>> spence([1-1j, 1.5+2j, 3j, -10-5j])
    array([-0.20561676+0.91596559j, -0.86766909-1.39560134j,
           -0.59422064-2.49129918j, -1.14044398+6.80075924j])
    
    For complex inputs on the branch cut, which is the negative real axis,
    the function returns the limit for ``z`` with positive imaginary part.
    For example, in the following, note the sign change of the imaginary
    part of the output for ``z = -2`` and ``z = -2 - 1e-8j``:
    
    >>> spence([-2 + 1e-8j, -2, -2 - 1e-8j])
    array([2.32018041-3.45139229j, 2.32018042-3.4513923j ,
           2.32018041+3.45139229j])
    
    The function returns ``nan`` for real inputs on the branch cut:
    
    >>> spence(-1.5)
    nan
    
    Verify some particular values: ``spence(0) = pi**2/6``,
    ``spence(1) = 0`` and ``spence(2) = -pi**2/12``.
    
    >>> spence([0, 1, 2])
    array([ 1.64493407,  0.        , -0.82246703])
    >>> np.pi**2/6, -np.pi**2/12
    (1.6449340668482264, -0.8224670334241132)
    
    Verify the identity::
    
        spence(z) + spence(1 - z) = pi**2/6 - log(z)*log(1 - z)
    
    >>> z = 3 + 4j
    >>> spence(z) + spence(1 - z)
    (-2.6523186143876067+1.8853470951513935j)
    >>> np.pi**2/6 - np.log(z)*np.log(1 - z)
    (-2.652318614387606+1.885347095151394j)
    
    Plot the function for positive real input.
    
    >>> fig, ax = plt.subplots()
    >>> x = np.linspace(0, 6, 400)
    >>> ax.plot(x, spence(x))
    >>> ax.grid()
    >>> ax.set_xlabel('x')
    >>> ax.set_title('spence(x)')
    >>> plt.show()
    """
    pass

def sph_harm(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    sph_harm(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        sph_harm(m, n, theta, phi, out=None)
    
        Compute spherical harmonics.
    
        The spherical harmonics are defined as
    
        .. math::
    
            Y^m_n(\theta,\phi) = \sqrt{\frac{2n+1}{4\pi} \frac{(n-m)!}{(n+m)!}}
              e^{i m \theta} P^m_n(\cos(\phi))
    
        where :math:`P_n^m` are the associated Legendre functions; see `lpmv`.
    
        .. deprecated:: 1.15.0
            This function is deprecated and will be removed in SciPy 1.17.0.
            Please use `scipy.special.sph_harm_y` instead.
    
        Parameters
        ----------
        m : array_like
            Order of the harmonic (int); must have ``|m| <= n``.
        n : array_like
           Degree of the harmonic (int); must have ``n >= 0``. This is
           often denoted by ``l`` (lower case L) in descriptions of
           spherical harmonics.
        theta : array_like
           Azimuthal (longitudinal) coordinate; must be in ``[0, 2*pi]``.
        phi : array_like
           Polar (colatitudinal) coordinate; must be in ``[0, pi]``.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        y_mn : complex scalar or ndarray
           The harmonic :math:`Y^m_n` sampled at ``theta`` and ``phi``.
    
        Notes
        -----
        There are different conventions for the meanings of the input
        arguments ``theta`` and ``phi``. In SciPy ``theta`` is the
        azimuthal angle and ``phi`` is the polar angle. It is common to
        see the opposite convention, that is, ``theta`` as the polar angle
        and ``phi`` as the azimuthal angle.
    
        Note that SciPy's spherical harmonics include the Condon-Shortley
        phase [2]_ because it is part of `lpmv`.
    
        With SciPy's conventions, the first several spherical harmonics
        are
    
        .. math::
    
            Y_0^0(\theta, \phi) &= \frac{1}{2} \sqrt{\frac{1}{\pi}} \\
            Y_1^{-1}(\theta, \phi) &= \frac{1}{2} \sqrt{\frac{3}{2\pi}}
                                        e^{-i\theta} \sin(\phi) \\
            Y_1^0(\theta, \phi) &= \frac{1}{2} \sqrt{\frac{3}{\pi}}
                                     \cos(\phi) \\
            Y_1^1(\theta, \phi) &= -\frac{1}{2} \sqrt{\frac{3}{2\pi}}
                                     e^{i\theta} \sin(\phi).
    
        References
        ----------
        .. [1] Digital Library of Mathematical Functions, 14.30.
               https://dlmf.nist.gov/14.30
        .. [2] https://en.wikipedia.org/wiki/Spherical_harmonics#Condon.E2.80.93Shortley_phase
    """
    pass

def stdtr(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    stdtr(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    stdtr(df, t, out=None)
    
    Student t distribution cumulative distribution function
    
    Returns the integral:
    
    .. math::
        \frac{\Gamma((df+1)/2)}{\sqrt{\pi df} \Gamma(df/2)}
        \int_{-\infty}^t (1+x^2/df)^{-(df+1)/2}\, dx
    
    Parameters
    ----------
    df : array_like
        Degrees of freedom
    t : array_like
        Upper bound of the integral
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Value of the Student t CDF at t
    
    See Also
    --------
    stdtridf : inverse of stdtr with respect to `df`
    stdtrit : inverse of stdtr with respect to `t`
    scipy.stats.t : student t distribution
    
    Notes
    -----
    The student t distribution is also available as `scipy.stats.t`.
    Calling `stdtr` directly can improve performance compared to the
    ``cdf`` method of `scipy.stats.t` (see last example below).
    
    Examples
    --------
    Calculate the function for ``df=3`` at ``t=1``.
    
    >>> import numpy as np
    >>> from scipy.special import stdtr
    >>> import matplotlib.pyplot as plt
    >>> stdtr(3, 1)
    0.8044988905221148
    
    Plot the function for three different degrees of freedom.
    
    >>> x = np.linspace(-10, 10, 1000)
    >>> fig, ax = plt.subplots()
    >>> parameters = [(1, "solid"), (3, "dashed"), (10, "dotted")]
    >>> for (df, linestyle) in parameters:
    ...     ax.plot(x, stdtr(df, x), ls=linestyle, label=f"$df={df}$")
    >>> ax.legend()
    >>> ax.set_title("Student t distribution cumulative distribution function")
    >>> plt.show()
    
    The function can be computed for several degrees of freedom at the same
    time by providing a NumPy array or list for `df`:
    
    >>> stdtr([1, 2, 3], 1)
    array([0.75      , 0.78867513, 0.80449889])
    
    It is possible to calculate the function at several points for several
    different degrees of freedom simultaneously by providing arrays for `df`
    and `t` with shapes compatible for broadcasting. Compute `stdtr` at
    4 points for 3 degrees of freedom resulting in an array of shape 3x4.
    
    >>> dfs = np.array([[1], [2], [3]])
    >>> t = np.array([2, 4, 6, 8])
    >>> dfs.shape, t.shape
    ((3, 1), (4,))
    
    >>> stdtr(dfs, t)
    array([[0.85241638, 0.92202087, 0.94743154, 0.96041658],
           [0.90824829, 0.97140452, 0.98666426, 0.99236596],
           [0.93033702, 0.98599577, 0.99536364, 0.99796171]])
    
    The t distribution is also available as `scipy.stats.t`. Calling `stdtr`
    directly can be much faster than calling the ``cdf`` method of
    `scipy.stats.t`. To get the same results, one must use the following
    parametrization: ``scipy.stats.t(df).cdf(x) = stdtr(df, x)``.
    
    >>> from scipy.stats import t
    >>> df, x = 3, 1
    >>> stdtr_result = stdtr(df, x)  # this can be faster than below
    >>> stats_result = t(df).cdf(x)
    >>> stats_result == stdtr_result  # test that results are equal
    True
    """
    pass

def stdtridf(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    stdtridf(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    stdtridf(p, t, out=None)
    
    Inverse of `stdtr` vs df
    
    Returns the argument df such that stdtr(df, t) is equal to `p`.
    
    Parameters
    ----------
    p : array_like
        Probability
    t : array_like
        Upper bound of the integral
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    df : scalar or ndarray
        Value of `df` such that ``stdtr(df, t) == p``
    
    See Also
    --------
    stdtr : Student t CDF
    stdtrit : inverse of stdtr with respect to `t`
    scipy.stats.t : Student t distribution
    
    Examples
    --------
    Compute the student t cumulative distribution function for one
    parameter set.
    
    >>> from scipy.special import stdtr, stdtridf
    >>> df, x = 5, 2
    >>> cdf_value = stdtr(df, x)
    >>> cdf_value
    0.9490302605850709
    
    Verify that `stdtridf` recovers the original value for `df` given
    the CDF value and `x`.
    
    >>> stdtridf(cdf_value, x)
    5.0
    """
    pass

def stdtrit(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    stdtrit(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    stdtrit(df, p, out=None)
    
    The `p`-th quantile of the student t distribution.
    
    This function is the inverse of the student t distribution cumulative
    distribution function (CDF), returning `t` such that `stdtr(df, t) = p`.
    
    Returns the argument `t` such that stdtr(df, t) is equal to `p`.
    
    Parameters
    ----------
    df : array_like
        Degrees of freedom
    p : array_like
        Probability
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    t : scalar or ndarray
        Value of `t` such that ``stdtr(df, t) == p``
    
    See Also
    --------
    stdtr : Student t CDF
    stdtridf : inverse of stdtr with respect to `df`
    scipy.stats.t : Student t distribution
    
    Notes
    -----
    The student t distribution is also available as `scipy.stats.t`. Calling
    `stdtrit` directly can improve performance compared to the ``ppf``
    method of `scipy.stats.t` (see last example below).
    
    Examples
    --------
    `stdtrit` represents the inverse of the student t distribution CDF which
    is available as `stdtr`. Here, we calculate the CDF for ``df`` at
    ``x=1``. `stdtrit` then returns ``1`` up to floating point errors
    given the same value for `df` and the computed CDF value.
    
    >>> import numpy as np
    >>> from scipy.special import stdtr, stdtrit
    >>> import matplotlib.pyplot as plt
    >>> df = 3
    >>> x = 1
    >>> cdf_value = stdtr(df, x)
    >>> stdtrit(df, cdf_value)
    0.9999999994418539
    
    Plot the function for three different degrees of freedom.
    
    >>> x = np.linspace(0, 1, 1000)
    >>> parameters = [(1, "solid"), (2, "dashed"), (5, "dotted")]
    >>> fig, ax = plt.subplots()
    >>> for (df, linestyle) in parameters:
    ...     ax.plot(x, stdtrit(df, x), ls=linestyle, label=f"$df={df}$")
    >>> ax.legend()
    >>> ax.set_ylim(-10, 10)
    >>> ax.set_title("Student t distribution quantile function")
    >>> plt.show()
    
    The function can be computed for several degrees of freedom at the same
    time by providing a NumPy array or list for `df`:
    
    >>> stdtrit([1, 2, 3], 0.7)
    array([0.72654253, 0.6172134 , 0.58438973])
    
    It is possible to calculate the function at several points for several
    different degrees of freedom simultaneously by providing arrays for `df`
    and `p` with shapes compatible for broadcasting. Compute `stdtrit` at
    4 points for 3 degrees of freedom resulting in an array of shape 3x4.
    
    >>> dfs = np.array([[1], [2], [3]])
    >>> p = np.array([0.2, 0.4, 0.7, 0.8])
    >>> dfs.shape, p.shape
    ((3, 1), (4,))
    
    >>> stdtrit(dfs, p)
    array([[-1.37638192, -0.3249197 ,  0.72654253,  1.37638192],
           [-1.06066017, -0.28867513,  0.6172134 ,  1.06066017],
           [-0.97847231, -0.27667066,  0.58438973,  0.97847231]])
    
    The t distribution is also available as `scipy.stats.t`. Calling `stdtrit`
    directly can be much faster than calling the ``ppf`` method of
    `scipy.stats.t`. To get the same results, one must use the following
    parametrization: ``scipy.stats.t(df).ppf(x) = stdtrit(df, x)``.
    
    >>> from scipy.stats import t
    >>> df, x = 3, 0.5
    >>> stdtrit_result = stdtrit(df, x)  # this can be faster than below
    >>> stats_result = t(df).ppf(x)
    >>> stats_result == stdtrit_result  # test that results are equal
    True
    """
    pass

def struve(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    struve(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        struve(v, x, out=None)
    
        Struve function.
    
        Return the value of the Struve function of order `v` at `x`.  The Struve
        function is defined as,
    
        .. math::
            H_v(x) = (z/2)^{v + 1} \sum_{n=0}^\infty
            \frac{(-1)^n (z/2)^{2n}}{\Gamma(n + \frac{3}{2}) \Gamma(n + v + \frac{3}{2})},
    
        where :math:`\Gamma` is the gamma function.
    
        Parameters
        ----------
        v : array_like
            Order of the Struve function (float).
        x : array_like
            Argument of the Struve function (float; must be positive unless `v` is
            an integer).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        H : scalar or ndarray
            Value of the Struve function of order `v` at `x`.
    
        See Also
        --------
        modstruve: Modified Struve function
    
        Notes
        -----
        Three methods discussed in [1]_ are used to evaluate the Struve function:
    
        - power series
        - expansion in Bessel functions (if :math:`|z| < |v| + 20`)
        - asymptotic large-z expansion (if :math:`z \geq 0.7v + 12`)
    
        Rounding errors are estimated based on the largest terms in the sums, and
        the result associated with the smallest error is returned.
    
        References
        ----------
        .. [1] NIST Digital Library of Mathematical Functions
               https://dlmf.nist.gov/11
    
        Examples
        --------
        Calculate the Struve function of order 1 at 2.
    
        >>> import numpy as np
        >>> from scipy.special import struve
        >>> import matplotlib.pyplot as plt
        >>> struve(1, 2.)
        0.6467637282835622
    
        Calculate the Struve function at 2 for orders 1, 2 and 3 by providing
        a list for the order parameter `v`.
    
        >>> struve([1, 2, 3], 2.)
        array([0.64676373, 0.28031806, 0.08363767])
    
        Calculate the Struve function of order 1 for several points by providing
        an array for `x`.
    
        >>> points = np.array([2., 5., 8.])
        >>> struve(1, points)
        array([0.64676373, 0.80781195, 0.48811605])
    
        Compute the Struve function for several orders at several points by
        providing arrays for `v` and `z`. The arrays have to be broadcastable
        to the correct shapes.
    
        >>> orders = np.array([[1], [2], [3]])
        >>> points.shape, orders.shape
        ((3,), (3, 1))
    
        >>> struve(orders, points)
        array([[0.64676373, 0.80781195, 0.48811605],
               [0.28031806, 1.56937455, 1.51769363],
               [0.08363767, 1.50872065, 2.98697513]])
    
        Plot the Struve functions of order 0 to 3 from -10 to 10.
    
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(-10., 10., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, struve(i, x), label=f'$H_{i!r}$')
        >>> ax.legend(ncol=2)
        >>> ax.set_xlim(-10, 10)
        >>> ax.set_title(r"Struve functions $H_{\nu}$")
        >>> plt.show()
    """
    pass

def tandg(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    tandg(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        tandg(x, out=None)
    
        Tangent of angle `x` given in degrees.
    
        Parameters
        ----------
        x : array_like
            Angle, given in degrees.
        out : ndarray, optional
            Optional output array for the function results.
    
        Returns
        -------
        scalar or ndarray
            Tangent at the input.
    
        See Also
        --------
        sindg, cosdg, cotdg
    
        Examples
        --------
        >>> import numpy as np
        >>> import scipy.special as sc
    
        It is more accurate than using tangent directly.
    
        >>> x = 180 * np.arange(3)
        >>> sc.tandg(x)
        array([0., 0., 0.])
        >>> np.tan(x * np.pi / 180)
        array([ 0.0000000e+00, -1.2246468e-16, -2.4492936e-16])
    """
    pass

def tklmbda(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    tklmbda(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    tklmbda(x, lmbda, out=None)
    
    Cumulative distribution function of the Tukey lambda distribution.
    
    Parameters
    ----------
    x, lmbda : array_like
        Parameters
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    cdf : scalar or ndarray
        Value of the Tukey lambda CDF
    
    See Also
    --------
    scipy.stats.tukeylambda : Tukey lambda distribution
    
    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.special import tklmbda, expit
    
    Compute the cumulative distribution function (CDF) of the Tukey lambda
    distribution at several ``x`` values for `lmbda` = -1.5.
    
    >>> x = np.linspace(-2, 2, 9)
    >>> x
    array([-2. , -1.5, -1. , -0.5,  0. ,  0.5,  1. ,  1.5,  2. ])
    >>> tklmbda(x, -1.5)
    array([0.34688734, 0.3786554 , 0.41528805, 0.45629737, 0.5       ,
           0.54370263, 0.58471195, 0.6213446 , 0.65311266])
    
    When `lmbda` is 0, the function is the logistic sigmoid function,
    which is implemented in `scipy.special` as `expit`.
    
    >>> tklmbda(x, 0)
    array([0.11920292, 0.18242552, 0.26894142, 0.37754067, 0.5       ,
           0.62245933, 0.73105858, 0.81757448, 0.88079708])
    >>> expit(x)
    array([0.11920292, 0.18242552, 0.26894142, 0.37754067, 0.5       ,
           0.62245933, 0.73105858, 0.81757448, 0.88079708])
    
    When `lmbda` is 1, the Tukey lambda distribution is uniform on the
    interval [-1, 1], so the CDF increases linearly.
    
    >>> t = np.linspace(-1, 1, 9)
    >>> tklmbda(t, 1)
    array([0.   , 0.125, 0.25 , 0.375, 0.5  , 0.625, 0.75 , 0.875, 1.   ])
    
    In the following, we generate plots for several values of `lmbda`.
    
    The first figure shows graphs for `lmbda` <= 0.
    
    >>> styles = ['-', '-.', '--', ':']
    >>> fig, ax = plt.subplots()
    >>> x = np.linspace(-12, 12, 500)
    >>> for k, lmbda in enumerate([-1.0, -0.5, 0.0]):
    ...     y = tklmbda(x, lmbda)
    ...     ax.plot(x, y, styles[k], label=rf'$\lambda$ = {lmbda:-4.1f}')
    
    >>> ax.set_title(r'tklmbda(x, $\lambda$)')
    >>> ax.set_label('x')
    >>> ax.legend(framealpha=1, shadow=True)
    >>> ax.grid(True)
    
    The second figure shows graphs for `lmbda` > 0.  The dots in the
    graphs show the bounds of the support of the distribution.
    
    >>> fig, ax = plt.subplots()
    >>> x = np.linspace(-4.2, 4.2, 500)
    >>> lmbdas = [0.25, 0.5, 1.0, 1.5]
    >>> for k, lmbda in enumerate(lmbdas):
    ...     y = tklmbda(x, lmbda)
    ...     ax.plot(x, y, styles[k], label=fr'$\lambda$ = {lmbda}')
    
    >>> ax.set_prop_cycle(None)
    >>> for lmbda in lmbdas:
    ...     ax.plot([-1/lmbda, 1/lmbda], [0, 1], '.', ms=8)
    
    >>> ax.set_title(r'tklmbda(x, $\lambda$)')
    >>> ax.set_xlabel('x')
    >>> ax.legend(framealpha=1, shadow=True)
    >>> ax.grid(True)
    
    >>> plt.tight_layout()
    >>> plt.show()
    
    The CDF of the Tukey lambda distribution is also implemented as the
    ``cdf`` method of `scipy.stats.tukeylambda`.  In the following,
    ``tukeylambda.cdf(x, -0.5)`` and ``tklmbda(x, -0.5)`` compute the
    same values:
    
    >>> from scipy.stats import tukeylambda
    >>> x = np.linspace(-2, 2, 9)
    
    >>> tukeylambda.cdf(x, -0.5)
    array([0.21995157, 0.27093858, 0.33541677, 0.41328161, 0.5       ,
           0.58671839, 0.66458323, 0.72906142, 0.78004843])
    
    >>> tklmbda(x, -0.5)
    array([0.21995157, 0.27093858, 0.33541677, 0.41328161, 0.5       ,
           0.58671839, 0.66458323, 0.72906142, 0.78004843])
    
    The implementation in ``tukeylambda`` also provides location and scale
    parameters, and other methods such as ``pdf()`` (the probability
    density function) and ``ppf()`` (the inverse of the CDF), so for
    working with the Tukey lambda distribution, ``tukeylambda`` is more
    generally useful.  The primary advantage of ``tklmbda`` is that it is
    significantly faster than ``tukeylambda.cdf``.
    """
    pass

def voigt_profile(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    voigt_profile(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    voigt_profile(x, sigma, gamma, out=None)
    
    Voigt profile.
    
    The Voigt profile is a convolution of a 1-D Normal distribution with
    standard deviation ``sigma`` and a 1-D Cauchy distribution with half-width at
    half-maximum ``gamma``.
    
    If ``sigma = 0``, PDF of Cauchy distribution is returned.
    Conversely, if ``gamma = 0``, PDF of Normal distribution is returned.
    If ``sigma = gamma = 0``, the return value is ``Inf`` for ``x = 0``,
    and ``0`` for all other ``x``.
    
    Parameters
    ----------
    x : array_like
        Real argument
    sigma : array_like
        The standard deviation of the Normal distribution part
    gamma : array_like
        The half-width at half-maximum of the Cauchy distribution part
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    scalar or ndarray
        The Voigt profile at the given arguments
    
    See Also
    --------
    wofz : Faddeeva function
    
    Notes
    -----
    It can be expressed in terms of Faddeeva function
    
    .. math:: V(x; \sigma, \gamma) = \frac{Re[w(z)]}{\sigma\sqrt{2\pi}},
    .. math:: z = \frac{x + i\gamma}{\sqrt{2}\sigma}
    
    where :math:`w(z)` is the Faddeeva function.
    
    References
    ----------
    .. [1] https://en.wikipedia.org/wiki/Voigt_profile
    
    Examples
    --------
    Calculate the function at point 2 for ``sigma=1`` and ``gamma=1``.
    
    >>> from scipy.special import voigt_profile
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> voigt_profile(2, 1., 1.)
    0.09071519942627544
    
    Calculate the function at several points by providing a NumPy array
    for `x`.
    
    >>> values = np.array([-2., 0., 5])
    >>> voigt_profile(values, 1., 1.)
    array([0.0907152 , 0.20870928, 0.01388492])
    
    Plot the function for different parameter sets.
    
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> x = np.linspace(-10, 10, 500)
    >>> parameters_list = [(1.5, 0., "solid"), (1.3, 0.5, "dashed"),
    ...                    (0., 1.8, "dotted"), (1., 1., "dashdot")]
    >>> for params in parameters_list:
    ...     sigma, gamma, linestyle = params
    ...     voigt = voigt_profile(x, sigma, gamma)
    ...     ax.plot(x, voigt, label=rf"$\sigma={sigma},\, \gamma={gamma}$",
    ...             ls=linestyle)
    >>> ax.legend()
    >>> plt.show()
    
    Verify visually that the Voigt profile indeed arises as the convolution
    of a normal and a Cauchy distribution.
    
    >>> from scipy.signal import convolve
    >>> x, dx = np.linspace(-10, 10, 500, retstep=True)
    >>> def gaussian(x, sigma):
    ...     return np.exp(-0.5 * x**2/sigma**2)/(sigma * np.sqrt(2*np.pi))
    >>> def cauchy(x, gamma):
    ...     return gamma/(np.pi * (np.square(x)+gamma**2))
    >>> sigma = 2
    >>> gamma = 1
    >>> gauss_profile = gaussian(x, sigma)
    >>> cauchy_profile = cauchy(x, gamma)
    >>> convolved = dx * convolve(cauchy_profile, gauss_profile, mode="same")
    >>> voigt = voigt_profile(x, sigma, gamma)
    >>> fig, ax = plt.subplots(figsize=(8, 8))
    >>> ax.plot(x, gauss_profile, label="Gauss: $G$", c='b')
    >>> ax.plot(x, cauchy_profile, label="Cauchy: $C$", c='y', ls="dashed")
    >>> xx = 0.5*(x[1:] + x[:-1])  # midpoints
    >>> ax.plot(xx, convolved[1:], label="Convolution: $G * C$", ls='dashdot',
    ...         c='k')
    >>> ax.plot(x, voigt, label="Voigt", ls='dotted', c='r')
    >>> ax.legend()
    >>> plt.show()
    """
    pass

def wofz(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    wofz(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    wofz(z, out=None)
    
    Faddeeva function
    
    Returns the value of the Faddeeva function for complex argument::
    
        exp(-z**2) * erfc(-i*z)
    
    Parameters
    ----------
    z : array_like
        complex argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    scalar or ndarray
        Value of the Faddeeva function
    
    See Also
    --------
    dawsn, erf, erfc, erfcx, erfi
    
    References
    ----------
    .. [1] Steven G. Johnson, Faddeeva W function implementation.
       http://ab-initio.mit.edu/Faddeeva
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy import special
    >>> import matplotlib.pyplot as plt
    
    >>> x = np.linspace(-3, 3)
    >>> z = special.wofz(x)
    
    >>> plt.plot(x, z.real, label='wofz(x).real')
    >>> plt.plot(x, z.imag, label='wofz(x).imag')
    >>> plt.xlabel('$x$')
    >>> plt.legend(framealpha=1, shadow=True)
    >>> plt.grid(alpha=0.25)
    >>> plt.show()
    """
    pass

def wrightomega(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    wrightomega(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    wrightomega(z, out=None)
    
    Wright Omega function.
    
    Defined as the solution to
    
    .. math::
    
        \omega + \log(\omega) = z
    
    where :math:`\log` is the principal branch of the complex logarithm.
    
    Parameters
    ----------
    z : array_like
        Points at which to evaluate the Wright Omega function
    out : ndarray, optional
        Optional output array for the function values
    
    Returns
    -------
    omega : scalar or ndarray
        Values of the Wright Omega function
    
    See Also
    --------
    lambertw : The Lambert W function
    
    Notes
    -----
    .. versionadded:: 0.19.0
    
    The function can also be defined as
    
    .. math::
    
        \omega(z) = W_{K(z)}(e^z)
    
    where :math:`K(z) = \lceil (\Im(z) - \pi)/(2\pi) \rceil` is the
    unwinding number and :math:`W` is the Lambert W function.
    
    The implementation here is taken from [1]_.
    
    References
    ----------
    .. [1] Lawrence, Corless, and Jeffrey, "Algorithm 917: Complex
           Double-Precision Evaluation of the Wright :math:`\omega`
           Function." ACM Transactions on Mathematical Software,
           2012. :doi:`10.1145/2168773.2168779`.
    
    Examples
    --------
    >>> import numpy as np
    >>> from scipy.special import wrightomega, lambertw
    
    >>> wrightomega([-2, -1, 0, 1, 2])
    array([0.12002824, 0.27846454, 0.56714329, 1.        , 1.5571456 ])
    
    Complex input:
    
    >>> wrightomega(3 + 5j)
    (1.5804428632097158+3.8213626783287937j)
    
    Verify that ``wrightomega(z)`` satisfies ``w + log(w) = z``:
    
    >>> w = -5 + 4j
    >>> wrightomega(w + np.log(w))
    (-5+4j)
    
    Verify the connection to ``lambertw``:
    
    >>> z = 0.5 + 3j
    >>> wrightomega(z)
    (0.0966015889280649+1.4937828458191993j)
    >>> lambertw(np.exp(z))
    (0.09660158892806493+1.4937828458191993j)
    
    >>> z = 0.5 + 4j
    >>> wrightomega(z)
    (-0.3362123489037213+2.282986001579032j)
    >>> lambertw(np.exp(z), k=1)
    (-0.33621234890372115+2.282986001579032j)
    """
    pass

def wright_bessel(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    wright_bessel(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        wright_bessel(a, b, x, out=None)
    
        Wright's generalized Bessel function.
    
        Wright's generalized Bessel function is an entire function and defined as
    
        .. math:: \Phi(a, b; x) = \sum_{k=0}^\infty \frac{x^k}{k! \Gamma(a k + b)}
    
        See Also [1].
    
        Parameters
        ----------
        a : array_like of float
            a >= 0
        b : array_like of float
            b >= 0
        x : array_like of float
            x >= 0
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Value of the Wright's generalized Bessel function
    
        Notes
        -----
        Due to the complexity of the function with its three parameters, only
        non-negative arguments are implemented.
    
        .. versionadded:: 1.7.0
    
        References
        ----------
        .. [1] Digital Library of Mathematical Functions, 10.46.
               https://dlmf.nist.gov/10.46.E1
    
        Examples
        --------
        >>> from scipy.special import wright_bessel
        >>> a, b, x = 1.5, 1.1, 2.5
        >>> wright_bessel(a, b-1, x)
        4.5314465939443025
    
        Now, let us verify the relation
    
        .. math:: \Phi(a, b-1; x) = a x \Phi(a, b+a; x) + (b-1) \Phi(a, b; x)
    
        >>> a * x * wright_bessel(a, b+a, x) + (b-1) * wright_bessel(a, b, x)
        4.5314465939443025
    """
    pass

def xlog1py(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    xlog1py(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    xlog1py(x, y, out=None)
    
    Compute ``x*log1p(y)`` so that the result is 0 if ``x = 0``.
    
    Parameters
    ----------
    x : array_like
        Multiplier
    y : array_like
        Argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    z : scalar or ndarray
        Computed x*log1p(y)
    
    Notes
    -----
    
    .. versionadded:: 0.13.0
    
    Examples
    --------
    This example shows how the function can be used to calculate the log of
    the probability mass function for a geometric discrete random variable.
    The probability mass function of the geometric distribution is defined
    as follows:
    
    .. math:: f(k) = (1-p)^{k-1} p
    
    where :math:`p` is the probability of a single success
    and :math:`1-p` is the probability of a single failure
    and :math:`k` is the number of trials to get the first success.
    
    >>> import numpy as np
    >>> from scipy.special import xlog1py
    >>> p = 0.5
    >>> k = 100
    >>> _pmf = np.power(1 - p, k - 1) * p
    >>> _pmf
    7.888609052210118e-31
    
    If we take k as a relatively large number the value of the probability
    mass function can become very low. In such cases taking the log of the
    pmf would be more suitable as the log function can change the values
    to a scale that is more appropriate to work with.
    
    >>> _log_pmf = xlog1py(k - 1, -p) + np.log(p)
    >>> _log_pmf
    -69.31471805599453
    
    We can confirm that we get a value close to the original pmf value by
    taking the exponential of the log pmf.
    
    >>> _orig_pmf = np.exp(_log_pmf)
    >>> np.isclose(_pmf, _orig_pmf)
    True
    """
    pass

def xlogy(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    xlogy(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    xlogy(x, y, out=None)
    
    Compute ``x*log(y)`` so that the result is 0 if ``x = 0``.
    
    Parameters
    ----------
    x : array_like
        Multiplier
    y : array_like
        Argument
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    z : scalar or ndarray
        Computed x*log(y)
    
    Notes
    -----
    The log function used in the computation is the natural log.
    
    .. versionadded:: 0.13.0
    
    Examples
    --------
    We can use this function to calculate the binary logistic loss also
    known as the binary cross entropy. This loss function is used for
    binary classification problems and is defined as:
    
    .. math::
        L = 1/n * \sum_{i=0}^n -(y_i*log(y\_pred_i) + (1-y_i)*log(1-y\_pred_i))
    
    We can define the parameters `x` and `y` as y and y_pred respectively.
    y is the array of the actual labels which over here can be either 0 or 1.
    y_pred is the array of the predicted probabilities with respect to
    the positive class (1).
    
    >>> import numpy as np
    >>> from scipy.special import xlogy
    >>> y = np.array([0, 1, 0, 1, 1, 0])
    >>> y_pred = np.array([0.3, 0.8, 0.4, 0.7, 0.9, 0.2])
    >>> n = len(y)
    >>> loss = -(xlogy(y, y_pred) + xlogy(1 - y, 1 - y_pred)).sum()
    >>> loss /= n
    >>> loss
    0.29597052165495025
    
    A lower loss is usually better as it indicates that the predictions are
    similar to the actual labels. In this example since our predicted
    probabilities are close to the actual labels, we get an overall loss
    that is reasonably low and appropriate.
    """
    pass

def y0(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    y0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        y0(x, out=None)
    
        Bessel function of the second kind of order 0.
    
        Parameters
        ----------
        x : array_like
            Argument (float).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        Y : scalar or ndarray
            Value of the Bessel function of the second kind of order 0 at `x`.
    
        See Also
        --------
        j0: Bessel function of the first kind of order 0
        yv: Bessel function of the first kind
    
        Notes
        -----
        The domain is divided into the intervals [0, 5] and (5, infinity). In the
        first interval a rational approximation :math:`R(x)` is employed to
        compute,
    
        .. math::
    
            Y_0(x) = R(x) + \frac{2 \log(x) J_0(x)}{\pi},
    
        where :math:`J_0` is the Bessel function of the first kind of order 0.
    
        In the second interval, the Hankel asymptotic expansion is employed with
        two rational functions of degree 6/6 and 7/7.
    
        This function is a wrapper for the Cephes [1]_ routine `y0`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import y0
        >>> y0(1.)
        0.08825696421567697
    
        Calculate at several points:
    
        >>> import numpy as np
        >>> y0(np.array([0.5, 2., 3.]))
        array([-0.44451873,  0.51037567,  0.37685001])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = y0(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def y1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    y1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        y1(x, out=None)
    
        Bessel function of the second kind of order 1.
    
        Parameters
        ----------
        x : array_like
            Argument (float).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        Y : scalar or ndarray
            Value of the Bessel function of the second kind of order 1 at `x`.
    
        See Also
        --------
        j1: Bessel function of the first kind of order 1
        yn: Bessel function of the second kind
        yv: Bessel function of the second kind
    
        Notes
        -----
        The domain is divided into the intervals [0, 8] and (8, infinity). In the
        first interval a 25 term Chebyshev expansion is used, and computing
        :math:`J_1` (the Bessel function of the first kind) is required. In the
        second, the asymptotic trigonometric representation is employed using two
        rational functions of degree 5/5.
    
        This function is a wrapper for the Cephes [1]_ routine `y1`.
    
        References
        ----------
        .. [1] Cephes Mathematical Functions Library,
               http://www.netlib.org/cephes/
    
        Examples
        --------
        Calculate the function at one point:
    
        >>> from scipy.special import y1
        >>> y1(1.)
        -0.7812128213002888
    
        Calculate at several points:
    
        >>> import numpy as np
        >>> y1(np.array([0.5, 2., 3.]))
        array([-1.47147239, -0.10703243,  0.32467442])
    
        Plot the function from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> y = y1(x)
        >>> ax.plot(x, y)
        >>> plt.show()
    """
    pass

def yn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    yn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    yn(n, x, out=None)
    
    Bessel function of the second kind of integer order and real argument.
    
    Parameters
    ----------
    n : array_like
        Order (integer).
    x : array_like
        Argument (float).
    out : ndarray, optional
        Optional output array for the function results
    
    Returns
    -------
    Y : scalar or ndarray
        Value of the Bessel function, :math:`Y_n(x)`.
    
    See Also
    --------
    yv : For real order and real or complex argument.
    y0: faster implementation of this function for order 0
    y1: faster implementation of this function for order 1
    
    Notes
    -----
    Wrapper for the Cephes [1]_ routine `yn`.
    
    The function is evaluated by forward recurrence on `n`, starting with
    values computed by the Cephes routines `y0` and `y1`. If ``n = 0`` or 1,
    the routine for `y0` or `y1` is called directly.
    
    References
    ----------
    .. [1] Cephes Mathematical Functions Library,
           http://www.netlib.org/cephes/
    
    Examples
    --------
    Evaluate the function of order 0 at one point.
    
    >>> from scipy.special import yn
    >>> yn(0, 1.)
    0.08825696421567697
    
    Evaluate the function at one point for different orders.
    
    >>> yn(0, 1.), yn(1, 1.), yn(2, 1.)
    (0.08825696421567697, -0.7812128213002888, -1.6506826068162546)
    
    The evaluation for different orders can be carried out in one call by
    providing a list or NumPy array as argument for the `v` parameter:
    
    >>> yn([0, 1, 2], 1.)
    array([ 0.08825696, -0.78121282, -1.65068261])
    
    Evaluate the function at several points for order 0 by providing an
    array for `z`.
    
    >>> import numpy as np
    >>> points = np.array([0.5, 3., 8.])
    >>> yn(0, points)
    array([-0.44451873,  0.37685001,  0.22352149])
    
    If `z` is an array, the order parameter `v` must be broadcastable to
    the correct shape if different orders shall be computed in one call.
    To calculate the orders 0 and 1 for an 1D array:
    
    >>> orders = np.array([[0], [1]])
    >>> orders.shape
    (2, 1)
    
    >>> yn(orders, points)
    array([[-0.44451873,  0.37685001,  0.22352149],
           [-1.47147239,  0.32467442, -0.15806046]])
    
    Plot the functions of order 0 to 3 from 0 to 10.
    
    >>> import matplotlib.pyplot as plt
    >>> fig, ax = plt.subplots()
    >>> x = np.linspace(0., 10., 1000)
    >>> for i in range(4):
    ...     ax.plot(x, yn(i, x), label=f'$Y_{i!r}$')
    >>> ax.set_ylim(-3, 1)
    >>> ax.legend()
    >>> plt.show()
    """
    pass

def yv(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    yv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        yv(v, z, out=None)
    
        Bessel function of the second kind of real order and complex argument.
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        Y : scalar or ndarray
            Value of the Bessel function of the second kind, :math:`Y_v(x)`.
    
        See Also
        --------
        yve : :math:`Y_v` with leading exponential behavior stripped off.
        y0: faster implementation of this function for order 0
        y1: faster implementation of this function for order 1
    
        Notes
        -----
        For positive `v` values, the computation is carried out using the
        AMOS [1]_ `zbesy` routine, which exploits the connection to the Hankel
        Bessel functions :math:`H_v^{(1)}` and :math:`H_v^{(2)}`,
    
        .. math:: Y_v(z) = \frac{1}{2\imath} (H_v^{(1)} - H_v^{(2)}).
    
        For negative `v` values the formula,
    
        .. math:: Y_{-v}(z) = Y_v(z) \cos(\pi v) + J_v(z) \sin(\pi v)
    
        is used, where :math:`J_v(z)` is the Bessel function of the first kind,
        computed using the AMOS routine `zbesj`.  Note that the second term is
        exactly zero for integer `v`; to improve accuracy the second term is
        explicitly omitted for `v` values such that `v = floor(v)`.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Evaluate the function of order 0 at one point.
    
        >>> from scipy.special import yv
        >>> yv(0, 1.)
        0.088256964215677
    
        Evaluate the function at one point for different orders.
    
        >>> yv(0, 1.), yv(1, 1.), yv(1.5, 1.)
        (0.088256964215677, -0.7812128213002889, -1.102495575160179)
    
        The evaluation for different orders can be carried out in one call by
        providing a list or NumPy array as argument for the `v` parameter:
    
        >>> yv([0, 1, 1.5], 1.)
        array([ 0.08825696, -0.78121282, -1.10249558])
    
        Evaluate the function at several points for order 0 by providing an
        array for `z`.
    
        >>> import numpy as np
        >>> points = np.array([0.5, 3., 8.])
        >>> yv(0, points)
        array([-0.44451873,  0.37685001,  0.22352149])
    
        If `z` is an array, the order parameter `v` must be broadcastable to
        the correct shape if different orders shall be computed in one call.
        To calculate the orders 0 and 1 for an 1D array:
    
        >>> orders = np.array([[0], [1]])
        >>> orders.shape
        (2, 1)
    
        >>> yv(orders, points)
        array([[-0.44451873,  0.37685001,  0.22352149],
               [-1.47147239,  0.32467442, -0.15806046]])
    
        Plot the functions of order 0 to 3 from 0 to 10.
    
        >>> import matplotlib.pyplot as plt
        >>> fig, ax = plt.subplots()
        >>> x = np.linspace(0., 10., 1000)
        >>> for i in range(4):
        ...     ax.plot(x, yv(i, x), label=f'$Y_{i!r}$')
        >>> ax.set_ylim(-3, 1)
        >>> ax.legend()
        >>> plt.show()
    """
    pass

def yve(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    yve(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        yve(v, z, out=None)
    
        Exponentially scaled Bessel function of the second kind of real order.
    
        Returns the exponentially scaled Bessel function of the second
        kind of real order `v` at complex `z`::
    
            yve(v, z) = yv(v, z) * exp(-abs(z.imag))
    
        Parameters
        ----------
        v : array_like
            Order (float).
        z : array_like
            Argument (float or complex).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        Y : scalar or ndarray
            Value of the exponentially scaled Bessel function.
    
        See Also
        --------
        yv: Unscaled Bessel function of the second kind of real order.
    
        Notes
        -----
        For positive `v` values, the computation is carried out using the
        AMOS [1]_ `zbesy` routine, which exploits the connection to the Hankel
        Bessel functions :math:`H_v^{(1)}` and :math:`H_v^{(2)}`,
    
        .. math:: Y_v(z) = \frac{1}{2\imath} (H_v^{(1)} - H_v^{(2)}).
    
        For negative `v` values the formula,
    
        .. math:: Y_{-v}(z) = Y_v(z) \cos(\pi v) + J_v(z) \sin(\pi v)
    
        is used, where :math:`J_v(z)` is the Bessel function of the first kind,
        computed using the AMOS routine `zbesj`.  Note that the second term is
        exactly zero for integer `v`; to improve accuracy the second term is
        explicitly omitted for `v` values such that `v = floor(v)`.
    
        Exponentially scaled Bessel functions are useful for large `z`:
        for these, the unscaled Bessel functions can easily under-or overflow.
    
        References
        ----------
        .. [1] Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
               of a Complex Argument and Nonnegative Order",
               http://netlib.org/amos/
    
        Examples
        --------
        Compare the output of `yv` and `yve` for large complex arguments for `z`
        by computing their values for order ``v=1`` at ``z=1000j``. We see that
        `yv` returns nan but `yve` returns a finite number:
    
        >>> import numpy as np
        >>> from scipy.special import yv, yve
        >>> v = 1
        >>> z = 1000j
        >>> yv(v, z), yve(v, z)
        ((nan+nanj), (-0.012610930256928629+7.721967686709076e-19j))
    
        For real arguments for `z`, `yve` returns the same as `yv` up to
        floating point errors.
    
        >>> v, z = 1, 1000
        >>> yv(v, z), yve(v, z)
        (-0.02478433129235178, -0.02478433129235179)
    
        The function can be evaluated for several orders at the same time by
        providing a list or NumPy array for `v`:
    
        >>> yve([1, 2, 3], 1j)
        array([-0.20791042+0.14096627j,  0.38053618-0.04993878j,
               0.00815531-1.66311097j])
    
        In the same way, the function can be evaluated at several points in one
        call by providing a list or NumPy array for `z`:
    
        >>> yve(1, np.array([1j, 2j, 3j]))
        array([-0.20791042+0.14096627j, -0.21526929+0.01205044j,
               -0.19682671+0.00127278j])
    
        It is also possible to evaluate several orders at several points
        at the same time by providing arrays for `v` and `z` with
        broadcasting compatible shapes. Compute `yve` for two different orders
        `v` and three points `z` resulting in a 2x3 array.
    
        >>> v = np.array([[1], [2]])
        >>> z = np.array([3j, 4j, 5j])
        >>> v.shape, z.shape
        ((2, 1), (3,))
    
        >>> yve(v, z)
        array([[-1.96826713e-01+1.27277544e-03j, -1.78750840e-01+1.45558819e-04j,
                -1.63972267e-01+1.73494110e-05j],
               [1.94960056e-03-1.11782545e-01j,  2.02902325e-04-1.17626501e-01j,
                2.27727687e-05-1.17951906e-01j]])
    """
    pass

def zetac(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    zetac(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        zetac(x, out=None)
    
        Riemann zeta function minus 1.
    
        This function is defined as
    
        .. math:: \\zeta(x) = \\sum_{k=2}^{\\infty} 1 / k^x,
    
        where ``x > 1``.  For ``x < 1`` the analytic continuation is
        computed. For more information on the Riemann zeta function, see
        [dlmf]_.
    
        Parameters
        ----------
        x : array_like of float
            Values at which to compute zeta(x) - 1 (must be real).
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Values of zeta(x) - 1.
    
        See Also
        --------
        zeta
    
        References
        ----------
        .. [dlmf] NIST Digital Library of Mathematical Functions
                  https://dlmf.nist.gov/25
    
        Examples
        --------
        >>> import numpy as np
        >>> from scipy.special import zetac, zeta
    
        Some special values:
    
        >>> zetac(2), np.pi**2/6 - 1
        (0.64493406684822641, 0.6449340668482264)
    
        >>> zetac(-1), -1.0/12 - 1
        (-1.0833333333333333, -1.0833333333333333)
    
        Compare ``zetac(x)`` to ``zeta(x) - 1`` for large `x`:
    
        >>> zetac(60), zeta(60) - 1
        (8.673617380119933e-19, 0.0)
    """
    pass

def _beta_pdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _beta_pdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _beta_pdf(x, a, b)
    
    Probability density function of beta distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued such that :math:`0 \leq x \leq 1`,
        the upper limit of integration
    a, b : array_like
           Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _beta_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _beta_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _beta_ppf(x, a, b)
    
    Percent point function of beta distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued such that :math:`0 \leq x \leq 1`,
        the upper limit of integration
    a, b : array_like
           Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _binom_cdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _binom_cdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _binom_cdf(x, n, p)
    
    Cumulative density function of binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    n : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _binom_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _binom_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _binom_isf(x, n, p)
    
    Inverse survival function of binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    n : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _binom_pmf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _binom_pmf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _binom_pmf(x, n, p)
    
    Probability mass function of binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    n : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _binom_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _binom_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _binom_ppf(x, n, p)
    
    Percent point function of binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    n : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _binom_sf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _binom_sf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _binom_sf(x, n, p)
    
    Survival function of binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    n : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _cauchy_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _cauchy_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _cauchy_isf(p, loc, scale)
    
    Inverse survival function of the Cauchy distribution.
    
    Parameters
    ----------
    p : array_like
        Probabilities
    loc : array_like
        Location parameter of the distribution.
    scale : array_like
        Scale parameter of the distribution.
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _cauchy_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _cauchy_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _cauchy_ppf(p, loc, scale)
    
    Percent point function (i.e. quantile) of the Cauchy distribution.
    
    Parameters
    ----------
    p : array_like
        Probabilities
    loc : array_like
        Location parameter of the distribution.
    scale : array_like
        Scale parameter of the distribution.
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _cosine_cdf(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _cosine_cdf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _cosine_cdf(x)
    
    Cumulative distribution function (CDF) of the cosine distribution::
    
                 {             0,              x < -pi
        cdf(x) = { (pi + x + sin(x))/(2*pi),   -pi <= x <= pi
                 {             1,              x > pi
    
    Parameters
    ----------
    x : array_like
        `x` must contain real numbers.
    
    Returns
    -------
    scalar or ndarray
        The cosine distribution CDF evaluated at `x`.
    """
    pass

def _cosine_invcdf(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _cosine_invcdf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _cosine_invcdf(p)
    
    Inverse of the cumulative distribution function (CDF) of the cosine
    distribution.
    
    The CDF of the cosine distribution is::
    
        cdf(x) = (pi + x + sin(x))/(2*pi)
    
    This function computes the inverse of cdf(x).
    
    Parameters
    ----------
    p : array_like
        `p` must contain real numbers in the interval ``0 <= p <= 1``.
        `nan` is returned for values of `p` outside the interval [0, 1].
    
    Returns
    -------
    scalar or ndarray
        The inverse of the cosine distribution CDF evaluated at `p`.
    """
    pass

def _cospi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _cospi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, do not use.
    """
    pass

def _ellip_harm(x1, x2, x3, x4, x5, x6, x7, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ellip_harm(x1, x2, x3, x4, x5, x6, x7, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, use `ellip_harm` instead.
    """
    pass

def _factorial(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _factorial(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _hypergeom_cdf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_cdf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_cdf(x, r, N, M)
    
    Cumulative density function of hypergeometric distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _hypergeom_mean(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_mean(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_mean(r, N, M)
    
    Mean of hypergeometric distribution.
    
    Parameters
    ----------
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _hypergeom_pmf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_pmf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_pmf(x, r, N, M)
    
    Probability mass function of hypergeometric distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _hypergeom_sf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_sf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_sf(x, r, N, M)
    
    Survival function of hypergeometric distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _hypergeom_skewness(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_skewness(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_skewness(r, N, M)
    
    Skewness of hypergeometric distribution.
    
    Parameters
    ----------
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _hypergeom_variance(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _hypergeom_variance(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _hypergeom_variance(r, N, M)
    
    Mean of hypergeometric distribution.
    
    Parameters
    ----------
    r, N, M : array_like
        Positive, integer-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _igam_fac(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _igam_fac(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _invgauss_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _invgauss_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _invgauss_isf(x, mu, s)
    
    Inverse survival function of inverse gaussian distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    mu : array_like
        Positive, real-valued parameters
    s : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _invgauss_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _invgauss_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _invgauss_ppf(x, mu)
    
    Percent point function of inverse gaussian distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    mu : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _iv_ratio(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _iv_ratio(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        _iv_ratio(v, x, out=None)
    
        Internal function.
    
        Return `iv(v, x) / iv(v-1, x)` for `v >= 0.5` and `x >= 0`, where `iv`
        is the modified Bessel function of the first kind.
    
        Parameters
        ----------
        v : array_like of float
            Order.  Must be `>= 0.5`.  May be `+inf` if `x` is finite.
        x : array_like of float
            Argument.  Must be `>= 0`.  May be `+inf` if `v` is finite.
        out : ndarray, optional
            Optional output array for the function values
    
        Returns
        -------
        scalar or ndarray
            Ratio between modified Bessel function of the first kind of adjacent
            orders.  The returned value is between `0` and `1`, inclusive.
    
            If either `v` or `x` is `nan`, `nan` is returned.  Otherwise, the
            special values are:
    
            - If `v < 0.5` or `x < 0`, set "domain" error and return `nan`.
            - If `v >= 0.5` and `x == 0`, return `x`.
            - If `v >= 0.5` and `x == +inf`, return `1.0`.
            - If `v == +inf` and `0 < x < +inf`, return `0.0`.
            - If `v == +inf` and `x == +inf`, set "domain" error and return `nan`.
    
        See Also
        --------
        iv : modified Bessel function of the first kind
    
        Notes
        -----
        The function is computed using the _Perron continued fraction_ of [1]_.
        The continued fraction is evaluated using the "series method" of [2]_.
        Kahan summation is used to evaluate the series.
    
        The accuracy is tested numerically with 600,000 trials.  The peak
        relative error is `3.4e-16`; the RMSE is `0.9e-16`.
    
        Reference
        ---------
        .. [1] Gautschi, W. and Slavik, J. (1978). "On the computation of
               modified Bessel function ratios." Mathematics of Computation,
               32(143):865-875.
    
        .. [2] Gautschi, W. (1967). “Computational Aspects of Three-Term
               Recurrence Relations.” SIAM Review, 9(1):24-82.
    """
    pass

def _iv_ratio_c(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _iv_ratio_c(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        _iv_ratio_c(v, x, out=None)
    
        Internal function.
    
        Return `1 - iv(v, x) / iv(v-1, x)` for `v >= 0.5` and `x >= 0`, where
        `iv` is the modified Bessel function of the first kind.
    
        Notes
        -----
        See `_iv_ratio` for details about the parameters, return value, and
        algorithm.
    
        The accuracy is tested numerically with 600,000 trials.  The peak
        relative error is `9.0e-16`; the RMSE is `1.5e-16`.
    """
    pass

def _kolmogc(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _kolmogc(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _kolmogci(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _kolmogci(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _kolmogp(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _kolmogp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _lambertw(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _lambertw(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        lambertw(z, k=0, tol=1e-8)
    
        Lambert W function.
    
        The Lambert W function `W(z)` is defined as the inverse function
        of ``w * exp(w)``. In other words, the value of ``W(z)`` is
        such that ``z = W(z) * exp(W(z))`` for any complex number
        ``z``.
    
        The Lambert W function is a multivalued function with infinitely
        many branches. Each branch gives a separate solution of the
        equation ``z = w exp(w)``. Here, the branches are indexed by the
        integer `k`.
    
        Parameters
        ----------
        z : array_like
            Input argument.
        k : int, optional
            Branch index.
        tol : float, optional
            Evaluation tolerance.
    
        Returns
        -------
        w : array
            `w` will have the same shape as `z`.
    
        See Also
        --------
        wrightomega : the Wright Omega function
    
        Notes
        -----
        All branches are supported by `lambertw`:
    
        * ``lambertw(z)`` gives the principal solution (branch 0)
        * ``lambertw(z, k)`` gives the solution on branch `k`
    
        The Lambert W function has two partially real branches: the
        principal branch (`k = 0`) is real for real ``z > -1/e``, and the
        ``k = -1`` branch is real for ``-1/e < z < 0``. All branches except
        ``k = 0`` have a logarithmic singularity at ``z = 0``.
    
        **Possible issues**
    
        The evaluation can become inaccurate very close to the branch point
        at ``-1/e``. In some corner cases, `lambertw` might currently
        fail to converge, or can end up on the wrong branch.
    
        **Algorithm**
    
        Halley's iteration is used to invert ``w * exp(w)``, using a first-order
        asymptotic approximation (O(log(w)) or `O(w)`) as the initial estimate.
    
        The definition, implementation and choice of branches is based on [2]_.
    
        References
        ----------
        .. [1] https://en.wikipedia.org/wiki/Lambert_W_function
        .. [2] Corless et al, "On the Lambert W function", Adv. Comp. Math. 5
           (1996) 329-359.
           https://cs.uwaterloo.ca/research/tr/1993/03/W.pdf
    
        Examples
        --------
        The Lambert W function is the inverse of ``w exp(w)``:
    
        >>> import numpy as np
        >>> from scipy.special import lambertw
        >>> w = lambertw(1)
        >>> w
        (0.56714329040978384+0j)
        >>> w * np.exp(w)
        (1.0+0j)
    
        Any branch gives a valid inverse:
    
        >>> w = lambertw(1, k=3)
        >>> w
        (-2.8535817554090377+17.113535539412148j)
        >>> w*np.exp(w)
        (1.0000000000000002+1.609823385706477e-15j)
    
        **Applications to equation-solving**
    
        The Lambert W function may be used to solve various kinds of
        equations.  We give two examples here.
    
        First, the function can be used to solve implicit equations of the
        form
    
            :math:`x = a + b e^{c x}`
    
        for :math:`x`.  We assume :math:`c` is not zero.  After a little
        algebra, the equation may be written
    
            :math:`z e^z = -b c e^{a c}`
    
        where :math:`z = c (a - x)`.  :math:`z` may then be expressed using
        the Lambert W function
    
            :math:`z = W(-b c e^{a c})`
    
        giving
    
            :math:`x = a - W(-b c e^{a c})/c`
    
        For example,
    
        >>> a = 3
        >>> b = 2
        >>> c = -0.5
    
        The solution to :math:`x = a + b e^{c x}` is:
    
        >>> x = a - lambertw(-b*c*np.exp(a*c))/c
        >>> x
        (3.3707498368978794+0j)
    
        Verify that it solves the equation:
    
        >>> a + b*np.exp(c*x)
        (3.37074983689788+0j)
    
        The Lambert W function may also be used find the value of the infinite
        power tower :math:`z^{z^{z^{\ldots}}}`:
    
        >>> def tower(z, n):
        ...     if n == 0:
        ...         return z
        ...     return z ** tower(z, n-1)
        ...
        >>> tower(0.5, 100)
        0.641185744504986
        >>> -lambertw(-np.log(0.5)) / np.log(0.5)
        (0.64118574450498589+0j)
    """
    pass

def _lanczos_sum_expg_scaled(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _lanczos_sum_expg_scaled(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _landau_cdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _landau_cdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _landau_cdf(x, loc, scale)
    
    Cumulative distribution function of the Landau distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued argument
    loc : array_like
        Real-valued distribution location
    scale : array_like
        Positive, real-valued distribution scale
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _landau_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _landau_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _landau_isf(p, loc, scale)
    
    Inverse survival function of the Landau distribution.
    
    Parameters
    ----------
    p : array_like
        Real-valued argument between 0 and 1
    loc : array_like
        Real-valued distribution location
    scale : array_like
        Positive, real-valued distribution scale
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _landau_pdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _landau_pdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _landau_pdf(x, loc, scale)
    
    Probability density function of the Landau distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued argument
    loc : array_like
        Real-valued distribution location
    scale : array_like
        Positive, real-valued distribution scale
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _landau_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _landau_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _landau_ppf(p, loc, scale)
    
    Percent point function of the Landau distribution.
    
    Parameters
    ----------
    p : array_like
        Real-valued argument between 0 and 1
    loc : array_like
        Real-valued distribution location
    scale : array_like
        Positive, real-valued distribution scale
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _landau_sf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _landau_sf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _landau_sf(x, loc, scale)
    
    Survival function of the Landau distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued argument
    loc : array_like
        Real-valued distribution location
    scale : array_like
        Positive, real-valued distribution scale
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _lgam1p(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _lgam1p(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _log1pmx(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _log1pmx(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _nbinom_cdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_cdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_cdf(x, r, p)
    
    Cumulative density function of negative binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_isf(x, r, p)
    
    Inverse survival function of negative binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_kurtosis_excess(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_kurtosis_excess(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_kurtosis_excess(r, p)
    
    Kurtosis excess of negative binomial distribution.
    
    Parameters
    ----------
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_mean(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_mean(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_mean(r, p)
    
    Mean of negative binomial distribution.
    
    Parameters
    ----------
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_pmf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_pmf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_pmf(x, r, p)
    
    Probability mass function of negative binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_ppf(x, r, p)
    
    Percent point function of negative binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_sf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_sf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_sf(x, r, p)
    
    Survival function of negative binomial distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_skewness(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_skewness(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_skewness(r, p)
    
    Skewness of negative binomial distribution.
    
    Parameters
    ----------
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nbinom_variance(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nbinom_variance(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nbinom_variance(r, p)
    
    Variance of negative binomial distribution.
    
    Parameters
    ----------
    r : array_like
        Positive, integer-valued parameter
    p : array_like
        Positive, real-valued parameter
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_isf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_isf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_isf(x, v1, v2, l)
    
    Inverse survival function of noncentral F-distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_kurtosis_excess(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_kurtosis_excess(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_kurtosis_excess(v1, v2, l)
    
    Kurtosis excess of noncentral F-distribution.
    
    Parameters
    ----------
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_mean(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_mean(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_mean(v1, v2, l)
    
    Mean of noncentral F-distribution.
    
    Parameters
    ----------
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_pdf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_pdf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_pdf(x, v1, v2, l)
    
    Probability density function of noncentral F-distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_sf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_sf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_sf(x, v1, v2, l)
    
    Survival function of noncentral F-distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_skewness(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_skewness(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_skewness(v1, v2, l)
    
    Skewness of noncentral F-distribution.
    
    Parameters
    ----------
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncf_variance(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncf_variance(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncf_variance(v1, v2, l)
    
    Variance of noncentral F-distribution.
    
    Parameters
    ----------
    v1, v2, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_isf(x, v, l)
    
    Inverse survival function of noncentral t-distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_kurtosis_excess(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_kurtosis_excess(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_kurtosis_excess(v, l)
    
    Kurtosis excess of noncentral t-distribution.
    
    Parameters
    ----------
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_mean(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_mean(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_mean(v, l)
    
    Mean of noncentral t-distribution.
    
    Parameters
    ----------
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_pdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_pdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_pdf(x, v, l)
    
    Probability density function of noncentral t-distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_ppf(x, v, l)
    
    Percent point function of noncentral t-distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_sf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_sf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_sf(x, v, l)
    
    Survival function of noncentral t-distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_skewness(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_skewness(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_skewness(v, l)
    
    Skewness of noncentral t-distribution.
    
    Parameters
    ----------
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _nct_variance(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _nct_variance(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _nct_variance(v, l)
    
    Variance of noncentral t-distribution.
    
    Parameters
    ----------
    v : array_like
        Positive, real-valued parameters
    l : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncx2_cdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncx2_cdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncx2_cdf(x, k, l)
    
    Cumulative density function of Non-central chi-squared distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    k, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncx2_isf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncx2_isf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncx2_isf(x, k, l)
    
    Inverse survival function of Non-central chi-squared distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    k, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncx2_pdf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncx2_pdf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncx2_pdf(x, k, l)
    
    Probability density function of Non-central chi-squared distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    k, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncx2_ppf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncx2_ppf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncx2_ppf(x, k, l)
    
    Percent point function of Non-central chi-squared distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    k, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _ncx2_sf(x1, x2, x3, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _ncx2_sf(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _ncx2_sf(x, k, l)
    
    Survival function of Non-central chi-squared distribution.
    
    Parameters
    ----------
    x : array_like
        Positive real-valued
    k, l : array_like
        Positive, real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _riemann_zeta(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _riemann_zeta(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `zeta` instead.
    """
    pass

def _scaled_exp1(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _scaled_exp1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        _scaled_exp1(x, out=None):
    
        Compute the scaled exponential integral.
    
        This is a private function, subject to change or removal with no
        deprecation.
    
        This function computes F(x), where F is the factor remaining in E_1(x)
        when exp(-x)/x is factored out.  That is,::
    
            E_1(x) = exp(-x)/x * F(x)
    
        or
    
            F(x) = x * exp(x) * E_1(x)
    
        The function is defined for real x >= 0.  For x < 0, nan is returned.
    
        F has the properties:
    
        * F(0) = 0
        * F(x) is increasing on [0, inf).
        * The limit as x goes to infinity of F(x) is 1.
    
        Parameters
        ----------
        x: array_like
            The input values. Must be real.  The implementation is limited to
            double precision floating point, so other types will be cast to
            to double precision.
        out : ndarray, optional
            Optional output array for the function results
    
        Returns
        -------
        scalar or ndarray
            Values of the scaled exponential integral.
    
        See Also
        --------
        exp1 : exponential integral E_1
    
        Examples
        --------
        >>> from scipy.special import _scaled_exp1
        >>> _scaled_exp1([0, 0.1, 1, 10, 100])
    """
    pass

def _sf_error_test_function(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _sf_error_test_function(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Private function; do not use.
    """
    pass

def _sinpi(x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _sinpi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, do not use.
    """
    pass

def _skewnorm_cdf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _skewnorm_cdf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _skewnorm_cdf(x, l, sc, sh)
    
    Cumulative density function of skewnorm distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    l : array_like
        Real-valued parameters
    sc : array_like
        Positive, Real-valued parameters
    sh : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _skewnorm_isf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _skewnorm_isf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _skewnorm_isf(x, l, sc, sh)
    
    Inverse survival function of skewnorm distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    l : array_like
        Real-valued parameters
    sc : array_like
        Positive, Real-valued parameters
    sh : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _skewnorm_ppf(x1, x2, x3, x4, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _skewnorm_ppf(x1, x2, x3, x4, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _skewnorm_ppf(x, l, sc, sh)
    
    Percent point function of skewnorm distribution.
    
    Parameters
    ----------
    x : array_like
        Real-valued
    l : array_like
        Real-valued parameters
    sc : array_like
        Positive, Real-valued parameters
    sh : array_like
        Real-valued parameters
    
    Returns
    -------
    scalar or ndarray
    """
    pass

def _smirnovc(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _smirnovc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _smirnovc(n, d)
     Internal function, do not use.
    """
    pass

def _smirnovci(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _smirnovci(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _smirnovp(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _smirnovp(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _smirnovp(n, p)
     Internal function, do not use.
    """
    pass

def _spherical_in(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_in(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_in` instead.
    """
    pass

def _spherical_in_d(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_in_d(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_in` instead.
    """
    pass

def _spherical_jn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_jn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_jn` instead.
    """
    pass

def _spherical_jn_d(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_jn_d(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_jn` instead.
    """
    pass

def _spherical_kn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_kn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_kn` instead.
    """
    pass

def _spherical_kn_d(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_kn_d(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_kn` instead.
    """
    pass

def _spherical_yn(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_yn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_yn` instead.
    """
    pass

def _spherical_yn_d(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _spherical_yn_d(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        Internal function, use `spherical_yn` instead.
    """
    pass

def _stirling2_inexact(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _stirling2_inexact(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    Internal function, do not use.
    """
    pass

def _struve_asymp_large_z(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _struve_asymp_large_z(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _struve_asymp_large_z(v, z, is_h)
    
    Internal function for testing `struve` & `modstruve`
    
    Evaluates using asymptotic expansion
    
    Returns
    -------
    v, err
    """
    pass

def _struve_bessel_series(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _struve_bessel_series(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _struve_bessel_series(v, z, is_h)
    
    Internal function for testing `struve` & `modstruve`
    
    Evaluates using Bessel function series
    
    Returns
    -------
    v, err
    """
    pass

def _struve_power_series(x1, x2, x3, out1=None, out2=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _struve_power_series(x1, x2, x3[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    _struve_power_series(v, z, is_h)
    
    Internal function for testing `struve` & `modstruve`
    
    Evaluates using power series
    
    Returns
    -------
    v, err
    """
    pass

def _zeta(x1, x2, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    _zeta(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
    
    
        _zeta(x, q)
    
        Internal function, Hurwitz zeta.
    """
    pass

# classes

class errstate(object):
    """
    Context manager for special-function error handling.
    
        Using an instance of `errstate` as a context manager allows
        statements in that context to execute with a known error handling
        behavior. Upon entering the context the error handling is set with
        `seterr`, and upon exiting it is restored to what it was before.
    
        Parameters
        ----------
        kwargs : {all, singular, underflow, overflow, slow, loss, no_result, domain, arg, other}
            Keyword arguments. The valid keywords are possible
            special-function errors. Each keyword should have a string
            value that defines the treatment for the particular type of
            error. Values must be 'ignore', 'warn', or 'other'. See
            `seterr` for details.
    
        See Also
        --------
        geterr : get the current way of handling special-function errors
        seterr : set how special-function errors are handled
        numpy.errstate : similar numpy function for floating-point errors
    
        Examples
        --------
        >>> import scipy.special as sc
        >>> from pytest import raises
        >>> sc.gammaln(0)
        inf
        >>> with sc.errstate(singular='raise'):
        ...     with raises(sc.SpecialFunctionError):
        ...         sc.gammaln(0)
        ...
        >>> sc.gammaln(0)
        inf
    
        We can also raise on every category except one.
    
        >>> with sc.errstate(all='raise', singular='ignore'):
        ...     sc.gammaln(0)
        ...     with raises(sc.SpecialFunctionError):
        ...         sc.spence(-1)
        ...
        inf
    """
    def __enter__(self, *args, **kwargs): # real signature unknown
        pass

    def __exit__(self, *args, **kwargs): # real signature unknown
        pass

    def __init__(self, *args, **kwargs): # real signature unknown
        pass

    __weakref__ = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    """list of weak references to the object"""


    __dict__ = None # (!) real value is 'mappingproxy({\'__module__\': \'scipy.special._ufuncs\', \'__doc__\': "Context manager for special-function error handling.\\n\\n    Using an instance of `errstate` as a context manager allows\\n    statements in that context to execute with a known error handling\\n    behavior. Upon entering the context the error handling is set with\\n    `seterr`, and upon exiting it is restored to what it was before.\\n\\n    Parameters\\n    ----------\\n    kwargs : {all, singular, underflow, overflow, slow, loss, no_result, domain, arg, other}\\n        Keyword arguments. The valid keywords are possible\\n        special-function errors. Each keyword should have a string\\n        value that defines the treatment for the particular type of\\n        error. Values must be \'ignore\', \'warn\', or \'other\'. See\\n        `seterr` for details.\\n\\n    See Also\\n    --------\\n    geterr : get the current way of handling special-function errors\\n    seterr : set how special-function errors are handled\\n    numpy.errstate : similar numpy function for floating-point errors\\n\\n    Examples\\n    --------\\n    >>> import scipy.special as sc\\n    >>> from pytest import raises\\n    >>> sc.gammaln(0)\\n    inf\\n    >>> with sc.errstate(singular=\'raise\'):\\n    ...     with raises(sc.SpecialFunctionError):\\n    ...         sc.gammaln(0)\\n    ...\\n    >>> sc.gammaln(0)\\n    inf\\n\\n    We can also raise on every category except one.\\n\\n    >>> with sc.errstate(all=\'raise\', singular=\'ignore\'):\\n    ...     sc.gammaln(0)\\n    ...     with raises(sc.SpecialFunctionError):\\n    ...         sc.spence(-1)\\n    ...\\n    inf\\n\\n    ", \'__init__\': <cyfunction errstate.__init__ at 0x0000026F960A8C70>, \'__enter__\': <cyfunction errstate.__enter__ at 0x0000026F960A8D40>, \'__exit__\': <cyfunction errstate.__exit__ at 0x0000026F960A8E10>, \'__dict__\': <attribute \'__dict__\' of \'errstate\' objects>, \'__weakref__\': <attribute \'__weakref__\' of \'errstate\' objects>})'


# variables with complex values

_sf_error_action_map = {
    'ignore': 0,
    'raise': 2,
    'warn': 1,
    0: 'ignore',
    1: 'warn',
    2: 'raise',
}

_sf_error_code_map = {
    'arg': 8,
    'domain': 7,
    'loss': 5,
    'memory': 10,
    'no_result': 6,
    'other': 9,
    'overflow': 3,
    'singular': 1,
    'slow': 4,
    'underflow': 2,
}

__all__ = [
    'agm',
    'bdtr',
    'bdtrc',
    'bdtri',
    'bdtrik',
    'bdtrin',
    'betainc',
    'betaincc',
    'betainccinv',
    'betaincinv',
    'boxcox',
    'boxcox1p',
    'btdtria',
    'btdtrib',
    'chdtr',
    'chdtrc',
    'chdtri',
    'chdtriv',
    'chndtr',
    'chndtridf',
    'chndtrinc',
    'chndtrix',
    'dawsn',
    'elliprc',
    'elliprd',
    'elliprf',
    'elliprg',
    'elliprj',
    'entr',
    'erf',
    'erfc',
    'erfcinv',
    'erfcx',
    'erfi',
    'erfinv',
    'eval_chebyc',
    'eval_chebys',
    'eval_chebyt',
    'eval_chebyu',
    'eval_gegenbauer',
    'eval_genlaguerre',
    'eval_hermite',
    'eval_hermitenorm',
    'eval_jacobi',
    'eval_laguerre',
    'eval_legendre',
    'eval_sh_chebyt',
    'eval_sh_chebyu',
    'eval_sh_jacobi',
    'eval_sh_legendre',
    'exp10',
    'exp2',
    'expm1',
    'expn',
    'fdtr',
    'fdtrc',
    'fdtri',
    'fdtridfd',
    'gdtr',
    'gdtrc',
    'gdtria',
    'gdtrib',
    'gdtrix',
    'huber',
    'hyp0f1',
    'hyp1f1',
    'hyperu',
    'inv_boxcox',
    'inv_boxcox1p',
    'kl_div',
    'kn',
    'kolmogi',
    'kolmogorov',
    'log1p',
    'log_ndtr',
    'lpmv',
    'nbdtr',
    'nbdtrc',
    'nbdtri',
    'nbdtrik',
    'nbdtrin',
    'ncfdtr',
    'ncfdtri',
    'ncfdtridfd',
    'ncfdtridfn',
    'ncfdtrinc',
    'nctdtr',
    'nctdtridf',
    'nctdtrinc',
    'nctdtrit',
    'ndtr',
    'ndtri',
    'ndtri_exp',
    'nrdtrimn',
    'nrdtrisd',
    'owens_t',
    'pdtr',
    'pdtrc',
    'pdtri',
    'pdtrik',
    'poch',
    'powm1',
    'pseudo_huber',
    'rel_entr',
    'round',
    'shichi',
    'sici',
    'smirnov',
    'smirnovi',
    'spence',
    'stdtr',
    'stdtridf',
    'stdtrit',
    'tklmbda',
    'voigt_profile',
    'wofz',
    'wrightomega',
    'xlog1py',
    'xlogy',
    'yn',
    'geterr',
    'seterr',
    'errstate',
    'jn',
    'airy',
    'airye',
    'bei',
    'beip',
    'ber',
    'berp',
    'binom',
    'exp1',
    'expi',
    'expit',
    'exprel',
    'gamma',
    'gammaln',
    'hankel1',
    'hankel1e',
    'hankel2',
    'hankel2e',
    'hyp2f1',
    'it2i0k0',
    'it2j0y0',
    'it2struve0',
    'itairy',
    'iti0k0',
    'itj0y0',
    'itmodstruve0',
    'itstruve0',
    'iv',
    'ive',
    'jv',
    'jve',
    'kei',
    'keip',
    'kelvin',
    'ker',
    'kerp',
    'kv',
    'kve',
    'log_expit',
    'log_wright_bessel',
    'loggamma',
    'logit',
    'mathieu_a',
    'mathieu_b',
    'mathieu_cem',
    'mathieu_modcem1',
    'mathieu_modcem2',
    'mathieu_modsem1',
    'mathieu_modsem2',
    'mathieu_sem',
    'modfresnelm',
    'modfresnelp',
    'obl_ang1',
    'obl_ang1_cv',
    'obl_cv',
    'obl_rad1',
    'obl_rad1_cv',
    'obl_rad2',
    'obl_rad2_cv',
    'pbdv',
    'pbvv',
    'pbwa',
    'pro_ang1',
    'pro_ang1_cv',
    'pro_cv',
    'pro_rad1',
    'pro_rad1_cv',
    'pro_rad2',
    'pro_rad2_cv',
    'psi',
    'rgamma',
    'sph_harm',
    'wright_bessel',
    'yv',
    'yve',
    'zetac',
    'sindg',
    'cosdg',
    'tandg',
    'cotdg',
    'i0',
    'i0e',
    'i1',
    'i1e',
    'k0',
    'k0e',
    'k1',
    'k1e',
    'y0',
    'y1',
    'j0',
    'j1',
    'struve',
    'modstruve',
    'beta',
    'betaln',
    'besselpoly',
    'gammaln',
    'gammasgn',
    'cbrt',
    'radian',
    'cosm1',
    'gammainc',
    'gammaincinv',
    'gammaincc',
    'gammainccinv',
    'fresnel',
    'ellipe',
    'ellipeinc',
    'ellipk',
    'ellipkinc',
    'ellipkm1',
    'ellipj',
]

__loader__ = None # (!) real value is '<_frozen_importlib_external.ExtensionFileLoader object at 0x0000026F96055A90>'

__spec__ = None # (!) real value is "ModuleSpec(name='scipy.special._ufuncs', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x0000026F96055A90>, origin='C:\\\\Programs\\\\Python\\\\Python313\\\\Lib\\\\site-packages\\\\scipy\\\\special\\\\_ufuncs.cp313-win_amd64.pyd')"

__test__ = {
    'geterr (line 29)': 'Get the current way of handling special-function errors.\n\n    Returns\n    -------\n    err : dict\n        A dictionary with keys "singular", "underflow", "overflow",\n        "slow", "loss", "no_result", "domain", "arg", and "other",\n        whose values are from the strings "ignore", "warn", and\n        "raise". The keys represent possible special-function errors,\n        and the values define how these errors are handled.\n\n    See Also\n    --------\n    seterr : set how special-function errors are handled\n    errstate : context manager for special-function error handling\n    numpy.geterr : similar numpy function for floating-point errors\n\n    Notes\n    -----\n    For complete documentation of the types of special-function errors\n    and treatment options, see `seterr`.\n\n    Examples\n    --------\n    By default all errors are ignored.\n\n    >>> import scipy.special as sc\n    >>> for key, value in sorted(sc.geterr().items()):\n    ...     print(f\'{key}: {value}\')\n    ...\n    arg: ignore\n    domain: ignore\n    loss: ignore\n    memory: raise\n    no_result: ignore\n    other: ignore\n    overflow: ignore\n    singular: ignore\n    slow: ignore\n    underflow: ignore\n\n    ',
    'seterr (line 79)': "Set how special-function errors are handled.\n\n    Parameters\n    ----------\n    all : {'ignore', 'warn' 'raise'}, optional\n        Set treatment for all type of special-function errors at\n        once. The options are:\n\n        - 'ignore' Take no action when the error occurs\n        - 'warn' Print a `SpecialFunctionWarning` when the error\n          occurs (via the Python `warnings` module)\n        - 'raise' Raise a `SpecialFunctionError` when the error\n          occurs.\n\n        The default is to not change the current behavior. If\n        behaviors for additional categories of special-function errors\n        are specified, then ``all`` is applied first, followed by the\n        additional categories.\n    singular : {'ignore', 'warn', 'raise'}, optional\n        Treatment for singularities.\n    underflow : {'ignore', 'warn', 'raise'}, optional\n        Treatment for underflow.\n    overflow : {'ignore', 'warn', 'raise'}, optional\n        Treatment for overflow.\n    slow : {'ignore', 'warn', 'raise'}, optional\n        Treatment for slow convergence.\n    loss : {'ignore', 'warn', 'raise'}, optional\n        Treatment for loss of accuracy.\n    no_result : {'ignore', 'warn', 'raise'}, optional\n        Treatment for failing to find a result.\n    domain : {'ignore', 'warn', 'raise'}, optional\n        Treatment for an invalid argument to a function.\n    arg : {'ignore', 'warn', 'raise'}, optional\n        Treatment for an invalid parameter to a function.\n    other : {'ignore', 'warn', 'raise'}, optional\n        Treatment for an unknown error.\n\n    Returns\n    -------\n    olderr : dict\n        Dictionary containing the old settings.\n\n    See Also\n    --------\n    geterr : get the current way of handling special-function errors\n    errstate : context manager for special-function error handling\n    numpy.seterr : similar numpy function for floating-point errors\n\n    Examples\n    --------\n    >>> import scipy.special as sc\n    >>> from pytest import raises\n    >>> sc.gammaln(0)\n    inf\n    >>> olderr = sc.seterr(singular='raise')\n    >>> with raises(sc.SpecialFunctionError):\n    ...     sc.gammaln(0)\n    ...\n    >>> _ = sc.seterr(**olderr)\n\n    We can also raise for every category except one.\n\n    >>> olderr = sc.seterr(all='raise', singular='ignore')\n    >>> sc.gammaln(0)\n    inf\n    >>> with raises(sc.SpecialFunctionError):\n    ...     sc.spence(-1)\n    ...\n    >>> _ = sc.seterr(**olderr)\n\n    ",
}

