code: def polyval(ctx, coeffs, x, derivative=False):
      r"""
      Given coefficients `[c_n, \ldots, c_2, c_1, c_0]` and a number `x`,
      :func:`~mpmath.polyval` evaluates the polynomial
  
      .. math ::
  
          P(x) = c_n x^n + \ldots + c_2 x^2 + c_1 x + c_0.
  
      If *derivative=True* is set, :func:`~mpmath.polyval` simultaneously
      evaluates `P(x)` with the derivative, `P'(x)`, and returns the
      tuple `(P(x), P'(x))`.
  
          >>> from mpmath import *
          >>> mp.pretty = True
          >>> polyval([3, 0, 2], 0.5)
          2.75
          >>> polyval([3, 0, 2], 0.5, derivative=True)
          (2.75, 3.0)
  
      The coefficients and the evaluation point may be any combination
      of real or complex numbers.
      """
      if not coeffs:
          return ctx.zero
      p = ctx.convert(coeffs[0])
      q = ctx.zero
      for c in coeffs[1:]:
          if derivative:
              q = p + x * q
          p = c + x * p
      if derivative:
          return p, q
      else:
          return p
  
imports: from ..libmp.backend import xrange
  from .calculus import defun
label_desc: Use image node_id 1 for calling a global function with example usage: polyval(ctx, coeffs, x, derivative) and returns: ctx, p,  q, p