o
    V=ºifQ  ã                
   @   s0  d Z ddlmZ ddlZddlm  mZ ddlm	Z	m
Z
mZmZmZmZmZ dd„ ZdgZddgZg d¢Zg d	¢Zg d
¢Zg d¢Zg d¢Zg d¢Zg d¢Zg d¢Zeeeeeeeeeeg
ZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZ G dd„ dƒZ!G dd„ dƒZ"G dd„ dƒZ#dS ) zTests for polynomial module.

é    )ÚreduceN)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_Úassert_warnsÚassert_array_equalÚassert_raises_regexc                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Ztol)ÚpolyÚpolytrim©Úx© r   úlC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/polynomial/tests/test_polynomial.pyÚtrim   s   r   é   )éÿÿÿÿr   é   )r   éýÿÿÿr   é   )r   r   iøÿÿÿr   é   )r   é   r   iìÿÿÿr   é   )r   r   é   r   iÐÿÿÿr   é    )r   iùÿÿÿr   é8   r   i�ÿÿÿr   é@   )	r   r   iàÿÿÿr   é    r   i ÿÿÿr   é€   )
r   é	   r   iˆÿÿÿr   i°  r   iÀýÿÿr   é   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestConstantsc                 C   ó   t tjddgƒ d S )Nr   r   )r   r
   Z
polydomain©Úselfr   r   r   Útest_polydomain    ó   zTestConstants.test_polydomainc                 C   ó   t tjdgƒ d S )Nr   )r   r
   Zpolyzeror#   r   r   r   Útest_polyzero#   ó   zTestConstants.test_polyzeroc                 C   r'   ©Nr   )r   r
   Zpolyoner#   r   r   r   Útest_polyone&   r)   zTestConstants.test_polyonec                 C   r"   )Nr   r   )r   r
   Zpolyxr#   r   r   r   Ú
test_polyx)   r&   zTestConstants.test_polyxN)Ú__name__Ú
__module__Ú__qualname__r%   r(   r+   r,   r   r   r   r   r!      s
    r!   c                   @   ó<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestArithmeticc                 C   sž   t dƒD ]H}t dƒD ]A}d|› d|› �}t t||ƒd ¡}||  d7  < ||  d7  < t dg| dg dg| dg ¡}tt|ƒt|ƒ|d� q
qd S ©Nr   úAt i=ú, j=r   r   ©Úerr_msg)ÚrangeÚnpÚzerosÚmaxr
   Úpolyaddr   r   ©r$   ÚiÚjÚmsgÚtgtÚresr   r   r   Útest_polyadd/   ó   $úÿzTestArithmetic.test_polyaddc                 C   sž   t dƒD ]H}t dƒD ]A}d|› d|› �}t t||ƒd ¡}||  d7  < ||  d8  < t dg| dg dg| dg ¡}tt|ƒt|ƒ|d� q
qd S r2   )r7   r8   r9   r:   r
   Zpolysubr   r   r<   r   r   r   Útest_polysub9   rC   zTestArithmetic.test_polysubc                 C   sr   t t dg¡dgƒ t t dg¡ddgƒ tddƒD ]}dg| dg }dg|d  dg }t t |¡|ƒ qd S )Nr   r   r   )r   r
   Zpolymulxr7   )r$   r=   Zserr@   r   r   r   Útest_polymulxC   s   ýzTestArithmetic.test_polymulxc                 C   s�   t dƒD ]A}t dƒD ]:}d|› d|› �}t || d ¡}|||   d7  < t dg| dg dg| dg ¡}tt|ƒt|ƒ|d� q
qd S r2   )r7   r8   r9   r
   Úpolymulr   r   r<   r   r   r   Útest_polymulK   s   $ûÿzTestArithmetic.test_polymulc           
      C   sì   t ttjdgdgƒ t dgdg¡\}}t||fdƒ t ddgdg¡\}}t||fdƒ tdƒD ]B}tdƒD ];}d|› d|› �}dg| ddg }dg| ddg }t ||¡}t ||¡\}}t t ||¡|¡}	t|	||d	� q7q1d S )
Nr   r   r   )r   r   ))r   r   r   r   r3   r4   r5   )r   ÚZeroDivisionErrorr
   Zpolydivr   r7   r;   rF   )
