class_docstr: Class for PSD(n,k).
  
  The manifold of Positive Semi Definite matrices of rank k: PSD(n,k).
  
  Parameters
  ----------
  n : int
      Integer representing the shape of the matrices: n x n.
  k : int
      Integer representing the rank of the matrix (k<n).
class_docstr_tok: ["Class","for","PSD","(","n",",","k",")",".","The","manifold","of","Positive","Semi","Definite","matrices","of","rank","k",":","PSD","(","n",",","k",")",".","Parameters","--","--","--","--","--","n",":","int","Integer","representing","the","shape","of","the","matrices",":","n","x","n.","k",":","int","Integer","representing","the","rank","of","the","matrix","(","k","<","n",")","."]
docstr: Check if the vector belongs to the tangent space.
  
  Parameters
  ----------
  vector : array-like, shape=[..., n, n]
      Matrix to check if it belongs to the tangent space.
  base_point : array-like, shape=[..., n, n]
      Base point of the tangent space.
      Optional, default: None.
  atol : float
      Absolute tolerance.
      Optional, default: backend atol.
  
  Returns
  -------
  belongs : array-like, shape=[...,]
      Boolean denoting if vector belongs to tangent space
      at base_point.
docstr_tok: ["Check","if","the","vector","belongs","to","the","tangent","space",".","Parameters","--","--","--","--","--","vector",":","array-like",",","shape=","[","...",",","n",",","n","]","Matrix","to","check","if","it","belongs","to","the","tangent","space",".","base_point",":","array-like",",","shape=","[","...",",","n",",","n","]","Base","point","of","the","tangent","space",".","Optional",",","default",":","None",".","atol",":","float","Absolute","tolerance",".","Optional",",","default",":","backend","atol",".","Returns","--","--","--","-","belongs",":","array-like",",","shape=","[","...",",","]","Boolean","denoting","if","vector","belongs","to","tangent","space","at","base_point","."]
code: def is_tangent(self, vector, base_point, atol=gs.atol):
      r"""Check if the vector belongs to the tangent space.
  
      Parameters
      ----------
      vector : array-like, shape=[..., n, n]
          Matrix to check if it belongs to the tangent space.
      base_point : array-like, shape=[..., n, n]
          Base point of the tangent space.
          Optional, default: None.
      atol : float
          Absolute tolerance.
          Optional, default: backend atol.
  
      Returns
      -------
      belongs : array-like, shape=[...,]
          Boolean denoting if vector belongs to tangent space
          at base_point.
      """
      vector_sym = Matrices.to_symmetric(vector)
  
      r, _, _ = gs.linalg.svd(base_point)
      r_ort = r[..., :, -(self.n - self.rank) :]
      r_ort_t = Matrices.transpose(r_ort)
      rr = gs.matmul(r_ort, r_ort_t)
      candidates = Matrices.mul(rr, vector_sym, rr)
      return gs.all(
          gs.isclose(candidates, 0.0, atol=atol), axis=(-2, -1)
      )
  
imports: import geomstats.backend
  from geomstats.geometry.fiber_bundle import FiberBundle
  from geomstats.geometry.full_rank_matrices import FullRankMatrices
  from geomstats.geometry.general_linear import GeneralLinear
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.matrices import Matrices, MatricesMetric
  from geomstats.geometry.quotient_metric import QuotientMetric
  from geomstats.geometry.spd_matrices import SPDEuclideanMetric, SPDMatrices
  from geomstats.geometry.special_orthogonal import SpecialOrthogonal
  from geomstats.geometry.symmetric_matrices import SymmetricMatrices
label_desc: Use image node_id 6 for calling the RankKPSDMatrices obj's underlying member method code with example usage: obj.is_tangent(vector, base_point, atol) and returns: gs