U
    ¸mœdßI  ã                   @   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úÿÿÿé   iöÿÿÿiñÿÿÿé-   i—ÿÿÿéi   iëÿÿÿi\þÿÿéÒ   iäÿÿÿi±  iûÿÿiz  iÜÿÿÿc                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Ztol)ÚhermeÚ	hermetrim©Úx© r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/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	hermezeror   r   r   r   Útest_hermezero$   s    zTestConstants.test_hermezeroc                 C   s   t tjdgƒ d S ©Nr	   )r   r   Zhermeoner   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hermexr   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ž   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 ©Né   úAt i=ú, 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ž   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%   )r+   r,   r-   r.   r   Zhermesubr   r   r0   r   r   r   Útest_hermesub;   s    $zTestArithmetic.test_hermesubc                 C   sv   t t dg¡dgƒ t t dg¡ddgƒ tddƒD ]<}dg| dg }dg|d  |ddg }t t |¡|ƒ q4d S )Nr   r	   r&   )r   r   Z	hermemulxr+   )r   r1   Zserr4   r   r   r   Útest_hermemulxE   s    zTestArithmetic.test_hermemulxc           
      C   s²   t dƒD ]¤}dg| dg }t | j|¡}t dƒD ]x}d|› d|› �}dg| dg }t | j|¡}t ||¡}t | j|¡}	tt|ƒ|| d k|ƒ t|	|| |d� q2qd S )Nr&   r   r	   r'   r(   r)   )r+   r   Úhermevalr   Úhermemulr   Úlenr   )
r   r1   Zpol1Zval1r2   r3   Zpol2Zval2Zpol3Zval3r   r   r   Útest_hermemulM   s    zTestArithmetic.test_hermemulc           
      C   s–   t dƒD ]ˆ}t dƒD ]z}d|› d|› �}dg| dg }dg| dg }t ||¡}t ||¡\}}t t ||¡|¡}	tt|	ƒt|ƒ|d� qqd S )Nr&   r'   r(   r   r	   r)   )r+   r   r/   Zhermedivr:   r   r   )
r   r1   r2   r3   ÚciÚcjr4   ZquoÚremr5   r   r   r   Útest_hermediv[   s    zTestArithmetic.test_hermedivc                 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	   r)   )
r+   r,   Úaranger   r   r:   ÚarrayZhermepowr   r   )r   r1   r2   r3   Úcr4   r5   r   r   r   Útest_hermepowf   s    zTestArithmetic.test_hermepowN)r    r!   r"   r,   Úlinspacer   r6   r7   r8   r<   r@   rD   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      @úi,j->ijú
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 ƒ}tdƒD ]<}d|› �}|| }t ˆ dg| dg ¡}t|||d� q<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 S )Nr	   r   r
   c                    s   g | ]}t ˆ |ƒ‘qS r   r   ©Ú.0rC   r   r   r   Ú
<listcomp>€   s     z0TestEvaluation.test_hermeval.<locals>.<listcomp>é
   r'   r)   r   rJ   )r   r   r9   Úsizer,   rE   ÚHelistr+   r   r-   Úshape)r   Úyr1   r3   r4   r5   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 ©NrJ   ©rJ   r   )r   rR   r   Ú
ValueErrorr   Ú
hermeval2dÚc2dr   r,   Úonesr   rQ   ©
r   Úx1Úx2Úx3Úy1Úy2Zy3r4   r5   Ú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 rT   )r   rR   r   rV   r   Ú
hermeval3dÚc3dr   r,   rY   r   rQ   rZ   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 )NrG   rU   )rJ   r   rJ   r   )r   rR   r,   Úeinsumr   Zhermegrid2drX   r   rY   r   rQ   rZ   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 )NrH   rU   )rJ   r   rJ   r   rJ   r   )r   rR   r,   re   r   Zhermegrid3drc   r   rY   r   rQ   rZ   r   r   r   Útest_hermegrid3d¿   s    

zTestEvaluation.test_hermegrid3dN)r    r!   r"   r,   rB   Zc1dre   rX   rc   Úrandomr   r   rR   rS   ra   rd   rf   rg   r   r   r   r   rF   p   s   rF   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestIntegralc           
   	   C   s2  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dd	ƒD ]8}dg|d  dg }tjdg||d
