class_docstr: Class for Stiefel manifolds St(n,p).
  
  A set of all orthonormal p-frames in n-dimensional space,
  where p <= n.
  
  Parameters
  ----------
  n : int
      Dimension of the ambient vector space.
  p : int
      Number of basis vectors in the orthonormal frame.
docstr: Project a close enough matrix to the Stiefel manifold.
  
  A singular value decomposition is used, and all singular values are
  set to 1 [Absil]_
  
  Parameters
  ----------
  point : array-like, shape=[..., n, p]
      Point in embedding manifold.
  
  Returns
  -------
  projected : array-like, shape=[..., n, p]
  
  References
  ----------
  .. [Absil] Absil, Pierre-Antoine, and Jérôme Malick.
      “Projection-like Retractions on Matrix Manifolds.”
      SIAM Journal on Optimization 22, no. 1 (January 2012):
      135–58. https://doi.org/10.1137/100802529.
code: def projection(self, point):
      """Project a close enough matrix to the Stiefel manifold.
  
      A singular value decomposition is used, and all singular values are
      set to 1 [Absil]_
  
      Parameters
      ----------
      point : array-like, shape=[..., n, p]
          Point in embedding manifold.
  
      Returns
      -------
      projected : array-like, shape=[..., n, p]
  
      References
      ----------
      .. [Absil] Absil, Pierre-Antoine, and Jérôme Malick.
          “Projection-like Retractions on Matrix Manifolds.”
          SIAM Journal on Optimization 22, no. 1 (January 2012):
          135–58. https://doi.org/10.1137/100802529.
      """
      mat_u, _, mat_v = gs.linalg.svd(point)
      return Matrices.mul(mat_u[..., :, : self.p], mat_v)
  
imports: import warnings
  import geomstats.backend
  import geomstats.errors
  from geomstats import algebra_utils
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.hermitian_matrices import powermh
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 10 for calling the Stiefel obj's underlying member method code with example usage: obj.projection(point) and returns: Matrices