B
    F0dI                 @   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 edgZeddgZedddgZeddddgZed	dd
ddgZeddddddgZedddddddgZeddddddddgZedddddddddg	Zeddddddddddg
Zeeeeeeeeeeg
Z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#G d)d* d*Z$G d+d, d,Z%G d-d. d.Z&dS )/zTests for hermite_e module.

    )reduceN)polyval)assert_almost_equalassert_raisesassert_equalassert_      i   ii-   ii   ii\   ii  iiz  ic             C   s   t j| ddS )Ngư>)Ztol)herme	hermetrim)x r   W/var/www/html/venv/lib/python3.7/site-packages/numpy/polynomial/tests/test_hermite_e.pytrim   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hermedomain)selfr   r   r   test_hermedomain!   s    zTestConstants.test_hermedomainc             C   s   t tjdg d S )Nr   )r   r   Z	hermezero)r   r   r   r   test_hermezero$   s    zTestConstants.test_hermezeroc             C   s   t tjdg d S )Nr   )r   r   Zhermeone)r   r   r   r   test_hermeone'   s    zTestConstants.test_hermeonec             C   s   t tjddg d S )Nr   r   )r   r   Zhermex)r   r   r   r   test_hermex*   s    zTestConstants.test_hermexN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s   r   c               @   sJ   e Zd ZedddZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )TestArithmeticr
   r   d   c             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 )N   zAt i=z, j=r   r   )err_msg)rangenpzerosmaxr   hermeaddr   r   )r   ijmsgtgtresr   r   r   test_hermeadd1   s    $zTestArithmetic.test_hermeaddc             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hermesubr   r   )r   r(   r)   r*   r+   r,   r   r   r   test_hermesub;   s    $zTestArithmetic.test_hermesubc             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g }t t|| q6W d S )Nr   r   r!   )r   r   Z	hermemulxr#   )r   r(   Zserr+   r   r   r   test_hermemulxE   s    zTestArithmetic.test_hermemulxc       
      C   s   xt dD ]}dg| dg }t| j|}xt dD ]x}d| d| }dg| dg }t| j|}t||}t| j|}	tt||| d k| t|	|| |d q6W q
W d S )Nr!   r   r   zAt i=z, j=)r"   )r#   r   hermevalr   hermemulr   lenr   )
r   r(   Zpol1Zval1r)   r*   Zpol2Zval2Zpol3Zval3r   r   r   test_hermemulM   s    zTestArithmetic.test_hermemulc       
      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   )r"   )r#   r   r'   Zhermedivr1   r   r   )
r   r(   r)   r*   cicjr+   Zquoremr,   r   r   r   test_hermediv[   s    zTestArithmetic.test_hermedivc             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   r1   arrayZhermepowr   r   )r   r(   r)   r*   cr+   r,   r   r   r   test_hermepowf   s    zTestArithmetic.test_hermepowN)r   r   r   r$   linspacer   r-   r.   r/   r3   r7   r;   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S )TestEvaluationg      @g       @g      @zi,j->ijz
i,j,k->ijk)r   r!      r   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   ).0r:   )r   r   r   
<listcomp>   s    z0TestEvaluation.test_hermeval.<locals>.<listcomp>
   zAt i=)r"   r   r>   )r   r   r0   sizer$   r<   Helistr#   r   r%   shape)r   yr(   r*   r+   r,   Zdimsr   )r   r   test_hermevalz   s    


zTestEvaluation.test_hermevalc       
      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>   r   )r   rE   r   
ValueErrorr   
hermeval2dc2dr   r$   onesr   rD   )
r   x1x2x3y1y2y3r+   r,   zr   r   r   test_hermeval2d   s    

zTestEvaluation.test_hermeval2dc       
      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>   r   )r   rE   r   rG   r   
hermeval3dc3dr   r$   rJ   r   rD   )
r   rK   rL   rM   rN   rO   rP   r+   r,   rQ   r   r   r   test_hermeval3d   s    

zTestEvaluation.test_hermeval3dc       
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )Nzi,j->ij)r>   r   )r>   r   r>   r   )r   rE   r$   einsumr   Zhermegrid2drI   r   rJ   r   rD   )
r   rK   rL   rM   rN   rO   rP   r+   r,   rQ   r   r   r   test_hermegrid2d   s    

zTestEvaluation.test_hermegrid2dc       
      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>   r   )r>   r   r>   r   r>   r   )r   rE   r$   rV   r   Zhermegrid3drT   r   rJ   r   rD   )
r   rK   rL   rM   rN   rO   rP   r+   r,   rQ   r   r   r   test_hermegrid3d   s    

zTestEvaluation.test_hermegrid3dN)r   r   r   r$   r9   Zc1drV   rI   rT   randomr   r   rE   rF   rR   rU   rW   rX   r   r   r   r   r=   p   s   r=   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)r^   r_   r[   )r^   r_   r\   )r^   )r   	TypeErrorr   hermeintrG   r#   r   
poly2herme
herme2polyr   r0   list)
r   r(   r_   r,   r\   polr+   Zhermepolra   r)   r   r   r   test_hermeint   s    




