U
    ¸mœd1P  ã                
   @   sŒ  d Z ddlmZ ddlZddlm  mZ ddlZddl	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d	dd
gZddddgZdddddgZddddddgZd	ddddddgZddddddddgZdddddddddg	Zdddddddd dd!g
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 d0d1„ d1ƒZ&dS )2zTests for polynomial module.

é    )ÚreduceN)Údeepcopy)Ú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   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/polynomial/tests/test_polynomial.pyÚtrim   s    r   é   éÿÿÿÿé   éýÿÿÿé   iøÿÿÿé   é   iìÿÿÿé   é   iÐÿÿÿé    iùÿÿÿé8   i�ÿÿÿé@   iàÿÿÿé    i ÿÿÿé€   é	   iˆÿÿÿi°  iÀýÿÿé   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestConstantsc                 C   s   t tjddgƒ d S )Nr   r   )r   r   Z
polydomain©Úselfr   r   r   Útest_polydomain"   s    zTestConstants.test_polydomainc                 C   s   t tjdgƒ d S )Nr   )r   r   Zpolyzeror#   r   r   r   Útest_polyzero%   s    zTestConstants.test_polyzeroc                 C   s   t tjdgƒ d S ©Nr   )r   r   Zpolyoner#   r   r   r   Útest_polyone(   s    zTestConstants.test_polyonec                 C   s   t tjddgƒ d S )Nr   r   )r   r   Zpolyxr#   r   r   r   Ú
test_polyx+   s    zTestConstants.test_polyxc                 C   s&   t  dddg¡}t|ƒ}t||ƒ d S ©Nr   r   é   )r   Ú
Polynomialr   r   ©r$   r   Úyr   r   r   Ú	test_copy.   s    zTestConstants.test_copyc                 C   s.   t  dddg¡}t t |¡¡}t||ƒ d S r*   )r   r,   ÚpickleÚloadsÚdumpsr   r-   r   r   r   Útest_pickle3   s    zTestConstants.test_pickleN)	Ú__name__Ú
__module__Ú__qualname__r%   r&   r(   r)   r/   r3   r   r   r   r   r"       s   r"   c                   @   s<   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 ]�}t dƒD ]‚}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:   s    $zTestArithmetic.test_polyaddc                 C   sž   t dƒD ]�}t dƒD ]‚}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 r8   )r=   r>   r?   r@   r   Zpolysubr   r   rB   r   r   r   Útest_polysubD   s    $zTestArithmetic.test_polysubc                 C   sr   t t dg¡dgƒ t t dg¡ddgƒ tddƒD ]8}dg| dg }dg|d  dg }t t |¡|ƒ q4d S )Nr   r   r   )r   r   Zpolymulxr=   )r$   rC   ZserrF   r   r   r   Útest_polymulxN   s    zTestArithmetic.test_polymulxc                 C   s�   t dƒD ]‚}t dƒD ]t}d|› d|› �}t || d ¡}|||   d7  < t dg| dg dg| dg ¡}tt|ƒt|ƒ|d� qqd S r8   )r=   r>   r?   r   Úpolymulr   r   rB   r   r   r   Útest_polymulV   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 ]„}tdƒD ]v}d|› d|› �}dg| ddg }dg| ddg }t ||¡}t ||¡\}}t t ||¡|¡}	t|	||d	� qnqbd S )
Nr   r   r   )r   r   ))r   r   r   r   r9   r:   r;   )r   ÚZeroDivisionErrorr   Zpolydivr   r=   rA   rK   )
r$   ZquoÚremrC   rD   rE   ÚciÚcjrF   rG   r   r   r   Útest_polydiv_   s    zTestArithmetic.test_polydivc                 C   s|   t dƒD ]n}t dƒD ]`}d|› d|› �}t |d ¡}ttj|g| t dg¡ƒ}t ||¡}tt	|ƒt	|ƒ|d� qqd S )Nr   r9   r:   r   r;   )
r=   r>   Úaranger   r   rK   ÚarrayZpolypowr   r   )r$   rC   rD   rE   ÚcrF   rG   r   r   r   Útest_polypowt   s    zTestArithmetic.test_polypowN)	r4   r5   r6   rH   rI   rJ   rL   rQ   rU   r   r   r   r   r7   8   s   

	r7   c                   @   s�   e Zd Ze dddg¡Ze dee¡Ze deee¡Zej	 	d¡d d Z
e e
dddg¡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   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 ˆ ddddg¡}t||ƒ tdƒD ]`}dg| }t |¡‰ t t ˆ dg¡j	|ƒ t t ˆ ddg¡j	|ƒ t t ˆ dddg¡j	|ƒ q¦d	d
d	g}tj
jdddg|d�}t dddg|¡}t|j|ƒ G dd„ dtjƒ}t dddg¡ |¡}	t tt dddg|	¡ƒ|ƒ d S )Nr   r   r   c                    s   g | ]}ˆ | ‘qS r   r   ©Ú.0rC   r   r   r   Ú
<listcomp>Ž   s     z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   r+   FT)Úmaské   c                   @   s   e Zd ZdS )z&TestEvaluation.test_polyval.<locals>.CN)r4   r5   r6   r   r   r   r   ÚC¦   s   r`   r   )r   r   ÚpolyvalÚsizer>   Úlinspacer=   r   r?   ÚshapeÚmarS   r	   r^   ZndarrayÚviewÚtype)
r$   r.   rC   rF   rG   Údimsr^   Zmxr`   Z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||ƒ qÚˆ ˆ d  ˆ d  }t ˆ d
ddg¡}t||ƒ tdƒD ]b}dg| }t |¡‰ tt ˆ dg¡j|ƒ tt ˆ ddg¡j|ƒ tt ˆ dddg¡j|ƒ �q<dddddg}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 ]F}	tˆ jd ƒD ]0}
t ˆ |
 |d d …|	f ¡||	|