r$   ZquoÚremr=   r>   r?   ÚciÚcjr@   rA   r   r   r   Útest_polydivT   s    ùÿzTestArithmetic.test_polydivc                 C   s|   t dƒD ]7}t dƒD ]0}d|› d|› �}t |d ¡}ttj|g| t dg¡ƒ}t ||¡}tt	|ƒt	|ƒ|d� q
qd S )Nr   r3   r4   r   r5   )
r7   r8   Úaranger   r
   rF   ÚarrayZpolypowr   r   )r$   r=   r>   r?   Úcr@   rA   r   r   r   Útest_polypowi   s   ûÿzTestArithmetic.test_polypowN)	r-   r.   r/   rB   rD   rE   rG   rL   rP   r   r   r   r   r1   -   s    

	r1   c                   @   sŒ   e Zd Ze g d¢¡Ze dee¡Ze deee¡Zej	 	d¡d d Z
e e
g d¢¡Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestEvaluation)ç      ð?g       @g      @úi,j->ijú
i,j,k->ijk©é   r   r   r   c           
         s~  t t g dg¡jdƒ t dd¡‰ ‡ fdd„tdƒD ƒ}tdƒD ]}|| }t ˆ dg| dg ¡}t||ƒ q ˆ ˆ d d  }t ˆ g d¢¡}t||ƒ td	ƒD ]/}dg| }t |¡‰ t t ˆ dg¡j	|ƒ t t ˆ ddg¡j	|ƒ t t ˆ g d
¢¡j	|ƒ qQg d¢}tj
jg d¢|d�}t g d¢|¡}t|j|ƒ G dd„ dtjƒ}t g d¢¡ |¡}	t tt g d¢|	¡ƒ|ƒ d S )Nr   r   r   c                    ó   g | ]}ˆ | ‘qS r   r   ©Ú.0r=   r   r   r   Ú
<listcomp>ƒ   ó    z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   )r   r   r   r   rV   ©r   r   r   )FTF©r   r   rV   )Úmask)é   r   rV   c                   @   s   e Zd ZdS )z&TestEvaluation.test_polyval.<locals>.CN)r-   r.   r/   r   r   r   r   ÚC›   s    r`   ©r   rV   r   )r   r
   ÚpolyvalÚsizer8   Úlinspacer7   r   r9   ÚshapeÚmarN   r   r^   ZndarrayÚviewÚtype)
r$   Úyr=   r@   rA   Údimsr^   Zmxr`   Úcxr   r   r   Útest_polyval}   s.   


zTestEvaluation.test_polyvalc                    sô  t ttjdgdgdd� tt g dg¡jdƒ tt g dg¡jdkƒ tt g dgd g¡jdƒ tt g dgd g¡jdkƒ tt dd¡dƒ tt dt 	d¡¡jd	kƒ t 
d
d¡‰ ‡ fdd„tdƒD ƒ}tddƒD ]}|| }t ˆ dg| ¡}t||ƒ qmˆ ˆ d  ˆ d  }t ˆ g d¢¡}t||ƒ tdƒD ]/}dg| }t |¡‰ tt ˆ dg¡j|ƒ tt ˆ ddg¡j|ƒ tt ˆ g d¢¡j|ƒ q�g d¢}t |¡}t 
d
d¡‰ tt ˆ |¡t ˆ |¡ƒ d}t dd¡‰ tjjdd|d�}tjˆ |dd�}t |jdd … ¡}t|jƒD ]}	t ˆ |	 |d d …|	f ¡||	< �qt||ƒ t ˆ dˆ  g¡‰ tjˆ |dd�}t |jdd … ˆ j ¡}t|jd ƒD ]#}	tˆ jd ƒD ]}
t ˆ |
 |d d …|	f ¡||	|
d d …f< �qX�qOt||ƒ d S )Nr   F)Ztensorr   )r   r   )r   r   )rV   rV   )rV   r   c                    rW   r   r   rX   r   r   r   rZ   µ   r[   z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>)r   r   r   rV   r   r\   )é   r   iðÿÿÿéþÿÿÿr   rU   r   éûÿÿÿ)rc   T)r   Ú
ValueErrorr
   Zpolyvalfromrootsr   rc   r   re   r8   Úonesrd   r7   r   r9   Ú	polyrootsrb   rM   ÚrandomÚrandintÚemptyÚvstack)r$   ri   r=   r@   rA   rj   ZptestÚrZrshapeÚiiZjjr   r   r   Útest_polyvalfromroots¡   s\   
ÿ




ÿ$
.ÿz$TestEvaluation.test_polyvalfromrootsc           
      C   s„   | j \}}}| j\}}}ttdtj||d d… | jƒ || }t ||| j¡}t||ƒ t 	d¡}	t |	|	| j¡}t
