U
    ¸mœdƒ,  ã                   @   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   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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r¤t	|t
ƒs°t‚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   iúÿÿÿi¸ÿÿÿiåÿÿÿy        Zd;ßOñ?y        �•C‹lç@y       €�•C‹lçÀ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Ò?g�•C‹lçù?r#   )Údecimalgßà“©‚÷?gßà“©‚Àg�1w-!ê?g€H¿}x@gB>èÙ¬ú Àgú~j¼t“ò?)ÚwrU   gŠŽäò’@g*:’ËHð¿gY†8ÖÅmü?g ‰°áé•@g¾Á&SÀg€H¿}8ß?g™»–�:@gh³êsµí¿gz6«>W[Õ?ZunscaledgÐ³Yõ¹ÚÂ?g�Å�1wÅ¿gÅþ²{ò°�?gÉv¾Ÿ/Í?gÅ�1w-!Ÿ¿gÇº¸�ð†?)Zaxisé{   )r#   i'  )Úsizeg      à?g{®Gáz„?)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ƒs t‚t|t jƒs°t‚t  ||¡\}	}
t|	t jƒsÐt‚t|
t jƒsàt‚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
   )Únumpyr   Znumpy.testingr   r   r   r   r   r   r   rŠ   Ú	typecodesrŒ   r
   r   r   r   r   Ú<module>   s   $