code: def test_dmp_clear_denoms():
      assert dmp_clear_denoms([[]], 1, QQ, ZZ) == (ZZ(1), [[]])
  
      assert dmp_clear_denoms([[QQ(1)]], 1, QQ, ZZ) == (
          ZZ(1),
          [[QQ(1)]],
      )
      assert dmp_clear_denoms([[QQ(7)]], 1, QQ, ZZ) == (
          ZZ(1),
          [[QQ(7)]],
      )
  
      assert dmp_clear_denoms([[QQ(7, 3)]], 1, QQ) == (ZZ(3), [[QQ(7)]])
      assert dmp_clear_denoms([[QQ(7, 3)]], 1, QQ, ZZ) == (
          ZZ(3),
          [[QQ(7)]],
      )
  
      assert dmp_clear_denoms([[QQ(3)], [QQ(1)], []], 1, QQ, ZZ) == (
          ZZ(1),
          [[QQ(3)], [QQ(1)], []],
      )
      assert dmp_clear_denoms([[QQ(1)], [QQ(1, 2)], []], 1, QQ, ZZ) == (
          ZZ(2),
          [[QQ(2)], [QQ(1)], []],
      )
  
      assert dmp_clear_denoms(
          [QQ(3), QQ(1), QQ(0)], 0, QQ, ZZ, convert=True
      ) == (ZZ(1), [ZZ(3), ZZ(1), ZZ(0)])
      assert dmp_clear_denoms(
          [QQ(1), QQ(1, 2), QQ(0)], 0, QQ, ZZ, convert=True
      ) == (ZZ(2), [ZZ(2), ZZ(1), ZZ(0)])
  
      assert dmp_clear_denoms(
          [[QQ(3)], [QQ(1)], []], 1, QQ, ZZ, convert=True
      ) == (ZZ(1), [[QQ(3)], [QQ(1)], []])
      assert dmp_clear_denoms(
          [[QQ(1)], [QQ(1, 2)], []], 1, QQ, ZZ, convert=True
      ) == (ZZ(2), [[QQ(2)], [QQ(1)], []])
  
      assert dmp_clear_denoms(
          [[EX(S(3) / 2)], [EX(S(9) / 4)]], 1, EX
      ) == (EX(4), [[EX(6)], [EX(9)]])
      assert dmp_clear_denoms([[EX(7)]], 1, EX) == (EX(1), [[EX(7)]])
      assert dmp_clear_denoms([[EX(sin(x) / x), EX(0)]], 1, EX) == (
          EX(x),
          [[EX(sin(x)), EX(0)]],
      )
  
imports: from sympy.polys.densebasic import dup_normal, dmp_normal, dup_from_raw_dict, dmp_convert, dmp_swap
  from sympy.polys.densearith import dmp_mul_ground
  from sympy.polys.densetools import dup_clear_denoms, dmp_clear_denoms, dup_integrate, dmp_integrate, dmp_integrate_in, dup_diff, dmp_diff, dmp_diff_in, dup_eval, dmp_eval, dmp_eval_in, dmp_eval_tail, dmp_diff_eval_in, dup_trunc, dmp_trunc, dmp_ground_trunc, dup_monic, dmp_ground_monic, dup_content, dmp_ground_content, dup_primitive, dmp_ground_primitive, dup_extract, dmp_ground_extract, dup_real_imag, dup_mirror, dup_scale, dup_shift, dup_transform, dup_compose, dmp_compose, dup_decompose, dmp_lift, dup_sign_variations, dup_revert, dmp_revert
  from sympy.polys.polyclasses import ANP
  from sympy.polys.polyerrors import MultivariatePolynomialError, ExactQuotientFailed, NotReversible, DomainError
  from sympy.polys.specialpolys import f_polys
  from sympy.polys.domains import FF, ZZ, QQ, EX
  from sympy.polys.rings import ring
  from sympy.core.numbers import I
  from sympy.core.singleton import S
  from sympy.functions.elementary.trigonometric import sin
  from sympy.abc import x
  from sympy.testing.pytest import raises
label_desc: Use image node_id 36 for calling a global function with example usage: test_dmp_clear_denoms() without return types