|jdkƒ d S ©NZincompatibler   ©r   rV   )r   ri   r	   rp   r
   Ú	polyval2dÚc2dr   r8   rq   r   re   ©
r$   Úx1Úx2Úx3Úy1Úy2Zy3r@   rA   Úzr   r   r   Útest_polyval2dá   s   ÿ

zTestEvaluation.test_polyval2dc           
   	   C   sŽ   | j \}}}| j\}}}ttdtj|||d d… | jƒ || | }t |||| j¡}t||ƒ t 	d¡}	t |	|	|	| j¡}t
|jdkƒ d S rz   )r   ri   r	   rp   r
   Ú	polyval3dÚc3dr   r8   rq   r   re   r~   r   r   r   Útest_polyval3dó   s   ÿ

zTestEvaluation.test_polyval3dc           
      C   sl   | j \}}}| j\}}}t d||¡}t ||| j¡}t||ƒ t d¡}	t |	|	| j¡}t	|j
dkƒ d S )NrS   r{   )r   rV   r   rV   )r   ri   r8   Úeinsumr
   Z
polygrid2dr}   r   rq   r   re   r~   r   r   r   Útest_polygrid2d  s   

zTestEvaluation.test_polygrid2dc           
      C   sr   | j \}}}| j\}}}t d|||¡}t |||| j¡}t||ƒ t d¡}	t |	|	|	| j¡}t	|j
dkƒ d S )NrT   r{   )r   rV   r   rV   r   rV   )r   ri   r8   r‰   r
   Z
polygrid3dr‡   r   rq   r   re   r~   r   r   r   Útest_polygrid3d  s   

zTestEvaluation.test_polygrid3dN)r-   r.   r/   r8   rN   Zc1dr‰   r}   r‡   rs   r   r
   rb   ri   rl   ry   r…   rˆ   rŠ   r‹   r   r   r   r   rQ   s   s    $@rQ   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTestIntegralc              	   C   s4  t ttjdgdƒ t ttjdgdƒ t ttjdgdddgƒ t ttjdgdgd� t ttjdgdgd� t ttjdgdd� ttƒ� t ddgd¡ W d   ƒ n1 sUw   Y  td	d
ƒD ]}dg|d	  dg }tjdg||d�}t|ddgƒ q_td
ƒD ]-}|d }dg| dg }|gdg|  d| g }tj|d|gd�}tt	|ƒt	|ƒƒ q€td
ƒD ]!}|d }dg| dg }tj|d|gdd�}tt 
d|¡|ƒ q²td
ƒD ].}|d }dg| dg }|gdg|  d	| g }tj|d|gd	d�}tt	|ƒt	|ƒƒ qØtd
ƒD ]9}td	d
ƒD ]0}dg| dg }|d d … }t|ƒD ]
}tj|dd�}�q&tj||d�}tt	|ƒt	|ƒƒ �q�qtd
ƒD ]@}td	d
ƒD ]7}dg| dg }|d d … }t|ƒD ]}tj|d|gd�}�qdtj||tt|ƒƒd�}tt	|ƒt	|ƒƒ �qP�qItd
ƒD ]B}td	d
ƒD ]9}dg| dg }|d d … }t|ƒD ]}tj|d|gdd�}�q©tj||tt|ƒƒdd�}tt	|ƒt	|ƒƒ �q•�qŽtd
ƒD ]B}td	d
ƒD ]9}dg| dg }|d d … }t|ƒD ]}tj|d|gd	d�}�qðtj||tt|ƒƒd	d�}tt	|ƒt	|ƒƒ �qÜ�qÕd S )Nr   ç      à?r   r   )Úlbnd)Úscl©ÚaxisrR   r   r   )ÚmÚk)r“   r”   r�   )r“   r”   r�   ©r“   )r   Ú	TypeErrorr
   Úpolyintrp   r   ÚDeprecationWarningr7   r   r   rb   Úlist)r$   r=   r”   rA   r�   Zpolr@   r>   r   r   r   Útest_polyint$  s†   
ÿú	ú	ú	úÿzTestIntegral.test_polyintc                 C   sš   t j d¡}t  dd„ |jD ƒ¡j}tj|dd�}t||ƒ t  dd„ |D ƒ¡}tj|dd�}t||ƒ t  dd„ |D ƒ¡}tj|d	dd
�}t||ƒ d S )N©rV   r   c                 S   ó   g | ]}t  |¡‘qS r   ©r
   r—   ©rY   rO   r   r   r   rZ   x  ó    z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   r‘   c                 S   rœ   r   r�   rž   r   r   r   rZ   |  rŸ   r   c                 S   s   g | ]	}t j|d d�‘qS )rV   )r”   r�   rž   r   r   r   rZ   €  s    rV   )r”   r’   )r8   rs   rv   ÚTr
   r—   r   ©r$   r}   r@   rA   r   r   r   Útest_polyint_axist  s   

