class_docstr: Class that defines operations using a Poincare ball.
class_docstr_tok: ["Class","that","defines","operations","using","a","Poincare","ball","."]
docstr: Compute Riemannian logarithm of a point wrt a base point.
  
  Parameters
  ----------
  point : array-like, shape=[..., dim]
      Point in the Poincare ball.
  base_point : array-like, shape=[..., dim]
      Point in the Poincare ball.
  
  Returns
  -------
  log : array-like, shape=[..., dim]
      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",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","dim","]","Point","in","the","Poincare","ball",".","base_point",":","array-like",",","shape=","[","...",",","dim","]","Point","in","the","Poincare","ball",".","Returns","--","--","--","-","log",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","the","base","point","equal","to","the","Riemannian","logarithm","of","point","at","the","base","point","."]
code: def log(self, point, base_point, **kwargs):
      """Compute Riemannian logarithm of a point wrt a base point.
  
      Parameters
      ----------
      point : array-like, shape=[..., dim]
          Point in the Poincare ball.
      base_point : array-like, shape=[..., dim]
          Point in the Poincare ball.
  
      Returns
      -------
      log : array-like, shape=[..., dim]
          Tangent vector at the base point equal to the Riemannian logarithm
          of point at the base point.
      """
      mobius_addition = self.mobius_add(-base_point, point)
      squared_norm_add = gs.sum(mobius_addition**2, axis=-1)
      squared_norm_bp = gs.sum(base_point**2, axis=-1)
      coef = (1 - squared_norm_bp) * utils.taylor_exp_even_func(
          squared_norm_add, utils.arctanh_card_close_0
      )
      return gs.einsum("...,...j->...j", coef, mobius_addition)
  
imports: import math
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry._hyperbolic import _Hyperbolic
  from geomstats.geometry.base import VectorSpaceOpenSet
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 2 for calling the PoincareBallMetric obj's underlying member method code with example usage: obj.log(point, base_point) and returns: gs