o
    Ô­j‘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 g d¢¡Ze g d	¢¡Ze g d
¢¡Ze g d¢¡Ze g d¢¡Ze g d¢¡Ze g d¢¡Ze g d¢¡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 module.

é    )ÚreduceN©Úpolyval)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_é   é   )éþÿÿÿr   é   )r   iôÿÿÿr   é   )é   r   iÐÿÿÿr   é   )r   éx   r   i`ÿÿÿr   é    )iˆÿÿÿr   iÐ  r   i þÿÿr   é@   )r   ipùÿÿr   i   r   iÀúÿÿr   é€   )	i�  r   i€Ëÿÿr   i€4  r   i òÿÿr   é   )
r   i v  r   i Åþÿr   i ½  r   i Üÿÿr   i   c                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Útol)ÚhermÚhermtrim©Úx© r   ú`/var/www/html/CropPilot/venv/lib/python3.10/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   ó   t tjddgƒ d S )Néÿÿÿÿr	   )r   r   Ú
hermdomain©Úselfr   r   r   Útest_hermdomain!   ó   zTestConstants.test_hermdomainc                 C   ó   t tjdgƒ d S )Nr   )r   r   Úhermzeror!   r   r   r   Útest_hermzero$   ó   zTestConstants.test_hermzeroc                 C   r%   ©Nr	   )r   r   Úhermoner!   r   r   r   Útest_hermone'   r(   zTestConstants.test_hermonec                 C   r   )Nr   ç      à?)r   r   Úhermxr!   r   r   r   Ú
test_hermx*   r$   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 ]H}t dƒD ]A}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   ó   $úÿzTestArithmetic.test_hermaddc                 C   sž   t dƒD ]H}t dƒD ]A}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 r6   )r<   r=   r>   r?   r   Úhermsubr   r   rA   r   r   r   Útest_hermsub;   rH   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 |¡|ƒ qd S )Nr   r	   r,   r7   )r   r   Úhermmulxr<   )r"   rB   ÚserrE   r   r   r   Útest_hermmulxE   s   ýzTestArithmetic.test_hermmulxc           
      C   s²   t dƒD ]R}dg| dg }t | j|¡}t dƒD ]<}d|› d|› �}dg| dg }t | j|¡}t ||¡}t | j|¡}	tt|ƒ|| d k|ƒ t|	|| |d� qqd S )Nr7   r   r	   r8   r9   r:   )r<   r   Úhermvalr   Úhermmulr   Úlenr   )
r"   rB   Úpol1Úval1rC   rD   Úpol2Úval2Úpol3Úval3r   r   r   Útest_hermmulM   s   ùýzTestArithmetic.test_hermmulc           
      C   s–   t dƒD ]D}t dƒD ]=}d|› d|› �}dg| dg }dg| dg }t ||¡}t ||¡\}}t t ||¡|¡}	tt|	ƒt|ƒ|d� q
qd S )Nr7   r8   r9   r   r	   r:   )r<   r   r@   ÚhermdivrO   r   r   )
r"   rB   rC   rD   ÚciÚcjrE   ÚquoÚremrF   r   r   r   Útest_hermdiv[   s   ùÿzTestArithmetic.test_hermdivc                 C   s|   t dƒD ]7}t dƒD ]0}d|› d|› �}t |d ¡}ttj|g| t dg¡ƒ}t ||¡}tt	|ƒt	|ƒ|d� q
qd S )Nr7   r8   r9   r	   r:   )
r<   r=   Úaranger   r   rO   ÚarrayÚhermpowr   r   )r"   rB   rC   rD   ÚcrE   rF   r   r   r   Útest_hermpowf   s   ûÿzTestArithmetic.test_hermpowN)r/   r0   r1   r=   Úlinspacer   rG   rJ   rM   rW   r]   rb   r   r   r   r   r2   .   s    

r2   c                   @   s‚   e Zd Ze g d¢¡Ze dee¡Ze deee¡Zej	 	d¡d d Z
ee
g d¢ƒZdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestEvaluation)g      @ç      ð?g      è?úi,j->ijú
i,j,k->ijk©r4   r7   r
   r	   )re   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 ˆ g d¢¡j
|ƒ qAd S )Nr	   r   r   c                    s   g | ]}t ˆ |ƒ‘qS r   r   ©Ú.0ra   r   r   r   Ú
<listcomp>€   ó    z/TestEvaluation.test_hermval.<locals>.<listcomp>é
   r8   r:   r4   r
   )r	   r   r   )r   r   rN   Úsizer=   rc   ÚHlistr<   r   r>   Úshape)r"   ÚyrB   rD   rE   rF   Ú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
   r4   )r   rq   r   Ú
ValueErrorr   Ú	hermval2dÚc2dr   r=   Úonesr   rp   ©
r"   Úx1Úx2Úx3Úy1Úy2Úy3rE   rF   Ú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 rt   )r   rq   r   rv   r   Ú	hermval3dÚc3dr   r=   ry   r   rp   rz   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 )Nrf   ru   )r
   r4   r
   r4   )r   rq   r=   Úeinsumr   Ú
