§
    ƒÛgÿ  ã                   óð   — 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mZ d dlmZ d dlZd„ Zd	„ Zd
„ Zd„ Zd„ Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        ZdS )é    N)Úproduct)Ú
polynomial)Ú	polyutils)ÚjitÚnjit)ÚTestCaseÚtagÚneeds_lapackÚEnableNRTStatsMixinÚMemoryLeakMixin)ÚTypingErrorc                 ó*   — t          j        | ¦  «        S ©N)ÚnpÚroots)Úps    úQ/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_polynomial.pyÚroots_fnr      s   € ÝŒ8�A‰;Œ;Ðó    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                   óf   ‡ — 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                 ó|   •— t          j        ¦   «          t          t          | ¦  «                             ¦   «          d S r   )ÚgcÚcollectÚsuperr&   ÚsetUp)ÚselfÚ	__class__s    €r   r+   zTestPolynomialBase.setUp'   s1   ø€ å
Œ
‰ŒˆÝÕ  $Ñ'Ô'×-Ò-Ñ/Ô/Ð/Ð/Ð/r   c                 óº   — |                       |¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   |                      |t          |j        ¦  «        ¦  «         d S r   )ÚassertRaisesÚassertInÚstrÚ	exception)r,   ÚcfuncÚargsÚmsgÚerrÚraisess         r   Úassert_errorzTestPolynomialBase.assert_error,   s˜   € Ø×Ò˜sÑ#Ô#ð 	 vØˆE�4ˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   –(¨,¯,c                 ó8   — d}|                       |||¦  «         d S )NzInput must be a 1d array.©r8   )r,   r3   r4   r5   s       r   Úassert_1d_inputz"TestPolynomialBase.assert_1d_input1   s%   € Ø)ˆØ×Ò˜%  sÑ+Ô+Ð+Ð+Ð+r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úfloat64Úfloat32Ú
complex128Ú	complex64Údtypesr+   Ú
ValueErrorr8   r;   Ú__classcell__)r-   s   @r   r&   r&      s‚   ø€ € € € € ðð ð
 Œj˜"œ* b¤m°R´\ÐB€Fð0ð 0ð 0ð 0ð 0ð
 2<ð 2ð 2ð 2ð 2ð
,ð ,ð ,ð ,ð ,ð ,ð ,r   r&   c                   ó*   — e Zd Zd„ Zed„ ¦   «         ZdS )Ú
TestPoly1Dc                 ó>   — |dz   }|                       |||¦  «         d S )Nz+() argument must not cause a domain change.r:   )r,   Únamer3   r4   r5   s        r   Úassert_no_domain_changez"TestPoly1D.assert_no_domain_change8   s+   € ØÐBÑBˆØ×Ò˜%  sÑ+Ô+Ð+Ð+Ð+r   c           
      óZ  ‡ ‡‡	—  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 ]%\  }}|                     |¦  «        } ||¦  «         Œ&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 ]%\  }}|                     |¦  «        } ||¦  «         Œ&‰                      ‰t          j        d¦  «                             dd¦  «        f¦  «         t          j        g d¢¦  «        }‰                      d‰|f¦  «          ‰|                     t          j        ¦  «        ¦  «         d S )NT)Únopythonc                 óP  •— t          | fi |¤Ž} ‰| fi |¤Ž}| j        ‰j        v rt          j        | j        ¦  «        j        }n‰}t          j                             ||d|z  d|z  ¬¦  «         ‰                     ¦   «         5   ‰| fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Né
   éd   )ÚrtolÚatol)	r   ÚdtyperD   r   ÚfinfoÚ
