code: def test_lower_fft(self):
      @mb.program(input_specs=[mb.TensorSpec(shape=(1, 2, 3))])
      def prog(x):
          fft_res = mb.complex_fft(data=x)
          real_data = mb.complex_real(data=fft_res)
          return real_data
  
      prev_prog, _, block = apply_pass_and_basic_check(
          prog, "common::lower_complex_dialect_ops"
      )
      assert get_op_types_in_program(prev_prog) == [
          "complex_fft",
          "complex_real",
      ]
      after_pass_op_types_set = set(get_op_types_in_program(prog))
      # Verifies that the complex dialect ops got lowered to core ops.
      assert "complex_fft" not in after_pass_op_types_set
      assert "complex_real" not in after_pass_op_types_set
  
      inputs = {"x": (1, 2, 3)}
      assert_model_is_valid(
          prog,
          inputs,
          expected_output_shapes={block.outputs[0].name: (1, 2, 3)},
      )
  
file_path: coremltools/coremltools/converters/mil/mil/passes/tests/test_lower_complex_dialect_ops.py
imports: import numpy
  import pytest
  from coremltools import ComputeUnit
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil.passes.defs.lower_complex_dialect_ops import _calculate_dft_matrix
  from coremltools.converters.mil.testing_utils import apply_pass_and_basic_check, assert_model_is_valid, ct_convert, get_op_types_in_program
label_desc: Use image node_id 2 for calling the TestLowerComplexDialectOps obj's underlying member method code with example usage: obj.test_lower_fft() and returns: real_data