U
    hâËd`  ã                   @   sR   d Z ddlZddlmZ ddl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.
é    N)Újit)Útypes)Ú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rÎt t |d fˆ ¡d¡j	}| dd …  | d  |dd d …f< tj
 |¡}ntjdˆ d�}|dkrüt |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_zeroÚtzÚnÚAÚroots©Zcast_t© úL/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/np/polynomial.pyÚ
roots_impl   s      "zroots_impl.<locals>.roots_impl)ÚgetattrÚ
isinstancer   ÚIntegerr   Zfloat64Ú
np_supportZas_dtype)r   Útyr   r   r   r   r      s    
"r   )Ú__doc__Únumpyr   Znumbar   Z
numba.corer   Znumba.core.extendingr   Znumba.npr   r   r   r   r   r   r   r   Ú<module>   s   