code: def test_curvature_smoke(self, atol):
      base_point = self.space.identity
      x, y, z = self.space.metric.normal_basis(
          self.space.lie_algebra.basis
      )
  
      self.test_curvature(x, y, x, base_point, 1.0 / 8 * y, atol)
      self.test_curvature(
          tangent_vec_a=gs.stack([x, x]),
          tangent_vec_b=gs.stack([y] * 2),
          tangent_vec_c=gs.stack([x, x]),
          base_point=base_point,
          expected=gs.array([1.0 / 8 * y] * 2),
          atol=atol,
      )
      self.test_curvature(
          tangent_vec_a=y,
          tangent_vec_b=y,
          tangent_vec_c=z,
          base_point=base_point,
          expected=gs.zeros_like(z),
          atol=atol,
      )
  
imports: import random
  import pytest
  import geomstats.backend
  from geomstats.geometry.invariant_metric import BiInvariantMetric, _InvariantMetricMatrix, _InvariantMetricVector
  from geomstats.geometry.special_euclidean import SpecialEuclidean
  from geomstats.geometry.special_orthogonal import SpecialOrthogonal
  from geomstats.test.parametrizers import DataBasedParametrizer
  from geomstats.test.random import RandomDataGenerator
  from geomstats.test_cases.geometry.invariant_metric import BiInvariantMetricTestCase, InvariantMetricMatrixTestCase, InvariantMetricVectorTestCase
  from .data.invariant_metric import BiInvariantMetricMatrixTestData, BiInvariantMetricVectorsSOTestData, InvariantMetricMatrixSETestData, InvariantMetricMatrixSO3TestData, InvariantMetricMatrixSOTestData, InvariantMetricVectorTestData
label_desc: Use image node_id 4 for calling the TestInvariantMetricMatrixSO3 obj's underlying member method code with example usage: obj.test_curvature_smoke(atol) without return types