resolutionÚtestingÚassert_allcloseÚassertNoNRTLeak)ÚaÚkwargsÚexpectedÚgotrU   r3   Údefault_resolutionr,   s        €€€r   Úcheckz$TestPoly1D.test_roots.<locals>.checkC   s!  ø€ Ý Ð,Ð, VÐ,Ð,ˆHØ�%˜Ð$Ð$˜VÐ$Ð$ˆCð Œw˜$œ+Ð%Ð%ÝœX a¤gÑ.Ô.Ô9�
�
ð 0�
åŒJ×&Ò&ØØØ˜*‘_Ø˜:Ñ%ð	 'ñ ô ð ð ×%Ò%Ñ'Ô'ð #ð #Ø��aÐ"Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   Â
BÂBÂ"Bé   )r_   é   é   )r   r   r   )r_   é   é   rb   )r   r   r   r_   r`   ra   )r_   r_   r   r   r   )r   r   r_   r   r   r   ù      ð?      ð?)r_   y      @      ð?ra   )r   y                r   )r_   y      @      ð?rc   rb   )r   r   r   rd   r`   ra   )rd   r_   r   r   r   )r   r   rd   r   r   r   ra   g      @)g      @ç       @g        ç      ð?Úeigvals)r   r   r   rT   r@   rU   Úarrayr   Úint32Úint64ÚlistrD   Úastyper;   ÚarangeÚreshaperK   rB   )
r,   r^   Ú	r_vectorsÚvrS   rY   Ú	c_vectorsÚxr3   r]   s
   `       @@r   Ú
test_rootszTestPoly1D.test_roots<   sŠ  øøø€ ð #•˜TÐ"Ñ"Ô"¥8Ñ,Ô,ˆåœX¥b¤jÑ1Ô1Ô<Ðð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#õ: ŒH�a�S‰MŒMÝŒH�Y�Y�YÑÔÝŒH�Y�Y�YÑÔÝŒH�]�]�]Ñ#Ô#ÝŒHÐ'Ð'Ð'Ñ(Ô(ÝŒH�_�_�_Ñ%Ô%ÝŒHÐ'Ð'Ð'Ñ(Ô(ð
ˆ	õ ˜	¥B¤H­b¬hÐ#7½$¸t¼{Ñ:KÔ:KÑ#KÑLÔLð	ð 	‰HˆAˆuà—’˜‘”ˆAØˆE�!‰HŒHˆHˆHõ ŒH�f�XÑÔÝŒH�^�^�^Ñ$Ô$ÝŒH�^�^�^Ñ$Ô$ÝŒHÐ'Ð'Ð'Ñ(Ô(ÝŒHÐ,Ð,Ð,Ñ-Ô-ÝŒHÐ)Ð)Ð)Ñ*Ô*ÝŒHÐ,Ð,Ð,Ñ-Ô-ð
ˆ	õ   	¨4¬;°q°r°r¬?Ñ;Ô;ð 	ð 	‰HˆAˆuØ—’˜‘”ˆAØˆE�!‰HŒHˆHˆHð 	×Ò˜U¥R¤Y¨r¡]¤]×%:Ò%:¸1¸aÑ%@Ô%@Ð$BÑCÔCÐCõ ŒHÐ%Ð%Ð%Ñ&Ô&ˆØ×$Ò$ Y°¸°tÑ<Ô<Ð<àˆˆa�hŠh•r”}Ñ%Ô%Ñ&Ô&Ð&Ð&Ð&r   N)r<   r=   r>   rK   r
   rs   © r   r   rH   rH   6   sC   € € € € € ð,ð ,ð ,ð ðH'ð H'ñ „\ðH'ð H'ð H'r   rH   c                   óL   — e 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S )ÚTestPolynomialc                 ó¬   — t           }t          t           ¦  «        }d„ } |¦   «         D ]*}|                       ||¦  «         ||¦  «        ¦  «         Œ+d S )Nc               3   ój   K  — t          d¦  «        D ] } t          j        dgdg| z  z   ¦  «        V — Œ!d S )Né   r_   r   ©Úranger   rh   )Úis    r   Úinputsz1TestPolynomial.test_trimseq_basic.<locals>.inputsŒ   sJ   è è € Ý˜1‘X”Xð ,ð ,�Ý”h ˜s a S¨¡U™{Ñ+Ô+Ð+Ð+Ð+Ð+ð,ð ,r   )r#   r   ÚassertPreciseEqual)r,   Úpyfuncr3   r}   Úcoefss        r   Útest_trimseq_basicz!TestPolynomial.test_trimseq_basic‰   so   € ÝˆÝ•W‘”ˆð	,ð 	,ð 	,ð �V‘X”Xð 	Að 	AˆEØ×#Ò# F F¨5¡M¤M°5°5¸±<´<Ñ@Ô@Ð@Ð@ð	Að 	Ar   c                 ó   — t          t          ¦  «        }|                      ¦   «          |                      t          ¦  «        5 } |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t          j	        d¦  «         
                    dd¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )	NÚabcz%The argument "seq" must be array-likerO   ry   ra   úCoefficient array is not 1-d)r_   ra   r`   r   z6Unsupported type UniTuple(int64, 4) for argument "seq")r   r#   Údisable_leak_checkr/   r   r0   r1   r2   r   rm   rn   )r,   r3   r7   Úes       r   Útest_trimseq_exceptionz%TestPolynomial.test_trimseq_exception”   s  € Ý•W‘”ˆà×ÒÑ!Ô!Ð!à×Ò�{Ñ+Ô+ð 	¨vØˆE�%‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠÐ=Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð ×Ò�{Ñ+Ô+ð 	/¨qØˆE•"”)˜B‘-”-×'Ò'¨¨1Ñ-Ô-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/à�ŠÐ4Ý˜!œ+Ñ&Ô&ñ	(ô 	(ð 	(ð ×Ò�{Ñ+Ô+ð 	 ¨qØˆE�,ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 à�ŠÐNÝ˜!œ+Ñ&Ô&ñ	(ô 	(ð 	(ð 	(ð 	(s6   ÁAÁAÁ"AÂ(2C&Ã&C*Ã-C*Ä3EÅEÅEFc                 ó¢   — t          |¦  «        }d„ } |¦   «         D ]1\  }}|                       |||¦  «         |||¦  «        |¬¦  «         Œ2d S )Nc               3   óF  K  — t          d¦  «        D ]R} t          d¦  «        D ]@}t          j        dg| z  dgz   ¦  «        }t          j        dg|z  dgz   ¦  «        }||fV — ŒAŒSg d¢g d¢fV — g d¢dfV — dg d¢fV — g d¢dfV — dV — t          j        g d¢¦  «        t          j        g d¢¦  «        fV — t          j        g d¢¦  «        t          j        g d¢¦  «        fV — t          j        g d¢¦  «        t          j        g d¢¦  «        fV — d	V — d
