ó
\K]c           @` s€   d  Z  d d l m Z m Z m Z d d l Z d d l m Z m	 Z	 d d l
 m Z d d l m Z e e j ƒ d „  ƒ Z d S(   s5   
Implementation of operations involving polynomials.
i    (   t   print_functiont   absolute_importt   divisionN(   t   typest   jit(   t   overload(   t   numpy_supportc         ` sR   t  |  d |  ƒ } t | t j ƒ r0 t j ‰  n t j | ƒ ‰  ‡  f d †  } | S(   Nt   dtypec         ` s\  t  |  j ƒ d k r$ t d ƒ ‚ n  t j |  ƒ d } t  | ƒ d k r\ t j d d ˆ  ƒSt  |  ƒ | d d } |  t | d ƒ t | d ƒ d !}  t  |  ƒ } | d k rt j t j | d f ˆ  ƒ d ƒ j	 } |  d |  d | d d  d  … f <t j
 j | ƒ } n t j d d ˆ  ƒ} | d k rTt j | t j | d ˆ  ƒf ƒ S| Sd  S(   Ni   s   Input must be a 1d array.i    R   iÿÿÿÿi   (   t   lent   shapet
   ValueErrort   npt   nonzerot   zerost   intt   diagt   onest   Tt   linalgt   eigvalst   hstack(   t   pt   non_zerot   tzt   nt   At   roots(   t   cast_t(    s7   lib/python2.7/site-packages/numba/targets/polynomial.pyt
   roots_impl   s     %(#"(   t   getattrt
   isinstanceR   t   IntegerR   t   float64t
   np_supportt   as_dtype(   R   t   tyR   (    (   R   s7   lib/python2.7/site-packages/numba/targets/polynomial.pyR      s    "(   t   __doc__t
   __future__R    R   R   t   numpyR   t   numbaR   R   t   numba.extendingR   R   R!   R   R   (    (    (    s7   lib/python2.7/site-packages/numba/targets/polynomial.pyt   <module>   s   