code: def test_random_riemannian_normal_frechet_mean(
      self, n_samples, random_mean, atol, max_iter=100
  ):
      if random_mean:
          expected = mean = self.space.random_point()
      else:
          mean = None
          expected = gs.array(
              [0.0] * self.space.dim + [1.0]
          )  # north pole
  
      precision = self._get_random_precision()
  
      sample = self.space.random_riemannian_normal(
          mean=mean,
          precision=precision,
          n_samples=n_samples,
          max_iter=max_iter,
      )
      estimate_ = self._fit_frechet_mean(sample)
  
      self.assertAllClose(estimate_, expected, atol=atol)
  
imports: import random
  import pytest
  import scipy
  import geomstats.backend
  from geomstats.learning.frechet_mean import FrechetMean
  from geomstats.test.random import EmbeddedSpaceRandomDataGenerator, HypersphereIntrinsicRandomDataGenerator
  from geomstats.test.test_case import TestCase
  from geomstats.test.vectorization import generate_vectorization_data
  from geomstats.test_cases.geometry.base import LevelSetTestCase
  from geomstats.test_cases.geometry.manifold import ManifoldTestCase
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 11 for calling the HypersphereExtrinsicTestCase obj's underlying member method code with example usage: obj.test_random_riemannian_normal_frechet_mean(n_samples, random_mean, atol, max_iter) without return types