class_docstr: Class for the manifold of Hermitian positive definite (HPD) matrices.
  
  Parameters
  ----------
  n : int
      Integer representing the shape of the matrices: n x n.
docstr: Project a matrix to the space of HPD matrices.
  
  First the Hermitian part of point is computed, then the eigenvalues
  are floored to gs.atol.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, n]
      Matrix to project.
  atol : float
      Tolerance.
      Optional, default: backend atol.
  
  Returns
  -------
  projected: array-like, shape=[..., n, n]
      HPD matrix.
docstr_tok: ["Project","a","matrix","to","the","space","of","HPD","matrices",".","First","the","Hermitian","part","of","point","is","computed",",","then","the","eigenvalues","are","floored","to","gs.atol",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","n",",","n","]","Matrix","to","project",".","atol",":","float","Tolerance",".","Optional",",","default",":","backend","atol",".","Returns","--","--","--","-","projected",":","array-like",",","shape=","[","...",",","n",",","n","]","HPD","matrix","."]
code: def projection(self, point, atol=gs.atol):
      """Project a matrix to the space of HPD matrices.
  
      First the Hermitian part of point is computed, then the eigenvalues
      are floored to gs.atol.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, n]
          Matrix to project.
      atol : float
          Tolerance.
          Optional, default: backend atol.
  
      Returns
      -------
      projected: array-like, shape=[..., n, n]
          HPD matrix.
      """
      herm = ComplexMatrices.to_hermitian(point)
      eigvals, eigvecs = gs.linalg.eigh(herm)
      regularized = gs.where(eigvals < atol, atol, eigvals)
      reconstruction = gs.einsum(
          "...ij,...j->...ij", eigvecs, regularized
      )
      return Matrices.mul(
          reconstruction, ComplexMatrices.transconjugate(eigvecs)
      )
  
imports: import math
  import geomstats.backend
  from geomstats.geometry.base import ComplexVectorSpaceOpenSet
  from geomstats.geometry.complex_matrices import ComplexMatrices, ComplexMatricesMetric
  from geomstats.geometry.complex_riemannian_metric import ComplexRiemannianMetric
  from geomstats.geometry.general_linear import GeneralLinear
  from geomstats.geometry.hermitian_matrices import HermitianMatrices, expmh, powermh
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.pullback_metric import PullbackDiffeoMetric
  from geomstats.geometry.spd_matrices import SymMatrixLog, logmh
  from geomstats.integrator import integrate
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 4 for calling the HPDMatrices obj's underlying member method code with example usage: obj.projection(point, atol) and returns: Matrices