code: def test_dup_count_complex_roots_8():
      R, x = ring("x", ZZ)
  
      # (z-I-1)*(z+I-1)*(z-I+1)*(z+I+1)*(z-1)*(z+1)*(z-I)*(z+I)*z
      f = x**9 + 3 * x**5 - 4 * x
      assert R.dup_count_complex_roots(f, a, b) == 9
      assert R.dup_count_complex_roots(f, c, d) == 4
  
      # (z-I-1)*(z+I-1)*(z-I+1)*(z+I+1)*(z-1)*(z+1)*(z-I)*(z+I)*(z**2-2)*z
      f = (
          x**11
          - 2 * x**9
          + 3 * x**7
          - 6 * x**5
          - 4 * x**3
          + 8 * x
      )
      assert R.dup_count_complex_roots(f, a, b) == 9
      assert R.dup_count_complex_roots(f, c, d) == 4
  
imports: from sympy.polys.rings import ring
  from sympy.polys.domains import ZZ, QQ, ZZ_I, EX
  from sympy.polys.polyerrors import DomainError, RefinementFailed, PolynomialError
  from sympy.polys.rootisolation import dup_cauchy_upper_bound, dup_cauchy_lower_bound, dup_mignotte_sep_bound_squared
  from sympy.testing.pytest import raises
label_desc: Use image node_id 18 for calling a global function with example usage: test_dup_count_complex_roots_8() without return types