o
    Ô­jß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 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_e module.

é    )ÚreduceN©Úpolyval)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_é   )éÿÿÿÿr   r	   )r   éýÿÿÿr   r	   )é   r   iúÿÿÿr   r	   )r   é   r   iöÿÿÿr   r	   )éñÿÿÿr   é-   r   r   r   r	   )r   i—ÿÿÿr   éi   r   iëÿÿÿr   r	   )	r   r   i\þÿÿr   éÒ   r   iäÿÿÿr   r	   )
r   i±  r   iûÿÿr   iz  r   iÜÿÿÿr   r	   c                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Útol)ÚhermeÚ	hermetrim©Úx© r   úb/var/www/html/CropPilot/venv/lib/python3.10/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   ó   t tjddgƒ d S )Nr
   r	   )r   r   Úhermedomain©Úselfr   r   r   Útest_hermedomain!   ó   zTestConstants.test_hermedomainc                 C   ó   t tjdgƒ d S )Nr   )r   r   Ú	hermezeror   r   r   r   Útest_hermezero$   ó   zTestConstants.test_hermezeroc                 C   r!   ©Nr	   )r   r   Úhermeoner   r   r   r   Útest_hermeone'   r$   zTestConstants.test_hermeonec                 C   r   )Nr   r	   )r   r   Úhermexr   r   r   r   Útest_hermex*   r    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 ]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   Úhermeaddr   r   ©r   ÚiÚjÚmsgÚtgtÚresr   r   r   Útest_hermeadd1   ó   $úÿzTestArithmetic.test_hermeaddc                 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 r/   )r5   r6   r7   r8   r   Úhermesubr   r   r:   r   r   r   Útest_hermesub;   rA   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 |¡|ƒ qd S )Nr   r	   r0   )r   r   Ú	hermemulxr5   )r   r;   Úserr>   r   r   r   Útest_hermemulxE   s   ýzTestArithmetic.test_hermemulxc           
      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 )Nr0   r   r	   r1   r2   r3   )r5   r   Úhermevalr   Úhermemulr   Úlenr   )
r   r;   Úpol1Úval1r<   r=   Úpol2Úval2Úpol3Úval3r   r   r   Útest_hermemulM   s   ùýzTestArithmetic.test_hermemulc           
      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 )Nr0   r1   r2   r   r	   r3   )r5   r   r9   ÚhermedivrH   r   r   )
r   r;   r<   r=   ÚciÚcjr>   ÚquoÚremr?   r   r   r   Útest_hermediv[   s   ùÿzTestArithmetic.test_hermedivc                 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 )Nr0   r1   r2   r	   r3   )
r5   r6   Úaranger   r   rH   ÚarrayÚhermepowr   r   )r   r;   r<   r=   Úcr>   r?   r   r   r   Útest_hermepowf   s   ûÿzTestArithmetic.test_hermepowN)r*   r+   r,   r6   Úlinspacer   r@   rC   rF   rP   rV   r[   r   r   r   r   r-   .   s    

r-   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      @ç       @ç      @úi,j->ijú
i,j,k->ijk©r   r0   é   r	   )g      ð?r^   r_   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   ©Ú.0rZ   r   r   r   Ú
<listcomp>€   ó    z0TestEvaluation.test_hermeval.<locals>.<listcomp>é
   r1   r3   r   rc   )r	   r   r   )r   r   rG   Úsizer6   r\   ÚHelistr5   r   r7   Úshape)r   Úyr;   r=   r>   r?   Ú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 ©Nrc   ©rc   r   )r   rl   r   Ú
