o
    Ô­jƒ,  ã                   @   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_allcloseÚ
AllIntegerÚ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    ú\/var/www/html/CropPilot/venv/lib/python3.10/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   r5   Úarrayr   r   ÚasarrayÚlenÚitemsÚobject_Ú
isinstanceÚint)	r   r2   r5   Úarr   Úcomparison_dctÚindexÚrefÚ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   é   r4   )r'   r#   rH   )é   é   r   )r   iúÿÿÿi¸ÿÿÿiåÿÿÿ)y        Zd;ßOñ?y        �•C‹lç@y       €�•C‹lçÀy       €Zd;ßOñ¿)ù              ð?y              ð¿ù      ð?       @ù      ð?       Ày      ð?      @y      ð?      À)rK   ù       €      ð¿rL   rM   y      ð?      @y      ð?      À)rK   rN   rL   rM   )rK   rN   ù               @y       €       ÀrK   rN   r   r   y       €›ò×  ð¿é*   éd   )r   r   ÚpolyÚsqrtr   Ú	isrealobjÚiscomplexobjÚrandomÚseedÚ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 
0rF   ©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   rI   )r   r   r   r   r   r   r   rJ   r   r   g      @T)ÚdegÚcov)rd   )gz6«>WÛ@g›æ§èHÒ?g�•C‹lçù?r'   )Údecimal)gßà“©‚÷?çßà“©‚Àç�1w-!ê?)rf   g€H¿}x@çB>èÙ¬ú À)rg   rh   gú~j¼t“ò?)Úwrd   )gŠŽäò’@g*:’ËHð¿gY†8ÖÅmü?)g ‰°áé•@ç¾Á&SÀç€H¿}8ß?)rj   g™»–�:@çh³êsµí¿)rk   rl   gz6«>W[Õ?Úunscaled)gÐ³Yõ¹ÚÂ?ç�Å�1wÅ¿çÅþ²{ò°�?)rn   gÉv¾Ÿ/Í?çÅ�1w-!Ÿ¿)ro   rp   gÇº¸�ð†?)Úaxisé{   )r'   i'  )Úsizeg      à?g{®Gáz„?)Úatol)ri   rc   rd   r,   r)   )r   r6   ÚlinspaceÚpolyvalÚaranger   Ú
ValueErrorÚpolyfitr   ÚnewaxisrY   rV   rW   ÚnormalÚzerosÚshaper   ÚstdrS   ÚmeanÚonesÚfull)r   ÚcÚxrC   ÚerrÚweightsÚmrd   ÚestÚval0Úm2Úcov2ÚvalÚm3Úcov3ÚyyÚccr   ri   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   )re   r‘   r   r   r   r/   r.   Ú
issubdtypeÚcoeffsr5   r:   rR   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              @rO   rK   )rK   rK   rK   r   y              @rO   )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   )é	   rI   rH   )Úk)gš™™™™™©?gUUUUUUµ?gUUUUUUÅ?g      @rI   rH   )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   rR   r|   rx   r_   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   rw   r   rR   Ú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   r6   r   ÚastypeÚint64r   r“   r5   Úfloat32Ú	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 )Nr4   )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   rH   rH   r   )rN   rL   y       À      ð¿r   r4   )r   r   r0   r   r“   r5   Ú
complex128r;   )r   Úbr\   r   r   r‚   Ú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 r4   r   )r   r   r'   r   é
   )r   r   é   r“   N)r   r   r“   r   r   ÚAttributeErrorÚsetattrr6   ra   r    r    r!   Útest_poly_coeffs_mutable#  s   z'TestPolynomial.test_poly_coeffs_mutable)Ú__name__Ú
__module__Ú__qualname__r"   r&   r1   ÚpytestÚmarkÚparametrizeÚ
TYPE_CODESr   rB   rG   r]   r`   rb   r�   r•   r˜   r›   rœ   r    r¦   r§   r®   r³   r    r    r    r!   r      s(    
J	r   )Únumpyr   Únumpy.testingr   r   r   r   r   r   r   r·   Ú	typecodesrº   r   r    r    r    r!   Ú<module>   s
    $