class_docstr: Class for invariant metrics on Lie groups represented by vectors.
  
  Parameters
  ----------
  space : LieGroup
      Group to equip with the invariant metric
  left : bool
      Whether to use a left or right invariant metric.
      Optional, default: True.
class_docstr_tok: ["Class","for","invariant","metrics","on","Lie","groups","represented","by","vectors",".","Parameters","--","--","--","--","--","space",":","LieGroup","Group","to","equip","with","the","invariant","metric","left",":","bool","Whether","to","use","a","left","or","right","invariant","metric",".","Optional",",","default",":","True","."]
docstr: Compute Riemannian logarithm of a point from a base point.
  
  Parameters
  ----------
  point : array-like, shape=[..., dim]
      Point in the group.
  base_point : array-like, shape=[..., dim], optional
      Point in the group, from which to compute the log,
      (the default is identity).
  
  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=None, **kwargs):
      """Compute Riemannian logarithm of a point from a base point.
  
      Parameters
      ----------
      point : array-like, shape=[..., dim]
          Point in the group.
      base_point : array-like, shape=[..., dim], optional
          Point in the group, from which to compute the log,
          (the default is identity).
  
      Returns
      -------
      log : array-like, shape=[..., dim]
          Tangent vector at the base point equal to the Riemannian logarithm
          of point at the base point.
      """
      identity = self._space.identity
  
      if base_point is None:
          base_point = identity
      else:
          base_point = self._space.regularize(base_point)
  
      if gs.allclose(base_point, identity):
          return self.log_from_identity(point)
  
      point = self._space.regularize(point)
  
      if self.left:
          point_near_id = self._space.compose(
              self._space.inverse(base_point), point
          )
  
      else:
          point_near_id = self._space.compose(
              point, self._space.inverse(base_point)
          )
  
      log_from_id = self.log_from_identity(point_near_id)
      return self._space.tangent_translation_map(
          base_point, left=self.left
      )(log_from_id)
  
imports: import geomstats.backend
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.integrator import integrate
  from geomstats.numerics.geodesic import ExpODESolver, LogShootingSolver
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 9 for calling the _InvariantMetricVector obj's underlying member method code with example usage: obj.log(point, base_point) and returns: self, self