code: def create_tensorprod_function(funcs):
      
      dim = len(funcs)
  
      def tensprod_rule(order, part=None):
          """Tensor product rule."""
          order = order*numpy.ones(dim, int)
          values = [funcs[idx](order[idx]) for idx in range(dim)]
  
          abscissas = [numpy.array(_[0]).flatten() for _ in values]
          abscissas = chaospy.quad.combine(abscissas, part=part).T
  
          weights = [numpy.array(_[1]).flatten() for _ in values]
          weights = numpy.prod(chaospy.quad.combine(weights, part=part), -1)
  
          return abscissas, weights
  
      return tensprod_rule
docs: Combine 1-D rules into multivariate rule using tensor product.