B
    F0d*P              
   @   s  d Z ddlmZ ddlZddlm  mZ ddl	m
Z
 ddl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#G d2d3 d3Z$G d4d5 d5Z%G d6d7 d7Z&G d8d9 d9Z'dS ):zTests for chebyshev module.

    )reduceN)polyval)assert_almost_equalassert_raisesassert_equalassert_c             C   s   t j| ddS )Ngư>)Ztol)chebchebtrim)x r   W/var/www/html/venv/lib/python3.7/site-packages/numpy/polynomial/tests/test_chebyshev.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S )TestPrivatec             C   sh   xbt dD ]V}tdgdg|  tj}tdg| dg dg|  tj}t|}t|| q
W d S )Nr   r   r   g      ?)rangenparraydoubler   Z_cseries_to_zseriesr   )selfiinptgtresr   r   r   test__cseries_to_zseries!   s
    $
z$TestPrivate.test__cseries_to_zseriesc             C   sh   xbt dD ]V}tdg| dg dg|  tj}tdgdg|  tj}t|}t|| q
W d S )Nr   g      ?r   r   )r   r    r!   r"   r   Z_zseries_to_cseriesr   )r#   r$   r%   r&   r'   r   r   r   test__zseries_to_cseries(   s
    $
z$TestPrivate.test__zseries_to_cseriesN)__name__
__module____qualname__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	S )
TestConstantsc             C   s   t tjddg d S )Nr   r   )r   r   Z
chebdomain)r#   r   r   r   test_chebdomain2   s    zTestConstants.test_chebdomainc             C   s   t tjdg d S )Nr   )r   r   Zchebzero)r#   r   r   r   test_chebzero5   s    zTestConstants.test_chebzeroc             C   s   t tjdg d S )Nr   )r   r   Zchebone)r#   r   r   r   test_chebone8   s    zTestConstants.test_chebonec             C   s   t tjddg d S )Nr   r   )r   r   Zchebx)r#   r   r   r   
test_chebx;   s    zTestConstants.test_chebxN)r*   r+   r,   r.   r/   r0   r1   r   r   r   r   r-   0   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)r   r    zerosmaxr   chebaddr   r   )r#   r$   jmsgr&   r'   r   r   r   test_chebaddA   s    $zTestArithmetic.test_chebaddc             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   )r3   )r   r    r4   r5   r   Zchebsubr   r   )r#   r$   r7   r8   r&   r'   r   r   r   test_chebsubK   s    $zTestArithmetic.test_chebsubc             C   sz   t tdgdg t tdgddg xJtddD ]<}dg| dg }dg|d  dddg }t t|| q6W d S )Nr   r   r   g      ?)r   r   Zchebmulxr   )r#   r$   Zserr&   r   r   r   test_chebmulxU   s    zTestArithmetic.test_chebmulxc             C   s   xt dD ]}xt dD ]}d| d| }t|| d }|||   d7  < |t||   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   g      ?r   )r3   )r   r    r4   absr   chebmulr   r   )r#   r$   r7   r8   r&   r'   r   r   r   test_chebmul]   s    $zTestArithmetic.test_chebmulc       
      C   s   xt dD ]}xt dD ]z}d| d| }dg| dg }dg| dg }t||}t||\}}tt|||}	tt|	t||d qW q
W d S )Nr   zAt i=z, j=r   r   )r3   )r   r   r6   Zchebdivr=   r   r   )
r#   r$   r7   r8   cicjr&   Zquoremr'   r   r   r   test_chebdivg   s    zTestArithmetic.test_chebdivc             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   )r3   )
r   r    aranger   r   r=   r!   Zchebpowr   r   )r#   r$   r7   r8   cr&   r'   r   r   r   test_chebpowr   s    zTestArithmetic.test_chebpowN)	r*   r+   r,   r9   r:   r;   r>   rB   rE   r   r   r   r   r2   ?   s   


r2   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S )TestEvaluationg      @g       @g      ?zi,j->ijz
i,j,k->ijk)   r   r   r   g      ?g      @c                s   t tg dgjd tdd  fddtD }xHtdD ]<}d| }|| }t dg| dg }t|||d q>W 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 S )Nr   r   r   c                s   g | ]}t  |qS r   )r   ).0rD   )r
   r   r   
<listcomp>   s    z/TestEvaluation.test_chebval.<locals>.<listcomp>
   zAt i=)r3   rG   r   )r   r   chebvalsizer    linspaceTlistr   r   r4   shape)r#   yr$   r8   r&   r'   Zdimsr   )r
   r   test_chebval   s    


zTestEvaluation.test_chebvalc       
      C   s   | j \}}}| j\}}}tttj||d d | j || }t||| j}t|| t	d}	t|	|	| j}t
|jdk d S )Nr   )r   rG   )r
   rP   r   
ValueErrorr   	chebval2dc2dr   r    onesr   rO   )
r#   x1x2x3y1y2y3r&   r'   zr   r   r   test_chebval2d   s    

