code: def polymul(a1, a2):
      """
      Find the product of two polynomials.
  
      Finds the polynomial resulting from the multiplication of the two input
      polynomials. Each input must be either a poly1d object or a 1D sequence
      of polynomial coefficients, from highest to lowest degree.
  
      Parameters
      ----------
      a1, a2 : array_like or poly1d object
          Input polynomials.
  
      Returns
      -------
      out : ndarray or poly1d object
          The polynomial resulting from the multiplication of the inputs. If
          either inputs is a poly1d object, then the output is also a poly1d
          object. Otherwise, it is a 1D array of polynomial coefficients from
          highest to lowest degree.
  
      See Also
      --------
      poly1d : A one-dimensional polynomial class.
      poly, polyadd, polyder, polydiv, polyfit, polyint, polysub,
      polyval
      convolve : Array convolution. Same output as polymul, but has parameter
                 for overlap mode.
  
      Examples
      --------
      >>> np.polymul([1, 2, 3], [9, 5, 1])
      array([ 9, 23, 38, 17,  3])
  
      Using poly1d objects:
  
      >>> p1 = np.poly1d([1, 2, 3])
      >>> p2 = np.poly1d([9, 5, 1])
      >>> print(p1)
         2
      1 x + 2 x + 3
      >>> print(p2)
         2
      9 x + 5 x + 1
      >>> print(np.polymul(p1, p2))
         4      3      2
      9 x + 23 x + 38 x + 17 x + 3
  
      """
      truepoly = isinstance(a1, poly1d) or isinstance(a2, poly1d)
      a1, a2 = poly1d(a1), poly1d(a2)
      val = NX.convolve(a1, a2)
      if truepoly:
          val = poly1d(val)
      return val
  
imports: from __future__ import division, absolute_import, print_function
  import functools
  import re
  import warnings
  import numpy.core.numeric
  from numpy.core import isscalar, abs, finfo, atleast_1d, hstack, dot, array, ones
  from numpy.core import overrides
  from numpy.core.overrides import set_module
  from numpy.lib.twodim_base import diag, vander
  from numpy.lib.function_base import trim_zeros
  from numpy.lib.type_check import iscomplex, real, imag, mintypecode
  from numpy.linalg import eigvals, lstsq, inv
label_desc: Use image node_id 16 for calling a global function with example usage: polymul(a1, a2) and returns: val