U
    ÉZj‘H  ã                   @   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 d0d1„ d1ƒZ"G d2d3„ d3ƒZ#G d4d5„ d5ƒZ$G d6d7„ d7ƒZ%G d8d9„ d9ƒZ&dS ):zTests for hermite module.

é    )ÚreduceN©Úpolyval)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_é   é   éþÿÿÿé   iôÿÿÿé   é   iÐÿÿÿé   éx   i`ÿÿÿé    iˆÿÿÿiÐ  i þÿÿé@   ipùÿÿi   iÀúÿÿé€   i�  i€Ëÿÿi€4  i òÿÿé   i v  i Åþÿi ½  i Üÿÿi   c                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Ztol)ÚhermÚhermtrim©Úx© r   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/numpy/polynomial/tests/test_hermite.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 )Néÿÿÿÿr	   )r   r   Z
hermdomain©Úselfr   r   r   Útest_hermdomain!   s    zTestConstants.test_hermdomainc                 C   s   t tjdgƒ d S )Nr   )r   r   Zhermzeror   r   r   r   Útest_hermzero$   s    zTestConstants.test_hermzeroc                 C   s   t tjdgƒ d S ©Nr	   )r   r   Zhermoner   r   r   r   Útest_hermone'   s    zTestConstants.test_hermonec                 C   s   t tjddgƒ d S )Nr   ç      à?)r   r   Zhermxr   r   r   r   Ú
test_hermx*   s    zTestConstants.test_hermxN)Ú__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 )ÚTestArithmeticéýÿÿÿé   é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   Úhermaddr   r   ©r   ÚiÚjÚmsgÚtgtÚresr   r   r   Útest_hermadd1   s    $zTestArithmetic.test_hermaddc                 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-   )r3   r4   r5   r6   r   Zhermsubr   r   r8   r   r   r   Útest_hermsub;   s    $zTestArithmetic.test_hermsubc                 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   r   Zhermmulxr3   )r   r9   Zserr<   r   r   r   Útest_hermmulxE   s    zTestArithmetic.test_hermmulxc           
      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/   r0   r1   )r3   r   Úhermvalr   Úhermmulr   Úlenr   )
r   r9   Zpol1Zval1r:   r;   Zpol2Zval2Zpol3Zval3r   r   r   Útest_hermmulM   s    zTestArithmetic.test_hermmulc           
      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/   r0   r   r	   r1   )r3   r   r7   ZhermdivrB   r   r   )
r   r9   r:   r;   ÚciÚcjr<   ZquoÚremr=   r   r   r   Útest_hermdiv[   s    zTestArithmetic.test_hermdivc                 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/   r0   r	   r1   )
r3   r4   Úaranger   r   rB   ÚarrayZhermpowr   r   )r   r9   r:   r;   Úcr<   r=   r   r   r   Útest_hermpowf   s    zTestArithmetic.test_hermpowN)r&   r'   r(   r4   Úlinspacer   r>   r?   r@   rD   rH   rL   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
   r	   g       @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   ©Ú.0rK   r   r   r   Ú
<listcomp>€   s     z/TestEvaluation.test_hermval.<locals>.<listcomp>é
   r/   r1   r+   r
   )r   r   rA   Úsizer4   rM   ÚHlistr3   r   r5   Úshape)r   Úyr9   r;   r<   r=   Zdimsr   r   r   Útest_hermvalz   s    


zTestEvaluation.test_hermvalc           
      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   rY   r   Ú
ValueErrorr   Ú	hermval2dÚc2dr   r4   Úonesr   rX   ©
r   Úx1Úx2Úx3Úy1Úy2Zy3r<   r=   Úzr   r   r   Útest_hermval2d�   s    

zTestEvaluation.test_hermval2dc           
      C   sŒ   | j \}}}| j\}}}tttj|||d d… | jƒ || | }t |||| j¡}t||ƒ t 	d¡}	t |	|	|	| j¡}t
|jdkƒ d S r[   )r   rY   r   r]   r   Ú	hermval3dÚc3dr   r4   r`   r   rX   ra   r   r   r   Útest_hermval3d    s    

zTestEvaluation.test_hermval3dc           
      C   sl   | j \}}}| j\}}}t d||¡}t ||| j¡}t||ƒ t d¡}	t |	|	| j¡}t	|j
dkƒ d S )NrO   r\   )r
   r+   r
   r+   )r   rY   r4   Úeinsumr   Z
hermgrid2dr_   r   r`   r   rX   ra   r   r   r   Útest_hermgrid2d±   s    

zTestEvaluation.test_hermgrid2dc           
      C   sr   | j \}}}| j\}}}t d|||¡}t |||| j¡}t||ƒ t d¡}	t |	|	|	| j¡}t	|j
dkƒ d S )NrP   r\   )r
   r+   r
   r+   r
   r+   )r   rY   r4   rl   r   Z
hermgrid3drj   r   r`   r   rX   ra   r   r   r   Útest_hermgrid3d¿   s    

zTestEvaluation.test_hermgrid3dN)r&   r'   r(   r4   rJ   Zc1drl   r_   rj   Úrandomr   r   rY   rZ   rh   rk   rm   rn   r   r   r   r   rN   p   s   rN   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   r	   )Úlbnd)Úscl©Úaxisr
   r.   )ÚmÚk)ru   rv   rq   )ru   rv   rr   ©ru   )r   Ú	TypeErrorr   Úhermintr]   r3   r   Ú	poly2hermÚ	herm2polyr   rA   Úlist)
r   r9   rv   r=   rr   Úpolr<   Zhermpolry   r:   r   r   r   Útest_hermintÐ   s€    




