docstr: Compute the QR decomposition of the normal component of a point.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, p]
  base_point : array-like, shape=[..., n, p]
  matrix_m : array-like
  
  Returns
  -------
  matrix_q : array-like
  matrix_n : array-like
code: def _normal_component_qr(point, base_point, matrix_m):
      """Compute the QR decomposition of the normal component of a point.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, p]
      base_point : array-like, shape=[..., n, p]
      matrix_m : array-like
  
      Returns
      -------
      matrix_q : array-like
      matrix_n : array-like
      """
      matrix_k = point - gs.matmul(base_point, matrix_m)
      matrix_q, matrix_n = gs.linalg.qr(matrix_k)
      return matrix_q, matrix_n
  
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 2 for calling the _StiefelLogSolver obj's underlying member method code with example usage: obj._normal_component_qr(point, base_point, matrix_m) and returns: matrix_q,  matrix_n