class_docstr: Class for Riemannian and pseudo-Riemannian metrics.
  
  The associated Levi-Civita connection on the tangent bundle.
class_docstr_tok: ["Class","for","Riemannian","and","pseudo-Riemannian","metrics",".","The","associated","Levi-Civita","connection","on","the","tangent","bundle","."]
docstr: Compute the sectional curvature.
  
  In the literature sectional curvature is noted K.
  
  For two orthonormal tangent vectors :math:`x,y` at a base point,
  the sectional curvature is defined by :math:`K(x,y) = <R(x, y)x, y>`.
  
  For non-orthonormal vectors, it is
  :math:`K(x,y) = <R(x, y)y, x> / (<x, x><y, y> - <x, y>^2)`.
  
  sectional_curvature(X, Y, P) = K(X,Y) where X, Y are tangent vectors
  at base point P.
  
  The information manifold of multinomial distributions has constant
  sectional curvature given by :math:`K = 2 \sqrt{n}`.
  
  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`.
  base_point : array-like, shape=[..., dim]
      Point in the manifold.
  
  Returns
  -------
  sectional_curvature : array-like, shape=[...,]
      Sectional curvature at `base_point`.
docstr_tok: ["Compute","the","sectional","curvature",".","In","the","literature","sectional","curvature","is","noted","K.","For","two","orthonormal","tangent","vectors",":","math",":","`","x",",","y","`","at","a","base","point",",","the","sectional","curvature","is","defined","by",":","math",":","`","K","(","x",",","y",")","=","<","R","(","x",",","y",")","x",",","y",">","`",".","For","non-orthonormal","vectors",",","it","is",":","math",":","`","K","(","x",",","y",")","=","<","R","(","x",",","y",")","y",",","x",">","\/","(","<","x",",","x",">","<","y",",","y",">","-","<","x",",","y",">","^2",")","`",".","sectional_curvature","(","X",",","Y",",","P",")","=","K","(","X",",","Y",")","where","X",",","Y","are","tangent","vectors","at","base","point","P.","The","information","manifold","of","multinomial","distributions","has","constant","sectional","curvature","given","by",":","math",":","`","K","=","2","\\sqrt","{","n","}","`",".","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","`",".","base_point",":","array-like",",","shape=","[","...",",","dim","]","Point","in","the","manifold",".","Returns","--","--","--","-","sectional_curvature",":","array-like",",","shape=","[","...",",","]","Sectional","curvature","at","`","base_point","`","."]
code: def sectional_curvature(
      self, tangent_vec_a, tangent_vec_b, base_point=None
  ):
      r"""Compute the sectional curvature.
  
      In the literature sectional curvature is noted K.
  
      For two orthonormal tangent vectors :math:`x,y` at a base point,
      the sectional curvature is defined by :math:`K(x,y) = <R(x, y)x, y>`.
  
      For non-orthonormal vectors, it is
      :math:`K(x,y) = <R(x, y)y, x> / (<x, x><y, y> - <x, y>^2)`.
  
      sectional_curvature(X, Y, P) = K(X,Y) where X, Y are tangent vectors
      at base point P.
  
      The information manifold of multinomial distributions has constant
      sectional curvature given by :math:`K = 2 \sqrt{n}`.
  
      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`.
      base_point : array-like, shape=[..., dim]
          Point in the manifold.
  
      Returns
      -------
      sectional_curvature : array-like, shape=[...,]
          Sectional curvature at `base_point`.
      """
      curvature = self.curvature(
          tangent_vec_a, tangent_vec_b, tangent_vec_b, base_point
      )
      sectional = self.inner_product(
          curvature, tangent_vec_a, base_point
      )
      norm_a = self.squared_norm(tangent_vec_a, base_point)
      norm_b = self.squared_norm(tangent_vec_b, base_point)
      inner_ab = self.inner_product(
          tangent_vec_a, tangent_vec_b, base_point
      )
      normalization_factor = norm_a * norm_b - inner_ab**2
      return gs.divide(
          sectional, normalization_factor, ignore_div_zero=True
      )
  
imports: from abc import ABC
  import joblib
  import geomstats.backend
  import geomstats.geometry
  from geomstats.geometry.connection import Connection
  from geomstats.vectorization import check_is_batch
label_desc: Use image node_id 23 for calling the RiemannianMetric obj's underlying member method code with example usage: obj.sectional_curvature(tangent_vec_a, tangent_vec_b, base_point) and returns: gs