class_docstr: Class for product of Riemannian metrics.
class_docstr_tok: ["Class","for","product","of","Riemannian","metrics","."]
docstr: Generate parameterized function for the geodesic curve.
  
  Geodesic curve defined by either:
  
  - an initial point and an initial tangent vector,
  - an initial point and an end point.
  
  Parameters
  ----------
  initial_point : array-like, shape=[..., dim]
      Point on the manifold, initial point of the geodesic.
  end_point : array-like, shape=[..., dim], optional
      Point on the manifold, end point of the geodesic. If None,
      an initial tangent vector must be given.
  initial_tangent_vec : array-like, shape=[..., dim]
      Tangent vector at base point, the initial speed of the geodesics.
      Optional, default: None.
      If None, an end point must be given and a logarithm is computed.
  
  Returns
  -------
  path : callable
      Time parameterized geodesic curve. If a batch of initial
      conditions is passed, the output array's first dimension
      represents the different initial conditions, and the second
      corresponds to time.
docstr_tok: ["Generate","parameterized","function","for","the","geodesic","curve",".","Geodesic","curve","defined","by","either",":","-","an","initial","point","and","an","initial","tangent","vector",",","-","an","initial","point","and","an","end","point",".","Parameters","--","--","--","--","--","initial_point",":","array-like",",","shape=","[","...",",","dim","]","Point","on","the","manifold",",","initial","point","of","the","geodesic",".","end_point",":","array-like",",","shape=","[","...",",","dim","]",",","optional","Point","on","the","manifold",",","end","point","of","the","geodesic",".","If","None",",","an","initial","tangent","vector","must","be","given",".","initial_tangent_vec",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","base","point",",","the","initial","speed","of","the","geodesics",".","Optional",",","default",":","None",".","If","None",",","an","end","point","must","be","given","and","a","logarithm","is","computed",".","Returns","--","--","--","-","path",":","callable","Time","parameterized","geodesic","curve",".","If","a","batch","of","initial","conditions","is","passed",",","the","output","array","'s","first","dimension","represents","the","different","initial","conditions",",","and","the","second","corresponds","to","time","."]
code: def geodesic(
      self, initial_point, end_point=None, initial_tangent_vec=None
  ):
      """Generate parameterized function for the geodesic curve.
  
      Geodesic curve defined by either:
  
      - an initial point and an initial tangent vector,
      - an initial point and an end point.
  
      Parameters
      ----------
      initial_point : array-like, shape=[..., dim]
          Point on the manifold, initial point of the geodesic.
      end_point : array-like, shape=[..., dim], optional
          Point on the manifold, end point of the geodesic. If None,
          an initial tangent vector must be given.
      initial_tangent_vec : array-like, shape=[..., dim]
          Tangent vector at base point, the initial speed of the geodesics.
          Optional, default: None.
          If None, an end point must be given and a logarithm is computed.
  
      Returns
      -------
      path : callable
          Time parameterized geodesic curve. If a batch of initial
          conditions is passed, the output array's first dimension
          represents the different initial conditions, and the second
          corresponds to time.
      """
      args = {
          "initial_point": initial_point,
          "end_point": end_point,
          "initial_tangent_vec": initial_tangent_vec,
      }
      geodesics = self._iterate_over_factors("geodesic", args)
  
      def geod_fun(t):
          t = gs.to_ndarray(t, to_ndim=1)
          values = [geodesic(t) for geodesic in geodesics]
          return self._space.embed_to_product(values)
  
      return geod_fun
  
imports: import math
  import geomstats.backend
  import geomstats.errors
  from geomstats.geometry.complex_manifold import ComplexManifold
  from geomstats.geometry.complex_riemannian_metric import ComplexRiemannianMetric
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 10 for calling the ProductRiemannianMetric obj's underlying member method code with example usage: obj.geodesic(initial_point, end_point, initial_tangent_vec) and returns: geod_fun, self