zTestEvaluation.test_chebval2dc       
      C   s   | j \}}}| j\}}}tttj|||d d | j || | }t|||| j}t|| t	d}	t|	|	|	| j}t
|jdk d S )Nr   )r   rG   )r
   rP   r   rR   r   	chebval3dc3dr   r    rU   r   rO   )
r#   rV   rW   rX   rY   rZ   r[   r&   r'   r\   r   r   r   test_chebval3d   s    

zTestEvaluation.test_chebval3dc       
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )Nzi,j->ij)r   rG   )r   rG   r   rG   )r
   rP   r    einsumr   Z
chebgrid2drT   r   rU   r   rO   )
r#   rV   rW   rX   rY   rZ   r[   r&   r'   r\   r   r   r   test_chebgrid2d   s    

zTestEvaluation.test_chebgrid2dc       
      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   rG   )r   rG   r   rG   r   rG   )r
   rP   r    ra   r   Z
chebgrid3dr_   r   rU   r   rO   )
r#   rV   rW   rX   rY   rZ   r[   r&   r'   r\   r   r   r   test_chebgrid3d   s    

zTestEvaluation.test_chebgrid3dN)r*   r+   r,   r    r!   Zc1dra   rT   r_   randomr
   r   rP   rQ   r]   r`   rb   rc   r   r   r   r   rF   |   s   rF   c               @   s   e Zd Zdd Zdd ZdS )TestIntegralc       
   	   C   sr  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 xFtdd	D ]8}dg|d  dg }tjdg||d
}t|ddg qW xztd	D ]n}|d }dg| dg }|gdg|  d| g }t|}tj|d|gd
}t|}tt	|t	| qW xZtd	D ]N}|d }dg| dg }t|}tj|d|gdd}tt
d|| qJW x~td	D ]r}|d }dg| dg }|gdg|  d| g }t|}tj|d|gdd}t|}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}q`W tj||	d}tt	|t	| q6W 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}q~W tj||	tt|	dd}tt	|t	| qTW qDW 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)axisr   r   )mk)ri   rj   rf   )ri   rj   rg   )ri   )r   	TypeErrorr   chebintrR   r   r   	poly2cheb	cheb2polyr   rK   list)
r#   r$   rj   r'   rg   Zpolr&   Zchebpolrl   r7   r   r   r   test_chebint   s    




zTestIntegral.test_chebintc             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)rG   r   c             S   s   g | ]}t |qS r   )r   rl   )rH   rD   r   r   r   rI   3  s    z2TestIntegral.test_chebint_axis.<locals>.<listcomp>r   )rh   c             S   s   g | ]}t |qS r   )r   rl   )rH   rD   r   r   r   rI   7  s    r   c             S   s   g | ]}t j|d dqS )rG   )rj   )r   rl   )rH   rD   r   r   r   rI   ;  s    rG   )rj   rh   )r    rd   vstackTr   rl   r   )r#   rT   r&   r'   r   r   r   test_chebint_axis/  s    

zTestIntegral.test_chebint_axisN)r*   r+   r,   rp   rs   r   r   r   r   re      s   Sre   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   )ri   r   )ri   rg   )
r   rk   r   chebderrR   r   r   r   rl   r   )r#   r$   r&   r'   r7   r   r   r   test_chebderB  s     zTestDerivative.test_chebderc             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)rG   r   c             S   s   g | ]}t |qS r   )r   ru   )rH   rD   r   r   r   rI   _  s    z4TestDerivative.test_chebder_axis.<locals>.<listcomp>r   )rh   c             S   s   g | ]}t |qS r   )r   ru   )rH   rD   r   r   r   rI   c  s    r   )r    rd   rq   rr   r   ru   r   )r#   rT   r&   r'   r   r   r   test_chebder_axis[  s    
z TestDerivative.test_chebder_axisN)r*   r+   r,   rv   rw   r   r   r   r   rt   @  s   rt   c               @   s8   e Zd Zejdd d Zdd Zdd Zdd	 Zd
S )
TestVander)rG   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 )NrG   )rG   r   r   r   r   .r   r      )rG   r   r   )
r    rC   r   
chebvanderr   rO   r   r   rK   r!   )r#   r
   vr$   coefr   r   r   test_chebvanderl  s    
zTestVander.test_chebvanderc             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   rG   r   r   )r   r   ry   )r
   r    rd   r   Zchebvander2drS   dotflatr   r   rO   )r#   rV   rW   rX   rD   vanr&   r'   r   r   r   test_chebvander2d}  s    
zTestVander.test_chebvander2dc             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   rG   r   r   r   rG   )r   r      )r
   r    rd   r   Zchebvander3dr^   r~   r   r   r   rO   )r#   rV   rW   rX   rD   r   r&   r'   r   r   r   test_chebvander3d  s    
