class_docstr: Class for the Siegel metric.
class_docstr_tok: ["Class","for","the","Siegel","metric","."]
docstr: Define an isometry for the Siegel metric.
  
  Isometry for the Siegel metric sending point_to_zero
  (parameter of the isometry) on zero.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, n]
      Point on the Siegel space.
  point_to_zero : array-like, shape=[..., n, n]
      Point send on zero (null matrix) by the isometry.
  
  Returns
  -------
  point_image : array-like, shape=[..., n, n]
      Image of point by the isometry.
docstr_tok: ["Define","an","isometry","for","the","Siegel","metric",".","Isometry","for","the","Siegel","metric","sending","point_to_zero","(","parameter","of","the","isometry",")","on","zero",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","n",",","n","]","Point","on","the","Siegel","space",".","point_to_zero",":","array-like",",","shape=","[","...",",","n",",","n","]","Point","send","on","zero","(","null","matrix",")","by","the","isometry",".","Returns","--","--","--","-","point_image",":","array-like",",","shape=","[","...",",","n",",","n","]","Image","of","point","by","the","isometry","."]
code: def isometry(point, point_to_zero):
      """Define an isometry for the Siegel metric.
  
      Isometry for the Siegel metric sending point_to_zero
      (parameter of the isometry) on zero.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, n]
          Point on the Siegel space.
      point_to_zero : array-like, shape=[..., n, n]
          Point send on zero (null matrix) by the isometry.
  
      Returns
      -------
      point_image : array-like, shape=[..., n, n]
          Image of point by the isometry.
      """
      identity = _create_identity_mat(point.shape, dtype=point.dtype)
      point_to_zero_transconj = ComplexMatrices.transconjugate(
          point_to_zero
      )
      aux_1 = gs.matmul(point_to_zero, point_to_zero_transconj)
      aux_2 = gs.matmul(point_to_zero_transconj, point_to_zero)
      aux_3 = identity - aux_1
      aux_4 = identity - aux_2
      factor_1 = powermh(aux_3, -1 / 2)
      factor_4 = powermh(aux_4, 1 / 2)
      factor_2 = point - point_to_zero
      aux_5 = gs.matmul(point_to_zero_transconj, point)
      aux_6 = identity - aux_5
      factor_3 = gs.linalg.inv(aux_6)
      prod_1 = gs.matmul(factor_1, factor_2)
      prod_2 = gs.matmul(prod_1, factor_3)
      return gs.matmul(prod_2, factor_4)
  
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 4 for calling the SiegelMetric obj's underlying member method code with example usage: obj.isometry(point, point_to_zero) and returns: gs