docs: def _S(kappa, alpha, beta):
      """Compute the antiderivative of the Amos-type bound G on the modified
      Bessel function ratio.
  
      Note:  Handles scalar kappa, alpha, and beta only.
  
      See "S <-" in movMF.R and utility function implementation notes from
      https://cran.r-project.org/web/packages/movMF/index.html
      """
      kappa = 1. * np.abs(kappa)
      alpha = 1. * alpha
      beta = 1. * np.abs(beta)
      a_plus_b = alpha + beta
      u = np.sqrt(kappa ** 2 + beta ** 2)
      if alpha == 0:
          alpha_scale = 0
      else:
          alpha_scale = alpha * np.log((alpha + u) / a_plus_b)
  
      return u - beta - alpha_scale