o
    i                     @   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rgt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 )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 b/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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rd}t||  t| dkr(d}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   sJ   t | dkr| S tt | d ddD ]
}| | dkr nq| d |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 ]0}t|tjrtt|}nt|tjr*d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                    r   t | sd}t|t |sd}t|t| dks$t|dkr+d}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r2t |}t ||f}|dk rCt | }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      



znumpy_polyadd.<locals>.implr   r   r)   r   r*   r+   r7   rC   rD   r,   r(   r   rI   r   numpy_polyaddg      


rM   c                    r8   )Nr9   r:   r   r$   c                    s   t | } t |}t |  }t | }t|t| }|dkr2t |}t ||f}|dk rCt | }t ||f}|| }t|S r;   r<   rB   rI   r   r   r(      rJ   znumpy_polysub.<locals>.implrK   rL   r   rI   r   numpy_polysub   rN   rO   c                    r8   )Nr9   r:   r   r$   c                    sD   t | } t |}t | }t |}t || }t|S )N)r   r=   r>   Zconvolver?   r@   rA   )rC   rD   rE   rF   rH   rI   r   r   r(      s   




znumpy_polymul.<locals>.implrK   rL   r   rI   r   numpy_polymul   s   


rP   )__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   rA   r-   r7   ZpolyaddrM   ZpolysubrO   ZpolymulrP   r   r   r   r   <module>   s&    
/

!
!