zTestIntegral.test_polyint_axisN)r-   r.   r/   rš   r¢   r   r   r   r   r�   "  s    Pr�   c                   @   rŒ   )ÚTestDerivativec                 C   s  t ttjdgdƒ t ttjdgdƒ tdƒD ]}dg| dg }tj|dd�}tt|ƒt|ƒƒ qtdƒD ]'}tddƒD ]}dg| dg }tjtj||d�|d�}t	t|ƒt|ƒƒ q<q5tdƒD ])}tddƒD ]!}dg| dg }tjtj||dd�|dd�}t	t|ƒt|ƒƒ qhqad S )	Nr   rŽ   r   r   r   r•   r   )r“   r�   )
r   r–   r
   Úpolyderrp   r7   r   r   r—   r   )r$   r=   r@   rA   r>   r   r   r   Útest_polyder‡  s&   ýýÿzTestDerivative.test_polyderc                 C   sl   t j d¡}t  dd„ |jD ƒ¡j}tj|dd�}t||ƒ t  dd„ |D ƒ¡}tj|dd�}t||ƒ d S )Nr›   c                 S   rœ   r   ©r
   r¤   rž   r   r   r   rZ   ¤  rŸ   z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   r‘   c                 S   rœ   r   r¦   rž   r   r   r   rZ   ¨  rŸ   r   )r8   rs   rv   r    r
   r¤   r   r¡   r   r   r   Útest_polyder_axis   s   
z TestDerivative.test_polyder_axisN)r-   r.   r/   r¥   r§   r   r   r   r   r£   …  s    r£   c                   @   s@   e Zd Zej d¡d d Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dS )Ú
TestVanderrU   r   r   c                 C   sÎ   t  d¡}t |d¡}t|jdkƒ tdƒD ]}dg| dg }t|d|f t ||¡ƒ qt  	ddgddgdd	gg¡}t |d¡}t|jd
kƒ tdƒD ]}dg| dg }t|d|f t ||¡ƒ qMd S )NrV   r›   r   r   r   .r   r   é   )rV   r   r   )
r8   rM   r
   Ú
polyvanderr   re   r7   r   rb   rN   )r$   r   Úvr=   Úcoefr   r   r   Útest_polyvander±  s   
þzTestVander.test_polyvanderc                 C   sx   | j \}}}tj d¡}t ||ddg¡}t |||¡}t ||j¡}t||ƒ t |g|gddg¡}t	|j
dkƒ d S )Nr{   r   r   )r   r   r©   )r   r8   rs   r
   Zpolyvander2dr|   ÚdotÚflatr   r   re   ©r$   r   r€   r�   rO   Zvanr@   rA   r   r   r   Útest_polyvander2dÂ  s   
zTestVander.test_polyvander2dc                 C   s€   | j \}}}tj d¡}t |||g d¢¡}t ||||¡}t ||j¡}t||ƒ t |g|g|gg d¢¡}t	|j
dkƒ d S )Nra   r]   )r   r   é   )r   r8   rs   r
   Zpolyvander3dr†   r®   r¯   r   r   re   r°   r   r   r   Útest_polyvander3dÏ  s   
zTestVander.test_polyvander3dc                 C   s   t  d¡}tttj|dƒ d S )NrV   r   )r8   rM   r   rp   r
   rª   )r$   r   r   r   r   Útest_polyvandernegdegÜ  s   
z TestVander.test_polyvandernegdegN)
r-   r.   r/   r8   rs   r   r­   r±   r³   r´   r   r   r   r   r¨   ­  s    r¨   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCompanionc                 C   s"   t ttjg ƒ t ttjdgƒ d S r*   )r   rp   r
   Úpolycompanionr#   r   r   r   Útest_raisesã  s   zTestCompanion.test_raisesc                 C   s<   t ddƒD ]}dg| dg }tt |¡j||fkƒ qd S )Nr   r   r   )r7   r   r
   r¶   re   )r$   r=   r¬   r   r   r   Útest_dimensionsç  s   þzTestCompanion.test_dimensionsc                 C   s   t t ddg¡d dkƒ d S )Nr   r   )r   r   ç      à¿)r   r
   r¶   r#   r   r   r   Útest_linear_rootì  s   zTestCompanion.test_linear_rootN)r-   r.   r/   r·   r¸   rº   r   r   r   r   rµ   á  s    rµ   c                   @   r0   )ÚTestMiscc              	   C   sˆ   t  g ¡}tt|ƒdgƒ tddƒD ]/}t t tj dd| d ¡dd d… ¡}t	| }t  |¡d|d   }tt|ƒt|ƒƒ qd S )Nr   r   r   r   )
