docs: def pagerank_lazy_push(s, r, w_i, a_i, push_node, rho, lazy):
      """
      Performs a random step with a self-loop.
  
      Introduced in: Andersen, R., Chung, F., & Lang, K. (2006, October).
                     Local graph partitioning using pagerank vectors.
                     In Foundations of Computer Science, 2006. FOCS'06. 47th Annual IEEE Symposium on (pp. 475-486). IEEE.
      """
      # Calculate the A, B and C quantities
      A = rho*r[push_node]
      B = (1-rho)*(1 - lazy)*r[push_node]
      C = (1-rho)*lazy*(r[push_node])
  
      # Update approximate Pagerank and residual vectors
      s[push_node] += A
      r[push_node] = C
  
      # Update residual vector at push node's adjacent nodes
      r[a_i] += B * w_i