U
    dO                  
   @   sx  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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 d/d0 d0Z#dS )1z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   J/tmp/pip-unpacked-wheel-c1z6a0q8/numpy/polynomial/tests/test_polynomial.pytrim   s    r            i      i      i    i8   i@   i   i    	   ii  i   c                   @   s,   e Z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_polyxN)__name__
__module____qualname__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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 r-   )r2   r3   r4   r5   r
   Zpolysubr   r   r7   r   r   r   test_polysub9   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polymulxr2   )r#   r8   Zserr;   r   r   r   test_polymulxC   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 r-   )r2   r3   r4   r
   polymulr   r   r7   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 ]}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   r.   r/   r0   )r   ZeroDivisionErrorr
   Zpolydivr   r2   r6   r@   )
r#   Zquoremr8   r9   r:   cicjr;   r<   r   r   r   test_polydivT   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   r.   r/   r   r0   )
r2   r3   aranger   r
   r@   arrayZpolypowr   r   )r#   r8   r9   r:   cr;   r<   r   r   r   test_polypowi   s    zTestArithmetic.test_polypowN)	r)   r*   r+   r=   r>   r?   rA   rF   rJ   r   r   r   r   r,   -   s   

	r,   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   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	| qd	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   .0r8   r   r   r   
<listcomp>   s     z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   rP   FT)mask   c                   @   s   e Zd ZdS )z&TestEvaluation.test_polyval.<locals>.CN)r)   r*   r+   r   r   r   r   C   s   rV   r   )r   r
   polyvalsizer3   linspacer2   r   r4   shapemarH   r   rT   Zndarrayviewtype)
r#   yr8   r;   r<   dimsrT   ZmxrV   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qt|| d S )Nr   F)Ztensorr   )r   r   )r   r   )rP   rP   )rP   r   c                    s   g | ]} | qS r   r   rQ   r   r   r   rS      s     z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>rP   r      irO   r   )rX   T)r   
ValueErrorr
   Zpolyvalfromrootsr   rX   r   rZ   r3   onesrY   r2   r   r4   	polyrootsrW   rG   randomrandintemptyvstack)r#   r^   r8   r;   r<   r_   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   rP   )r   r^   r	   rd   r
   	polyval2dc2dr   r3   re   r   rZ   
r#   x1x2x3y1y2Zy3r;   r<   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 rn   )r   r^   r	   rd   r
   	polyval3dc3dr   r3   re   r   rZ   rr   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 )NrM   ro   )r   rP   r   rP   )r   r^   r3   einsumr
   Z
polygrid2drq   r   re   r   rZ   rr   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 )NrN   ro   )r   rP   r   rP   r   rP   )r   r^   r3   r}   r
   Z
polygrid3dr{   r   re   r   rZ   rr   r   r   r   test_polygrid3d  s    

zTestEvaluation.test_polygrid3dN)r)   r*   r+   r3   rH   Zc1dr}   rq   r{   rg   r   r
   rW   r^   r`   rm   ry   r|   r~   r   r   r   r   r   rK   s   s   $@rK   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 qtd
D ]Z}|d }dg| dg }|gdg|  d| g }tj|d|gd}tt	|t	| qt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	| qt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}qtj||tt|d}tt	|t	| qqt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}qtj||tt|d	d}tt	|t	| qqd S )Nr         ?r   r   )lbnd)sclaxisrL   r   r   )mk)r   r   r   )r   r   r   r   )r   	TypeErrorr
   polyintrd   r   DeprecationWarningr2   r   r   rW   list)r#   r8   r   r<   r   Zpolr;   r9   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rP   r   c                 S   s   g | ]}t |qS r   r
   r   rR   rI   r   r   r   rS   x  s     z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   r   c                 S   s   g | ]}t |qS r   r   r   r   r   r   rS   |  s     r   c                 S   s   g | ]}t j|d dqS )rP   )r   r   r   r   r   r   rS     s     rP   )r   r   )r3   rg   rj   Tr
   r   r   r#   rq   r;   r<   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                   @   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| qqd S )	Nr   r   r   r   r   r   r   )r   r   )
r   r   r
   polyderrd   r2   r   r   r   r   )r#   r8   r;   r<   r9   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   rS     s     z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   r   c                 S   s   g | ]}t |qS r   r   r   r   r   r   rS     s     r   )r3   rg   rj   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 )
TestVanderrO   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|| qd S )NrP   r   r   r   r   .r   r      )rP   r   r   )
r3   rG   r
   
polyvanderr   rZ   r2   r   rW   rH   )r#   r   vr8   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 )Nro   r   r   )r   r   r   )r   r3   rg   r
   Zpolyvander2drp   dotflatr   r   rZ   r#   rs   rt   ru   rI   Zvanr;   r<   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   rP   r   r   r   rP   )r   r      )r   r3   rg   r
   Zpolyvander3drz   r   r   r   r   rZ   r   r   r   r   test_polyvander3d  s    
zTestVander.test_polyvander3dc                 C   s   t d}tttj|d d S )NrP   r   )r3   rG   r   rd   r
   r   )r#   r   r   r   r   test_polyvandernegdeg  s    
z TestVander.test_polyvandernegdegN)
r)   r*   r+   r3   rg   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   rd   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   )r2   r   r
   r   rZ   )r#   r8   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                   @   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   r2   r3   cosrY   piTlist)r#   r<   r8   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 ]4}tdd|}tt|}t t|t| q2d S )Nr   r   r   r   r   )r   r
   rf   r2   r3   rY   r   r   )r#   r8   r;   r<   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   rP   r   r   y              ?y             )r   rd   r
   Zpolyfitr   r3   rY   r   lenr   rW   rH   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   rd   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 )NrP   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 )NrP   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numpyr3   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!   r,   rK   r   r   r   r   r   r   r   r   r   <module>   s2   $
F 0c(4