code: def exp_test_data(self):
      def _exp(tangent_vec, base_point):
          circle_center = (
              base_point[0]
              + base_point[1] * tangent_vec[1] / tangent_vec[0]
          )
          circle_radius = gs.sqrt(
              (circle_center - base_point[0]) ** 2 + base_point[1] ** 2
          )
  
          moebius_d = 1
          moebius_c = 1 / (2 * circle_radius)
          moebius_b = circle_center - circle_radius
          moebius_a = (circle_center + circle_radius) * moebius_c
  
          point_complex = base_point[0] + 1j * base_point[1]
          tangent_vec_complex = tangent_vec[0] + 1j * tangent_vec[1]
  
          point_moebius = (
              1j
              * (moebius_d * point_complex - moebius_b)
              / (moebius_c * point_complex - moebius_a)
          )
          tangent_vec_moebius = (
              -1j
              * tangent_vec_complex
              * (1j * moebius_c * point_moebius + moebius_d) ** 2
          )
  
          end_point_moebius = point_moebius * gs.exp(
              tangent_vec_moebius / point_moebius
          )
          end_point_complex = (
              moebius_a * 1j * end_point_moebius + moebius_b
          ) / (moebius_c * 1j * end_point_moebius + moebius_d)
          end_point_expected = gs.hstack(
              [gs.real(end_point_complex), gs.imag(end_point_complex)]
          )
          return end_point_expected
  
      inputs_to_exp = [(gs.array([2.0, 1.0]), gs.array([1.0, 1.0]))]
      data = []
      for tangent_vec, base_point in inputs_to_exp:
          data.append(
              dict(
                  tangent_vec=tangent_vec,
                  base_point=base_point,
                  expected=_exp(tangent_vec, base_point),
              )
          )
      return self.generate_tests(data)
  
file_path: geomstats/tests/tests_geomstats/test_geometry/data/poincare_half_space.py
imports: import geomstats.backend
  from geomstats.test.data import TestData
  from .base import VectorSpaceOpenSetTestData
  from .riemannian_metric import RiemannianMetricTestData
label_desc: Use image node_id 2 for calling the PoincareHalfSpaceMetric2TestData obj's underlying member method code with example usage: obj.exp_test_data() and returns: self, end_point_expected