o
    V=ºi²-  ã                   @   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	¡de
dd	f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  g d¢¡}tt|ƒdƒ tt|ƒdƒ t  g d¢¡}tt|ƒdƒ tt|ƒdƒ t  g d¢¡}tt|ƒdƒ ttt  g d	¢¡ƒd
ƒ d S )N©ç      ð?é   é   zpoly1d([1., 2., 3.])z   2
1 x + 2 x + 3©ç      @r   é   zpoly1d([3., 2., 1.])ú   2
3 x + 2 x + 1)yõ¡ê[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   úeC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/lib/tests/test_polynomial.pyÚtest_poly1d_str_and_repr   s"   ÿÿÿÿz'TestPolynomial.test_poly1d_str_and_reprc                 C   sX   t  g d¢¡}t  g d¢¡}t|dƒdƒ t|dƒdƒ t|dƒdƒ t|dƒdƒ d S )	Nr   r   r   r   é   g      C@r   g     €U@©r   r   r   ©r   r   r   r   r   r   Útest_poly1d_resolution%   s   z%TestPolynomial.test_poly1d_resolutionc                 C   sŽ  t  g d¢¡}t  g d¢¡}t|| t  dg¡t  ddg¡fƒ t| ¡ t  g d¢¡ƒ t| d¡t  g d¢¡ƒ t  g d¢¡}t  g d	¢¡}t|| t  g d
¢¡ƒ t|| t  g d¢¡ƒ t|| t  g d¢¡ƒ t|d t  g d¢¡ƒ t||ƒt  g d¢¡ƒ t||ƒt  g d¢¡ƒ t| ¡ t  ddg¡ƒ t| d¡t  dg¡ƒ tt  t  g d¢¡t  ddg¡¡t  ddg¡t  dg¡fƒ d S )N)r   r   é   )ç      @r   r   ç      Ð?g      ø?g      @)gUUUUUUÕ?r   r&   ç        r   r   r   )r   ç       @g      ,@r)   r   )r&   r&   r&   )g       Àr(   ç       @r%   )	r   r)   g      B@g      Z@g     Àj@g     €s@g     @t@g      k@g     @T@)g      "@ç      (@g      0@r)   g      @)r   r+   g      @@g      D@g      A@r*   r   )r   r   r   r   g      ð¿r(   )r   r   r   ÚintegÚderivÚpolydivr#   r   r   r   Útest_poly1d_math-   s$   $ ÿzTestPolynomial.test_poly1d_mathÚ	type_codeÚreturnNc           	      C   s´   t  |¡}t jg d¢|d�}t  |¡}tt  |¡|ƒ tt  |¡j|ƒ tt|ƒdƒ ddddddœ}| ¡ D ] \}}|| }t||ƒ |t jkrQt	|t
ƒsPJ ‚q7t|j|ƒ q7d S )N©r   r   r   )Údtyper   r   r   r   )r   r   r   r   r   )r   r3   Úarrayr   r   ZasarrayÚlenÚitemsÚobject_Ú
isinstanceÚint)	r   r0   r3   Úarr   Zcomparison_dctÚindexÚrefZscalarr   r   r   Útest_poly1d_miscB   s   



