class_docstr: Class that defines operations using a hyperbolic metric.
class_docstr_tok: ["Class","that","defines","operations","using","a","hyperbolic","metric","."]
docstr: Compute Riemannian logarithm of a point wrt a base point.
  
  If `default_coords_type` is `poincare` then base_point belongs
  to the Poincare ball and point is a vector in the Euclidean
  space of the same dimension as the ball.
  
  Parameters
  ----------
  point : array-like, shape=[..., dim + 1]
      Point in hyperbolic space.
  base_point : array-like, shape=[..., dim + 1]
      Point in hyperbolic space.
  
  Returns
  -------
  log : array-like, shape=[..., dim + 1]
      Tangent vector at the base point equal to the Riemannian logarithm
      of point at the base point.
docstr_tok: ["Compute","Riemannian","logarithm","of","a","point","wrt","a","base","point",".","If","`","default_coords_type","`","is","`","poincare","`","then","base_point","belongs","to","the","Poincare","ball","and","point","is","a","vector","in","the","Euclidean","space","of","the","same","dimension","as","the","ball",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","in","hyperbolic","space",".","base_point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","in","hyperbolic","space",".","Returns","--","--","--","-","log",":","array-like",",","shape=","[","...",",","dim","+","1","]","Tangent","vector","at","the","base","point","equal","to","the","Riemannian","logarithm","of","point","at","the","base","point","."]
code: def log(self, point, base_point):
      """Compute Riemannian logarithm of a point wrt a base point.
  
      If `default_coords_type` is `poincare` then base_point belongs
      to the Poincare ball and point is a vector in the Euclidean
      space of the same dimension as the ball.
  
      Parameters
      ----------
      point : array-like, shape=[..., dim + 1]
          Point in hyperbolic space.
      base_point : array-like, shape=[..., dim + 1]
          Point in hyperbolic space.
  
      Returns
      -------
      log : array-like, shape=[..., dim + 1]
          Tangent vector at the base point equal to the Riemannian logarithm
          of point at the base point.
      """
      angle = self.dist(base_point, point)
  
      coef_1_ = utils.taylor_exp_even_func(
          angle**2, utils.inv_sinch_close_0, order=4
      )
      coef_2_ = utils.taylor_exp_even_func(
          angle**2, utils.inv_tanh_close_0, order=4
      )
  
      log_term_1 = gs.einsum("...,...j->...j", coef_1_, point)
      log_term_2 = -gs.einsum("...,...j->...j", coef_2_, base_point)
      return log_term_1 + log_term_2
  
imports: import math
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry._hyperbolic import HyperbolicMetric, _Hyperbolic
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.minkowski import Minkowski
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 5 for calling the HyperboloidMetric obj's underlying member method code with example usage: obj.log(point, base_point) and returns: unknown