class_docstr: Provides method to get geodesic given exp.
class_docstr_tok: ["Provides","method","to","get","geodesic","given","exp","."]
docstr: Geodesic curve for boundary value problem.
  
  Parameters
  ----------
  space : Manifold
      Equipped manifold.
  end_point : array-like, shape=[..., dim]
      Point on the manifold.
  base_point : array-like, shape=[..., dim]
      Point on the manifold.
  
  Returns
  -------
  path : callable
      Time parametrized geodesic curve. `f(t)`.
code: def geodesic_bvp(self, space, point, base_point):
      """Geodesic curve for boundary value problem.
  
      Parameters
      ----------
      space : Manifold
          Equipped manifold.
      end_point : array-like, shape=[..., dim]
          Point on the manifold.
      base_point : array-like, shape=[..., dim]
          Point on the manifold.
  
      Returns
      -------
      path : callable
          Time parametrized geodesic curve. `f(t)`.
      """
      tangent_vec = self.log(space, point, base_point)
      is_batch = tangent_vec.ndim > space.point_ndim
      if base_point.ndim < tangent_vec.ndim:
          base_point = gs.broadcast_to(base_point, tangent_vec.shape)
  
      def path(t):
          """Time parametrized geodesic curve.
  
          Parameters
          ----------
          t : float or array-like, shape=[n_times,]
  
          Returns
          -------
          geodesic_points : array-like, shape=[..., n_times, dim]
              Geodesic points evaluated at t.
          """
          if not gs.is_array(t):
              t = gs.array([t])
  
          if gs.ndim(t) == 0:
              t = gs.expand_dims(t, axis=0)
  
          if not is_batch:
              return self._geodesic_bvp_single(
                  space, t, tangent_vec, base_point
              )
  
          return gs.stack(
              [
                  self._geodesic_bvp_single(
                      space, t, tangent_vec_, base_point_
                  )
                  for tangent_vec_, base_point_ in zip(
                      tangent_vec, base_point
                  )
              ]
          )
  
      return path
  
imports: import math
  from abc import ABC, abstractmethod
  import geomstats.backend
  from geomstats.numerics.bvp import ScipySolveBVP
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.numerics.optimizers import ScipyMinimize
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 2 for calling the _GeodesicBVPFromExpMixins obj's underlying member method code with example usage: obj.geodesic_bvp(space, point, base_point) and returns: path, gs, self