zTestIntegral.test_hermeintc             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      c             S   s   g | ]}t |qS r   )r   ra   )r?   r:   r   r   r   r@   '  s    z3TestIntegral.test_hermeint_axis.<locals>.<listcomp>r   )r]   c             S   s   g | ]}t |qS r   )r   ra   )r?   r:   r   r   r   r@   +  s    r   c             S   s   g | ]}t j|d dqS )r   )r_   )r   ra   )r?   r:   r   r   r   r@   /  s    r   )r_   r]   )r$   rY   vstackTr   ra   r   )r   rI   r+   r,   r   r   r   test_hermeint_axis#  s    

zTestIntegral.test_hermeint_axisN)r   r   r   rf   rj   r   r   r   r   rZ      s   SrZ   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   )r^   r>   )r^   r\   )
r   r`   r   hermederrG   r#   r   r   ra   r   )r   r(   r+   r,   r)   r   r   r   test_hermeder6  s"    zTestDerivative.test_hermederc             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)r   rg   c             S   s   g | ]}t |qS r   )r   rl   )r?   r:   r   r   r   r@   T  s    z5TestDerivative.test_hermeder_axis.<locals>.<listcomp>r   )r]   c             S   s   g | ]}t |qS r   )r   rl   )r?   r:   r   r   r   r@   X  s    r   )r$   rY   rh   ri   r   rl   r   )r   rI   r+   r,   r   r   r   test_hermeder_axisP  s    
z!TestDerivative.test_hermeder_axisN)r   r   r   rm   rn   r   r   r   r   rk   4  s   rk   c               @   s8   e Zd Zejdd d Zdd Zdd Zdd	 Zd
S )
TestVander)r   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 )Nr   )r   rg   rg   r   r   .r>   r!      )r   r>   rg   )
r$   r8   r   hermevanderr   rD   r#   r   r0   r9   )r   r   vr(   coefr   r   r   test_hermevandera  s    
zTestVander.test_hermevanderc             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>   r   r   r>   )r   r!   rp   )r   r$   rY   r   Zhermevander2drH   dotflatr   r   rD   )r   rK   rL   rM   r:   vanr+   r,   r   r   r   test_hermevander2dr  s    
zTestVander.test_hermevander2dc             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   rg   r   r>   r   )r   r!      )r   r$   rY   r   Zhermevander3drS   ru   rv   r   r   rD   )r   rK   rL   rM   r:   rw   r+   r,   r   r   r   test_hermevander3d  s    
zTestVander.test_hermevander3dN)	r   r   r   r$   rY   r   rt   rx   rz   r   r   r   r   ro   ]  s   ro   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_hermefit.<locals>.fc             S   s   | d | d  d S )Nrg   r>   r   r   )r   r   r   r   f2  s    z%TestFitting.test_hermefit.<locals>.f2r   r	   r   r>   )wrp   r   rg   r!   y              ?y             )r   rG   r   Zhermefitr`   r$   r<   r   r2   r   r0   r9   ri   Z
zeros_likecopy)r   r|   r}   r   rE   Zcoef3Zcoef4Zcoef2dr~   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   test_hermefit  sp    "


&zTestFitting.test_hermefitN)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   rG   r   hermecompanion)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   rD   )r   r(   rs   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S )	TestGaussc             C   s   t d\}}t |d}t|j| |}dt|  }|d d d f | | }t|t	d tdtj
 }t| | d S )Nr    c   r   r>   )r   Z
hermegaussrq   r$   ru   ri   sqrtZdiagonalr   eyepisum)r   r   r~   rr   vvZvdr+   r   r   r   test_100  s    zTestGauss.test_100N)r   r   r   r   r   r   r   r   r     s   r   c               @   sD   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S )TestMiscc          	   C   s   t g }tt|dg xtddD ]z}tttj dd| d dd d }t |}t 	||}d}t
t||d k tt |d d t|| q&W d S )Nr   r!   r   r>   r	   )r   hermefromrootsr   r   r#   r$   cosr<   r   r0   r   r2   rc   )r   r,   r(   rootsre   r+   r   r   r   test_hermefromroots  s    
*
zTestMisc.test_hermefromrootsc             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	   r>   r!   )r   r   Z
hermerootsr#   r$   r<   r   r   )r   r(   r+   r,   r   r   r   test_hermeroots
  s    zTestMisc.test_hermerootsc             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   rG   r   r   r   )r   rs   r   r   r   test_hermetrim  s
    zTestMisc.test_hermetrimc             C   s   t tddddg d S )Nr   rg   )r   r   Z	hermeline)r   r   r   r   test_hermeline  s    zTestMisc.test_hermelinec             C   s6   x0t dD ]$}ttdg| dg t|  q
W d S )NrA   r   r   )r#   r   r   rc   rC   )r   r(   r   r   r   test_herme2poly   s    zTestMisc.test_herme2polyc             C   s6   x0t dD ]$}ttt| dg| dg  q
W d S )NrA   r   r   )r#   r   r   rb   rC   )r   r(   r   r   r   test_poly2herme$  s    zTestMisc.test_poly2hermec             C   s8   t ddd}t d|d  }t|}t|| d S )Nr!      g      r>   )r$   r<   expr   Zhermeweightr   )r   r   r+   r,   r   r   r   test_weight(  s    
zTestMisc.test_weightN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   r   )'__doc__	functoolsr   numpyr$   Znumpy.polynomial.hermite_eZ
polynomialZ	hermite_er   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   r9   ZHe0ZHe1ZHe2ZHe3ZHe4ZHe5ZHe6ZHe7ZHe8ZHe9rC   r   r   r   r=   rZ   rk   ro   r{   r   r   r   r   r   r   r   <module>   s6   B^f)0M