def METHOD_NAME(input, dim, left = True):
    r"""Returns the cumulative multiplication (*) of LieTensor along a dimension.
    * Left multiplication:
    .. math::
        y_i = x_i * x_{i-1} * \cdots * x_1,
    * Right multiplication:
    .. math::
        y_i = x_1 * x_2 * \cdots * x_i,
    where :math:`x_i,~y_i` are the :math:`i`-th LieType item along the :obj:`dim`
    dimension of input and output, respectively.
    Args:
        input (LieTensor): the input LieTensor
        dim (int): the dimension to do the multiplication over
        left (bool, optional): whether perform left multiplication in :obj:`cummul`.
            If set it to :obj:`False`, this function performs right multiplication.
            Defaul: ``True``
    Returns:
        LieTensor: The LieTensor
    Note:
        - The time complexity of the function is :math:`\mathcal{O}(\log N)`, where
          :math:`N` is the LieTensor size along the :obj:`dim` dimension.
    Example:
        * Left multiplication with :math:`\text{input} \in` :obj:`SE3`
        >>> input = pp.randn_SE3(2)
        >>> pp.cummul(input, dim=0)
        SE3Type LieTensor:
        tensor([[-1.9615, -0.1246,  0.3666,  0.0165,  0.2853,  0.3126,  0.9059],
                [ 0.7139,  1.3988, -0.1909, -0.1780,  0.4405, -0.6571,  0.5852]])
        * Left multiplication with :math:`\text{input} \in` :obj:`SO3`
        >>> input = pp.randn_SO3(1,2)
        >>> pp.cummul(input, dim=1, left=False)
        SO3Type LieTensor:
        tensor([[[-1.8252e-01,  1.6198e-01,  8.3683e-01,  4.9007e-01],
                [ 2.0905e-04,  5.2031e-01,  8.4301e-01, -1.3642e-01]]])
    """
    if left:
        return cumops(input, dim, lambda a, b : a * b)
    else:
        return cumops(input, dim, lambda a, b : b * a)