code: def _vmf_log_asymptotic(X, kappa, mu):
      
      n_examples, n_features = X.shape
      log_vfm = kappa * X.dot(mu).T + -_log_H_asymptotic(n_features / 2. - 1., kappa)
  
      return log_vfm
docs: Compute log(f(x|theta)) via Amos approximation
  
          log(f(x|theta)) = theta' x - log(H_{d/2-1})(\|theta\|)
  
      where theta = kappa * X, \|theta\| = kappa.
  
      Computing _vmf_log helps with numerical stability / loss of precision for
      for large values of kappa and n_features.
  
      See utility function implementation notes in movMF.R from
      https://cran.r-project.org/web/packages/movMF/index.html