
    xKg@M                         d dl Z d dlmZ d dlZd dlmZ d dlmZ	 d dl
mZmZ d dlmZmZmZmZ d dlmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZddZ G d dee      Z  G d de       Z! G d dee      Z"y)    N)product)
polynomial)	polyutils)jitnjit)TestCaseneeds_lapackEnableNRTStatsMixinMemoryLeakMixin)TypingErrorc                 ,    t        j                  |       S N)nproots)ps    _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_polynomial.pyroots_fnr      s    88A;    c                 .    t        j                  | |      S r   )polypolyaddc1c2s     r   r   r          <<2r   c                 .    t        j                  | |      S r   )r   polysubr   s     r   r   r      r   r   c                 .    t        j                  | |      S r   )r   polymulr   s     r   r   r      r   r   c                 ,    t        j                  |       S r   )putrimseq)seqs    r   r"   r"      s    ::c?r   c                 0    t        j                  |       }|S r   r!   	as_series)aress     r   polyasseries1r)   "   s    
,,q/CJr   c                 2    t        j                  | |      }|S r   r%   )r'   trimr(   s      r   polyasseries2r,   '   s    
,,q$
CJr   c                 2    t        j                  | |      }|S r   )r   polydiv)r   r   r(   s      r   r.   r.   ,   s    
,,r2
CJr   c                 2    t        j                  | |      }|S r   r   polyvalxcr(   s      r   polyval2r5   1       
,,q!
CJr   c                 4    t        j                  | |d      }|S )NTr0   r2   s      r   	polyval3Tr8   6   s    
,,q!T
"CJr   c                 4    t        j                  | |d      }|S )NFr0   r2   s      r   	polyval3Fr:   ;   s    
,,q!U
#CJr   c                 2    t        j                  | |      }|S r   )r   polyint)r4   mr(   s      r   r<   r<   @   r6   r   c                        e Zd ZdZej
                  ej                  ej                  ej                  fZ	 fdZ
efdZd Z xZS )TestPolynomialBasezV
    Provides setUp and common data/error modes for testing polynomial functions.
    c                 R    t        j                          t        t        |           y r   )gccollectsuperr?   setUp)self	__class__s    r   rD   zTestPolynomialBase.setUpM   s    


 $-/r   c                     | j                  |      5 } ||  d d d        | j                  |t        j                               y # 1 sw Y   /xY wr   )assertRaisesassertInstr	exception)rE   cfuncargsmsgerrraisess         r   assert_errorzTestPolynomialBase.assert_errorR   s@    s#v4L $c3v//01 $#s   AAc                 .    d}| j                  |||       y )NzInput must be a 1d array.rQ   )rE   rL   rM   rN   s       r   assert_1d_inputz"TestPolynomialBase.assert_1d_inputW   s    )%s+r   )__name__
__module____qualname____doc__r   float64float32
complex128	complex64dtypesrD   
ValueErrorrQ   rT   __classcell__)rF   s   @r   r?   r?   E   s<    
 jj"**bmmR\\BF0
 2< 2
,r   r?   c                   "    e Zd Zd Zed        Zy)
TestPoly1Dc                 4    |dz   }| j                  |||       y )Nz+() argument must not cause a domain change.rS   )rE   namerL   rM   rN   s        r   assert_no_domain_changez"TestPoly1D.assert_no_domain_change^   s    BB%s+r   c           
      L   	  t        d      t              t        j                  t        j                        j
                  		 fd}t        j                  dg      t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d	      t        j                  g d
      f}t        |t        j                  t        j                  gt         j                        z         D ]  \  }}|j                  |      } ||         t        j                  dg      t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d      t        j                  g d      f}t        | j                  dd        D ]  \  }}|j                  |      } ||          j                  t        j                  d      j                  dd      f       t        j                  g d      } j!                  d|f        |j                  t        j"                               y )NT)nopythonc                 f   t        | fi |} | fi |}| j                  j                  v r*t        j                  | j                        j
                  }n}t        j                  j                  ||d|z  d|z         j                         5   | fi | d d d        y # 1 sw Y   y xY w)N
   d   )rtolatol)	r   dtyper]   r   finfo
resolutiontestingassert_allcloseassertNoNRTLeak)r'   kwargsexpectedgotrn   rL   default_resolutionrE   s        r   checkz$TestPoly1D.test_roots.<locals>.checki   s    ,V,H$V$C ww$++%XXagg.99
 0