ValueErrorr   Ú
hermeval2dÚc2dr   r6   Úonesr   rk   ©
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 ro   )r   rl   r   rq   r   Ú
hermeval3dÚc3dr   r6   rt   r   rk   ru   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 )Nr`   rp   )rc   r   rc   r   )r   rl   r6   Úeinsumr   Úhermegrid2drs   r   rt   r   rk   ru   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 )Nra   rp   )rc   r   rc   r   rc   r   )r   rl   r6   r�   r   Úhermegrid3dr   r   rt   r   rk   ru   r   r   r   Útest_hermegrid3d¿   s   

zTestEvaluation.test_hermegrid3dN)r*   r+   r,   r6   rX   Úc1dr�   rs   r   Úrandomr   r   rl   rn   r}   r€   rƒ   r…   r   r   r   r   r]   p   s    r]   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	   )Úlbnd)Úscl©Úaxisrc   r0   )ÚmÚk)r�   r�   r‹   )r�   r�   rŒ   ©r�   )r   Ú	TypeErrorr   Úhermeintrq   r5   r   Ú
poly2hermeÚ
herme2polyr   rG   Úlist)
r   r;   r�   r?   rŒ   Úpolr>   Úhermepolr“   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   ó   g | ]}t  |¡‘qS r   ©r   r“   rd   r   r   r   rf   '  rg   z3TestIntegral.test_hermeint_axis.<locals>.<listcomp>r   r�   c                 S   rœ   r   r�   rd   r   r   r   rf   +  rg   r	   c                 S   s   g | ]	}t j|d d�‘qS )r   )r�   r�   rd   r   r   r   rf   /  s    r   )r�   rŽ   )r6   r‡   ÚvstackÚTr   r“   r   ©r   rs   r>   r?   r   r   r   Útest_hermeint_axis#  s   

zTestIntegral.test_hermeint_axisN)r*   r+   r,   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
   r0   r	   r‘   rc   )r�   rŒ   )
r   r’   r   Úhermederrq   r5   r   r   r“   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 )Nrš   c                 S   rœ   r   ©r   r£   rd   r   r   r   rf   T  rg   z5TestDerivative.test_hermeder_axis.<locals>.<listcomp>r   r�   c                 S   rœ   r   r¥   rd   r   r   r   rf   X  rg   r	   )r6   r‡   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 )Ú
TestVanderrb   rc   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 )Nr   rš   r›   r   r	   .rc   r0   é   )r   rc   r›   )
r6   rW   r   Úhermevanderr   rk   r5   r   rG   rX   )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 )Nrp   r	   rc   )r	   r0   r¨   )r   r6   r‡   r   Úhermevander2drr   ÚdotÚflatr   r   rk   ©r   rv   rw   rx   rZ   Úvanr>   r?   r   r   r   Útest_hermevander2dr  s   
zTestVander.test_hermevander2dc                 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)rc   r   r›   )r	   rc   r   )r	   r0   é   )r   r6   r‡   r   Úhermevander3dr~   r®   r¯   r   r   rk   r°   r   r   r   Útest_hermevander3d  s   
zTestVander.test_hermevander3dN)	r*   r+   r,   r6   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	   rc   r   r   r   r   r   Úf�  r    z$TestFitting.test_hermefit.<locals>.fc                 S   s   | d | d  d S )Nr›   rc   r	   r   r   r   r   r   Úf2“  r    z%TestFitting.test_hermefit.<locals>.f2r	   r
   r   rc   )Úw)rc   r
   r¨   r   r›   )r   r	   rc   r   r0   )r   r	   rc   r   r›   )rc   r   r›   r	   r   )r	   y              ð?r
   y       €      ð¿)r   rc   r›   )r   rq   r   Úhermefitr’   r6   r\   r   rI   r   rG   rX   rŸ   Ú
zeros_likeÚcopy)r   r¸   r¹   r   rl   Úcoef3Úcoef4Úcoef2drº   ÚywÚwcoef3Úwcoef2dÚcoef1Úcoef2r   r   r   Útest_hermefit�  sp   


"zTestFitting.test_hermefitN)r*   r+   r,   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   rq   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	   r0   r   )r5   r   r   rÉ   rk   )r   r;   r«   r   r   r   Útest_dimensionsà  s   þzTestCompanion.test_dimensionsc                 C   s   t t ddg¡d dkƒ d S )Nr	   rc   )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                   @   r¶   )Ú	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	   rc   )r   Ú
hermegaussr©   r6   r®   rŸ   ÚsqrtÚdiagonalr   ÚeyeÚpiÚsum)r   r   rº   rª   ÚvvÚvdr>   r   r   r   Útest_100ë  s   zTestGauss.test_100N)r*   r+   r,   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	   r0   r   rc   r
   )r   Úhermefromrootsr   r   r5   r6   Úcosr\   rÔ   rG   r   rI   r•   )r   r?   r;   Úrootsr—   r>   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 ]}t dd|¡}t t |¡¡}t t|ƒt|ƒƒ qd S )Nr	   r
   rc   r0   )r   r   Ú
hermerootsr5   r6   r\   rÚ   r   )r   r;   r>   r?   r   r   r   Útest_hermeroots
  s   ýzTestMisc.test_hermerootsc                 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)rc   r
   r	   r   r
   r	   r   rc   r   )r   rq   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   r›   )r   r   Ú	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 ©Nrh   r   r	   )r5   r   r   r•   rj   ©r   r;   r   r   r   Útest_herme2poly   ó   "ÿzTestMisc.test_herme2polyc                 C   s2   t dƒD ]}tt t| ¡dg| dg ƒ qd S rã   )r5   r   r   r”   rj   rä   r   r   r   Útest_poly2herme$  ræ   zTestMisc.test_poly2hermec                 C   s8   t  ddd¡}t  d|d  ¡}t |¡}t||ƒ d S )Néûÿÿÿr0   é   rÌ   rc   )r6   r\   Úexpr   Ú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   Únumpyr6   Únumpy.polynomial.hermite_eÚ
polynomialÚ	hermite_er   Únumpy.polynomial.polynomialr   Únumpy.testingr   r   r   r   rX   ÚHe0ÚHe1ÚHe2ÚHe3ÚHe4ÚHe5ÚHe6ÚHe7ÚHe8ÚHe9rj   r   r   r-   r]   r‰   r¢   r§   r·   rÈ   rÎ   rÙ   r   r   r   r   Ú<module>   s8    B^f)0M