docs: def simplex_index(x, m, n):
      r"""
      Return the index of the point x in the lexicographic order of the
      integer points of the (m-1)-dimensional simplex :math:`\{x \mid x_0
      + \cdots + x_{m-1} = n\}`.
  
      Parameters
      ----------
      x : array_like(int, ndim=1)
          Integer point in the simplex, i.e., an array of m nonnegative
          itegers that sum to n.
  
      m : scalar(int)
          Dimension of each point. Must be a positive integer.
  
      n : scalar(int)
          Number which the coordinates of each point sum to. Must be a
          nonnegative integer.
  
      Returns
      -------
      idx : scalar(int)
          Index of x.
  
      """
      if m == 1:
          return 0
  
      decumsum = np.cumsum(x[-1:0:-1])[::-1]
      idx = num_compositions(m, n) - 1
      for i in range(m-1):
          if decumsum[i] == 0:
              break
          idx -= num_compositions(m-i, decumsum[i]-1)
      return idx