JJ&&*_:%	 '  %%'a"6" (''s   
B''B0   )rw         )r   r   r   )rw         rz   )r   r   r   rw   rx   ry   )rw   rw   r   r   r   )r   r   rw   r   r   r         ?      ?)rw   y      @      ?ry   )r   y                r   )rw   y      @      ?r{   rz   )r   r   r   r|   rx   ry   )r|   rw   r   r   r   )r   r   r|   r   r   r   ry   g      @)g      @       @              ?eigvals)r   r   r   rm   rY   rn   arrayr   int32int64listr]   astyperT   arangereshaperd   r[   )
rE   rv   	r_vectorsvrl   r'   	c_vectorsr3   rL   ru   s
   `       @@r   
test_rootszTestPoly1D.test_rootsb   s    #T"8,XXbjj1<<	#: HHaSMHHYHHYHH]#HH'(HH_%HH'(
	 	BHHbhh#7$t{{:K#KL AuA!H M
 HHfXHH^$HH^$HH'(HH,-HH)*HH,-
	  	4;;qr?;HAuA!H <
 	URYYr]%:%:1a%@$BC HH%&$$Yt<ahhr}}%&r   N)rU   rV   rW   rd   r	   r    r   r   ra   ra   \   s    , H' H'r   ra   c                       e Zd Zd Zd Zd Zd ZddZd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestPolynomialc                     t         }t        t               }d } |       D ]   }| j                   ||       ||             " y )Nc               3   j   K   t        d      D ]!  } t        j                  dgdg| z  z          # y w)N   rw   r   ranger   r   )is    r   inputsz1TestPolynomial.test_trimseq_basic.<locals>.inputs   s/     1XhhsaS1W}-- s   13)r"   r   assertPreciseEqual)rE   pyfuncrL   r   coefss        r   test_trimseq_basicz!TestPolynomial.test_trimseq_basic   s;    W	. XE##F5M5<@ r   c                    t        t              }| j                          | j                  t              5 } |d       d d d        | j                  dt        j                               | j                  t              5 } |t        j                  d      j                  dd             d d d        | j                  dt        j                               | j                  t              5 } |d       d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   GxY w)	Nabcz%The argument "seq" must be array-likerh   r   ry   Coefficient array is not 1-drw   ry   rx   r   z6Unsupported type UniTuple(int64, 4) for argument "seq")r   r"   disable_leak_checkrH   r   rI   rJ   rK   r   r   r   )rE   rL   rP   es       r   test_trimseq_exceptionz%TestPolynomial.test_trimseq_exception   s    W!{+v%L ,=&**+	- {+q"))B-''1-. ,4!++&	( {+q, ,N!++&	( ,+
 ,+
 ,+s#   	D% ,D1.	D=%D.1D:=Ec                 2   t         }t        t               }t        }t        t              }d } |       D ]`  }| j                   ||       ||             | j                   ||d       ||d             | j                   ||d       ||d             b y )Nc               3     K   t        j                  d       t        j                  d      j                  d       dt        j                  d      t        j                  dt         j                        f g dg d	f d
 d dddgf g df d t        j                  g d      f t        j                  g d      t        j                  g d      g t        j                  g d	      g y w)N   rz   )ry   rx   rw   rx   ry   rl   )rw   ry   rx   r   r   rw   ry   rx   )r   r   MbP?r   gh㈵>r   r   )rw   ry   rx   r   r   rz      )r   )              ?ry                 @y              @r   y              @r   g?r~   r   )r   )r   r   r   rZ   r   r   r   r   r   z6TestPolynomial.test_pu_as_series_basic.<locals>.inputs   s     ))A,))A,&&u--biilBIIarzz$BCC"I..FFJJsBi. """"88L),,88L)288L+ABB88G$''s   DDFT)r)   r   r,   r   )rE   pyfunc1cfunc1pyfunc2cfunc2r   inputs          r   test_pu_as_series_basicz&TestPolynomial.test_pu_as_series_basic   s    m$m$	( XE##GENF5MB##GE5$96%;OP##GE4$8&:MN r   c           	         t        t              }t        t              }| j                          | j	                  t
              5 } |d       d d d        | j                  dt        j                               | j	                  t
              5 } |dd       d d d        | j                  dt        |j                               | j	                  t
              5 } |t        j                  d      d       d d d        | j                  dt        |j                               | j	                  t
              5 } |g dt        j                  d      j                  dd      f       d d d        | j                  dt        |j                               | j	                  t
              5 } |t        j                  d	      j                  d
             d d d        | j                  dt        |j                               | j	                  t
              5 } |t        j                  g dg dg      g       d d d        | j                  dt        |j                               | j	                  t              5 } |t        j                  g gt        j                               d d d        | j                  dt        |j                               | j	                  t              5 } |g dt        j                  g t        j                        t        j                  g d      f       d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   z'The argument "alist" must be array-likeTr   z#The argument "trim" must be booleanr      r      ry   ry   ry   r   zCoefficient array is empty)rw   ry   rw   )r   r)   r,   r   rH   r   rI   rJ   rK   r   r   r   r   r^   rY   )rE   r   r   rP   s       r   test_pu_as_series_exceptionz*TestPolynomial.test_pu_as_series_exception   s   m$m$!{+v5M ,?&**+	- {+v5$ ,?&**+	- {+v299Q<' ,;&**+	- {+vIryy}44Qq9:; ,4&**+	- {+v299Q<''	23 ,4&**+	- {+vBHHgg./23 ,4&**+	- z*f288RD

34 +2&**+	- z*fIrxx"**=HHW%' ( + 	2&**+	-M ,+
 ,+
 ,+
 ,+
 ,+
 ,+
 +*
 +*sa   	M!
M.M;:0N,+N#N">-N/-AN<!M+.M8;NNN"N,/N9<Oc                     t        |      }d } |       D ]'  \  }}| j                   |||       |||      |       ) y )Nc               3   P  K   t        d      D ]R  } t        d      D ]B  }t        j                  dg| z  dgz         }t        j                  dg|z  dgz         }||f D T g dg df g ddf dg df g ddf d t        j                  g d      t        j                  g d      f t        j                  g d      t        j                  g d      f t        j                  g d      t        j                  g d      f d	 d
 d y w)Nr   r   rw   r   rx   )rx   r   )r   r}         @)r   y               @r   )r   r   )r   r   ))rw   r   rx   r   r   )r   jp1p2s       r   r   z5TestPolynomial._test_polyarithm_basic.<locals>.inputs  s     1XqA1#'QC-0B1#'QC-0Bb&L "  Y&&Y&&Y&&Q,((9%rxx'@@@((<("((?*CCC((9%rxx'===  ))s   D$D&ignore_sign_on_zero)r   r   )rE   r   r   rL   r   r   r   s          r   _test_polyarithm_basicz%TestPolynomial._test_polyarithm_basic  sI    V	** hFB##F2bM5B<8K $ M r   c                 2   t        |      }| j                          | j                  t              5 } |dt	        j
                  g d             d d d        | j                  dt        j                               | j                  t              5 } |t	        j
                  g d      d       d d d        | j                  dt        |j                               | j                  t              5 } |t	        j                  d      j                  dd      t	        j
                  g d             d d d        | j                  dt        j                               | j                  t              5 } |t	        j
                  g d      t	        j                  d      j                  dd             d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   UxY w)	Nr   r   z$The argument "c1" must be array-likez$The argument "c2" must be array-likerh   r   ry   r   )r   r   rH   r   r   r   rI   rJ   rK   r   r   )rE   r   rL   rP   r   s        r   _test_polyarithm_exceptionz)TestPolynomial._test_polyarithm_exception8  s{   V!{+v%'*+ ,<&**+	- {+v"((7#U+ ,<&**+	- {+q"))B-''1-rxx	/BC ,4!++&	( {+q"((9%ryy}'<'<Q'BC ,4!++&	(# ,+
 ,+
 ,+
 ,+s1   G'G43AH7AH'G14G>H
Hc                 .    | j                  t               y r   )r   r   rE   s    r   test_polyadd_basicz!TestPolynomial.test_polyadd_basicR      ##G,r   c                 .    | j                  t               y r   )r   r   r   s    r   test_polyadd_exceptionz%TestPolynomial.test_polyadd_exceptionU      ''0r   c                 2    | j                  t        d       y )NTr   )r   r   r   s    r   test_polysub_basicz!TestPolynomial.test_polysub_basicX  s    ##G#Fr   c                 .    | j                  t               y r   )r   r   r   s    r   test_polysub_exceptionz%TestPolynomial.test_polysub_exception[  r   r   c                 .    | j                  t               y r   )r   r   r   s    r   test_polymul_basicz!TestPolynomial.test_polymul_basic^  r   r   c                 .    | j                  t               y r   )r   r   r   s    r   test_polymul_exceptionz%TestPolynomial.test_polymul_exceptiona  r   r   c                     t         }t        t               }| j                  t                d } |       D ]%  \  }}| j                   |||       |||             ' y )Nc               3   2  K   dgdgf ddgdgf t        d      D ]D  } t        d      D ]4  }dg| z  ddgz   }dg|z  ddgz   }t        j                  ||      }||f 6 F t        j                  g d      t        j                  g d      f y w)Nry   r   r   rw   )rw   r   r   r   r   r   )rw   r   r   r   )r   r   r   r   r   )r   r   cicjtgts        r   r   z6TestPolynomial.test_poly_polydiv_basic.<locals>.inputsi  s      #s(Na&1#+1XqAqAq6)BqAq6)B,,r2.Cr'M	 "  ((+,bhhz.BBBs   BB)r.   r   r   r   )rE   r   rL   r   r   r   s         r   test_poly_polydiv_basicz&TestPolynomial.test_poly_polydiv_basicd  sR    W##G,	C hFB##F2rNE"bMB r   c                     | j                  t               t        t              }| j                  t              5 } |dgdg       d d d        y # 1 sw Y   y xY w)Nrw   r   )r   r.   r   rH   ZeroDivisionError)rE   rL   _s      r   test_poly_polydiv_exceptionz*TestPolynomial.test_poly_polydiv_exceptionz  sE    ''0W 01Q1#sO 211s   AAc                 f   t         }t        t               }t        }t        t              }t        }t        t              }d } |       D ]e  \  }}	| j	                   |||	       |||	             | j	                   |||	       |||	             | j	                   |||	       |||	             g y )Nc               3     K   t        j                  g t         j                        dgf dg df t        j                  d      j	                  dd      g df t        d      D ]$  } t        j                  dd      dg| z  dgz   f & t        j                  dd      g d	f t        d
      D ]4  } dg| z  }t        j                  |      }|dgf |ddgf |g df 6 t        j                  ddg      t        j                  d      j	                  dd      f ddgt        j                  d      j	                  dd      f y w)Nr   rw   r   r   ry   r   r   r   )r   r   r   rw   rx   )rw   r   r   )r   r   rY   r   r   r   linspacezeros)r   dimsr3   s      r   r   z6TestPolynomial.test_poly_polyval_basic.<locals>.inputs  s/     ((2RZZ01#55W*))A,&&q+W441Xkk"a(1#'QC-77 ++b!$m331XsQwHHTN!f!Qil"  ((Aq6"BIIaL$8$81$===a&"))A,..q333s   EE)r5   r   r8   r:   r   )
rE   r   r   pyfunc3Tcfunc3Tpyfunc3Fcfunc3Fr   r3   r4   s
             r   test_poly_polyval_basicz&TestPolynomial.test_poly_polyval_basic  s    hy/y/	4* HDAq##GAqM6!Q<@##HQNGAqMB##HQNGAqMB	 r   c                 r   t        t              }t        t              }t        t              }| j	                          | j                  t              5 } |dd       d d d        | j                  dt        j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               t         d        }| j                  t              5 } |ddd       d d d        | j                  dt        |j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   |xY w)Nrx   r   #The argument "c" must be array-likez#The argument "x" must be array-likedefc                 4    t        j                  | ||      }|S r   r0   )r3   r4   tensorr(   s       r   polyval3z<TestPolynomial.test_poly_polyval_exception.<locals>.polyval3  s    ,,q!V,CJr   z%The argument "tensor" must be boolean)
r   r5   r8   r:   r   rH   r   rI   rJ   rK   )rE   r   r   r   rP   r   s         r   test_poly_polyval_exceptionz*TestPolynomial.test_poly_polyval_exception  s/   hy/y/!{+v1e ,;&**+	- {+v5! ,;&**+	- {+v5%  ,;&**+	- {+vAu ,;&**+	- {+vE1 ,;&**+	- 
	 
	 {+vQ5! ,=&**+	- {+vE5! ,;&**+	-I ,+
 ,+
 ,+
 ,+
 ,+ ,+
 ,+sT   
I 
I-+
I:7
J
JJ!(
J- I*-I7:JJJ!J*-J6c           	         t         }t        t               }| j                   |g d       |g d             t        dd      D ]&  }| j                   |dg|       |dg|             ( t        d      D ].  }dg|z  dgz   }| j                   ||d       ||d             0 t        d      D ]?  }t        dd      D ].  }dg|z  dgz   }| j                   |||       |||             0 A t	        j
                  ddgddgg      }| j                   ||       ||             t	        j                  d      j                  d      }| j                   ||       ||             y )	Nr   ry   r   r   )r=   rw   r   r   )r<   r   r   r   r   r   r   r   )rE   r   rL   r   polr   r   c3s           r   test_poly_polyint_basicz&TestPolynomial.test_poly_polyint_basic  sL   Www@ q!A##FA3!$4eQC1oF  qA#'QC-C##F3!$4fSA6FG 
 qA1a[cAgm''sa(8%q/J !  XX!uqen%r
E"I6YYq\!!'*r
E"I6r   c                 0   t        t              }| j                          | j                  t              5 } |d       d d d        | j                  dt        j                               | j                  t              5 } |t        j                  g d      d       d d d        | j                  dt        |j                               | j                  t              5 } |g dd       d d d        | j                  dt        |j                               | j                  t              5 } |dd       d d d        | j                  dt        |j                               y # 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr   r   r   z#The argument "m" must be an integer)r'   br4   rw   zInput dtype must be scalar.)
r   r<   r   rH   r   rI   rJ   rK   r   r   )rE   rL   rP   s      r   test_poly_polyint_exceptionz*TestPolynomial.test_poly_polyint_exception  s7   W!{+v%L ,;&**+	- {+v"((7#U+ ,;&**+	- {+v/1% ,3&**+	- {+v/1% ,3&**+	-# ,+
 ,+
 ,+
 ,+s/   	E' E4!F /
F'E14E= F	Fc                    d }t        |      }d }t        |      }t        j                  ddg      t        j                  ddg      f}t        j                  ddg      t        j                  ddg      f}t        j                  ddg      t        j                  ddg      f}|D ]/  }|D ]&  }	|D ]  }
 |||	|
      } |||	|
      } ||      } ||      }| j                  ||       | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                           ) 2 y )Nc                 4    t        j                  | ||      }|S r   r   
Polynomialr4   domwinr   s       r   pyfunc3z;TestPolynomial.test_Polynomial_constructor.<locals>.pyfunc3      3,AHr   c                 0    t        j                  |       }|S r   r   )r4   r   s     r   r   z;TestPolynomial.test_Polynomial_constructor.<locals>.pyfunc1  s    "AHr   r   rw   r~   r   )r   r   r   r   coefdomainwindow)rE   r   cfunc3r   r   list1list2list3r4   r   r   r   r   q1q2s                  r   test_Polynomial_constructorz*TestPolynomial.test_Polynomial_constructor  sz   	 g	 g1a&!288RH#561a&!288RH#561a&!288RH#56A C C-B3,B BB++B3++BGGRWW=++BIIryyA++BIIryyA++BGGRWW=++BIIryyA++BIIryyA !  r   c                    d }t        |      }| j                          t        j                  ddg      }t        j                  g d      }t        j                  d      j                  d      }| j                  t              5 } ||||       d d d        | j                  dt        j                               | j                  t              5 } ||||       d d d        | j                  dt        |j                               | j                  t              5 } ||||       d d d        | j                  d	t        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   GxY w)
Nc                 4    t        j                  | ||      }|S r   r   r   s       r   r   z8TestPolynomial.test_Polynomial_exeption.<locals>.pyfunc3)  r   r   rw   ry   r   r   )ry   ry   z$Domain has wrong number of elements.z$Window has wrong number of elements.r   )r   r   r   r   r   r   rH   r^   rI   rJ   rK   r   )rE   r   r   input2input3input2DrP   s          r   test_Polynomial_exeptionz'TestPolynomial.test_Polynomial_exeption(  s/   	 g!1a&!)$))A,&&v.z*f666* +<&**+	- z*f666* +<&**+	- {+v7FF+ ,4&**+	- +*
 +*
 ,+s$   EE% E1E"%E.1E:N)F)rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r      sp    	A((O2--^M:(4-1G1-1C,!CF,-\76-:B:-r   r   )rw   )#rA   	itertoolsr   numpyr   numpy.polynomialr   r   r   r!   numbar   r   numba.tests.supportr   r	   r
   r   numba.core.errorsr   r   r   r   r   r"   r)   r,   r.   r5   r8   r:   r<   r?   ra   r   r   r   r   <module>r     s    	   / , G G )






,,h ,.O'# O'dS-_h S-r   