B
    F0d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   X/var/www/html/venv/lib/python3.7/site-packages/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polyzero)r!   r   r   r   test_polyzero#   s    zTestConstants.test_polyzeroc             C   s   t tjdg d S )Nr   )r   r
   Zpolyone)r!   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polyx)r!   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   xt dD ]}xt 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W q
W d S )Nr   zAt i=z, 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   xt dD ]}xt 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W q
W d S )Nr   zAt i=z, j=r   r   )r*   )r+   r,   r-   r.   r
   Zpolysubr   r   )r!   r0   r1   r2   r3   r4   r   r   r   test_polysub9   s    $zTestArithmetic.test_polysubc             C   sv   t tdgdg t tdgddg xFtddD ]8}dg| dg }dg|d  dg }t t|| q6W d S )Nr   r   r   )r   r
   Zpolymulxr+   )r!   r0   Zserr3   r   r   r   test_polymulxC   s    zTestArithmetic.test_polymulxc             C   s   xt dD ]}xt dD ]t}d| d| }t|| d }|||   d7  < tdg| dg dg| dg }tt|t||d qW q
W d S )Nr   zAt i=z, j=r   r   )r*   )r+   r,   r-   r
   polymulr   r   )r!   r0   r1   r2   r3   r4   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 xtdD ]}xtdD ]v}d| d| }dg| ddg }dg| ddg }t||}t||\}}tt|||}	t|	||d	 qrW qdW d S )
Nr   r   r   )r   r   ))r   r   r   r   zAt i=z, j=)r*   )r   ZeroDivisionErrorr
   Zpolydivr   r+   r/   r8   )
r!   Zquoremr0   r1   r2   cicjr3   r4   r   r   r   test_polydivT   s    zTestArithmetic.test_polydivc             C   s   x~t dD ]r}xlt dD ]`}d| d| }t|d }ttj|g| tdg}t||}tt	|t	||d qW q
W d S )Nr   zAt i=z, j=r   )r*   )
r+   r,   aranger   r
   r8   arrayZpolypowr   r   )r!   r0   r1   r2   cr3   r4   r   r   r   test_polypowi   s    zTestArithmetic.test_polypowN)	r&   r'   r(   r5   r6   r7   r9   r>   rB   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 )TestEvaluationg      ?g       @g      @zi,j->ijz
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 }x:tdD ].}|| }t dg| dg }t|| qBW   d d  }t ddddg}t|| xltdD ]`}dg| }t| t t dgj	| t t ddgj	| t t dddgj	| qW 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   ).0r0   )r   r   r   
<listcomp>   s    z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   rD   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   rI   r   )r   r
   polyvalsizer,   linspacer+   r   r-   shapemar@   r   rG   Zndarrayviewtype)
r!   yr0   r3   r4   dimsrG   ZmxrI   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 }x6tddD ](}|| }t dg| }t|| qW   d   d  }t d
ddg}t|| xntdD ]b}dg| }t| tt dgj| tt ddgj| tt dddgj| qBW 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  }x4t|jD ]&}	t |	 |d d |	f ||	< q8W t|| t d  g tj |dd}t|jdd   j }x\t|jd D ]J}	xBt jd D ]0}
t |
 |d d |	f ||	|
d d f< qW qW t|| d S )Nr   F)Ztensorr   )r   r   )r   r   )rD   rD   )rD   r   c                s   g | ]} | qS r   r   )rE   r0   )r   r   r   rF      s    z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>rD   r      i)rD   r   r   )rK   T)r   
ValueErrorr
   Zpolyvalfromrootsr   rK   r   rM   r,   onesrL   r+   r   r-   	polyrootsrJ   r?   randomrandintemptyvstack)r!   rQ   r0   r3   r4   rR   ZptestrZrshapeiiZjjr   )r   r   test_polyvalfromroots   sV    


 
&
6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 )Nincompatibler   )r   rD   )r   rQ   r	   rW   r
   	polyval2dc2dr   r,   rX   r   rM   )
r!   x1x2x3y1y2y3r3   r4   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 )Nra   r   )r   rD   )r   rQ   r	   rW   r
   	polyval3dc3dr   r,   rX   r   rM   )
r!   rd   re   rf   rg   rh   ri   r3   r4   rj   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 )Nzi,j->ij)r   rD   )r   rD   r   rD   )r   rQ   r,   einsumr
   Z
polygrid2drc   r   rX   r   rM   )
r!   rd   re   rf   rg   rh   ri   r3   r4   rj   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 )Nz
i,j,k->ijk)r   rD   )r   rD   r   rD   r   rD   )r   rQ   r,   ro   r
   Z
polygrid3drm   r   rX   r   rM   )
r!   rd   re   rf   rg   rh   ri   r3   r4   rj   r   r   r   test_polygrid3d  s    

