docs: def stationary_distribution(T):
      r"""Compute stationary distribution of stochastic matrix T.
  
      Chooses the fastest applicable algorithm automatically
  
      Input:
      ------
      T : numpy array, shape(d,d)
          Transition matrix (stochastic matrix).
  
      Returns
      -------
      mu : numpy array, shape(d,)
          Vector of stationary probabilities.
  
      """
      fallback = False
      try:
          mu = stationary_distribution_from_backward_iteration(T)
          if np.any(mu < 0):  # numerical problem, fall back to more robust algorithm.
              fallback=True
      except RuntimeError:
          fallback = True
  
      if fallback:
          mu = stationary_distribution_from_eigenvector(T)
          if np.any(mu < 0):  # still? Then set to 0 and renormalize
              mu = np.maximum(mu, 0.0)
              mu /= mu.sum()
  
      return mu