zTestIntegral.test_hermintc                 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+   r   c                 S   s   g | ]}t  |¡‘qS r   ©r   ry   rR   r   r   r   rT   '  s     z2TestIntegral.test_hermint_axis.<locals>.<listcomp>r   rs   c                 S   s   g | ]}t  |¡‘qS r   r€   rR   r   r   r   rT   +  s     r	   c                 S   s   g | ]}t j|d d�‘qS )r+   )rv   r€   rR   r   r   r   rT   /  s     r+   )rv   rt   )r4   ro   ÚvstackÚTr   ry   r   ©r   r_   r<   r=   r   r   r   Útest_hermint_axis#  s    

zTestIntegral.test_hermint_axisN)r&   r'   r(   r~   r„   r   r   r   r   rp   Î   s   Srp   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   r$   r   r.   r	   rw   r
   )ru   rr   )
r   rx   r   Úhermderr]   r3   r   r   ry   r   )r   r9   r<   r=   r:   r   r   r   Útest_hermder6  s     zTestDerivative.test_hermderc                 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†   rR   r   r   r   rT   S  s     z4TestDerivative.test_hermder_axis.<locals>.<listcomp>r   rs   c                 S   s   g | ]}t  |¡‘qS r   rˆ   rR   r   r   r   rT   W  s     r	   )r4   ro   r�   r‚   r   r†   r   rƒ   r   r   r   Útest_hermder_axisO  s    
z TestDerivative.test_hermder_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 )Ú
TestVanderrQ   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 ||¡ƒ qšd S )Nr+   r   r   r   r	   .r
   r.   é   )r+   r
   r   )
r4   rI   r   Ú
hermvanderr   rX   r3   r   rA   rJ   )r   r   Úvr9   Úcoefr   r   r   Útest_hermvander`  s    
zTestVander.test_hermvanderc                 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 )Nr\   r	   r
   )r	   r.   r‹   )r   r4   ro   r   Zhermvander2dr^   ÚdotÚflatr   r   rX   ©r   rb   rc   rd   rK   Zvanr<   r=   r   r   r   Útest_hermvander2dq  s    
zTestVander.test_hermvander2dc                 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+   r   r	   r
   r+   )r	   r.   é   )r   r4   ro   r   Zhermvander3dri   r�   r‘   r   r   rX   r’   r   r   r   Útest_hermvander3d~  s    
zTestVander.test_hermvander3dN)	r&   r'   r(   r4   ro   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	   r
   r   r   r   r   r   Úf�  s    z#TestFitting.test_hermfit.<locals>.fc                 S   s   | d | d  d S )Nr   r
   r	   r   r   r   r   r   Úf2’  s    z$TestFitting.test_hermfit.<locals>.f2r	   r   r   r
   )Úwr‹   r+   r   r.   y              ð?y       €      ð¿r$   )r   r]   r   Zhermfitrx   r4   rM   r   rC   r   rA   rJ   r‚   Z
zeros_likeÚcopy)r   r—   r˜   r   rY   Zcoef3Zcoef4Zcoef2dr™   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   Útest_hermfitŽ  sp    "


&zTestFitting.test_hermfitN)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   r]   r   Úhermcompanionr   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   )r3   r   r   r�   rX   )r   r9   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S )Ú	TestGaussc                 C   s„   t  d¡\}}t  |d¡}t |j| |¡}dt | ¡ ¡ }|d d …d f | | }t|t 	d¡ƒ t tj
¡}t| ¡ |ƒ d S )Nr,   éc   r	   )r   Z	hermgaussrŒ   r4   r�   r‚   ÚsqrtZdiagonalr   ÚeyeÚpiÚsum)r   r   r™   r�   Z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ƒ 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   r
   r   )r   Úhermfromrootsr   r   r3   r4   ÚcosrM   r¥   rA   r   rC   r{   )r   r=   r9   Úrootsr}   r<   r   r   r   Útest_hermfromrootsý  s    
*
zTestMisc.test_hermfromrootsc                 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	   g      à¿r
   r.   r   )r   r   Z	hermrootsr3   r4   rM   r©   r   )r   r9   r<   r=   r   r   r   Útest_hermroots	  s    zTestMisc.test_hermrootsc                 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   r]   r   r   r   )r   rŽ   r   r   r   Útest_hermtrim  s
    zTestMisc.test_hermtrimc                 C   s   t t dd¡ddgƒ d S )Nr+   r   r
   )r   r   Zhermliner   r   r   r   Útest_hermline  s    zTestMisc.test_hermlinec                 C   s2   t dƒD ]$}tt dg| dg ¡t| ƒ qd S ©NrU   r   r	   )r3   r   r   r{   rW   ©r   r9   r   r   r   Útest_herm2poly  s    zTestMisc.test_herm2polyc                 C   s2   t dƒD ]$}tt t| ¡dg| dg ƒ qd S r°   )r3   r   r   rz   rW   r±   r   r   r   Útest_poly2herm#  s    zTestMisc.test_poly2hermc                 C   s6   t  ddd¡}t  |d  ¡}t |¡}t||ƒ d S )Néûÿÿÿr.   é   r
   )r4   rM   Úexpr   Z
hermweightr   )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   Únumpyr4   Znumpy.polynomial.hermiteZ
polynomialZhermiter   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rJ   ZH0ZH1ZH2ZH3ZH4ZH5ZH6ZH7ZH8ZH9rW   r   r   r)   rN   rp   r…   rŠ   r–   rœ   r¡   r¨   r   r   r   r   Ú<module>   s6   B^f(0M