U
    O8c,                     @   s^   d dl Zd dlmZmZmZmZmZmZm	Z	 d dl
Z
ejd ejd  d ZG dd dZdS )    N)assert_assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_raisesassert_allcloseZ
AllIntegerZAllFloatOc                   @   s   e Zd Zdd Zdd Zdd Zejde	e
dd	d
dZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZdS )(TestPolynomialc                 C   s   t dddg}tt|d tt|d t dddg}tt|d tt|d	 t d
dddg}tt|d ttt dddgd d S )N      ?      zpoly1d([1., 2., 3.])z   2
1 x + 2 x + 3      @   zpoly1d([3., 2., 1.])   2
3 x + 2 x + 1y[f?       @y             g"GBtk~y       @      ?z=            3      2
(1.9 + 2j) x - 3j x - 5.123 x + (2 + 1j)z    2
-3 x - 2 x - 1)nppoly1dr   reprstr)selfpqr r   C/tmp/pip-unpacked-wheel-fd_gsd75/numpy/lib/tests/test_polynomial.pytest_poly1d_str_and_repr   s"    z'TestPolynomial.test_poly1d_str_and_reprc                 C   s\   t dddg}t dddg}t|dd t|dd t|dd t|dd	 d S )
Nr   r   r   r   r   r      g      C@g     U@r   r   r   r   r   r   r   r   r   test_poly1d_resolution%   s    z%TestPolynomial.test_poly1d_resolutionc                 C   s  t dddg}t dddg}t|| t dgt ddgf t| t d	ddd
g t|dt d	ddd
g t dddg}t dddg}t|| t dddddg t|| t dddg t|| t dd
dg t|d t dddddddddg	 t||t dddddg t||t dddddg t| t ddg t|dt dg tt t ddd gt ddgt dd!gt d
gf d S )"Nr   r      g      @r         ?g      ?g      @gUUUUUU?g        r   r   g       @g      ,@g              @g      B@g      Z@g     j@g     s@g     @t@g      k@g     @T@g      "@g      (@g      0@g      @g      @@g      D@g      A@r   r   g      )r   r   r   integderivpolydivr!   r   r   r   test_poly1d_math-   s$    $&"zTestPolynomial.test_poly1d_math	type_codeN)r*   returnc           	      C   s   t |}t jdddg|d}t |}tt || tt |j| tt|d dddddd}| D ]@\}}|| }t|| |t jkrt	|t
stqpt|j| qpd S )Nr   r   r   )dtyper   )r   r   r   r   r   )r   r,   arrayr   r   Zasarraylenitemsobject_
isinstanceintAssertionError)	r   r*   r,   arr   Zcomparison_dctindexrefZscalarr   r   r   test_poly1d_miscB   s    



zTestPolynomial.test_poly1d_miscc                 C   sH   t jdddgdd}tt|d t jdddgdd}tt|d d S )	Nr   r   r   y)variablez   2
1 y + 2 y + 3lambdaz!        2
1 lambda + 2 lambda + 3r   r   r   r   )r   r   r   r   r   test_poly1d_variable_argW   s    z'TestPolynomial.test_poly1d_variable_argc                 C   s  t tdtd tdgddddg dddgdddgd	d
dgg}t t|ddddg tttddddg tttddddddg tttddddddg tttddddg tttddddg tttddg tttddg tttddg tjd  tj	d!dtj	d!  }tttt
|t|f d S )"Nr   r   r   r   r      r#   r         r   iiiy        Zd;O?y        Cl@y       Cly       Zd;O              ?y                    ?       @y      ?       y      ?      @y      ?                   y      ?      @y      ?                     @y              r   y         *   d   )r   r   polysqrtr   Z	isrealobjZiscomplexobjrandomseedZrandnconcatenate	conjugate)r   Aar   r   r   	test_polya   s(    
  
 zTestPolynomial.test_polyc                 C   s   t tdddgddg d S )Nr   r   )r   r   rootsr   r   r   r   
