def laplace(
    loc: float = 0.0,
    scale: float = 1.0,
    size: NdShapeLike | None = None,
    dtype: npt.DTypeLike = np.float64,
) -> ndarray:
    """
    laplace(loc=0.0, scale=1.0, size=None)

    Draw samples from the Laplace or double exponential distribution with
    specified location (or mean) and scale (decay).

    The Laplace distribution is similar to the Gaussian/normal distribution,
    but is sharper at the peak and has fatter tails. It represents the
    difference between two independent, identically distributed exponential
    random variables.

    Parameters
    ----------
    loc : float, optional
        The position, :math:`\\mu`, of the distribution peak. Default is 0.
    scale : float, optional
        :math:`\\lambda`, the exponential decay. Default is 1. Must be
        non-negative.
    size : int or tuple of ints, optional
        Output shape.  If the given shape is, e.g., ``(m, n, k)``, then
        ``m * n * k`` samples are drawn.  If size is ``None`` (default),
        a single value is returned.

    Returns
    -------
    out : ndarray or scalar
        Drawn samples from the parameterized Laplace distribution.

    See Also
    --------
    numpy.random.laplace

    Availability
    --------
    Multiple GPUs, Multiple CPUs
    """
    return get_static_generator().laplace(loc, scale, size, dtype)

    laplace(loc=0.0, scale=1.0, size=None)

    Draw samples from the Laplace or double exponential distribution with
    specified location (or mean) and scale (decay).

    The Laplace distribution is similar to the Gaussian/normal distribution,
    but is sharper at the peak and has fatter tails. It represents the
    difference between two independent, identically distributed exponential
    random variables.

    Parameters
    ----------
    loc : float, optional
        The position, :math:`\mu`, of the distribution peak. Default is 0.
    scale : float, optional
        :math:`\lambda`, the exponential decay. Default is 1. Must be
        non-negative.
    size : int or tuple of ints, optional
        Output shape.  If the given shape is, e.g., ``(m, n, k)``, then
        ``m * n * k`` samples are drawn.  If size is ``None`` (default),
        a single value is returned.

    Returns
    -------
    out : ndarray or scalar
        Drawn samples from the parameterized Laplace distribution.

    See Also
    --------
    numpy.random.laplace

    Availability
    --------
    Multiple GPUs, Multiple CPUs
    
cupynumeric/random/_random.py