parameters: (c1, c2)
docstring: Divide one polynomial by another.
  
      Returns the quotient-with-remainder of two polynomials `c1` / `c2`.
      The arguments are sequences of coefficients, from lowest order term
      to highest, e.g., [1,2,3] represents ``1 + 2*x + 3*x**2``.
  
      Parameters
      ----------
      c1, c2 : array_like
          1-D arrays of polynomial coefficients ordered from low to high.
  
      Returns
      -------
      [quo, rem] : ndarrays
          Of coefficient series representing the quotient and remainder.
  
      See Also
      --------
      polyadd, polysub, polymulx, polymul, polypow
  
      Examples
      --------
      >>> from numpy.polynomial import polynomial as P
      >>> c1 = (1,2,3)
      >>> c2 = (3,2,1)
      >>> P.polydiv(c1,c2)
      (array([3.]), array([-8., -4.]))
      >>> P.polydiv(c2,c1)
      (array([ 0.33333333]), array([ 2.66666667,  1.33333333])) # may vary
docstring_summary: Divide one polynomial by another.
docstring_tokens: Divide one polynomial by another .
function: def polydiv(c1, c2):
      """
      Divide one polynomial by another.
  
      Returns the quotient-with-remainder of two polynomials `c1` / `c2`.
      The arguments are sequences of coefficients, from lowest order term
      to highest, e.g., [1,2,3] represents ``1 + 2*x + 3*x**2``.
  
      Parameters
      ----------
      c1, c2 : array_like
          1-D arrays of polynomial coefficients ordered from low to high.
  
      Returns
      -------
      [quo, rem] : ndarrays
          Of coefficient series representing the quotient and remainder.
  
      See Also
      --------
      polyadd, polysub, polymulx, polymul, polypow
  
      Examples
      --------
      >>> from numpy.polynomial import polynomial as P
      >>> c1 = (1,2,3)
      >>> c2 = (3,2,1)
      >>> P.polydiv(c1,c2)
      (array([3.]), array([-8., -4.]))
      >>> P.polydiv(c2,c1)
      (array([ 0.33333333]), array([ 2.66666667,  1.33333333])) # may vary
  
      """
      # c1, c2 are trimmed copies
      [c1, c2] = pu.as_series([c1, c2])
      if c2[-1] == 0:
          raise ZeroDivisionError()
  
      # note: this is more efficient than `pu._div(polymul, c1, c2)`
      lc1 = len(c1)
      lc2 = len(c2)
      if lc1 < lc2:
          return c1[:1]*0, c1
      elif lc2 == 1:
          return c1/c2[-1], c1[:1]*0
      else:
          dlen = lc1 - lc2
          scl = c2[-1]
          c2 = c2[:-1]/scl
          i = dlen
          j = lc1 - 1
          while i >= 0:
              c1[i:j] -= c2*c1[j]
              i -= 1
              j -= 1
          return c1[j+1:]/scl, pu.trimseq(c1[:j+1])
function_tokens: def polydiv ( c1 , c2 ) : # c1, c2 are trimmed copies [ c1 , c2 ] = pu . as_series ( [ c1 , c2 ] ) if c2 [ - 1 ] == 0 : raise ZeroDivisionError ( ) # note: this is more efficient than `pu._div(polymul, c1, c2)` lc1 = len ( c1 ) lc2 = len ( c2 ) if lc1 < lc2 : return c1 [ : 1 ] * 0 , c1 elif lc2 == 1 : return c1 / c2 [ - 1 ] , c1 [ : 1 ] * 0 else : dlen = lc1 - lc2 scl = c2 [ - 1 ] c2 = c2 [ : - 1 ] / scl i = dlen j = lc1 - 1 while i >= 0 : c1 [ i : j ] -= c2 * c1 [ j ] i -= 1 j -= 1 return c1 [ j + 1 : ] / scl , pu . trimseq ( c1 [ : j + 1 ] )