úzTestPolynomial.test_poly1d_miscc                 C   sD   t jg d¢dd�}tt|ƒdƒ t jg d¢dd�}tt|ƒdƒ d S )Nr   Ú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   sb  t t dt d¡ t d¡g¡g d¢ƒ g d¢g d¢g d¢g}t t |¡g d¢ƒ tt t g d¢¡¡ƒ tt t g d	¢¡¡ƒ tt t g d
¢¡¡ƒ tt t g d¢¡¡ƒ tt t g d¢¡¡ƒ 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   é   r2   )r%   r!   rC   )é   é   r   )r   iúÿÿÿi¸ÿÿÿiåÿÿÿ)y        Zd;ßOñ?y        �•C‹lç@y       €�•C‹lçÀy       €Zd;ßOñ¿)ù              ð?y              ð¿ù      ð?       @ù      ð?       Ày      ð?      @y      ð?      À)rF   ù       €      ð¿rG   rH   y      ð?      @y      ð?      À)rF   rI   rG   rH   )rF   rI   ù               @y       €       ÀrF   rI   r   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 g d¢¡ddgƒ d S )N)r   r   r   r   )r   r   Úroots©r   r   r   r   Ú
test_rootsy   s   zTestPolynomial.test_rootsc                 C   sT   t  g d¢¡}d|d< tt|ƒdƒ t  ddg¡}d|d< d|d< tt|ƒdƒ d S )N)r%   r   r   r   r   r   r   r   r   z 
0rA   ©r   r   r   r   r   Útest_str_leading_zeros|   s   ÿz%TestPolynomial.test_str_leading_zerosc                 C   sÔ  t  g d¢¡}t  ddd¡}t  ||¡}g d¢}t  ddd¡d d	 }ttt jdgdgdd
d� t j||| dd
d�\}}g d¢}t||dd� g d¢g d¢g d¢g}	t|	|dd� t j||| d|d
d�\}
}tg d¢|
dd� g d¢g d¢g d¢g}t||dd� t j||| d|dd�\}}tg d¢|dd� g d¢g d¢g d¢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!d"� tt  | ¡ ¡d d!d"� t jt  |jd ¡|t  |jd ¡ddd#�\}}t| ¡ d d!d"� tt  | ¡ ¡d ƒ t  |jd d$¡}t jt  |jd ¡||dd
d#�\}}t| ¡ d d!d"� tt  | ¡ ¡d d!d"� t jt  |jd ¡||ddd#�\}}t| ¡ d d!d"� tt  | ¡ ¡d%ƒ d S )&N)r   r*   r   r   r   rD   )r   r   r   r   r   r   r   rE   r   r   g      @T)ÚdegÚcov)r\   )gz6«>WÛ@g›æ§èHÒ?g�•C‹lçù?r%   )Údecimal)gßà“©‚÷?çßà“©‚Àç�1w-!ê?)r^   g€H¿}x@çB>èÙ¬ú À)r_   r`   gú~j¼t“ò?)Úwr\   )gŠŽäò’@g*:’ËHð¿gY†8ÖÅmü?)g ‰°áé•@ç¾Á&SÀç€H¿}8ß?)rb   g™»–�:@çh³êsµí¿)rc   rd   gz6«>W[Õ?Zunscaled)gÐ³Yõ¹ÚÂ?ç�Å�1wÅ¿çÅþ²{ò°�?)re   gÉv¾Ÿ/Í?çÅ�1w-!Ÿ¿)rf   rg   gÇº¸�ð†?)Zaxisé{   )r%   i'  )Úsizeg      à?g{®Gáz„?)Zatol)ra   r[   r\   r*   r'   )r   r4   ZlinspaceZpolyvalÚaranger   Ú
ValueErrorZpolyfitr   ZnewaxisrQ   rO   rP   ÚnormalÚzerosÚshaper   ZstdrN   ÚmeanZonesÚfull)r   ÚcÚxr>   ÚerrÚweightsÚmr\   ZestZval0Úm2Zcov2ÚvalZm3Zcov3ÚyyÚccro   ra   r   r   r   Útest_polyfitˆ   st   ÿþþþ.  ""
ÿ$$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   )r]   r{   r   r   r   r-   r,   Z
issubdtypeÚcoeffsr3   r7   rM   r   )r   r{   r   Úp2r   r   r   Útest_objectsÒ   s   ÿzTestPolynomial.test_objectsc                 C   sN   t  g d¢¡}| ¡ }t|jg d¢k ¡ ƒ | ¡ }t|jddgk ¡ ƒ d S )N)y              @rJ   rF   )rF   rF   rF   r   y              @rJ   )r   r   r,   r   r|   Úallr-   ©r   r   r}   r   r   r   Útest_complexá   s
   zTestPolynomial.test_complexc                 C   s:   t  g d¢¡}|jdg d¢d�}t|jg d¢k ¡ ƒ d S )N)r   r   r   r   )é	   rD   rC   )Úk)gš™™™™™©?gUUUUUUµ?gUUUUUUÅ?g      @rD   rC   )r   r   r,   r   r|   r   r€   r   r   r   Útest_integ_coeffsè   s
   ÿz TestPolynomial.test_integ_coeffsc                 C   s,   zt  t  d¡¡ W d S  ty   Y d S w )N)r   r   )r   rM   rm   rk   rW   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   rj   r   rM   Zdiag)r   Úvr   r   r   Útest_poly_int_overflowô   s    z%TestPolynomial.test_poly_int_overflowc                 C   sx   t  g d¢¡}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   r   r   N)
r   r4   r   ZastypeZint64r   r|   r3   Zfloat32Z	complex64)r   Úzr   r   r   r   Útest_zero_poly_dtypeû   s   z#TestPolynomial.test_zero_poly_dtypec                 C   sf   t  g d¢¡}t  g d¢¡}t|d kdƒ t|d kdƒ t||kdƒ t||kdƒ t||kdƒ d S )Nr2   )r   r   r%   FTr"   r€   r   r   r   Útest_poly_eq	  s   zTestPolynomial.test_poly_eqc                 C   sØ   t  g d¢¡}t  g d¢¡}t  ||¡\}}t|jjt jƒ t|jjt jƒ t|| | |ƒ g d¢}t  g d¢¡}t  ||¡\}}t|t jƒsJJ ‚t|t jƒsRJ ‚t  ||¡\}	}
t|	t jƒsbJ ‚t|
t jƒsjJ ‚d S )N)r   rC   rC   r   )rI   rG   y       À      ð¿r   r2   )r   r   r.   r   r|   r3   Z
complex128r8   )r   ÚbrT   r   r   rq   ÚdÚsÚtÚur‡   r   r   r   Útest_polydiv  s   zTestPolynomial.test_polydivc                 C   sh   t  g d¢¡}| jd7  _t|jg d¢ƒ |jd  d7  < t|jg d¢ƒ ttt|dt  d¡ƒ dS )	z# Coefficients should be modifiable r2   r   )r   r   r%   r   é
   )r   r   é   r|   N)r   r   r|   r   r   ÚAttributeErrorÚsetattrr4   rY   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   r=   rB   rU   rX   rZ   rz   r~   r�   r„   r…   rˆ   rŠ   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
    $