parameters: (roots)
docstring: Generate a monic polynomial with given roots.
  
      Return the coefficients of the polynomial
  
      .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n),
  
      where the `r_n` are the roots specified in `roots`.  If a zero has
      multiplicity n, then it must appear in `roots` n times. For instance,
      if 2 is a root of multiplicity three and 3 is a root of multiplicity 2,
      then `roots` looks something like [2, 2, 2, 3, 3]. The roots can appear
      in any order.
  
      If the returned coefficients are `c`, then
  
      .. math:: p(x) = c_0 + c_1 * x + ... +  x^n
  
      The coefficient of the last term is 1 for monic polynomials in this
      form.
  
      Parameters
      ----------
      roots : array_like
          Sequence containing the roots.
  
      Returns
      -------
      out : ndarray
          1-D array of the polynomial's coefficients If all the roots are
          real, then `out` is also real, otherwise it is complex.  (see
          Examples below).
  
      See Also
      --------
      chebfromroots, legfromroots, lagfromroots, hermfromroots
      hermefromroots
  
      Notes
      -----
      The coefficients are determined by multiplying together linear factors
      of the form `(x - r_i)`, i.e.
  
      .. math:: p(x) = (x - r_0) (x - r_1) ... (x - r_n)
  
      where ``n == len(roots) - 1``; note that this implies that `1` is always
      returned for :math:`a_n`.
  
      Examples
      --------
      >>> import numpy.polynomial as P
      >>> P.polyfromroots((-1,0,1)) # x(x - 1)(x + 1) = x^3 - x
      array([ 0., -1.,  0.,  1.])
      >>> j = complex(0,1)
      >>> P.polyfromroots((-j,j)) # complex returned, though values are real
      array([ 1.+0.j,  0.+0.j,  1.+0.j])
docstring_summary: Generate a monic polynomial with given roots.
docstring_tokens: Generate a monic polynomial with given roots .
function: def polyfromroots(roots) :
      """
      Generate a monic polynomial with given roots.
  
      Return the coefficients of the polynomial
  
      .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n),
  
      where the `r_n` are the roots specified in `roots`.  If a zero has
      multiplicity n, then it must appear in `roots` n times. For instance,
      if 2 is a root of multiplicity three and 3 is a root of multiplicity 2,
      then `roots` looks something like [2, 2, 2, 3, 3]. The roots can appear
      in any order.
  
      If the returned coefficients are `c`, then
  
      .. math:: p(x) = c_0 + c_1 * x + ... +  x^n
  
      The coefficient of the last term is 1 for monic polynomials in this
      form.
  
      Parameters
      ----------
      roots : array_like
          Sequence containing the roots.
  
      Returns
      -------
      out : ndarray
          1-D array of the polynomial's coefficients If all the roots are
          real, then `out` is also real, otherwise it is complex.  (see
          Examples below).
  
      See Also
      --------
      chebfromroots, legfromroots, lagfromroots, hermfromroots
      hermefromroots
  
      Notes
      -----
      The coefficients are determined by multiplying together linear factors
      of the form `(x - r_i)`, i.e.
  
      .. math:: p(x) = (x - r_0) (x - r_1) ... (x - r_n)
  
      where ``n == len(roots) - 1``; note that this implies that `1` is always
      returned for :math:`a_n`.
  
      Examples
      --------
      >>> import numpy.polynomial as P
      >>> P.polyfromroots((-1,0,1)) # x(x - 1)(x + 1) = x^3 - x
      array([ 0., -1.,  0.,  1.])
      >>> j = complex(0,1)
      >>> P.polyfromroots((-j,j)) # complex returned, though values are real
      array([ 1.+0.j,  0.+0.j,  1.+0.j])
  
      """
      if len(roots) == 0 :
          return np.ones(1)
      else :
          [roots] = pu.as_series([roots], trim=False)
          roots.sort()
          p = [polyline(-r, 1) for r in roots]
          n = len(p)
          while n > 1:
              m, r = divmod(n, 2)
              tmp = [polymul(p[i], p[i+m]) for i in range(m)]
              if r:
                  tmp[0] = polymul(tmp[0], p[-1])
              p = tmp
              n = m
          return p[0]
function_tokens: def polyfromroots ( roots ) : if len ( roots ) == 0 : return np . ones ( 1 ) else : [ roots ] = pu . as_series ( [ roots ] , trim = False ) roots . sort ( ) p = [ polyline ( - r , 1 ) for r in roots ] n = len ( p ) while n > 1 : m , r = divmod ( n , 2 ) tmp = [ polymul ( p [ i ] , p [ i + m ] ) for i in range ( m ) ] if r : tmp [ 0 ] = polymul ( tmp [ 0 ] , p [ - 1 ] ) p = tmp n = m return p [ 0 ]