zTestEvaluation.test_polygrid3dN)r&   r'   r(   r,   r@   Zc1dro   rc   rm   rZ   r   r
   rJ   rQ   rS   r`   rk   rn   rp   rq   r   r   r   r   rC   s   s   $@rC   c               @   s   e Zd Zdd Zdd ZdS )TestIntegralc          	   C   sd  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 Q R X xFtd	d
D ]8}dg|d	  dg }tjdg||d}t|ddg qW xftd
D ]Z}|d }dg| dg }|gdg|  d| g }tj|d|gd}tt	|t	| qW xPtd
D ]D}|d }dg| dg }tj|d|gdd}tt
d|| qZW xjtd
D ]^}|d }dg| dg }|gdg|  d	| g }tj|d|gd	d}tt	|t	| qW xtd
D ]z}xrtd	d
D ]d}dg| dg }|d d  }x t|D ]}tj|dd}qRW tj||d}tt	|t	| q(W qW xtd
D ]}xtd	d
D ]r}dg| dg }|d d  }x$t|D ]}tj|d|gd}qW tj||tt|d}tt	|t	| qW qW xtd
D ]}xtd	d
D ]v}dg| dg }|d d  }x&t|D ]}tj|d|gdd}qpW tj||tt|dd}tt	|t	| qFW q6W xtd
D ]}xtd	d
D ]v}dg| dg }|d d  }x&t|D ]}tj|d|gd	d}q
W tj||tt|d	d}tt	|t	| qW qW d S )Nr   g      ?r   r   )lbnd)scl)axisg      ?r   r   )mk)rv   rw   rs   )rv   rw   rt   )rv   )r   	TypeErrorr
   polyintrW   r   DeprecationWarningr+   r   r   rJ   list)r!   r0   rw   r4   rt   Zpolr3   r1   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)rD   r   c             S   s   g | ]}t |qS r   )r
   ry   )rE   rA   r   r   r   rF   x  s    z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   )ru   c             S   s   g | ]}t |qS r   )r
   ry   )rE   rA   r   r   r   rF   |  s    r   c             S   s   g | ]}t j|d dqS )rD   )rw   )r
   ry   )rE   rA   r   r   r   rF     s    rD   )rw   ru   )r,   rZ   r]   Tr
   ry   r   )r!   rc   r3   r4   r   r   r   test_polyint_axist  s    

zTestIntegral.test_polyint_axisN)r&   r'   r(   r|   r~   r   r   r   r   rr   "  s   Prr   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 x@tdD ]4}dg| dg }tj|dd}tt|t| q.W x^tdD ]R}xLtddD ]>}dg| dg }tjtj||d|d}t	t|t| qW qpW xbtdD ]V}xPtddD ]B}dg| dg }tjtj||dd|dd}t	t|t| qW qW d S )	Nr   g      ?r   r   r   )rv   r   )rv   rt   )
r   rx   r
   polyderrW   r+   r   r   ry   r   )r!   r0   r3   r4   r1   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 )N)rD   r   c             S   s   g | ]}t |qS r   )r
   r   )rE   rA   r   r   r   rF     s    z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   )ru   c             S   s   g | ]}t |qS r   )r
   r   )rE   rA   r   r   r   rF     s    r   )r,   rZ   r]   r}   r
   r   r   )r!   rc   r3   r4   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 )
TestVander)rD   r   r   r   c             C   s   t d}t|d}t|jdk x:tdD ].}dg| dg }t|d|f t|| q.W t 	ddgddgdd	gg}t|d}t|jd
k x:tdD ].}dg| dg }t|d|f t|| qW d S )NrD   )rD   r   r   r   r   .r   r      )rD   r   r   )
r,   r?   r
   
polyvanderr   rM   r+   r   rJ   r@   )r!   r   vr0   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 )N)r   rD   r   r   )r   r   r   )r   r,   rZ   r
   Zpolyvander2drb   dotflatr   r   rM   )r!   rd   re   rf   rA   vanr3   r4   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   rD   r   r   r   rD   )r   r      )r   r,   rZ   r
   Zpolyvander3drl   r   r   r   r   rM   )r!   rd   re   rf   rA   r   r3   r4   r   r   r   test_polyvander3d  s    
zTestVander.test_polyvander3dc             C   s   t d}tttj|d d S )NrD   r   )r,   r?   r   rW   r
   r   )r!   r   r   r   r   test_polyvandernegdeg  s    
z TestVander.test_polyvandernegdegN)
r&   r'   r(   r,   rZ   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 )Nr   )r   rW   r
   polycompanion)r!   r   r   r   test_raises  s    zTestCompanion.test_raisesc             C   s@   x:t ddD ],}dg| dg }tt|j||fk qW d S )Nr   r   r   )r+   r   r
   r   rM   )r!   r0   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   g      )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 xltddD ]^}tttj dd| d dd d }t	| }t |d|d   }tt|t| q&W d S )Nr   r   r   r   )
r
   polyfromrootsr   r   r+   r,   cosrL   piTlist)r!   r4   r0   rootsr3   r   r   r   test_polyfromroots  s    
*zTestMisc.test_polyfromrootsc             C   sp   t tdgg  t tddgdg xBtddD ]4}tdd|}tt|}t t|t| q4W d S )Nr   r   g      r   r   )r   r
   rY   r+   r,   rL   r   r   )r!   r0   r3   r4   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   rD   r   r   y              ?y             )r   rW   r
   Zpolyfitrx   r,   rL   r   lenr   rJ   r@   r}   Z
zeros_likecopy)r!   r   r   r   rQ   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   rW   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 )NrD   r   )r   r
   polyline)r!   r   r   r   test_polylineT  s    zTestMisc.test_polylinec             C   s   t tdddg d S )NrD   r   )r   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   numpyr,   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)   rC   rr   r   r   r   r   r   r   r   r   <module>   s2   $
F 0c(4