class_docstr: Class for bi-invariant metrics on compact Lie groups.
  
  Compact Lie groups and direct products of compact Lie groups with vector
  spaces admit bi-invariant metrics [Gallier]_. Products Lie groups are not
  implemented. Other groups such as SE(3) admit bi-invariant pseudo-metrics.
  
  Parameters
  ----------
  space : LieGroup
      The group to equip with the bi-invariant metric
  
  References
  ----------
  .. [Gallier] Gallier, Jean, and Jocelyn Quaintance. Differential Geometry
      and Lie Groups: A Computational Perspective.
      Geonger International Publishing, 2020.
      https://doi.org/10.1007/978-3-030-46040-2.
class_docstr_tok: ["Class","for","bi-invariant","metrics","on","compact","Lie","groups",".","Compact","Lie","groups","and","direct","products","of","compact","Lie","groups","with","vector","spaces","admit","bi-invariant","metrics","[","Gallier","]","_",".","Products","Lie","groups","are","not","implemented",".","Other","groups","such","as","SE","(","3",")","admit","bi-invariant","pseudo-metrics",".","Parameters","--","--","--","--","--","space",":","LieGroup","The","group","to","equip","with","the","bi-invariant","metric","References","--","--","--","--","--","..","[","Gallier","]","Gallier",",","Jean",",","and","Jocelyn","Quaintance",".","Differential","Geometry","and","Lie","Groups",":","A","Computational","Perspective",".","Geonger","International","Publishing",",","2020.","https",":","\/\/doi.org\/10.1007\/978-3-030-46040-2","."]
docstr: Compute inner product of two vectors in tangent space at base point.
  
  Parameters
  ----------
  tangent_vec_a : array-like, shape=[..., n, n]
      First tangent vector at base_point.
  tangent_vec_b : array-like, shape=[..., n, n]
      Second tangent vector at base_point.
  base_point : array-like, shape=[..., n, n]
      Point in the group.
      Optional, defaults to identity if None.
  
  Returns
  -------
  inner_prod : array-like, shape=[...,]
      Inner-product of the two tangent vectors.
code: def inner_product(
      self, tangent_vec_a, tangent_vec_b, base_point=None
  ):
      """Compute inner product of two vectors in tangent space at base point.
  
      Parameters
      ----------
      tangent_vec_a : array-like, shape=[..., n, n]
          First tangent vector at base_point.
      tangent_vec_b : array-like, shape=[..., n, n]
          Second tangent vector at base_point.
      base_point : array-like, shape=[..., n, n]
          Point in the group.
          Optional, defaults to identity if None.
  
      Returns
      -------
      inner_prod : array-like, shape=[...,]
          Inner-product of the two tangent vectors.
      """
      if (
          base_point is None
          or self._space.default_point_type == "matrix"
      ):
          inner_prod = self.inner_product_at_identity(
              tangent_vec_a, tangent_vec_b
          )
          if base_point is not None:
              return repeat_out(
                  self._space.point_ndim,
                  inner_prod,
                  base_point,
                  tangent_vec_a,
                  tangent_vec_b,
              )
          return inner_prod
  
      tangent_translation = self._space.tangent_translation_map(
          base_point, left=True, inverse=True
      )
      tangent_vec_a_at_id = tangent_translation(tangent_vec_a)
      tangent_vec_b_at_id = tangent_translation(tangent_vec_b)
      return self.inner_product_at_identity(
          tangent_vec_a_at_id, tangent_vec_b_at_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 6 for calling the BiInvariantMetric obj's underlying member method code with example usage: obj.inner_product(tangent_vec_a, tangent_vec_b, base_point) and returns: self, inner_prod, repeat_out