class_docstr: A diffeomorphism between the open hemisphere and the hyperboloid.
class_docstr_tok: ["A","diffeomorphism","between","the","open","hemisphere","and","the","hyperboloid","."]
docstr: Tangent diffeomorphism at base point.
docstr_tok: ["Tangent","diffeomorphism","at","base","point","."]
code: def tangent_diffeomorphism(
      self, tangent_vec, base_point=None, image_point=None
  ):
      """Tangent diffeomorphism at base point."""
      if base_point is None:
          base_point = self.inverse_diffeomorphism(image_point)
  
      coeffs = tangent_vec[..., 0] / base_point[..., 0]
      image_tangent_vec_0 = gs.array(
          -tangent_vec[..., 0] / base_point[..., 0]
      )
      image_tangent_vec_other = tangent_vec[..., 1:] - gs.einsum(
          "...,...i->...i", coeffs, base_point[..., 1:]
      )
  
      image_tangent_vec = gs.concatenate(
          [
              gs.expand_dims(image_tangent_vec_0, axis=-1),
              image_tangent_vec_other,
          ],
          axis=-1,
      )
      return gs.einsum(
          "...,...i->...i", 1 / base_point[..., 0], image_tangent_vec
      )
  
imports: import geomstats.backend
  from geomstats.geometry.base import OpenSet
  from geomstats.geometry.diffeo import Diffeo
  from geomstats.geometry.hyperboloid import Hyperboloid
  from geomstats.geometry.hypersphere import Hypersphere
  from geomstats.geometry.product_manifold import ProductManifold, ProductRiemannianMetric
  from geomstats.geometry.pullback_metric import PullbackDiffeoMetric
label_desc: Use image node_id 3 for calling the OpenHemisphereToHyperboloidDiffeo obj's underlying member method code with example usage: obj.tangent_diffeomorphism(tangent_vec, base_point, image_point) and returns: gs