class_docstr: Class that defines the canonical metric for Stiefel manifolds.
docstr: Compute the lifting of a point.
  
  This computation is based on the QR-decomposion.
  
  e.g. :math:`P_x^{-1}(Q) = QR - X`.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, p]
      Point in the Stiefel manifold.
  base_point : array-like, shape=[..., n, p]
      Point in the Stiefel manifold.
  
  Returns
  -------
  log : array-like, shape=[..., dim + 1]
      Tangent vector at the base point equal to the lifting
      of point at the base point.
code: def lifting(self, point, base_point):
      """Compute the lifting of a point.
  
      This computation is based on the QR-decomposion.
  
      e.g. :math:`P_x^{-1}(Q) = QR - X`.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, p]
          Point in the Stiefel manifold.
      base_point : array-like, shape=[..., n, p]
          Point in the Stiefel manifold.
  
      Returns
      -------
      log : array-like, shape=[..., dim + 1]
          Tangent vector at the base point equal to the lifting
          of point at the base point.
      """
      point, base_point = gs.broadcast_arrays(point, base_point)
  
      matrix_m = gs.matmul(Matrices.transpose(base_point), point)
  
      if gs.any(matrix_m[..., 0, 0] < 0.0):
          raise ValueError("Algorithm does no work if m11 <= 0.")
  
      if point.ndim == 2:
          matrix_r = self._matrix_r_single(matrix_m)
      else:
          matrix_r = gs.stack(
              [self._matrix_r_single(matrix) for matrix in matrix_m]
          )
  
      return gs.matmul(point, matrix_r) - base_point
  
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 7 for calling the StiefelCanonicalMetric obj's underlying member method code with example usage: obj.lifting(point, base_point) and returns: unknown