class_docstr: Class for the n-dimensional hyperboloid space.
  
  Class for the n-dimensional hyperboloid space as embedded in (n+1)-dimensional
  Minkowski space as the set of points with squared norm equal to -1. For other
  representations of hyperbolic spaces see the `Hyperbolic` class.
  
  Parameters
  ----------
  dim : int
      Dimension of the hyperbolic space.
class_docstr_tok: ["Class","for","the","n-dimensional","hyperboloid","space",".","Class","for","the","n-dimensional","hyperboloid","space","as","embedded","in","(","n+1",")","-dimensional","Minkowski","space","as","the","set","of","points","with","squared","norm","equal","to","-1",".","For","other","representations","of","hyperbolic","spaces","see","the","`","Hyperbolic","`","class",".","Parameters","--","--","--","--","--","dim",":","int","Dimension","of","the","hyperbolic","space","."]
docstr: Project a point in space on the hyperboloid.
  
  Parameters
  ----------
  point : array-like, shape=[..., dim + 1]
      Point in embedding Euclidean space.
  
  Returns
  -------
  projected_point : array-like, shape=[..., dim + 1]
      Point projected on the hyperboloid.
docstr_tok: ["Project","a","point","in","space","on","the","hyperboloid",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","in","embedding","Euclidean","space",".","Returns","--","--","--","-","projected_point",":","array-like",",","shape=","[","...",",","dim","+","1","]","Point","projected","on","the","hyperboloid","."]
code: def projection(self, point):
      """Project a point in space on the hyperboloid.
  
      Parameters
      ----------
      point : array-like, shape=[..., dim + 1]
          Point in embedding Euclidean space.
  
      Returns
      -------
      projected_point : array-like, shape=[..., dim + 1]
          Point projected on the hyperboloid.
      """
      belongs = self.belongs(point)
  
      # avoid dividing by 0
      factor = gs.where(
          point[..., 0] == 0.0, 1.0, point[..., 0] + gs.atol
      )
  
      first_coord = gs.where(belongs, 1.0, 1.0 / factor)
      intrinsic = gs.einsum("...,...i->...i", first_coord, point)[
          ..., 1:
      ]
      return self.intrinsic_to_extrinsic_coords(intrinsic)
  
imports: import math
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry._hyperbolic import HyperbolicMetric, _Hyperbolic
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.minkowski import Minkowski
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 6 for calling the Hyperboloid obj's underlying member method code with example usage: obj.projection(point) and returns: self