class_docstr: Class for (principal) fiber bundles.
  
  This class implements abstract methods for fiber bundles, or more
  generally manifolds, with a submersion map, or a right Lie group action.
  
  Parameters
  ----------
  group : LieGroup
      Group that acts on the total space by the right.
      Optional. Default : None.
      Either the group or the group action must be given.
  group_action : callable
      Right group action. It must take as input a point of the total space
      and an element of the group, and return a point of the total space.
class_docstr_tok: ["Class","for","(","principal",")","fiber","bundles",".","This","class","implements","abstract","methods","for","fiber","bundles",",","or","more","generally","manifolds",",","with","a","submersion","map",",","or","a","right","Lie","group","action",".","Parameters","--","--","--","--","--","group",":","LieGroup","Group","that","acts","on","the","total","space","by","the","right",".","Optional",".","Default",":","None",".","Either","the","group","or","the","group","action","must","be","given",".","group_action",":","callable","Right","group","action",".","It","must","take","as","input","a","point","of","the","total","space","and","an","element","of","the","group",",","and","return","a","point","of","the","total","space","."]
docstr: Evaluate if the tangent vector is horizontal at base_point.
  
  Parameters
  ----------
  tangent_vec : array-like, shape=[..., {total_space.dim, [n, m]}]
      Tangent vector.
  base_point : array-like, shape=[..., {total_space.dim, [n, m]}]
      Point on the manifold.
      Optional, default: None.
  atol : float
      Absolute tolerance.
      Optional, default: backend atol
  
  Returns
  -------
  is_horizontal : bool
      Boolean denoting if tangent vector is horizontal.
docstr_tok: ["Evaluate","if","the","tangent","vector","is","horizontal","at","base_point",".","Parameters","--","--","--","--","--","tangent_vec",":","array-like",",","shape=","[","...",",","{","total_space.dim",",","[","n",",","m","]","}","]","Tangent","vector",".","base_point",":","array-like",",","shape=","[","...",",","{","total_space.dim",",","[","n",",","m","]","}","]","Point","on","the","manifold",".","Optional",",","default",":","None",".","atol",":","float","Absolute","tolerance",".","Optional",",","default",":","backend","atol","Returns","--","--","--","-","is_horizontal",":","bool","Boolean","denoting","if","tangent","vector","is","horizontal","."]
code: def is_horizontal(self, tangent_vec, base_point, atol=gs.atol):
      """Evaluate if the tangent vector is horizontal at base_point.
  
      Parameters
      ----------
      tangent_vec : array-like, shape=[..., {total_space.dim, [n, m]}]
          Tangent vector.
      base_point : array-like, shape=[..., {total_space.dim, [n, m]}]
          Point on the manifold.
          Optional, default: None.
      atol : float
          Absolute tolerance.
          Optional, default: backend atol
  
      Returns
      -------
      is_horizontal : bool
          Boolean denoting if tangent vector is horizontal.
      """
      return gs.all(
          gs.isclose(
              tangent_vec,
              self.horizontal_projection(tangent_vec, base_point),
              atol=atol,
          ),
          axis=(-2, -1),
      )
  
file_path: geomstats/geomstats/geometry/fiber_bundle.py
imports: import sys
  from abc import ABC
  from scipy.optimize import minimize
  import geomstats.backend
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 8 for calling the FiberBundle obj's underlying member method code with example usage: obj.is_horizontal(tangent_vec, base_point, atol) and returns: gs