r
   Úpolyfromrootsr   r   r7   r8   Úcosrd   ÚpiÚTlist)r$   rA   r=   Úrootsr@   r   r   r   Útest_polyfromrootsò  s   
*üzTestMisc.test_polyfromrootsc                 C   sl   t t dg¡g ƒ t t ddg¡dgƒ tddƒD ]}t dd|¡}t t |¡¡}t t|ƒt|ƒƒ qd S )Nr   r   r¹   r   r   )r   r
   rr   r7   r8   rd   r¼   r   )r$   r=   r@   rA   r   r   r   Útest_polyrootsû  s   ýzTestMisc.test_polyrootsc                 C   sÐ  dd„ }dd„ }t ttjdgdgdƒ t ttjdggdgdƒ t ttjg dgdƒ t ttjdgdgggdƒ t ttjddgdgdƒ t ttjdgddgdƒ t ttjdgdgddggd	� t ttjdgdgdddgd	� t ttjdgdgdgƒ t ttjdgdgg d
¢ƒ t ttjdgdgg ƒ t dd¡}||ƒ}t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||g d¢¡}tt|ƒdƒ t	t 
||¡|ƒ t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||g d¢¡}tt|ƒdƒ t	t 
||¡|ƒ t |t ||g¡jd¡}t	|t ||g¡jƒ t |t ||g¡jg d¢¡}t	|t ||g¡jƒ t |¡}| ¡ }	d|dd d…< d|	dd d…< tj||	d|d	�}
t	|
|ƒ tj||	g d¢|d	�}
t	|
|ƒ tj|t |	|	g¡jd|d	�}t	|t ||g¡jƒ tj|t |	|	g¡jg d¢|d	�}t	|t ||g¡jƒ g d¢}t	t ||d¡ddgƒ t	t ||ddg¡ddgƒ t dd¡}||ƒ}t ||d¡}t	t 
||¡|ƒ t ||g d¢¡}t	t 
||¡|ƒ t	||ƒ d S )Nc                 S   s   | | d  | d  S )Nr   r   r   r   r   r   r   Úf  r&   z TestMisc.test_polyfit.<locals>.fc                 S   s   | d | d  d S )Nr   r   r   r   r   r   r   r   Úf2  r&   z!TestMisc.test_polyfit.<locals>.f2r   r   r   r   )Úw)r   r   r©   rV   r   )r   r   r   rV   r   )r   r   r   rV   r   )r   y              ð?r   y       €      ð¿)r   r   r   )r   rp   r
   Zpolyfitr–   r8   rd   r   Úlenr   rb   rN   r    Z
zeros_likeÚcopy)r$   rÃ   rÄ   r   ri   Zcoef3Zcoef4Zcoef2drÅ   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   Útest_polyfit  sj   


"zTestMisc.test_polyfitc                 C   sb   g d¢}t ttj|dƒ tt |¡|d d… ƒ tt |d¡|d d… ƒ tt |d¡dgƒ d S )N)r   r   r   r   r   r   r   r   r   )r   rp   r
   r   r   )r$   r¬   r   r   r   Útest_polytrimI  s
   zTestMisc.test_polytrimc                 C   s   t t dd¡ddgƒ d S )NrV   r   ©r   r
   Zpolyliner#   r   r   r   Útest_polylineT  s   zTestMisc.test_polylinec                 C   s   t t dd¡dgƒ d S )NrV   r   rÊ   r#   r   r   r   Útest_polyline_zeroW  s   zTestMisc.test_polyline_zeroN)	r-   r.   r/   rÁ   rÂ   rÈ   rÉ   rË   rÌ   r   r   r   r   r»   ð  s    	Fr»   )$Ú__doc__Ú	functoolsr   Znumpyr8   Znumpy.polynomial.polynomialZ
polynomialr
   Znumpy.testingr   r   r   r   r   r   r	   r   ZT0ZT1ZT2ZT3ZT4ZT5ZT6ZT7ZT8ZT9r¿   r!   r1   rQ   r�   r£   r¨   rµ   r»   r   r   r   r   Ú<module>   s4    $F 0c(4