class_docstr: Class for the Siegel metric.
class_docstr_tok: ["Class","for","the","Siegel","metric","."]
docstr: Compute the sectional curvature at zero.
  
  Non-orthonormal vectors can be given.
  
  Parameters
  ----------
  tangent_vec_a : array-like, shape=[..., n, n]
      Tangent vector at zero.
  tangent_vec_b : array-like, shape=[..., n, n]
      Tangent vector at zero.
  atol : float
      Tolerance.
      Optional, default: backend atol.
  
  Returns
  -------
  sectional_curvature : array-like, shape=[...,]
      Sectional curvature at zero.
docstr_tok: ["Compute","the","sectional","curvature","at","zero",".","Non-orthonormal","vectors","can","be","given",".","Parameters","--","--","--","--","--","tangent_vec_a",":","array-like",",","shape=","[","...",",","n",",","n","]","Tangent","vector","at","zero",".","tangent_vec_b",":","array-like",",","shape=","[","...",",","n",",","n","]","Tangent","vector","at","zero",".","atol",":","float","Tolerance",".","Optional",",","default",":","backend","atol",".","Returns","--","--","--","-","sectional_curvature",":","array-like",",","shape=","[","...",",","]","Sectional","curvature","at","zero","."]
code: def sectional_curvature_at_zero(
      self, tangent_vec_a, tangent_vec_b, atol=gs.atol
  ):
      """Compute the sectional curvature at zero.
  
      Non-orthonormal vectors can be given.
  
      Parameters
      ----------
      tangent_vec_a : array-like, shape=[..., n, n]
          Tangent vector at zero.
      tangent_vec_b : array-like, shape=[..., n, n]
          Tangent vector at zero.
      atol : float
          Tolerance.
          Optional, default: backend atol.
  
      Returns
      -------
      sectional_curvature : array-like, shape=[...,]
          Sectional curvature at zero.
      """
  
      def _scale_by_norm(tangent_vec):
          norm_tangent_vec = self.norm(tangent_vec, base_point=zero)
          scalars = gs.where(
              norm_tangent_vec < atol, 0.0, 1 / norm_tangent_vec
          )
          return _scale(scalars, tangent_vec)
  
      def _scale(scalars, tangent_vec):
          return gs.einsum("...,...ij->...ij", scalars, tangent_vec)
  
      zero = gs.zeros(
          [self._space.n, self._space.n], dtype=tangent_vec_a.dtype
      )
  
      tangent_vec_a = _scale_by_norm(tangent_vec_a)
  
      inner_prod = gs.cast(
          self.inner_product(
              tangent_vec_a, tangent_vec_b, base_point=zero
          ),
          dtype=tangent_vec_a.dtype,
      )
  
      tangent_vec_b = tangent_vec_b - _scale(inner_prod, tangent_vec_a)
      tangent_vec_b = _scale_by_norm(tangent_vec_b)
  
      tangent_vec_a_transconj = ComplexMatrices.transconjugate(
          tangent_vec_a
      )
      tangent_vec_b_transconj = ComplexMatrices.transconjugate(
          tangent_vec_b
      )
  
      term1 = gs.matmul(tangent_vec_a, tangent_vec_b_transconj)
      term1 -= gs.matmul(tangent_vec_b, tangent_vec_a_transconj)
      norm_term1 = gs.linalg.norm(term1, axis=(-2, -1)) ** 2
  
      term2 = gs.matmul(tangent_vec_a_transconj, tangent_vec_b)
      term2 -= gs.matmul(tangent_vec_b_transconj, tangent_vec_a)
      norm_term2 = gs.linalg.norm(term2, axis=(-2, -1)) ** 2
      return -0.5 * (norm_term1 + norm_term2)
  
imports: import geomstats.backend
  from geomstats.geometry.base import ComplexVectorSpaceOpenSet
  from geomstats.geometry.complex_matrices import ComplexMatrices
  from geomstats.geometry.complex_riemannian_metric import ComplexRiemannianMetric
  from geomstats.geometry.hermitian_matrices import expmh, powermh
  from geomstats.geometry.matrices import Matrices
label_desc: Use image node_id 10 for calling the SiegelMetric obj's underlying member method code with example usage: obj.sectional_curvature_at_zero(tangent_vec_a, tangent_vec_b, atol) and returns: unknown, _scale, gs