class_docstr: Quotient metric.
  
  Given a (principal) fiber bundle, or more generally a manifold with a
  Lie group acting on it by the right, the quotient space is the space of
  orbits under this action. The quotient metric is defined such that the
  canonical projection is a Riemannian submersion, i.e. it is isometric to
  the restriction of the metric of the total space to horizontal subspaces.
  
  Parameters
  ----------
  space : Manifold
      Base.
  fiber_bundle : FiberBundle
      Bundle structure to define the quotient.
class_docstr_tok: ["Quotient","metric",".","Given","a","(","principal",")","fiber","bundle",",","or","more","generally","a","manifold","with","a","Lie","group","acting","on","it","by","the","right",",","the","quotient","space","is","the","space","of","orbits","under","this","action",".","The","quotient","metric","is","defined","such","that","the","canonical","projection","is","a","Riemannian","submersion",",","i.e",".","it","is","isometric","to","the","restriction","of","the","metric","of","the","total","space","to","horizontal","subspaces",".","Parameters","--","--","--","--","--","space",":","Manifold","Base",".","fiber_bundle",":","FiberBundle","Bundle","structure","to","define","the","quotient","."]
docstr: Compute the Riemannian exponential of a tangent vector.
  
  Parameters
  ----------
  tangent_vec : array-like, shape=[..., {dim, [n, n]}]
      Tangent vector to the quotient manifold.
  base_point : array-like, shape=[..., {dim, [n, n]}]
      Point on the quotient manifold.
      Optional, default: None.
  
  Returns
  -------
  exp : array-like, shape=[..., {dim, [n, n]}]
      Point on the quotient manifold.
docstr_tok: ["Compute","the","Riemannian","exponential","of","a","tangent","vector",".","Parameters","--","--","--","--","--","tangent_vec",":","array-like",",","shape=","[","...",",","{","dim",",","[","n",",","n","]","}","]","Tangent","vector","to","the","quotient","manifold",".","base_point",":","array-like",",","shape=","[","...",",","{","dim",",","[","n",",","n","]","}","]","Point","on","the","quotient","manifold",".","Optional",",","default",":","None",".","Returns","--","--","--","-","exp",":","array-like",",","shape=","[","...",",","{","dim",",","[","n",",","n","]","}","]","Point","on","the","quotient","manifold","."]
code: def exp(self, tangent_vec, base_point):
      """Compute the Riemannian exponential of a tangent vector.
  
      Parameters
      ----------
      tangent_vec : array-like, shape=[..., {dim, [n, n]}]
          Tangent vector to the quotient manifold.
      base_point : array-like, shape=[..., {dim, [n, n]}]
          Point on the quotient manifold.
          Optional, default: None.
  
      Returns
      -------
      exp : array-like, shape=[..., {dim, [n, n]}]
          Point on the quotient manifold.
      """
      fiber_point = self.fiber_bundle.lift(base_point)
      horizontal_vec = self.fiber_bundle.horizontal_lift(
          tangent_vec, fiber_point=fiber_point, base_point=base_point
      )
      return self.fiber_bundle.riemannian_submersion(
          self.fiber_bundle.total_space.metric.exp(
              horizontal_vec, fiber_point
          )
      )
  
file_path: geomstats/geomstats/geometry/quotient_metric.py
imports: import geomstats.backend
  from geomstats.geometry.riemannian_metric import RiemannianMetric
label_desc: Use image node_id 3 for calling the QuotientMetric obj's underlying member method code with example usage: obj.exp(tangent_vec, base_point) and returns: self