docs: def lsr_pairwise_dense(comp_mat, alpha=0.0, initial_params=None):
      """Compute the LSR estimate of model parameters given dense data.
  
      This function implements the Luce Spectral Ranking inference algorithm
      [MG15]_ for dense pairwise-comparison data.
  
      The data is described by a pairwise-comparison matrix ``comp_mat`` such
      that ``comp_mat[i,j]`` contains the number of times that item ``i`` wins
      against item ``j``.
  
      In comparison to :func:`~choix.lsr_pairwise`, this function is particularly
      efficient for dense pairwise-comparison datasets (i.e., containing many
      comparisons for a large fraction of item pairs).
  
      The argument ``initial_params`` can be used to iteratively refine an
      existing parameter estimate (see the implementation of
      :func:`~choix.ilsr_pairwise` for an idea on how this works). If it is set
      to `None` (the default), the all-ones vector is used.
  
      The transition rates of the LSR Markov chain are initialized with
      ``alpha``. When ``alpha > 0``, this corresponds to a form of regularization
      (see :ref:`regularization` for details).
  
      Parameters
      ----------
      comp_mat : np.array
          2D square matrix describing the pairwise-comparison outcomes.
      alpha : float, optional
          Regularization parameter.
      initial_params : array_like, optional
          Parameters used to build the transition rates of the LSR Markov chain.
  
      Returns
      -------
      params : np.array
          An estimate of model parameters.
      """
      n_items = comp_mat.shape[0]
      ws, chain = _init_lsr(n_items, alpha, initial_params)
      denom = np.tile(ws, (n_items, 1))
      chain += comp_mat.T / (denom + denom.T)
      chain -= np.diag(chain.sum(axis=1))
      return log_transform(statdist(chain))