zTestVander.test_chebvander3dN)	r*   r+   r,   r    rd   r
   r}   r   r   r   r   r   r   rx   h  s   rx   c               @   s   e Zd Zdd ZdS )TestFittingc          	   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||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#TestFitting.test_chebfit.<locals>.fc             S   s   | d | d  d S )Nr   r   r   r   )r
   r   r   r   f2  s    z$TestFitting.test_chebfit.<locals>.f2r   r   r   r   )wry   rG   r   r   y              ?y             )r   rR   r   Zchebfitrk   r    rM   r   lenr   rK   r!   rr   Z
zeros_likecopy)r#   r   r   r
   rP   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   test_chebfit  sp    "


&zTestFitting.test_chebfitN)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	S )
TestInterpolatec             C   s   ||d  |d  S )Nr   r   r   )r#   r
   r   r   r   r     s    zTestInterpolate.fc             C   s(   t ttj| jd t ttj| jd d S )Nr   g      $@)r   rR   r   chebinterpolater   rk   )r#   r   r   r   test_raises  s    zTestInterpolate.test_raisesc             C   s6   x0t ddD ]"}tt| j|j|d fk qW d S )Nr   r   )r   r   r   r   r   rO   )r#   degr   r   r   test_dimensions  s    zTestInterpolate.test_dimensionsc             C   sr   dd }t ddd}xVtddD ]H}xBtd|d D ]0}t|||f}tt|||||dd q6W q"W d S )	Nc             S   s   | | S )Nr   )r
   pr   r   r   powx  s    z0TestInterpolate.test_approximation.<locals>.powxr   r   rJ   r      )decimal)r    rM   r   r   r   r   rK   )r#   r   r
   r   r   rD   r   r   r   test_approximation  s    z"TestInterpolate.test_approximationN)r*   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S )TestCompanionc             C   s"   t ttjg  t ttjdg d S )Nr   )r   rR   r   chebcompanion)r#   r   r   r   r      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   rO   )r#   r$   r|   r   r   r   r     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S )	TestGaussc             C   s~   t d\}}t |d}t|j| |}dt|  }|d d d f | | }t|t	d tj
}t| | d S )Nd   c   r   )r   Z	chebgaussrz   r    r~   rr   sqrtZdiagonalr   eyepisum)r#   r
   r   r{   vvZvdr&   r   r   r   test_100  s    zTestGauss.test_100N)r*   r+   r,   r   r   r   r   r   r     s   r   c               @   sT   e Z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 )TestMiscc          	   C   s   t g }tt|dg xttddD ]f}tttj dd| d dd d }dg| dg }t |d|d   }tt|t| q&W d S )Nr   r   r   r   )	r   chebfromrootsr   r   r   r    cosrM   r   )r#   r'   r$   rootsr&   r   r   r   test_chebfromroots"  s    
*zTestMisc.test_chebfromrootsc             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   Z	chebrootsr   r    rM   r   r   )r#   r$   r&   r'   r   r   r   test_chebroots+  s    zTestMisc.test_chebrootsc             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   rR   r   r	   r   )r#   r|   r   r   r   test_chebtrim3  s
    zTestMisc.test_chebtrimc             C   s   t tddddg d S )NrG   r   )r   r   Zchebline)r#   r   r   r   test_chebline>  s    zTestMisc.test_cheblinec             C   s6   x0t dD ]$}ttdg| dg t|  q
W d S )NrJ   r   r   )r   r   r   rn   rN   )r#   r$   r   r   r   test_cheb2polyA  s    zTestMisc.test_cheb2polyc             C   s6   x0t dD ]$}ttt| dg| dg  q
W d S )NrJ   r   r   )r   r   r   rm   rN   )r#   r$   r   r   r   test_poly2chebE  s    zTestMisc.test_poly2chebc             C   sN   t ddddd }dt d| t d|   }t|}t|| d S )Nr   r      g      ?)r    rM   r   r   Z
chebweightr   )r#   r
   r&   r'   r   r   r   test_weightI  s     
zTestMisc.test_weightc             C   s   t ttjd t ttjd dg}ttd| ddg}ttd| dddg}ttd	| d
dddg}ttd| d S )Ng      ?r   r   g;fg;f?r   gLXzgLXz?rG   g( 1kgŜ}ؿgŜ}?g( 1k?r   )r   rR   r   Zchebpts1r   )r#   r&   r   r   r   test_chebpts1O  s    
zTestMisc.test_chebpts1c             C   s   t ttjd t ttjd ddg}ttd| dddg}ttd| ddddg}ttd	| d
ddddg}ttd| d S )Ng      ?r   r   r   r   rG   g      g      ?r   g      gKfgKf?g      ?r   )r   rR   r   Zchebpts2r   )r#   r&   r   r   r   test_chebpts2^  s    
zTestMisc.test_chebpts2N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   	r   )(__doc__	functoolsr   numpyr    Znumpy.polynomial.chebyshevZ
polynomialZ	chebyshevr   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   r   ZT0ZT1ZT2ZT3ZT4ZT5ZT6ZT7ZT8ZT9rN   r   r-   r2   rF   re   rt   rx   r   r   r   r   r   r   r   r   r   <module>   s:   
=^f(0M