code: def eval_poly(uvec, nvec, Jvec):
      '''Evaluate multi-dimensional polynomials through tensor multiplication.
  
      :param list uvec: vector value of the uncertain parameters at which to evaluate the
          polynomial
  
      :param list nvec: order in each dimension at which to evaluate the polynomial
  
      :param list Jvec: Jacobi matrix of each dimension's 1D polynomial
  
      :return: poly_value - value of the polynomial evaluated at uvec
  
      :rtype: float
  
      '''
      us = _makeIter(uvec)
      ns = _makeIter(nvec)
      Js = _makeIter(Jvec)
      return np.prod([_eval_poly_1D(u, n, J) for u, n, J in zip(us, ns, Js)]f eval_poly(uvec, nvec, Jvec):
      '''Evaluate multi-dimensional polynomials through tensor multiplication.
  
      :param list uvec: vector value of the uncertain parameters at which to evaluate the
          polynomial
  
      :param list nvec: order in each dimension at which to evaluate the polynomial
  
      :param list Jvec: Jacobi matrix of each dimension's 1D polynomial
  
      :return: poly_value - value of the polynomial evaluated at uvec
  
      :rtype: float
  
      '''
      us = _makeIter(uvec)
      ns = _makeIter(nvec)
      Js = _makeIter(Jvec)
      return np.prod([_eval_poly_1D(u, n, J) for u, n, J in zip(us, ns, Js)])
docs: Evaluate multi-dimensional polynomials through tensor multiplication.
  
      :param list uvec: vector value of the uncertain parameters at which to evaluate the
          polynomial
  
      :param list nvec: order in each dimension at which to evaluate the polynomial
  
      :param list Jvec: Jacobi matrix of each dimension's 1D polynomial
  
      :return: poly_value - value of the polynomial evaluated at uvec
  
      :rtype: float