docs: def cumulative_pagerank_difference_limit_push(s, r, w_i, a_i, push_node, rho):
      """
      Performs a random step without a self-loop.
  
      Inputs:  - s: A NumPy array that contains the approximate absorbing random walk cumulative probabilities.
               - r: A NumPy array that contains the residual probability distribution.
               - w_i: A NumPy array of probability transition weights from the seed nodes to its adjacent nodes.
               - a_i: A NumPy array of the nodes adjacent to the push node.
               - push_node: The node from which the residual probability is pushed to its adjacent nodes.
               - rho: The restart probability.
  
      Outputs: - s in 1xn: A NumPy array that contains the approximate absorbing random walk cumulative probabilities.
               - r in 1xn: A NumPy array that contains the residual probability distribution.
      """
      # Calculate the commute quantity
      commute = (1-rho)*r[push_node]
  
      # Update approximate regularized commute and residual vectors
      r[push_node] = 0.0
  
      # Update residual vector at push node's adjacent nodes
      commute_probabilities = commute * w_i
      s[a_i] += commute_probabilities
      r[a_i] += commute_probabilities