def METHOD_NAME(y, x=None, dx=1.0, axis=-1):
    """
    Integrate along the given axis using the composite trapezoidal rule.
    Integrate `y` (`x`) along given axis.
    Parameters
    ----------
    y : array_like
        Input tensor to integrate.
    x : array_like, optional
        The sample points corresponding to the `y` values. If `x` is None,
        the sample points are assumed to be evenly spaced `dx` apart. The
        default is None.
    dx : scalar, optional
        The spacing between sample points when `x` is None. The default is 1.
    axis : int, optional
        The axis along which to integrate.
    Returns
    -------
    trapz : float
        Definite integral as approximated by trapezoidal rule.
    See Also
    --------
    sum, cumsum
    Notes
    -----
    Image [2]_ illustrates trapezoidal rule -- y-axis locations of points
    will be taken from `y` tensor, by default x-axis distances between
    points will be 1.0, alternatively they can be provided with `x` tensor
    or with `dx` scalar.  Return value will be equal to combined area under
    the red lines.
    References
    ----------
    .. [1] Wikipedia page: https://en.wikipedia.org/wiki/Trapezoidal_rule
    .. [2] Illustration image:
           https://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png
    Examples
    --------
    >>> import mars.tensor as mt
    >>> mt.trapz([1,2,3]).execute()
    4.0
    >>> mt.trapz([1,2,3], x=[4,6,8]).execute()
    8.0
    >>> mt.trapz([1,2,3], dx=2).execute()
    8.0
    >>> a = mt.arange(6).reshape(2, 3)
    >>> a.execute()
    array([[0, 1, 2],
           [3, 4, 5]])
    >>> mt.trapz(a, axis=0).execute()
    array([1.5, 2.5, 3.5])
    >>> mt.trapz(a, axis=1).execute()
    array([2.,  8.])
    """
    y = astensor(y)
    axis = validate_axis(y.ndim, axis)
    op = TensorTrapz(y=y, x=x, dx=dx, axis=axis)
    return op(y, x=x)