code: def dup_transform(f, p, q, K):
      """
      Evaluate functional transformation ``q**n * f(p/q)`` in ``K[x]``.
  
      Examples
      ========
  
      >>> from sympy.polys import ring, ZZ
      >>> R, x = ring("x", ZZ)
  
      >>> R.dup_transform(x**2 - 2*x + 1, x**2 + 1, x - 1)
      x**4 - 2*x**3 + 5*x**2 - 4*x + 4
  
      """
      if not f:
          return []
  
      n = len(f) - 1
      h, Q = [f[0]], [[K.one]]
  
      for i in range(0, n):
          Q.append(dup_mul(Q[-1], q, K))
  
      for c, q in zip(f[1:], Q[1:]):
          h = dup_mul(h, p, K)
          q = dup_mul_ground(q, c, K)
          h = dup_add(h, q, K)
  
      return h
  
imports: from sympy.polys.densearith import dup_add_term, dmp_add_term, dup_lshift, dup_add, dmp_add, dup_sub, dmp_sub, dup_mul, dmp_mul, dup_sqr, dup_div, dup_rem, dmp_rem, dmp_expand, dup_mul_ground, dmp_mul_ground, dup_quo_ground, dmp_quo_ground, dup_exquo_ground, dmp_exquo_ground
  from sympy.polys.densebasic import dup_strip, dmp_strip, dup_convert, dmp_convert, dup_degree, dmp_degree, dmp_to_dict, dmp_from_dict, dup_LC, dmp_LC, dmp_ground_LC, dup_TC, dmp_TC, dmp_zero, dmp_ground, dmp_zero_p, dup_to_raw_dict, dup_from_raw_dict, dmp_zeros
  from sympy.polys.polyerrors import MultivariatePolynomialError, DomainError
  from sympy.utilities import variations
  from math import ceil, log
label_desc: Use image node_id 32 for calling a global function with example usage: dup_transform(f, p, q, K) and returns: h, list