V — dV — d S )Nry   r   r_   ©r_   ra   r`   r`   )r`   rŠ   )rf   re   ç      @)y              ð?y               @ù              @)rŠ   r‹   )rŠ   rŒ   ))r_   gü©ñÒMbP?r`   rŠ   rz   )r|   ÚjÚp1Úp2s       r   r}   z5TestPolynomial._test_polyarithm_basic.<locals>.inputs«   s�  è è € å˜1‘X”Xð !ð !�Ý˜q™œð !ð !�AÝœ 1 # a¡%¨1¨#¡+Ñ.Ô.�BÝœ 1 # a¡%¨1¨#¡+Ñ.Ô.�BØ˜b˜&�L�L�L�Lð!ð
 �)�)˜Y˜Y˜YÐ&Ð&Ð&Ð&Ø�)�)˜YÐ&Ð&Ð&Ð&Ø˜Y˜Y˜YÐ&Ð&Ð&Ð&Ø�)�)˜Q�,ÐÐÐØÐÐÐå”(˜9˜9˜9Ñ%Ô%¥r¤x°°°Ñ'@Ô'@Ð@Ð@Ð@Ð@Ý”(˜<˜<˜<Ñ(Ô(­"¬(°?°?°?Ñ*CÔ*CÐCÐCÐCÐCÝ”(˜9˜9˜9Ñ%Ô%¥r¤x°°°Ñ'=Ô'=Ð=Ð=Ð=Ð=Ø Ð Ð Ð ØÐÐÐØ)Ð)Ð)Ð)Ð)Ð)r   ©Úignore_sign_on_zero)r   r~   )r,   r   r‘   r3   r}   rŽ   r�   s          r   Ú_test_polyarithm_basicz%TestPolynomial._test_polyarithm_basic¨   s†   € å�V‘”ˆð	*ð 	*ð 	*ð* �f‘h”hð 	Oð 	O‰FˆB�Ø×#Ò# F F¨2¨b¡M¤M°5°5¸¸B±<´<Ø:Mð $ñ Oô Oð Oð Oð	Oð 	Or   c                 ó´  — t          |¦  «        }|                      ¦   «          |                      t          ¦  «        5 } |dt	          j        g d¢¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t	          j        g d¢¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t	          j	        d¦  «         
                    dd¦  «        t	          j        g d¢¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t	          j        g d¢¦  «        t	          j	        d¦  «         
                    dd¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )	Nrƒ   rŠ   z$The argument "c1" must be array-likez$The argument "c2" must be array-likerO   ry   ra   r„   )r   r…   r/   r   r   rh   r0   r1   r2   rm   rn   )r,   r   r3   r7   r†   s        r   Ú_test_polyarithm_exceptionz)TestPolynomial._test_polyarithm_exceptionÄ   s1  € å�V‘”ˆà×ÒÑ!Ô!Ð!à×Ò�{Ñ+Ô+ð 	,¨vØˆE�%�œ ' ' 'Ñ*Ô*Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à�ŠÐ<Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð ×Ò�{Ñ+Ô+ð 	,¨vØˆE•"”(˜7˜7˜7Ñ#Ô# UÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à�ŠÐ<Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð ×Ò�{Ñ+Ô+ð 	D¨qØˆE•"”)˜B‘-”-×'Ò'¨¨1Ñ-Ô-­r¬x¸	¸	¸	Ñ/BÔ/BÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dà�ŠÐ4Ý˜!œ+Ñ&Ô&ñ	(ô 	(ð 	(ð ×Ò�{Ñ+Ô+ð 	D¨qØˆE•"”(˜9˜9˜9Ñ%Ô%¥r¤y°¡}¤}×'<Ò'<¸QÀÑ'BÔ'BÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dà�ŠÐ4Ý˜!œ+Ñ&Ô&ñ	(ô 	(ð 	(ð 	(ð 	(sI   ¾!A+Á+A/Á2A/Â8!C%Ã%C)Ã,C)Ä2AFÆF	ÆF	ÇAH%È%H)È,H)c                 ó:   — |                       t          ¦  «         d S r   )r’   r   ©r,   s    r   Útest_polyadd_basicz!TestPolynomial.test_polyadd_basicÞ   ó   € Ø×#Ò#¥GÑ,Ô,Ð,Ð,Ð,r   c                 ó:   — |                       t          ¦  «         d S r   )r”   r   r–   s    r   Útest_polyadd_exceptionz%TestPolynomial.test_polyadd_exceptioná   ó   € Ø×'Ò'­Ñ0Ô0Ð0Ð0Ð0r   c                 ó>   — |                       t          d¬¦  «         d S )NTr�   )r’   r   r–   s    r   Útest_polysub_basicz!TestPolynomial.test_polysub_basicä   s!   € Ø×#Ò#¥GÀÐ#ÑFÔFÐFÐFÐFr   c                 ó:   — |                       t          ¦  «         d S r   )r”   r   r–   s    r   Útest_polysub_exceptionz%TestPolynomial.test_polysub_exceptionç   r›   r   c                 ó:   — |                       t          ¦  «         d S r   )r’   r    r–   s    r   Útest_polymul_basicz!TestPolynomial.test_polymul_basicê   r˜   r   c                 ó:   — |                       t          ¦  «         d S r   )r”   r    r–   s    r   Útest_polymul_exceptionz%TestPolynomial.test_polymul_exceptioní   r›   r   N)F)r<   r=   r>   r�   r‡   r’   r”   r—   rš   r�   rŸ   r¡   r£   rt   r   r   rv   rv   ‡   s¹   € € € € € ðAð Að Að(ð (ð (ð(Oð Oð Oð Oð8(ð (ð (ð4-ð -ð -ð1ð 1ð 1ðGð Gð Gð1ð 1ð 1ð-ð -ð -ð1ð 1ð 1ð 1ð 1r   rv   )r(   Ú	itertoolsr   Únumpyr   Únumpy.polynomialr   r   r   r"   Únumbar   r   Únumba.tests.supportr   r	   r
   r   r   Únumba.core.errorsr   Úunittestr   r   r   r    r#   r&   rH   rv   rt   r   r   ú<module>r«      sÃ  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ð Ð Ð Ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gà )Ð )Ð )Ð )Ð )Ð )Ø €€€ðð ð ðð ð ðð ð ðð ð ðð ð ð,ð ,ð ,ð ,ð ,Ð,¨hñ ,ô ,ð ,ð.O'ð O'ð O'ð O'ð O'Ð#ñ O'ô O'ð O'ðbg1ð g1ð g1ð g1ð g1�_ hñ g1ô g1ð g1ð g1ð g1r   