code: def test_funm_properties(get_mats, kind):
      n_matrices, n_dim = 10, 3
      C = get_mats(n_matrices, n_dim, kind)
      invC = np.linalg.inv(C)
  
      # expm and logm
      eC, lC = expm(C), logm(C)
      assert_array_almost_equal(eC.conj(), expm(C.conj()), decimal=10)
      assert_array_almost_equal(
          np.linalg.det(eC),
          np.exp(np.trace(C, axis1=-2, axis2=-1)),
          decimal=10,
      )
      assert_array_almost_equal(logm(eC), C, decimal=10)
      assert_array_almost_equal(expm(lC), C, decimal=10)
      assert_array_almost_equal(expm(-lC), invC, decimal=10)
  
      # invsqrtm
      isC = invsqrtm(C)
      Eye = np.repeat(
          np.eye(n_dim)[np.newaxis, :, :], n_matrices, axis=0
      )
      assert_array_almost_equal(isC @ C @ isC, Eye, decimal=10)
      assert_array_almost_equal(isC @ isC, invC, decimal=10)
  
      # sqrtm
      sC = sqrtm(C)
      assert_array_almost_equal(
          np.swapaxes(sC.conj(), -2, -1) @ sC,
          C,
          decimal=10,
      )
      assert_array_almost_equal(isC @ C @ isC, Eye, decimal=10)
  
      # powm
      assert_array_almost_equal(powm(C, 0.5), sC, decimal=10)
      assert_array_almost_equal(powm(C, -0.5), isC, decimal=10)
      alpha = 0.3
      assert_array_almost_equal(
          powm(C, alpha=alpha),
          expm(alpha * logm(C)),
          decimal=10,
      )
  
file_path: pyRiemann/tests/test_utils_base.py
imports: import pytest
  import numpy
  from numpy.testing import assert_array_almost_equal
  from pyriemann.utils.base import expm, invsqrtm, logm, powm, sqrtm, nearest_sym_pos_def
  from pyriemann.utils.mean import mean_riemann
  from pyriemann.utils.test import is_pos_def, is_sym_pos_def
label_desc: Use image node_id 9 for calling a global function with example usage: test_funm_properties(get_mats, kind) without return types