code: def test_comparisons(self):
      f, g, h = self.f, self.g, self.h
      self.fake_raw_data = {
          f: arange(25, dtype=float).reshape(5, 5),
          g: arange(25, dtype=float).reshape(5, 5) - eye(5),
          h: full((5, 5), 5, dtype=float),
      }
      f_data = self.fake_raw_data[f]
      g_data = self.fake_raw_data[g]
  
      cases = [
          # Sanity Check with hand-computed values.
          (f, g, eye(5), zeros((5, 5))),
          (f, 10, f_data, 10),
          (10, f, 10, f_data),
          (f, f, f_data, f_data),
          (f + 1, f, f_data + 1, f_data),
          (1 + f, f, 1 + f_data, f_data),
          (f, g, f_data, g_data),
          (f + 1, g, f_data + 1, g_data),
          (f, g + 1, f_data, g_data + 1),
          (f + 1, g + 1, f_data + 1, g_data + 1),
          ((f + g) / 2, f**2, (f_data + g_data) / 2, f_data**2),
      ]
      for op in (gt, ge, lt, le, ne):
          for expr_lhs, expr_rhs, expected_lhs, expected_rhs in cases:
              self.check_output(
                  op(expr_lhs, expr_rhs),
                  op(expected_lhs, expected_rhs),
              )
  
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 18 for calling the NumericalExpressionTestCase obj's underlying member method code with example usage: obj.test_comparisons() without return types