def METHOD_NAME(
    self,
    *,
    moment_0,
    METHOD_NAME,
    multiplicity,
    attr_data,
    cell_id,
    idx,
    length,
    ranks,
    min_x,
    max_x,
    x_attr,
    weighting_attribute,
    weighting_rank,
    skip_division_by_m0,
):
    if weighting_rank != 0:
        raise NotImplementedError()
    self.ensure_floating_point(moment_0)
    self.ensure_floating_point(METHOD_NAME)
    n_cell = trtc.DVInt64(METHOD_NAME.shape[1])
    n_sd = trtc.DVInt64(METHOD_NAME.shape[0])
    n_ranks = trtc.DVInt64(ranks.shape[0])
    METHOD_NAME[:] = 0
    moment_0[:] = 0
    self.__moments_body_0.launch_n(
        length,
        (
            idx.data,
            self._get_floating_point(min_x),
            attr_data.data,
            x_attr.data,
            self._get_floating_point(max_x),
            moment_0.data,
            cell_id.data,
            multiplicity.data,
            n_ranks,
            METHOD_NAME.data,
            ranks.data,
            n_sd,
            n_cell,
        ),
    )
    if not skip_division_by_m0:
        self.__moments_body_1.launch_n(
            moment_0.shape[0], (n_ranks, METHOD_NAME.data, moment_0.data, n_cell)
        )