�}t|ddgƒ q†td	ƒD ]n}|d }dg| dg }|gdg|  d| g }t |¡}tj|d|gd
�}t |¡}tt	|ƒt	|ƒƒ qÈtd	ƒD ]N}|d }dg| dg }t |¡}tj|d|gdd�}tt 
d|¡|ƒ �q@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	|ƒƒ �q˜td	ƒD ]r}tdd	ƒD ]`}	dg| dg }|d d … }t|	ƒD ]}tj|dd�}�qJt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�}�qPt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©ÚaxisrJ   r&   )ÚmÚk)ro   rp   rk   )ro   rp   rl   ©ro   )r   Ú	TypeErrorr   ÚhermeintrV   r+   r   Ú
poly2hermeÚ
herme2polyr   r9   Úlist)
r   r1   rp   r5   rl   Úpolr4   Zhermepolrs   r2   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   rs   rK   r   r   r   rM   '  s     z3TestIntegral.test_hermeint_axis.<locals>.<listcomp>r   rm   c                 S   s   g | ]}t  |¡‘qS r   r{   rK   r   r   r   rM   +  s     r	   c                 S   s   g | ]}t j|d d�‘qS )r   )rp   r{   rK   r   r   r   rM   /  s     r   )rp   rn   )r,   rh   ÚvstackÚTr   rs   r   ©r   rX   r4   r5   r   r   r   Útest_hermeint_axis#  s    

zTestIntegral.test_hermeint_axisN)r    r!   r"   rx   r   r   r   r   r   ri   Î   s   Sri   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   rj   r
   r&   r	   rq   rJ   )ro   rl   )
r   rr   r   ÚhermederrV   r+   r   r   rs   r   )r   r1   r4   r5   r2   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 )Nry   c                 S   s   g | ]}t  |¡‘qS r   ©r   r�   rK   r   r   r   rM   T  s     z5TestDerivative.test_hermeder_axis.<locals>.<listcomp>r   rm   c                 S   s   g | ]}t  |¡‘qS r   rƒ   rK   r   r   r   rM   X  s     r	   )r,   rh   r|   r}   r   r�   r   r~   r   r   r   Útest_hermeder_axisP  s    
z!TestDerivative.test_hermeder_axisN)r    r!   r"   r‚   r„   r   r   r   r   r€   4  s   r€   c                   @   s8   e Zd Zej d¡d d Zdd„ Zdd„ Zdd	„ Zd
S )Ú
TestVanderrI   rJ   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   ry   rz   r   r	   .rJ   r&   é   )r   rJ   rz   )
r,   rA   r   Úhermevanderr   rQ   r+   r   r9   rB   )r   r   Úvr1   Ú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 )NrU   r	   rJ   )r	   r&   r†   )r   r,   rh   r   Zhermevander2drW   ÚdotÚflatr   r   rQ   ©r   r[   r\   r]   rC   Zvanr4   r5   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)rJ   r   rz   r	   rJ   r   )r	   r&   é   )r   r,   rh   r   Zhermevander3drb   r‹   rŒ   r   r   rQ   r�   r   r   r   Útest_hermevander3d  s    
zTestVander.test_hermevander3dN)	r    r!   r"   r,   rh   r   rŠ   rŽ   r�   r   r   r   r   r…   ]  s   r…   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	   rJ   r   r   r   r   r   Úf�  s    z$TestFitting.test_hermefit.<locals>.fc                 S   s   | d | d  d S )Nrz   rJ   r	   r   r   r   r   r   Úf2“  s    z%TestFitting.test_hermefit.<locals>.f2r	   r
   r   rJ   )Úwr†   r   rz   r&   y              ð?y       €      ð¿)r   rV   r   Zhermefitrr   r,   rE   r   r;   r   r9   rB   r}   Z
zeros_likeÚcopy)r   r’   r“   r   rR   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 r   )r   rV   r   Úhermecompanionr   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˜   rQ   )r   r1   r‰   r   r   r   Útest_dimensionsà  s    zTestCompanion.test_dimensionsc                 C   s   t t ddg¡d dkƒ d S )Nr	   rJ   )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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	   rJ   )r   Z
hermegaussr‡   r,   r‹   r}   ÚsqrtZdiagonalr   ÚeyeÚpiÚsum)r   r   r”   rˆ   ÚvvZvdr4   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ƒ t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$d S )Nr	   r&   r   rJ   r
   )r   Úhermefromrootsr   r   r+   r,   ÚcosrE   r¡   r9   r   r;   ru   )r   r5   r1   Úrootsrw   r4   r   r   r   Útest_hermefromrootsþ  s    
*
zTestMisc.test_hermefromrootsc                 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
   rJ   r&   )r   r   Z
hermerootsr+   r,   rE   r¦   r   )r   r1   r4   r5   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 )NrJ   r
   r	   r   r   )r   rV   r   r   r   )r   r‰   r   r   r   Útest_hermetrim  s
    zTestMisc.test_hermetrimc                 C   s   t t dd¡ddgƒ d S )Nr   rz   )r   r   Z	hermeliner   r   r   r   Útest_hermeline  s    zTestMisc.test_hermelinec                 C   s2   t dƒD ]$}tt dg| dg ¡t| ƒ qd S ©NrN   r   r	   )r+   r   r   ru   rP   ©r   r1   r   r   r   Útest_herme2poly   s    zTestMisc.test_herme2polyc                 C   s2   t dƒD ]$}tt t| ¡dg| dg ƒ qd S r­   )r+   r   r   rt   rP   r®   r   r   r   Útest_poly2herme$  s    zTestMisc.test_poly2hermec                 C   s8   t  ddd¡}t  d|d  ¡}t |¡}t||ƒ d S )Néûÿÿÿr&   é   r›   rJ   )r,   rE   Úexpr   Zhermeweightr   )r   r   r4   r5   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   rB   ZHe0ZHe1ZHe2ZHe3ZHe4ZHe5ZHe6ZHe7ZHe8ZHe9rP   r   r   r#   rF   ri   r€   r…   r‘   r—   r�   r¥   r   r   r   r   Ú<module>   s6   B^f)0M