code: def _chinese_remainder_reconstruction_univariate(hp, hq, p, q):
      r"""
      Construct a polynomial `h_{pq}` in `\mathbb{Z}_{p q}[x]` such that
  
      .. math ::
  
          h_{pq} = h_p \; \mathrm{mod} \, p
  
          h_{pq} = h_q \; \mathrm{mod} \, q
  
      for relatively prime integers `p` and `q` and polynomials
      `h_p` and `h_q` in `\mathbb{Z}_p[x]` and `\mathbb{Z}_q[x]`
      respectively.
  
      The coefficients of the polynomial `h_{pq}` are computed with the
      Chinese Remainder Theorem. The symmetric representation in
      `\mathbb{Z}_p[x]`, `\mathbb{Z}_q[x]` and `\mathbb{Z}_{p q}[x]` is used.
      It is assumed that `h_p` and `h_q` have the same degree.
  
      Parameters
      ==========
  
      hp : PolyElement
          univariate integer polynomial with coefficients in `\mathbb{Z}_p`
      hq : PolyElement
          univariate integer polynomial with coefficients in `\mathbb{Z}_q`
      p : Integer
          modulus of `h_p`, relatively prime to `q`
      q : Integer
          modulus of `h_q`, relatively prime to `p`
  
      Examples
      ========
  
      >>> from sympy.polys.modulargcd import _chinese_remainder_reconstruction_univariate
      >>> from sympy.polys import ring, ZZ
  
      >>> R, x = ring("x", ZZ)
      >>> p = 3
      >>> q = 5
  
      >>> hp = -x**3 - 1
      >>> hq = 2*x**3 - 2*x**2 + x
  
      >>> hpq = _chinese_remainder_reconstruction_univariate(hp, hq, p, q)
      >>> hpq
      2*x**3 + 3*x**2 + 6*x + 5
  
      >>> hpq.trunc_ground(p) == hp
      True
      >>> hpq.trunc_ground(q) == hq
      True
  
      """
      n = hp.degree()
      x = hp.ring.gens[0]
      hpq = hp.ring.zero
  
      for i in range(n + 1):
          hpq[(i,)] = crt(
              [p, q],
              [hp.coeff(x**i), hq.coeff(x**i)],
              symmetric=True,
          )[0]
  
      hpq.strip_zero()
      return hpq
  
imports: from sympy.core.symbol import Dummy
  from sympy.ntheory import nextprime
  from sympy.ntheory.modular import crt
  from sympy.polys.domains import PolynomialRing
  from sympy.polys.galoistools import gf_gcd, gf_from_dict, gf_gcdex, gf_div, gf_lcm
  from sympy.polys.polyerrors import ModularGCDFailed
  from mpmath import sqrt
  import random
label_desc: Use image node_id 4 for calling a global function with example usage: _chinese_remainder_reconstruction_univariate(hp, hq, p, q) and returns: hpq