code: def mul_reduce_test_data(self):
      mats_1 = (
          gs.array([[1.0, 2.0], [3.0, 4.0]]),
          gs.array([[-1.0, 2.0], [-3.0, 4.0]]),
          gs.array([[1.0, -2.0], [3.0, -4.0]]),
      )
      mats_2 = gs.array(
          [[[2.0], [4.0]], [[1.0], [3.0]], [[1.0], [3.0]]]
      )
      mat_1_x_mat_2 = gs.array(
          [[[10.0], [22.0]], [[5.0], [9.0]], [[-5.0], [-9.0]]]
      )
      smoke_data = [
          dict(
              mats=mats_1,
              expected=gs.array([[23.0, -26.0], [51.0, -58.0]]),
          ),
          dict(mats=(gs.array(mats_1), mats_2), expected=mat_1_x_mat_2),
      ]
      return self.generate_tests(smoke_data)
  
imports: import math
  import geomstats.backend
  from geomstats.test.data import TestData
  from .base import MatrixVectorSpaceTestData
  from .riemannian_metric import RiemannianMetricTestData
label_desc: Use image node_id 1 for calling the MatrixOperationsSmokeTestData obj's underlying member method code with example usage: obj.mul_reduce_test_data() and returns: self