class_docstr: Space of positive lower triangular matrices with unit-normed rows.
  
  Rows are unit normed wrt Euclidean norm.
  
  For more details, check section 7.4.1 of [T2022]_.
class_docstr_tok: ["Space","of","positive","lower","triangular","matrices","with","unit-normed","rows",".","Rows","are","unit","normed","wrt","Euclidean","norm",".","For","more","details",",","check","section","7.4.1","of","[","T2022","]","_","."]
docstr: Check whether the vector is tangent at base_point.
  
  Parameters
  ----------
  vector: array-like, shape = [..., *point_shape]
      Vector.
  base_point: array-like, shape = [..., *point_shape]
      Point on the manifold.
  atol: float
      Absolute tolerance.
      Optional, default: backend atol.
  
  Returns
  -------
  is_tangent: bool
      Boolean denoting if vector is a tangent vector at the base point.
docstr_tok: ["Check","whether","the","vector","is","tangent","at","base_point",".","Parameters","--","--","--","--","--","vector",":","array-like",",","shape","=","[","...",",","*","point_shape","]","Vector",".","base_point",":","array-like",",","shape","=","[","...",",","*","point_shape","]","Point","on","the","manifold",".","atol",":","float","Absolute","tolerance",".","Optional",",","default",":","backend","atol",".","Returns","--","--","--","-","is_tangent",":","bool","Boolean","denoting","if","vector","is","a","tangent","vector","at","the","base","point","."]
code: def is_tangent(self, vector, base_point, atol=gs.atol):
      """Check whether the vector is tangent at base_point.
  
      Parameters
      ----------
      vector: array-like, shape = [..., *point_shape]
          Vector.
      base_point: array-like, shape = [..., *point_shape]
          Point on the manifold.
      atol: float
          Absolute tolerance.
          Optional, default: backend atol.
  
      Returns
      -------
      is_tangent: bool
          Boolean denoting if vector is a tangent vector at the base point.
      """
      is_lt = self.embedding_space.is_tangent(vector, base_point)
      first_is_zero = gs.isclose(vector[..., 0, 0], 0.0)
  
      image_point = self.diffeo.diffeomorphism(base_point)
      image_vector = self.diffeo.tangent_diffeomorphism(
          vector, base_point=base_point, image_point=image_point
      )
      image_is_tangent = self.image_space.is_tangent(
          image_vector, image_point, atol=atol
      )
  
      return gs.logical_and(
          gs.logical_and(is_lt, first_is_zero),
          image_is_tangent,
      )
  
imports: import geomstats.backend
  from geomstats.geometry.base import DiffeomorphicManifold, VectorSpaceOpenSet
  from geomstats.geometry.diffeo import Diffeo
  from geomstats.geometry.invariant_metric import _InvariantMetricMatrix
  from geomstats.geometry.lie_group import MatrixLieGroup
  from geomstats.geometry.lower_triangular_matrices import LowerTriangularMatrices
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.open_hemisphere import OpenHemisphere, OpenHemispheresProduct
  from geomstats.geometry.pullback_metric import PullbackDiffeoMetric
  from geomstats.geometry.riemannian_metric import RiemannianMetric
label_desc: Use image node_id 4 for calling the UnitNormedRowsPLTMatrices obj's underlying member method code with example usage: obj.is_tangent(vector, base_point, atol) and returns: gs