hermgrid2drx   r   ry   r   rp   rz   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 )Nrg   ru   )r
   r4   r
   r4   r
   r4   )r   rq   r=   r†   r   Ú
hermgrid3dr„   r   ry   r   rp   rz   r   r   r   Útest_hermgrid3d¿   s   

zTestEvaluation.test_hermgrid3dN)r/   r0   r1   r=   r_   Úc1dr†   rx   r„   Úrandomr   r   rq   rs   r‚   r…   rˆ   rŠ   r   r   r   r   rd   p   s    rd   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTestIntegralc           
   	   C   s.  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 ]}dg|d  dg }tjdg||d
�}t|ddgƒ qCtd	ƒD ]7}|d }dg| dg }|gdg|  d| g }t |¡}tj|d|gd
�}t |¡}tt	|ƒt	|ƒƒ qdtd	ƒD ]&}|d }dg| dg }t |¡}tj|d|gdd�}tt 
d|¡|ƒ q td	ƒD ]8}|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 ]9}tdd	ƒD ]0}	dg| dg }|d d … }t|	ƒD ]
}tj|dd�}�q#tj||	d�}tt	|ƒt	|ƒƒ �q�qtd	ƒD ]@}tdd	ƒD ]7}	dg| dg }|d d … }t|	ƒD ]}tj|d|gd
�}�qatj||	tt|	ƒƒd
�}tt	|ƒt	|ƒƒ �qM�qFtd	ƒD ]B}tdd	ƒD ]9}	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‹td	ƒD ]B}tdd	ƒD ]9}	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
   r7   )ÚmÚk)r“   r”   r�   )r“   r”   r�   ©r“   )r   Ú	TypeErrorr   Úhermintrv   r<   r   Ú	poly2hermÚ	herm2polyr   rN   Úlist)
r"   rB   r”   rF   r�   ÚpolrE   Úhermpolr—   rC   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©r4   r   c                 S   ó   g | ]}t  |¡‘qS r   ©r   r—   ri   r   r   r   rk   '  rl   z2TestIntegral.test_hermint_axis.<locals>.<listcomp>r   r‘   c                 S   rŸ   r   r    ri   r   r   r   rk   +  rl   r	   c                 S   s   g | ]	}t j|d d�‘qS )r4   )r”   r    ri   r   r   r   rk   /  s    r4   )r”   r’   )r=   rŒ   ÚvstackÚTr   r—   r   ©r"   rx   rE   rF   r   r   r   Útest_hermint_axis#  s   

zTestIntegral.test_hermint_axisN)r/   r0   r1   r�   r¤   r   r   r   r   rŽ   Î   s    SrŽ   c                   @   r�   )ÚTestDerivativec                 C   s  t ttjdgdƒ t ttjdgdƒ tdƒD ]}dg| dg }tj|dd�}tt|ƒt|ƒƒ qtdƒD ]'}tddƒD ]}dg| dg }tjtj||d�|d�}t	t|ƒt|ƒƒ q<q5tdƒD ])}tddƒD ]!}dg| dg }tjtj||dd�|dd�}t	t|ƒt|ƒƒ qhqad S )	Nr   r,   r   r7   r	   r•   r
   )r“   r�   )
r   r–   r   Úhermderrv   r<   r   r   r—   r   )r"   rB   rE   rF   rC   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   rŸ   r   ©r   r¦   ri   r   r   r   rk   S  rl   z4TestDerivative.test_hermder_axis.<locals>.<listcomp>r   r‘   c                 S   rŸ   r   r¨   ri   r   r   r   rk   W  rl   r	   )r=   rŒ   r¡   r¢   r   r¦   r   r£   r   r   r   Útest_hermder_axisO  s   
z TestDerivative.test_hermder_axisN)r/   r0   r1   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 )Ú
TestVanderrh   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 ||¡ƒ qMd S )Nr4   rž   r   r   r	   .r
   r7   é   )r4   r
   r   )
r=   r^   r   Ú
hermvanderr   rp   r<   r   rN   r_   )r"   r   ÚvrB   Ú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 )Nru   r	   r
   )r	   r7   r«   )r   r=   rŒ   r   Úhermvander2drw   ÚdotÚflatr   r   rp   ©r"   r{   r|   r}   ra   ÚvanrE   rF   r   r   r   Útest_hermvander2dq  s   
zTestVander.test_hermvander2dc                 C   s€   | j \}}}tj d¡}t |||g d¢¡}t ||||¡}t ||j¡}t||ƒ t |g|g|gg d¢¡}t	|j
dkƒ d S )N)r
   r4   r   )r	   r
   r4   )r	   r7   é   )r   r=   rŒ   r   Úhermvander3drƒ   r±   r²   r   r   rp   r³   r   r   r   Útest_hermvander3d~  s   
zTestVander.test_hermvander3dN)	r/   r0   r1   r=   rŒ   r   r¯   rµ   r¸   r   r   r   r   rª   \  s
    rª   c                   @   ó   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g d
