code: def _test_arithmetic_chain_frame(
      self, pdf1, pdf2, pdf3, *, check_extension
  ):
      psdf1 = ps.from_pandas(pdf1)
      psdf2 = ps.from_pandas(pdf2)
      psdf3 = ps.from_pandas(pdf3)
  
      # Series
      self.assert_eq(
          (psdf1.a - psdf2.b - psdf3.c).sort_index(),
          (pdf1.a - pdf2.b - pdf3.c).sort_index(),
      )
  
      self.assert_eq(
          (psdf1.a * (psdf2.a * psdf3.c)).sort_index(),
          (pdf1.a * (pdf2.a * pdf3.c)).sort_index(),
      )
  
      if check_extension and not extension_float_dtypes_available:
          self.assert_eq(
              (psdf1["a"] / psdf2["a"] / psdf3["c"]).sort_index(),
              (pdf1["a"] / pdf2["a"] / pdf3["c"]).sort_index(),
          )
      else:
          self.assert_eq(
              (psdf1["a"] / psdf2["a"] / psdf3["c"]).sort_index(),
              (pdf1["a"] / pdf2["a"] / pdf3["c"]).sort_index(),
          )
  
      # DataFrame
      self.assert_eq(
          (psdf1 + psdf2 - psdf3).sort_index(),
          (pdf1 + pdf2 - pdf3).sort_index(),
      )
  
      # Multi-index columns
      columns = pd.MultiIndex.from_tuples([("x", "a"), ("x", "b")])
      psdf1.columns = columns
      psdf2.columns = columns
      pdf1.columns = columns
      pdf2.columns = columns
      columns = pd.MultiIndex.from_tuples([("x", "b"), ("y", "c")])
      psdf3.columns = columns
      pdf3.columns = columns
  
      # Series
      self.assert_eq(
          (
              psdf1[("x", "a")] - psdf2[("x", "b")] - psdf3[("y", "c")]
          ).sort_index(),
          (
              pdf1[("x", "a")] - pdf2[("x", "b")] - pdf3[("y", "c")]
          ).sort_index(),
      )
  
      self.assert_eq(
          (
              psdf1[("x", "a")]
              * (psdf2[("x", "b")] * psdf3[("y", "c")])
          ).sort_index(),
          (
              pdf1[("x", "a")] * (pdf2[("x", "b")] * pdf3[("y", "c")])
          ).sort_index(),
      )
  
      # DataFrame
      self.assert_eq(
          (psdf1 + psdf2 - psdf3).sort_index(),
          (pdf1 + pdf2 - pdf3).sort_index(),
      )
  
imports: import pandas
  from pyspark import pandas
  from pyspark.pandas.config import set_option, reset_option
  from pyspark.testing.pandasutils import PandasOnSparkTestCase
  from pyspark.testing.sqlutils import SQLTestUtils
  from pyspark.pandas.typedef.typehints import extension_float_dtypes_available
label_desc: Use image node_id 1 for calling the ArithmeticChainTestingFuncMixin obj's underlying member method code with example usage: obj._test_arithmetic_chain_frame(pdf1, pdf2, pdf3) without return types