code: def dup_zz_mignotte_bound(f, K):
      """
      The Knuth-Cohen variant of Mignotte bound for
      univariate polynomials in `K[x]`.
  
      Examples
      ========
  
      >>> from sympy.polys import ring, ZZ
      >>> R, x = ring("x", ZZ)
  
      >>> f = x**3 + 14*x**2 + 56*x + 64
      >>> R.dup_zz_mignotte_bound(f)
      152
  
      By checking `factor(f)` we can see that max coeff is 8
  
      Also consider a case that `f` is irreducible for example `f = 2*x**2 + 3*x + 4`
      To avoid a bug for these cases, we return the bound plus the max coefficient of `f`
  
      >>> f = 2*x**2 + 3*x + 4
      >>> R.dup_zz_mignotte_bound(f)
      6
  
      Lastly,To see the difference between the new and the old Mignotte bound
      consider the irreducible polynomial::
  
      >>> f = 87*x**7 + 4*x**6 + 80*x**5 + 17*x**4 + 9*x**3 + 12*x**2 + 49*x + 26
      >>> R.dup_zz_mignotte_bound(f)
      744
  
      The new Mignotte bound is 744 whereas the old one (SymPy 1.5.1) is 1937664.
  
  
      References
      ==========
  
      ..[1] [Abbott2013]_
  
      """
      from sympy.functions.combinatorial.factorials import binomial
  
      d = dup_degree(f)
      delta = _ceil(d / 2)
      delta2 = _ceil(delta / 2)
  
      # euclidean-norm
      eucl_norm = K.sqrt(sum([cf**2 for cf in f]))
  
      # biggest values of binomial coefficients (p. 538 of reference)
      t1 = binomial(delta - 1, delta2)
      t2 = binomial(delta - 1, delta2 - 1)
  
      lc = K.abs(dup_LC(f, K))  # leading coefficient
      bound = t1 * eucl_norm + t2 * lc  # (p. 538 of reference)
      bound += dup_max_norm(f, K)  # add max coeff for irreducible polys
      bound = _ceil(bound / 2) * 2  # round up to even integer
  
      return bound
  
imports: from sympy.external.gmpy import GROUND_TYPES
  from sympy.core.random import _randint
  from sympy.polys.galoistools import gf_from_int_poly, gf_to_int_poly, gf_lshift, gf_add_mul, gf_mul, gf_div, gf_rem, gf_gcdex, gf_sqf_p, gf_factor_sqf, gf_factor
  from sympy.polys.densebasic import dup_LC, dmp_LC, dmp_ground_LC, dup_TC, dup_convert, dmp_convert, dup_degree, dmp_degree, dmp_degree_in, dmp_degree_list, dmp_from_dict, dmp_zero_p, dmp_one, dmp_nest, dmp_raise, dup_strip, dmp_ground, dup_inflate, dmp_exclude, dmp_include, dmp_inject, dmp_eject, dup_terms_gcd, dmp_terms_gcd
  from sympy.polys.densearith import dup_neg, dmp_neg, dup_add, dmp_add, dup_sub, dmp_sub, dup_mul, dmp_mul, dup_sqr, dmp_pow, dup_div, dmp_div, dup_quo, dmp_quo, dmp_expand, dmp_add_mul, dup_sub_mul, dmp_sub_mul, dup_lshift, dup_max_norm, dmp_max_norm, dup_l1_norm, dup_mul_ground, dmp_mul_ground, dup_quo_ground, dmp_quo_ground
  from sympy.polys.densetools import dup_clear_denoms, dmp_clear_denoms, dup_trunc, dmp_ground_trunc, dup_content, dup_monic, dmp_ground_monic, dup_primitive, dmp_ground_primitive, dmp_eval_tail, dmp_eval_in, dmp_diff_eval_in, dmp_compose, dup_shift, dup_mirror
  from sympy.polys.euclidtools import dmp_primitive, dup_inner_gcd, dmp_inner_gcd
  from sympy.polys.sqfreetools import dup_sqf_p, dup_sqf_norm, dmp_sqf_norm, dup_sqf_part, dmp_sqf_part
  from sympy.polys.polyutils import _sort_factors
  from sympy.polys.polyconfig import query
  from sympy.polys.polyerrors import ExtraneousFactors, DomainError, CoercionFailed, EvaluationFailed
  from sympy.utilities import subsets
  from math import ceil, log
label_desc: Use image node_id 3 for calling a global function with example usage: dup_zz_mignotte_bound(f, K) and returns: bound