class_docstr: Class for matrix Lie groups.
docstr: Compute a left-invariant vector field bringing base_point to point.
  
  The output is a vector of the tangent space at base_point, so not a Lie
  algebra element if it is not the identity.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, n]
      Point.
  base_point : array-like, shape=[..., n, n]
      Base point.
      Optional, defaults to identity if None.
  
  Returns
  -------
  tangent_vec : array-like, shape=[..., n, n]
      Matrix such that `exp(tangent_vec, base_point) = point`.
  
  Notes
  -----
  Denoting `point` by :math:`g` and `base_point` by :math:`h`,
  the output satisfies:
  
  .. math::
  
      g = \exp(\log(g, h), h)
docstr_tok: ["Compute","a","left-invariant","vector","field","bringing","base_point","to","point",".","The","output","is","a","vector","of","the","tangent","space","at","base_point",",","so","not","a","Lie","algebra","element","if","it","is","not","the","identity",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","n",",","n","]","Point",".","base_point",":","array-like",",","shape=","[","...",",","n",",","n","]","Base","point",".","Optional",",","defaults","to","identity","if","None",".","Returns","--","--","--","-","tangent_vec",":","array-like",",","shape=","[","...",",","n",",","n","]","Matrix","such","that","`","exp","(","tangent_vec",",","base_point",")","=","point","`",".","Notes","--","--","-","Denoting","`","point","`","by",":","math",":","`","g","`","and","`","base_point","`","by",":","math",":","`","h","`",",","the","output","satisfies",":","..","math",":",":","g","=","\\exp","(","\\log","(","g",",","h",")",",","h",")"]
code: def log(cls, point, base_point=None):
      r"""
      Compute a left-invariant vector field bringing base_point to point.
  
      The output is a vector of the tangent space at base_point, so not a Lie
      algebra element if it is not the identity.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, n]
          Point.
      base_point : array-like, shape=[..., n, n]
          Base point.
          Optional, defaults to identity if None.
  
      Returns
      -------
      tangent_vec : array-like, shape=[..., n, n]
          Matrix such that `exp(tangent_vec, base_point) = point`.
  
      Notes
      -----
      Denoting `point` by :math:`g` and `base_point` by :math:`h`,
      the output satisfies:
  
      .. math::
  
          g = \exp(\log(g, h), h)
      """
      logm = gs.linalg.logm
      if base_point is None:
          return logm(point)
      lie_algebra_vec = logm(
          cls.compose(cls.inverse(base_point), point)
      )
      return cls.compose(base_point, lie_algebra_vec)
  
imports: import abc
  import geomstats.backend
  from geomstats.geometry.invariant_metric import InvariantMetric
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.matrices import Matrices
label_desc: Use image node_id 10 for calling the MatrixLieGroup obj's underlying member method code with example usage: obj.log(cls, point, base_point) and returns: cls, logm