
    sh*                     *   S r SSKrSSKJr  SSKJr  SSKJ	r	  SSK
JrJr  SSKJr  SSKJrJrJr  \" \R&                  5      S	 5       r\" \R*                  5      S
 5       r\" \R.                  5      SS j5       rS rS r\" \R6                  5      S 5       r\" \R:                  5      S 5       r\" \R>                  5      S 5       r \" \RB                  SS9SS j5       r"\" \RF                  5      SS j5       r$\" \RJ                  5      S 5       r&g)z5
Implementation of operations involving polynomials.
    N)
polynomial)	polyutils)literal_unroll)typeserrors)overload)type_can_asarrayas_dtype
from_dtypec                    ^ [        U SU 5      n[        U[        R                  5      (       a  [        R
                  mO[        U5      mU4S jnU$ )Ndtypec                   > [        U R                  5      S:w  a  [        S5      e[        R                  " U 5      S   n[        U5      S:X  a  [        R
                  " STS9$ [        U 5      US   -
  S-
  nU [        US   5      [        US   5      S-    n [        U 5      nUS:  am  [        R                  " [        R                  " US-
  4T5      S5      R                  nU SS  * U S   -  USS S 24'   [        R                  R                  U5      nO[        R
                  " STS9nUS:  a+  [        R                  " U[        R
                  " UTS945      $ U$ )N   zInput must be a 1d array.r   r      )lenshape
ValueErrornpnonzerozerosintdiagonesTlinalgeigvalshstack)pnon_zerotznArootscast_ts         |/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/np/polynomial/polynomial_functions.py
roots_implroots_impl.<locals>.roots_impl   s3    qww<1899::a=#x=A88AV,,Vhrl"Q& c(1+s8B<0145Fq5 Q&11577AufqtmAadGII%%a(EHHQf-E 699eRXXb%?@AAL    )getattr
isinstancer   Integerr   float64r
   )r    tyr(   r&   s      @r'   r(   r(      sD    
 
GQ	B"emm$$" D r*   c                 2   [        U 5      (       d  Sn[        R                  " U5      e[        U [        R
                  5      (       a  Sn[        R                  " X-  5      e[        R                  " U 5      S:  a  Sn[        R                  " U5      eS nU$ )Nz%The argument "seq" must be array-likez&Unsupported type %r for argument "seq"r   Coefficient array is not 1-dc                     [        U 5      S:X  a  U $ [        [        U 5      S-
  SS5       H  nX   S:w  d  M    O   U S WS-    $ )Nr   r   r   )r   range)seqis     r'   implpolyutils_trimseq.<locals>.implN   sK    s8q=J3s8a<R06Q; 1 vA;r*   )	r	   r   TypingErrorr,   r   	BaseTupler   ndimNumbaValueError)r4   msgr6   s      r'   polyutils_trimseqr=   @   s~    C  5  %%#u''6  --	wws|a,$$S)) Kr*   Tc           
        ^^^ [        U 5      (       d  Sn[        R                  " U5      e[        U[        [
        R                  45      (       d  Sn[        R                  " U5      e[        R                  m[        U [
        R                  5      m[        U [
        R                  5      mT(       av  [        R                  " [        R                  " U  Vs/ s H  n[        R                  " U5      S:  PM     sn5      5      (       a  [        R                  " S5      e[        U 6 mOT(       a:  [!        [#        U 5      5      n[        R$                  " U[        R                  5      mO[[        R                  " U 5      S::  a+  [        R$                  " T[!        U R&                  5      5      mO[        R                  " S5      eSUUU4S jjnU$ s  snf )Nz'The argument "alist" must be array-likez#The argument "trim" must be booleanr   r1   r   c                   > T	(       a]  / n[        U 5       HK  nUR                  [        R                  " [        R                  " U5      5      R                  T5      5        MM     OT(       aJ  U  Vs/ s H<  n[        R                  " [        R                  " U5      5      R                  T5      PM>     nnO_[        R                  " U 5      nU Vs/ s H<  n[        R                  " [        R                  " U5      5      R                  T5      PM>     nn[        U Vs/ s H  oDR                  PM     sn5      S:X  a  [        S5      eU(       a&  U Vs/ s H  n[        R                  " U5      PM     nnUnU$ s  snf s  snf s  snf s  snf )Nr   zCoefficient array is empty)r   appendr   
atleast_1dasarrayastypeminsizer   putrimseq)
alisttrimarraysitema	alist_arrret
list_input	res_dtypetuple_inputs
          r'   r6   !polyutils_as_series.<locals>.imply   s;   F&u-bmmBJJt,<=DDYOP . $&$! mmBJJqM299)D$  &F 

5)I(*(! mmBJJqM299)D(  * '1'(A-9::-34VbjjmVF4
&
* ( 5s   1AE;AF F F
T)r	   r   r8   r,   boolr   Booleanr   r.   r9   Listanyarrayr:   r;   _poly_result_dtyper
   _get_list_typeresult_typer   )	rH   rI   r<   rL   dtr6   rO   rP   rQ   s	         @@@r'   polyutils_as_seriesr]   Z   sG   E""7  %%dT5==1223  %%

IUEOO4KE5::.J66"((E:EqBGGAJNE:;<<(()GHH&.		nU+,NN2rzz2	 775>Qy(5;;2GHI (()GHH 0 KQ ;s   #Gc                     U R                   n[        U[        R                  5      (       d  [	        U5      (       a  [        U5      $ U$ N)r   r,   r   Numberr	   rZ   )lr\   s     r'   rZ   rZ      s9     
Br5<<((.>r.B.Bb!!	r*   c                     [         R                  nU  GH  n[        U[        R                  5      (       a  UR                  nO[        U[        R
                  5      (       a  [        U5      /nOh[        U[        R                  5      (       a  U/nOE[        U[        R                  5      (       a  UR                  /nOSn[        R                  " U5      e U Vs/ s H  n[        U5      PM     nnUR                  U5        [         R                  " U6 nGM     [!        U5      $ s  snf ! [        R                   a    Sn[        R                  " U5      ef = f)NzInput dtype must be scalarzInput dtype must be scalar.)r   r.   r,   r   r9   rV   rZ   r`   Arrayr   r   r8   r
   r@   r[   NumbaNotImplementedErrorr   )argsrP   rK   s1r<   tra   s          r'   rY   rY      s    

IdEOO,,Bejj)) &'Bell++Bekk****B.C$$S))	*&()b!bA)HHY+I! * i   * .. 	*/C$$S))	*s   D,D'1&D,'D,,-Ec                     [        U 5      (       d  Sn[        R                  " U5      e[        U5      (       d  Sn[        R                  " U5      eS nU$ )N$The argument "c1" must be array-like$The argument "c2" must be array-likec                 d   [         R                  " X45      u  p#[        U5      [        U5      -
  nUS:  a-  [        R                  " U5      n[        R
                  " X%45      nUS:  a.  [        R                  " U* 5      n[        R
                  " X545      nX#-   n[         R                  " U5      $ Nr   rF   	as_seriesr   r   r   concatenaterG   c1c2arr1arr2diffzrvals          r'   r6   numpy_polyadd.<locals>.impl       \\2(+
4y3t9$!8$B>>4*-D!84%B>>4*-Dkzz#r*   r	   r   r8   rq   rr   r<   r6   s       r'   numpy_polyaddr|      P    B4  %%B4  %%
 Kr*   c                     [        U 5      (       d  Sn[        R                  " U5      e[        U5      (       d  Sn[        R                  " U5      eS nU$ )Nri   rj   c                 d   [         R                  " X45      u  p#[        U5      [        U5      -
  nUS:  a-  [        R                  " U5      n[        R
                  " X%45      nUS:  a.  [        R                  " U* 5      n[        R
                  " X545      nX#-
  n[         R                  " U5      $ rl   rm   rp   s          r'   r6   numpy_polysub.<locals>.impl   ry   r*   rz   r{   s       r'   numpy_polysubr      r}   r*   c                     [        U 5      (       d  Sn[        R                  " U5      e[        U5      (       d  Sn[        R                  " U5      eS nU$ )Nri   rj   c                     [         R                  " X45      u  p#[        R                  " X#5      n[         R                  " U5      $ r_   )rF   rn   r   convolverG   )rq   rr   rs   rt   rw   s        r'   r6   numpy_polymul.<locals>.impl   s0    \\2(+
kk$%zz#r*   rz   r{   s       r'   numpy_polymulr      sP    B4  %%B4  %%
 Kr*   )prefer_literalc                 N  ^^^^ [        U 5      (       d  Sn[        R                  " U5      e[        U5      (       d  Sn[        R                  " U5      e[        U[        [
        R                  45      (       d  Sn[        R                  " U5      e[        X5      m[        U [
        R                  5      (       + mSm[        U [
        R                  5      (       a  S[        R                  " U 5      -  m[        U[        5      (       a  UmOUR                  mSUUUU4S jjnU$ )Nz#The argument "x" must be array-like#The argument "c" must be array-likez%The argument "tensor" must be booleanr   c                 j  > [         R                  " U5      R                  T	5      n[         R                  " U 5      R                  T	5      nT(       a%  T
(       a  UR                  UR                  T-   5      n[        U5      nX5S-
     US-  -   n[        US-
  SS5       H  nX7S-
     Xd-  -   nM     U$ )Nr   r   r   )r   rB   rC   reshaper   r   r3   )xctensorarrinputsra   yr5   	new_shaperP   
tensor_arg
x_nd_arrays           r'   r6   poly_polyval.<locals>.impl  s    jjm""9-A%%i0*++cii)34CHAJ!#q1ua$AE
QZ'A % r*   rS   )r	   r   r8   r,   rT   r   BooleanLiteralRequireLiteralValuerY   r`   rc   r   r:   literal_value)	r   r   r   r<   r6   r   rP   r   r   s	        @@@@r'   poly_polyvalr      s    A3  %%A3  %%ftU%9%9:;;5((--"1(I
  5<<00JI!U[[!!2771:%	&$
))
  Kr*   c                   ^^ [        U 5      (       d  Sn[        R                  " U5      e[        U[        [
        R                  45      (       d  Sn[        R                  " U5      e[        [        U 5      5      m[        R                  " T[        R                  5      (       d  ST S3n[        R                  " U5      e[        R                  " U 5      S:H  =(       dU    [        U [
        R                  [
        R                  45      =(       a$    [        U R                  [
        R                   5      mSUU4S jjnU$ )Nr   z#The argument "m" must be an integerz"Input dtype must be scalar. Found z insteadr   c                   > [         R                  " U 5      R                  T5      n U R                  n[	        U5       Hn  n[        U 5      n[         R                  " US-   4U R                  SS  -   US9nU S   S-  US'   U S   US'   [	        SU5       H  nX   US-   -  XVS-   '   M     Un Mp     T(       a  [        R                  " U 5      $ U $ )Nr   r   r   )
r   rB   rC   r   r3   r   emptyr   rF   rG   )	r   mcdtr5   r#   tmpjis1DrP   s	          r'   r6   poly_polyint.<locals>.implB  s    JJqM  +ggqAAA((AE8aggabk1=CqTAXCFqTCF1a[TQU^E
 !A  ::a= Hr*   r   )r	   r   r8   r,   r   r   r-   r
   rY   r   
issubdtypenumberr:   rV   r9   r   r`   )r   r   r<   r6   r   rP   s       @@r'   poly_polyintr   -  s     A3  %%a#u}}-..3  %%+A./I==BII..29+XF  %%WWQZ1_ 4EJJ89 3AGGU\\2 	 " Kr*   c                     [        U 5      (       d  Sn[        R                  " U5      e[        U5      (       d  Sn[        R                  " U5      eS nU$ )Nri   rj   c                    [         R                  " X45      u  p#US   S:X  a
  [        5       e[        U5      n[        U5      nXE:  a
  US S S-  U4$ US:X  a  X#S   -  US S S-  4$ XE-
  nUS   nUS S U-  nUnUS-
  n	US:  a$  X(U	=== X2U	   -  -  sss& US-  nU	S-  n	US:  a  M$  X)S-   S  U-  [         R                  " US U	S-    5      4$ )Nr   r   r   )rF   rn   ZeroDivisionErrorr   rG   )
rq   rr   rs   rt   l1l2dlensclr5   r   s
             r'   r6   numpy_polydiv.<locals>.impl`  s   \\2(+
8q=#%%YY78a<%%1Wr(?D!HqL007Dr(C9s?DAQAq&q	TG^+	QQ q& A<#%rzz$vA,'???r*   rz   r{   s       r'   numpy_polydivr   V  sQ    B4  %%B4  %%@. Kr*   rS   r   )'__doc__numpyr   numpy.polynomialr   polyr   rF   numbar   
numba.corer   r   numba.core.extendingr   numba.np.numpy_supportr	   r
   r   r%   r(   rG   r=   rn   r]   rZ   rY   polyaddr|   polysubr   polymulr   polyvalr   polyintr   polydivr    r*   r'   <module>r      s9  
  / ,   $ ) I I 
"((, ,^ 
"** 2 
",,6 6r!8 
$,, 0 
$,, 0 
$,, " 
$,,t,+ -+\ 
$,,% %P 
$,,   r*   