U
    9%e                     @   s   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mZ ddlmZ ddlmZmZmZ eejd	d
 Zeejdd Zdd Zeejdd Zeejdd Zeejdd ZdS )z5
Implementation of operations involving polynomials.
    N)
polynomial)	polyutils)typeof)typeserrors)overload)type_can_asarrayas_dtype
from_dtypec                    s8   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nonzerozerosintZdiagZonesTZlinalgZeigvalsZhstack)pZnon_zerotznArootsZcast_t R/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/np/polynomial.py
roots_impl   s      "zroots_impl.<locals>.roots_impl)getattr
isinstancer   Integerr   float64r	   )r   tyr   r   r   r   r      s    "r   c                 C   s\   t | sd}t|t| tjr4d}t||  t| dkrPd}t|dd }|S )Nz%The argument "seq" must be array-likez&Unsupported type %r for argument "seq"r   Coefficient array is not 1-dc                 S   sN   t | dkr| S tt | d ddD ]}| | dkr$ q:q$| d |d  S d S )Nr   r   r   )r   range)seqir   r   r   implM   s    zpolyutils_trimseq.<locals>.impl)	r   r   TypingErrorr    r   Z	BaseTupler   ndimNumbaValueError)r&   msgr(   r   r   r   polyutils_trimseq?   s    

	r-   c                 C   st   t j}| D ]`}t|tjr(tt|}n6t|tjrTdd |jD }tt j| }n
t|j	}t ||}q
t
|S )Nc                 S   s   g | ]}t |qS r   )r	   ).0r#   r   r   r   
<listcomp>`   s     z&_poly_result_dtype.<locals>.<listcomp>)r   r"   r    r   Numberstrr	   TupleZresult_typer   r
   )tupZ	res_dtypeitems1tr   r   r   _poly_result_dtypeX   s    
r7   c                    sr   t | sd}t|t |s,d}t|t| dksHt|dkrVd}t|t| |f  fdd}|S )N$The argument "c1" must be array-like$The argument "c2" must be array-liker   r$   c                    s   t | } t |}t |  }t | }t|t| }|dkrdt |}t ||f}|dk rt | }t ||f}|| }t|S Nr   	r   asarray
atleast_1dastyper   r   Zconcatenateputrimseqc1c2arr1arr2diffZzrvalZresult_dtyper   r   r(   w   s    


znumpy_polyadd.<locals>.implr   r   r)   r   r*   r+   r7   rB   rC   r,   r(   r   rH   r   numpy_polyaddg   s    


rK   c                    sr   t | sd}t|t |s,d}t|t| dksHt|dkrVd}t|t| |f  fdd}|S )Nr8   r9   r   r$   c                    s   t | } t |}t |  }t | }t|t| }|dkrdt |}t ||f}|dk rt | }t ||f}|| }t|S r:   r;   rA   rH   r   r   r(      s    


znumpy_polysub.<locals>.implrI   rJ   r   rH   r   numpy_polysub   s    


rL   c                    sr   t | sd}t|t |s,d}t|t| dksHt|dkrVd}t|t| |f  fdd}|S )Nr8   r9   r   r$   c                    sD   t | } t |}t | }t |}t || }t|S )N)r   r<   r=   Zconvolver>   r?   r@   )rB   rC   rD   rE   rG   rH   r   r   r(      s    



znumpy_polymul.<locals>.implrI   rJ   r   rH   r   numpy_polymul   s    


rM   )__doc__numpyr   Znumpy.polynomialr   Zpolyr   r?   Znumbar   Z
numba.corer   r   Znumba.core.extendingr   Znumba.np.numpy_supportr   r	   r
   r   r   r@   r-   r7   ZpolyaddrK   ZpolysubrL   ZpolymulrM   r   r   r   r   <module>   s$   
/

!
!