docs: def ilsr_pairwise_dense(
          comp_mat, alpha=0.0, initial_params=None, max_iter=100, tol=1e-8):
      """Compute the ML estimate of model parameters given dense data.
  
      This function computes the maximum-likelihood (ML) estimate of model
      parameters given 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.ilsr_pairwise`, this function is
      particularly efficient for dense pairwise-comparison datasets (i.e.,
      containing many comparisons for a large fraction of item pairs).
  
      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 initialize the iterative procedure.
      max_iter : int, optional
          Maximum number of iterations allowed.
      tol : float, optional
          Maximum L1-norm of the difference between successive iterates to
          declare convergence.
  
      Returns
      -------
      params : numpy.ndarray
          The ML estimate of model parameters.
      """
      fun = functools.partial(
              lsr_pairwise_dense, comp_mat=comp_mat, alpha=alpha)
      return _ilsr(fun, initial_params, max_iter, tol)