code: def test_multiply(self):
      f, g = self.f, self.g
  
      self.check_constant_output(f * g, 6.0)
  
      self.check_constant_output((2 * f) * g, 12.0)
      self.check_constant_output(2 * (f * g), 12.0)
      self.check_constant_output((f * 2) * g, 12.0)
      self.check_constant_output(f * (2 * g), 12.0)
      self.check_constant_output((f * g) * 2, 12.0)
      self.check_constant_output(f * (g * 2), 12.0)
  
      self.check_constant_output((f * f) * f, 27.0)
      self.check_constant_output(f * (f * f), 27.0)
  
      self.check_constant_output((f * g) * f, 18.0)
      self.check_constant_output(f * (g * f), 18.0)
  
      self.check_constant_output((f * g) * (f * g), 36.0)
      self.check_constant_output((f * g) * (g * f), 36.0)
      self.check_constant_output((g * f) * (f * g), 36.0)
      self.check_constant_output((g * f) * (g * f), 36.0)
  
      self.check_constant_output(f * f * f * 0 * f * f, 0.0)
  
imports: from itertools import permutations
  from operator import add, ge, gt, le, lt, methodcaller, mul, ne, sub
  from string import ascii_uppercase
  from unittest import TestCase
  import numpy
  from numpy import arange, array, eye, float64, full, isnan, zeros
  from pandas import DataFrame, date_range, Int64Index
  from catalyst.pipeline import Factor, Filter
  from catalyst.pipeline.expression import NumericalExpression, NUMEXPR_MATH_FUNCS
  from catalyst.testing import check_allclose
  from catalyst.utils.numpy_utils import datetime64ns_dtype, float64_dtype
label_desc: Use image node_id 13 for calling the NumericalExpressionTestCase obj's underlying member method code with example usage: obj.test_multiply() without return types