test_rootsy   s    zTestPolynomial.test_rootsc                 C   sX   t ddddg}d|d< tt|d t ddg}d|d< d|d< tt|d d S )Nr#   r   r   r   r   r   z 
0r;   r   r   r   r   r   test_str_leading_zeros|   s    z%TestPolynomial.test_str_leading_zerosc                 C   s  t dddg}t ddd}t ||}dddddddg}t d	ddd d
 }ttt jdgdgddd t j||| ddd\}}dddg}t||dd dddgdddgdddgg}	t|	|dd t j||| d|dd\}
}tdddg|
dd dddgdd d!gdd!d"gg}t||dd t j||| d|d#d\}}tdddg|dd d$d%d&gd%d'd(gd&d(d)gg}t||dd |d d t j	f }|d d t j	f }t|t ||d t j
||fdd*}t j
||fdd*}t|t ||d t j||t |d d t j	f  ddd\}}t||d d df dd t||d d df dd t|	|d d d d df dd t|	|d d d d df dd t jd+ t jjd,d-}t jt |jd |ddd\}}t| d.d/d0 tt | d.d/d0 t jt |jd |t |jd dd#d1\}}t| d.d/d0 tt | d. t |jd d}t jt |jd ||ddd1\}}t| d.d/d0 tt | d.d/d0 t jt |jd ||dd#d1\}}t| d.d/d0 tt | d2 d S )3Nr   r%   r   r   r   r>   r   r   r?   g      @T)degcov)rU   gz6>W@gH?gCl?r#   )decimalg?gg1w-!?gH}x@gB>٬ g~jt?)wrU   g@g*:HgY8m?g@g&SgH}8?g:@ghsgz6>W[?ZunscaledgгY?gŏ1wſg{?gv/?gŏ1w-!gǺ?)Zaxis{   )r#   i'  )sizeg      ?g{Gz?)Zatol)rW   rT   rU   r$   )r   r-   ZlinspaceZpolyvalaranger   
ValueErrorZpolyfitr   ZnewaxisrJ   rH   rI   normalzerosshaper   ZstdrG   meanZonesfull)r   cxr8   errweightsmrU   ZestZval0m2Zcov2valZm3Zcov3yyccr_   rW   r   r   r   test_polyfit   s|       
.  "" 
$$zTestPolynomial.test_polyfitc                 C   s   ddl m} t|d|d|dg}||d }t|d |dk | }t|d |d	k | }t|d
 |dk t|d |dk tt|jj	tj
 t|d|dg}tt|d|dgd|d|dg d S )Nr   )Decimalz4.0z3.0z2.0z1.333333333333333r   z3.9999999999999990z8.0r   z1.333333333333333333333333333r   z1.5r   )rV   rk   r   r   r   r'   r&   Z
issubdtypecoeffsr,   r0   rF   r   )r   rk   r   p2r   r   r   test_objects   s    zTestPolynomial.test_objectsc                 C   sT   t dddg}| }t|jddddgk  | }t|jddgk  d S )Ny              @rC   r@   r   y              @)r   r   r&   r   rl   allr'   r   r   rm   r   r   r   test_complex   s
    zTestPolynomial.test_complexc                 C   sF   t dddg}|jddddgd}t|jdd	d
dddgk  d S )Nr   r   r   	   r>   r=   )kg?gUUUUUU?gUUUUUU?g      @)r   r   r&   r   rl   ro   rp   r   r   r   test_integ_coeffs   s
    z TestPolynomial.test_integ_coeffsc                 C   s.   zt t d W n tk
r(   Y nX d S )N)r   r   )r   rF   r]   r[   rP   r   r   r   test_zero_dims   s    zTestPolynomial.test_zero_dimsc                 C   s,   t dd}tt |t t | dS )z.
        Regression test for gh-5096.
        r      N)r   rZ   r   rF   Zdiag)r   vr   r   r   test_poly_int_overflow   s    z%TestPolynomial.test_poly_int_overflowc                 C   sz   t dddg}t |t j}t|jjt j t |t j}t|jjt j t |t j	}t|jjt j	 dS )z/
        Regression test for gh-16354.
        r   N)
r   r-   r   ZastypeZint64r   rl   r,   Zfloat32Z	complex64)r   zr   r   r   r   test_zero_poly_dtype   s    z#TestPolynomial.test_zero_poly_dtypec                 C   sj   t dddg}t dddg}t|d kd t|d kd t||kd t||kd t||kd d S )Nr   r   r   r#   FTr    rp   r   r   r   test_poly_eq	  s    zTestPolynomial.test_poly_eqc                 C   s   t ddddg}t ddddg}t ||\}}t|jjt j t|jjt j t|| | | dddg}t dddg}t ||\}}t|t jstt|t jstt ||\}	}
t|	t jstt|
t jstd S )Nr   r=   r   rB   rA   y             r   )	r   r   r(   r   rl   r,   Z
complex128r1   r3   )r   brM   r   r   ra   dsturw   r   r   r   test_polydiv  s    
zTestPolynomial.test_polydivc                 C   sn   t dddg}| jd7  _t|jdddg |jd  d7  < t|jdddg ttt|dt d dS )	z# Coefficients should be modifiable r   r   r   r#   
      rl   N)r   r   rl   r   r   AttributeErrorsetattrr-   rR   r   r   r   test_poly_coeffs_mutable#  s    z'TestPolynomial.test_poly_coeffs_mutable)__name__
__module____qualname__r   r"   r)   pytestmarkZparametrize
TYPE_CODESr   r7   r<   rN   rQ   rS   rj   rn   rq   rt   ru   rx   rz   r{   r   r   r   r   r   r   r
      s&   
J	r
   )Znumpyr   Znumpy.testingr   r   r   r   r   r   r   r   Z	typecodesr   r
   r   r   r   r   <module>   s   $