class_docstr: Class for affine connections.
  
  Parameters
  ----------
  space : Manifold object
      M in the tuple (M, g).
class_docstr_tok: ["Class","for","affine","connections",".","Parameters","--","--","--","--","--","space",":","Manifold","object","M","in","the","tuple","(","M",",","g",")","."]
docstr: Compute the Riemann curvature map R.
  
  For three tangent vectors at base point :math:`P`:
  
  - :math:`X|_P = tangent\_vec\_a`,
  - :math:`Y|_P = tangent\_vec\_b`,
  - :math:`Z|_P = tangent\_vec\_c`,
  
  the curvature(X, Y, Z, P) is defined by
  :math:`R(X,Y)Z = \nabla_X \nabla_Y Z - \nabla_Y \nabla_X Z - \nabla_[X, Y]Z`.
  
  The output is the tangent vector:
  :math:`dx^l(R(X, Y)Z) = R_{ijk}^l X_j Y_k Z_i`
  written with Einstein notation.
  
  Parameters
  ----------
  tangent_vec_a : array-like, shape=[..., dim]
      Tangent vector at `base_point`.
  tangent_vec_b : array-like, shape=[..., dim]
      Tangent vector at `base_point`.
  tangent_vec_c : array-like, shape=[..., dim]
      Tangent vector at `base_point`.
  base_point :  array-like, shape=[..., dim]
      Point on the manifold.
  
  Returns
  -------
  curvature : array-like, shape=[..., dim]
      curvature(X, Y, Z, P)[..., l] = dx^l(R(X, Y)Z)
      Tangent vector at `base_point`.
docstr_tok: ["Compute","the","Riemann","curvature","map","R.","For","three","tangent","vectors","at","base","point",":","math",":","`","P","`",":","-",":","math",":","`","X|_P","=","tangent\\_vec\\_a","`",",","-",":","math",":","`","Y|_P","=","tangent\\_vec\\_b","`",",","-",":","math",":","`","Z|_P","=","tangent\\_vec\\_c","`",",","the","curvature","(","X",",","Y",",","Z",",","P",")","is","defined","by",":","math",":","`","R","(","X",",","Y",")","Z","=","\\nabla_X","\\nabla_Y","Z","-","\\nabla_Y","\\nabla_X","Z","-","\\nabla_","[","X",",","Y","]","Z","`",".","The","output","is","the","tangent","vector",":",":","math",":","`","dx^l","(","R","(","X",",","Y",")","Z",")","=","R_","{","ijk","}","^l","X_j","Y_k","Z_i","`","written","with","Einstein","notation",".","Parameters","--","--","--","--","--","tangent_vec_a",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","`","base_point","`",".","tangent_vec_b",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","`","base_point","`",".","tangent_vec_c",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","`","base_point","`",".","base_point",":","array-like",",","shape=","[","...",",","dim","]","Point","on","the","manifold",".","Returns","--","--","--","-","curvature",":","array-like",",","shape=","[","...",",","dim","]","curvature","(","X",",","Y",",","Z",",","P",")","[","...",",","l","]","=","dx^l","(","R","(","X",",","Y",")","Z",")","Tangent","vector","at","`","base_point","`","."]
code: def curvature(
      self, tangent_vec_a, tangent_vec_b, tangent_vec_c, base_point
  ):
      r"""Compute the Riemann curvature map R.
  
      For three tangent vectors at base point :math:`P`:
  
      - :math:`X|_P = tangent\_vec\_a`,
      - :math:`Y|_P = tangent\_vec\_b`,
      - :math:`Z|_P = tangent\_vec\_c`,
  
      the curvature(X, Y, Z, P) is defined by
      :math:`R(X,Y)Z = \nabla_X \nabla_Y Z - \nabla_Y \nabla_X Z - \nabla_[X, Y]Z`.
  
      The output is the tangent vector:
      :math:`dx^l(R(X, Y)Z) = R_{ijk}^l X_j Y_k Z_i`
      written with Einstein notation.
  
      Parameters
      ----------
      tangent_vec_a : array-like, shape=[..., dim]
          Tangent vector at `base_point`.
      tangent_vec_b : array-like, shape=[..., dim]
          Tangent vector at `base_point`.
      tangent_vec_c : array-like, shape=[..., dim]
          Tangent vector at `base_point`.
      base_point :  array-like, shape=[..., dim]
          Point on the manifold.
  
      Returns
      -------
      curvature : array-like, shape=[..., dim]
          curvature(X, Y, Z, P)[..., l] = dx^l(R(X, Y)Z)
          Tangent vector at `base_point`.
      """
      riemann = self.riemann_tensor(base_point)
      curvature = gs.einsum(
          "...ijkl, ...j, ...k, ...i -> ...l",
          riemann,
          tangent_vec_a,
          tangent_vec_b,
          tangent_vec_c,
      )
      return curvature
  
imports: from abc import ABC
  import geomstats.backend
  import geomstats.errors
label_desc: Use image node_id 10 for calling the Connection obj's underlying member method code with example usage: obj.curvature(tangent_vec_a, tangent_vec_b, tangent_vec_c, base_point) and returns: curvature