code: def test_mobius_transform_float():
      EPS = 1e-6
      vectors = np.array(
          [
              [0.1, 0.1, 0.1, 0.1],
              [10.0, 10.0, 0.0, 0.0],
              [1.0, 0.0, 0.0, 0.0],
              [-1.0, -1.0, -1.0, -1.0],
          ],
          np.float32,
      )
      expected_vectors = [
          [2.5, 2.5, 2.5, 2.5],
          [0.05, 0.05, 0, 0],
          [1, 0, 0, 0],
          [-0.25, -0.25, -0.25, -0.25],
      ]
      vector_bytes = vectors.tobytes()
      pool = Pool.from_bytes(
          vector_bytes, EVectorComponentType.Float, 4
      )
      transformed_pool = Pool.from_bytes(
          bytes(0), EVectorComponentType.Float, 4
      )
      transformed_pool = transform_mobius(pool)
      for i in range(transformed_pool.get_num_items()):
          for j in range(transformed_pool.dimension):
              assert (
                  abs(
                      transformed_pool.get_item(i)[j]
                      - expected_vectors[i][j]
                  )
                  < EPS
              )
              assert abs(pool.get_item(i)[j] - vectors[i][j]) < EPS
      assert transformed_pool.dimension == 4
      assert transformed_pool.get_num_items() == 4
      assert transformed_pool.dtype == EVectorComponentType.Float
      assert pool.dtype == EVectorComponentType.Float
  
imports: from __future__ import print_function
  import pytest
  import os
  import numpy
  import yatest.common
  import struct
  from hnsw import EVectorComponentType, EDistance, Pool, Hnsw, HnswException, transform_mobius, HnswEstimator, OnlineHnsw
label_desc: Use image node_id 10 for calling a global function with example usage: test_mobius_transform_float() without return types