B
     \                 @   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d ZdS )	z5
Implementation of operations involving polynomials.
    )print_functionabsolute_importdivisionN)typesjit)overload)numpy_supportc                s:   t | d| }t|tjr tj n
t|  fdd}|S )Ndtypec                s  t | jdkrtdt| d }t |dkr>tjd dS t | |d  d }| t|d t|d d  } t | }|dkrtt|d f dj	}| dd   | d  |dd d f< tj
|}ntjd d}|dkrt|tj| dfS |S d S )N   zInput must be a 1d array.r   )r	      )lenshape
ValueErrornpZnonzeroZzerosintZdiagZonesTZlinalgZeigvalsZhstack)pZnon_zeroZtznAroots)cast_t 7lib/python3.7/site-packages/numba/targets/polynomial.py
roots_impl   s      "zroots_impl.<locals>.roots_impl)getattr
isinstancer   ZIntegerr   Zfloat64
np_supportZas_dtype)r   Ztyr   r   )r   r   r      s    
"r   )__doc__Z
__future__r   r   r   Znumpyr   Znumbar   r   Znumba.extendingr   r   r   r   r   r   r   r   r   <module>   s   