d d …f< �q¼�qªt||ƒ d S )Nr   F)Ztensorr   )r   r   )r   r   )r+   r+   )r+   r   c                    s   g | ]}ˆ | ‘qS r   r   r[   r   r   r   r]   À   s     z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>r+   r   é   iðÿÿÿéþÿÿÿrZ   r   éûÿÿÿ)rb   T)r   Ú
ValueErrorr   Zpolyvalfromrootsr   rb   r   rd   r>   Úonesrc   r=   r   r?   Ú	polyrootsra   rR   ÚrandomÚrandintÚemptyÚvstack)r$   r.   rC   rF   rG   rh   ZptestÚrZrshapeÚiiZjjr   r   r   Útest_polyvalfromroots¬   s^      ÿ




ÿ$
2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   r+   )r   r.   r
   rm   r   Ú	polyval2dÚc2dr   r>   rn   r   rd   ©
r$   Úx1Úx2Úx3Úy1Úy2Zy3rF   rG   Ú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 rw   )r   r.   r
   rm   r   Ú	polyval3dÚc3dr   r>   rn   r   rd   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 )NrX   rx   )r   r+   r   r+   )r   r.   r>   Úeinsumr   Z
polygrid2drz   r   rn   r   rd   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 )NrY   rx   )r   r+   r   r+   r   r+   )r   r.   r>   r†   r   Z
polygrid3dr„   r   rn   r   rd   r{   r   r   r   Útest_polygrid3d  s    

zTestEvaluation.test_polygrid3dN)r4   r5   r6   r>   rS   Zc1dr†   rz   r„   rp   r   r   ra   r.   ri   rv   r‚   r…   r‡   rˆ   r   r   r   r   rV   ~   s   $@rV   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestIntegralc              	   C   s$  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 5 Q R X td	d
ƒD ]8}dg|d	  dg }tjdg||d�}t|ddgƒ qªtd
ƒD ]Z}|d }dg| dg }|gdg|  d| g }tj|d|gd�}tt	|ƒt	|ƒƒ qìtd
ƒD ]D}|d }dg| dg }tj|d|gdd�}tt 
d|¡|ƒ �qPt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 ]r}td	d
ƒD ]`}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 ]n}dg| dg }|d d … }t|ƒD ]}tj|d|gd�}�q¸tj||tt|ƒƒd�}tt	|ƒt	|ƒƒ �q��q‚td
ƒD ]„}td	d
ƒD ]r}dg| dg }|d d … }t|ƒD ]}tj|d|gdd�}�qBtj||tt|ƒƒdd�}tt	|ƒt	|ƒƒ �q�qtd
ƒD ]„}td	d
ƒD ]r}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©ÚaxisrW   r   r   )ÚmÚk)r�   r�   r‹   )r�   r�   rŒ   ©r�   )r   Ú	TypeErrorr   Úpolyintrm   r   ÚDeprecationWarningr=   r   r   ra   Úlist)r$   rC   r�   rG   rŒ   ZpolrF   rD   r   r   r   Útest_polyint/  sz    
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©r+   r   c                 S   s   g | ]}t  |¡‘qS r   ©r   r“   ©r\   rT   r   r   r   r]   ƒ  s     z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   r�   c                 S   s   g | ]}t  |¡‘qS r   r˜   r™   r   r   r   r]   ‡  s     r   c                 S   s   g | ]}t j|d d�‘qS )r+   )r�   r˜   r™   r   r   r   r]   ‹  s     r+   )r�   rŽ   )r>   rp   rs   ÚTr   r“   r   ©r$   rz   rF   rG   r   r   r   Útest_polyint_axis  s    

zTestIntegral.test_polyint_axisN)r4   r5   r6   r–   rœ   r   r   r   r   r‰   -  s   Pr‰   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestDerivativec                 C   s  t ttjdgdƒ t ttjdgdƒ tdƒD ]4}dg| dg }tj|dd�}tt|ƒt|ƒƒ q,tdƒD ]N}tddƒD ]>}dg| dg }tjtj||d�|d�}t	t|ƒt|ƒƒ qxqjtdƒD ]R}tddƒD ]B}dg| dg }tjtj||dd�|dd�}t	t|ƒt|ƒƒ qÐqÂd S )	Nr   rŠ   r   r   r   r‘   r   )r�   rŒ   )
r   r’   r   Úpolyderrm   r=   r   r   r“   r   )r$   rC   rF   rG   rD   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   s   g | ]}t  |¡‘qS r   ©r   rž   r™   r   r   r   r]   ¯  s     z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   r�   c                 S   s   g | ]}t  |¡‘qS r   r    r™   r   r   r   r]   ³  s     r   )r>   rp   rs   rš   r   rž   r   r›   r   r   r   Útest_polyder_axis«  s    
z TestDerivative.test_polyder_axisN)r4   r5   r6   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 )Ú
TestVanderrZ   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 ||¡ƒ qšd S )Nr+   r—   r   r   r   .r   r   é   )r+   r   r   )
r>   rR   r   Ú
polyvanderr   rd   r=   r   ra   rS   )r$   r   ÚvrC   Ú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 )Nrx   r   r   )r   r   r£   )r   r>   rp   r   Zpolyvander2dry   ÚdotÚflatr   r   rd   ©r$   r|   r}   r~   rT   ZvanrF   rG   r   r   r   Útest_polyvander2dÍ  s    
zTestVander.test_polyvander2dc                 C   s„   | j \}}}tj d¡}t |||dddg¡}t ||||¡}t ||j¡}t||ƒ t |g|g|gdddg¡}t	|j
dkƒ d S )N)r   r+   r   r   r   r+   )r   r   é   )r   r>   rp   r   Zpolyvander3drƒ   r¨   r©   r   r   rd   rª   r   r   r   Útest_polyvander3dÚ  s    
zTestVander.test_polyvander3dc                 C   s   t  d¡}tttj|dƒ d S )Nr+   r   )r>   rR   r   rm   r   r¤   )r$   r   r   r   r   Útest_polyvandernegdegç  s    
z TestVander.test_polyvandernegdegN)
r4   r5   r6   r>   rp   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   rm   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   )r=   r   r   r°   rd   )r$   rC   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)r4   r5   r6   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d„ Zd	d
„ Zdd„ ZdS )Ú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   r=   r>   Úcosrc   ÚpiÚTlist)r$   rG   rC   ÚrootsrF   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 ]4}t dd|¡}t t |¡¡}t t|ƒt|ƒƒ q2d S )Nr   r   r³   r   r   )r   r   ro   r=   r>   rc   r¶   r   )r$   rC   rF   rG   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ddd
gƒ t ttjdgdgg ƒ t dd¡}||ƒ}t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||ddddg¡}tt|ƒdƒ t	t 
||¡|ƒ t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||dddddg¡}tt|ƒdƒ t	t 
||¡|ƒ t |t ||g¡jd¡}t	|t ||g¡jƒ t |t ||g¡jddddg¡}t	|t ||g¡jƒ t |¡}| ¡ }	d|dd d…< d|	dd d…< tj||	d|d	�}
t	|
|ƒ tj||	ddddg|d	�}
t	|
|ƒ tj|t |	|	g¡jd|d	�}t	|t ||g¡jƒ tj|t |	|	g¡jddddg|d	�}t	|t ||g¡jƒ ddddg}t	t ||d¡ddgƒ t	t ||ddg¡ddgƒ t dd¡}||ƒ}t ||d¡}t	t 
||¡|ƒ t ||dddg¡}t	t 
||¡|ƒ t	||ƒ d S )Nc                 S   s   | | d  | d  S )Nr   r   r   r   r   r   r   Úf  s    z TestMisc.test_polyfit.<locals>.fc                 S   s   | d | d  d S )Nr   r   r   r   r   r   r   r   Úf2  s    z!TestMisc.test_polyfit.<locals>.f2r   r   r   r   )Úwr£   r+   r   r   y              ð?y       €      ð¿)r   rm   r   Zpolyfitr’   r>   rc   r   Úlenr   ra   rS   rš   Z
zeros_likeÚcopy)r$   r½   r¾   r   r.   Zcoef3Zcoef4Zcoef2dr¿   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   Útest_polyfit  sj    "


&zTestMisc.test_polyfitc                 C   sf   ddddg}t ttj|dƒ tt |¡|d d… ƒ tt |d¡|d d… ƒ tt |d¡dgƒ d S )Nr   r   r   r   r   )r   rm   r   r   r   )r$   r¦   r   r   r   Útest_polytrimT  s
    zTestMisc.test_polytrimc                 C   s   t t dd¡ddgƒ d S )Nr+   r   ©r   r   Zpolyliner#   r   r   r   Útest_polyline_  s    zTestMisc.test_polylinec                 C   s   t t dd¡dgƒ d S )Nr+   r   rÄ   r#   r   r   r   Útest_polyline_zerob  s    zTestMisc.test_polyline_zeroN)	r4   r5   r6   r»   r¼   rÂ   rÃ   rÅ   rÆ   r   r   r   r   rµ   û  s   	Frµ   )'Ú__doc__Ú	functoolsr   Únumpyr>   Znumpy.polynomial.polynomialZ
polynomialr   r0   rÁ   r   Znumpy.testingr   r   r   r   r   r	   r
   r   ZT0ZT1ZT2ZT3ZT4ZT5ZT6ZT7ZT8ZT9r¹   r"   r7   rV   r‰   r�   r¢   r¯   rµ   r   r   r   r   Ú<module>   s6   $
F 0c(4