class_docstr: Class for a product of manifolds M_1 x ... x M_n.
  
  In contrast to the classes NFoldManifold, Landmarks, or DiscretizedCurves,
  the manifolds M_1, ..., M_n need not be the same, nor of
  same dimension, but the list of manifolds needs to be provided.
  
  Parameters
  ----------
  factors : list
      List of manifolds in the product.
  default_point_type : {'auto', 'vector', 'matrix', 'other'}
      Optional. Default value is 'auto', which will implement as 'vector' unless all
      factors have the same shape. Vector representation gives the point as a 1-d
      array. Matrix representation allows for a point to be represented by an array of
      shape (n, dim), if each manifold has default_point_type 'vector' with shape
      (dim,). 'other' will behave as `matrix` but for higher dimensions.
class_docstr_tok: ["Class","for","a","product","of","manifolds","M_1","x","...","x","M_n",".","In","contrast","to","the","classes","NFoldManifold",",","Landmarks",",","or","DiscretizedCurves",",","the","manifolds","M_1",",","...",",","M_n","need","not","be","the","same",",","nor","of","same","dimension",",","but","the","list","of","manifolds","needs","to","be","provided",".","Parameters","--","--","--","--","--","factors",":","list","List","of","manifolds","in","the","product",".","default_point_type",":","{","'auto","'",",","'vector","'",",","'matrix","'",",","'other","'","}","Optional",".","Default","value","is","'auto","'",",","which","will","implement","as","'vector","'","unless","all","factors","have","the","same","shape",".","Vector","representation","gives","the","point","as","a","1-d","array",".","Matrix","representation","allows","for","a","point","to","be","represented","by","an","array","of","shape","(","n",",","dim",")",",","if","each","manifold","has","default_point_type","'vector","'","with","shape","(","dim",",",")",".","'other","'","will","behave","as","`","matrix","`","but","for","higher","dimensions","."]
docstr: Test if a point belongs to the manifold.
  
  Parameters
  ----------
  point : array-like, shape=[..., {dim, embedding_space.dim,             [n_manifolds, dim_each]}]
      Point.
  atol : float,
      Tolerance.
  
  Returns
  -------
  belongs : array-like, shape=[...,]
      Boolean evaluating if the point belongs to the manifold.
docstr_tok: ["Test","if","a","point","belongs","to","the","manifold",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","{","dim",",","embedding_space.dim",",","[","n_manifolds",",","dim_each","]","}","]","Point",".","atol",":","float",",","Tolerance",".","Returns","--","--","--","-","belongs",":","array-like",",","shape=","[","...",",","]","Boolean","evaluating","if","the","point","belongs","to","the","manifold","."]
code: def belongs(self, point, atol=gs.atol):
      """Test if a point belongs to the manifold.
  
          Parameters
          ----------
          point : array-like, shape=[..., {dim, embedding_space.dim, \
              [n_manifolds, dim_each]}]
              Point.
          atol : float,
              Tolerance.
  
          Returns
          -------
          belongs : array-like, shape=[...,]
              Boolean evaluating if the point belongs to the manifold.
          """
      belongs = self._iterate_over_factors(
          "belongs", {"point": point, "atol": atol}
      )
      return belongs
  
imports: import math
  import geomstats.backend
  import geomstats.errors
  from geomstats.geometry.complex_manifold import ComplexManifold
  from geomstats.geometry.complex_riemannian_metric import ComplexRiemannianMetric
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 4 for calling the ProductManifold obj's underlying member method code with example usage: obj.belongs(point, atol) and returns: belongs