¢ƒ t ttjdgdgg ƒ t dd¡}||ƒ}t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||g d¢¡}tt|ƒdƒ t	t 
||¡|ƒ t ||d¡}tt|ƒdƒ t	t 
||¡|ƒ t ||g d¢¡}tt|ƒdƒ t	t 
||¡|ƒ t ||g d¢¡}tt|ƒdƒ t	t 
||¡|ƒ t |t ||g¡jd¡}t	|t ||g¡jƒ t |t ||g¡jg d¢¡}t	|t ||g¡jƒ t |¡}| ¡ }	d|dd d…< d|dd d…< tj||	d|d	�}
t	|
|ƒ tj||	g d¢|d	�}
t	|
|ƒ tj|t |	|	g¡jd|d	�}t	|t ||g¡jƒ tj|t |	|	g¡jg d¢|d	�}t	|t ||g¡jƒ g d¢}t	t ||d¡ddgƒ t	t ||ddg¡ddgƒ t dd¡}||ƒ}t ||d¡}t	t 
||¡|ƒ t ||g d¢¡}t	t 
||¡|ƒ t	||ƒ d S )Nc                 S   s   | | d  | d  S )Nr	   r
   r   r   r   r   r   Úf�  r$   z#TestFitting.test_hermfit.<locals>.fc                 S   s   | d | d  d S )Nr   r
   r	   r   r   r   r   r   Úf2’  r$   z$TestFitting.test_hermfit.<locals>.f2r	   r   r   r
   )Úw)r
   r   r«   r4   r   )r   r	   r
   r4   r7   )r   r	   r
   r4   r   )r
   r4   r   r	   r   )r	   y              ð?r   y       €      ð¿r,   )r   r
   r   )r   rv   r   Úhermfitr–   r=   rc   r   rP   r   rN   r_   r¢   Ú
zeros_likeÚcopy)r"   r»   r¼   r   rq   Úcoef3Úcoef4Úcoef2dr½   ÚywÚwcoef3Úwcoef2dÚcoef1Úcoef2r   r   r   Útest_hermfitŽ  sp   


"zTestFitting.test_hermfitN)r/   r0   r1   rÉ   r   r   r   r   rº   Œ  ó    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   Ú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	   r7   r   )r<   r   r   rÌ   rp   )r"   rB   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/   r0   r1   rÍ   rÎ   rÏ   r   r   r   r   rË   Ù  s    rË   c                   @   r¹   )Ú	TestGaussc                 C   s„   t  d¡\}}t  |d¡}t |j| |¡}dt | ¡ ¡ }|d d …d f | | }t|t 	d¡ƒ t tj
¡}t| ¡ |ƒ d S )Nr5   éc   r	   )r   Ú	hermgaussr¬   r=   r±   r¢   ÚsqrtÚdiagonalr   ÚeyeÚpiÚsum)r"   r   r½   r­   ÚvvÚvdrE   r   r   r   Útest_100ê  s   zTestGauss.test_100N)r/   r0   r1   rÚ   r   r   r   r   rÐ   è  rÊ   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 ]=}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	   r7   r   r
   r   )r   Úhermfromrootsr   r   r<   r=   Úcosrc   rÖ   rN   r   rP   r™   )r"   rF   rB   Úrootsr›   rE   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 ]}t dd|¡}t t |¡¡}t t|ƒt|ƒƒ qd S )Nr	   g      à¿r
   r7   r   )r   r   Ú	hermrootsr<   r=   rc   rÜ   r   )r"   rB   rE   rF   r   r   r   Útest_hermroots	  s   ýzTestMisc.test_hermrootsc                 C   sb   g d¢}t ttj|dƒ tt |¡|d d… ƒ tt |d¡|d d… ƒ tt |d¡dgƒ d S )N)r
   r   r	   r   r   r	   r3   r
   r   )r   rv   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 )Nr4   r   r
   )r   r   Ú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 ©Nrm   r   r	   )r<   r   r   r™   ro   ©r"   rB   r   r   r   Útest_herm2poly  ó   "ÿzTestMisc.test_herm2polyc                 C   s2   t dƒD ]}tt t| ¡dg| dg ƒ qd S rå   )r<   r   r   r˜   ro   ræ   r   r   r   Útest_poly2herm#  rè   zTestMisc.test_poly2hermc                 C   s6   t  ddd¡}t  |d  ¡}t |¡}t||ƒ d S )Néûÿÿÿr7   é   r
   )r=   rc   Úexpr   Ú
hermweightr   )r"   r   rE   rF   r   r   r   Útest_weight'  s   
zTestMisc.test_weightN)
r/   r0   r1   rß   rá   râ   rä   rç   ré   rî   r   r   r   r   rÛ   û  s    rÛ   )'Ú__doc__Ú	functoolsr   Únumpyr=   Únumpy.polynomial.hermiteÚ
polynomialÚhermiter   Únumpy.polynomial.polynomialr   Únumpy.testingr   r   r   r   r_   ÚH0ÚH1ÚH2ÚH3ÚH4ÚH5ÚH6ÚH7ÚH8ÚH9ro   r   r   r2   rd   rŽ   r¥   rª   rº   rË   rÐ   rÛ   r   r   r   r   Ú<module>   s8    B^f(0M