a
    þ
þd  ã                   @   sv   d dl Z d dlmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlZdd„ ZG dd„ deeƒZG d	d
„ d
eƒZdS )é    N)Úproduct)Újit)ÚTestCaseÚtagÚneeds_lapackÚEnableNRTStatsMixinc                 C   s
   t  | ¡S ©N)ÚnpÚroots)Úp© r   úd/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_polynomial.pyÚroots_fn   s    r   c                       sH   e Zd ZdZejejejejfZ	‡ fdd„Z
efdd„Zdd„ Z‡  ZS )ÚTestPolynomialBasezV
    Provides setUp and common data/error modes for testing polynomial functions.
    c                    s   t  ¡  tt| ƒ ¡  d S r   )ÚgcZcollectÚsuperr   ÚsetUp)Úself©Ú	__class__r   r   r      s    zTestPolynomialBase.setUpc                 C   sH   |   |¡}||Ž  W d   ƒ n1 s(0    Y  |  |t|jƒ¡ d S r   )ÚassertRaisesZassertInÚstrÚ	exception)r   ÚcfuncÚargsÚmsgÚerrZraisesr   r   r   Úassert_error   s    &zTestPolynomialBase.assert_errorc                 C   s   d}|   |||¡ d S )NzInput must be a 1d array.©r   )r   r   r   r   r   r   r   Úassert_1d_input!   s    z"TestPolynomialBase.assert_1d_input)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Úfloat64Úfloat32Ú
complex128Z	complex64Údtypesr   Ú
ValueErrorr   r   Ú__classcell__r   r   r   r   r      s
   r   c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )Ú
TestPoly1Dc                 C   s   |d }|   |||¡ d S )Nz+() argument must not cause a domain change.r   )r   Únamer   r   r   r   r   r   Úassert_no_domain_change(   s    z"TestPoly1D.assert_no_domain_changec              
      s  t ddtƒ‰ t tj¡j‰‡ ‡‡fdd„}t dg¡t g d¢¡t g d¢¡t g d¢¡t g d	¢¡t g d
¢¡t g d¢¡f}t|tjtj	gt
ˆjƒ ƒD ]\}}| |¡}||ƒ qžt dg¡t g d¢¡t g d¢¡t g d¢¡t g d¢¡t g d¢¡t g d¢¡f}t|ˆjdd … ƒD ]\}}| |¡}||ƒ q$ˆ ˆ t d¡ dd¡f¡ t g d¢¡}ˆ dˆ |f¡ ˆ | tj¡ƒ d S )NT)Znopythonc                    s˜   t | fi |¤Ž}ˆ | fi |¤Ž}| jˆjv r<t | j¡j}nˆ}tjj||d| d| d ˆ ¡   ˆ | fi |¤Ž W d   ƒ n1 sŠ0    Y  d S )Né
   éd   )ZrtolZatol)	r   Údtyper'   r	   ÚfinfoÚ
resolutionZtestingZassert_allcloseZassertNoNRTLeak)ÚaÚkwargsÚexpectedÚgotr1   ©r   Zdefault_resolutionr   r   r   Úcheck3   s    ü
z$TestPoly1D.test_roots.<locals>.checké   )r8   é   é   )r   r   r   )r8   é   é   r;   )r   r   r   r8   r9   r:   )r8   r8   r   r   r   )r   r   r8   r   r   r   ù      ð?      ð?)r8   y      @      ð?r:   )r   y                r   )r8   y      @      ð?r<   r;   )r   r   r   r=   r9   r:   )r=   r8   r   r   r   )r   r   r=   r   r   r   r:   g      @)g      @g       @g        g      ð?Zeigvals)r   r   r	   r0   r$   r1   Úarrayr   Úint32Úint64Úlistr'   Zastyper   ZarangeZreshaper,   r&   )r   r7   Z	r_vectorsÚvr/   r2   Z	c_vectorsÚxr   r6   r   Ú
test_roots,   s<    
ùÿ



ù
zTestPoly1D.test_rootsN)r    r!   r"   r,   r   rD   r   r   r   r   r*   &   s   r*   )r   Ú	itertoolsr   Únumpyr	   Znumbar   Znumba.tests.supportr   r   r   r   Zunittestr   r   r*   r   r   r   r   Ú<module>   s   