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¢¡d Ze g d	¢¡d Ze g d
¢¡d Ze g d¢¡d Ze g d¢¡d Ze g d¢¡d Ze g d¢¡d Ze g d¢¡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 legendre module.

é    )ÚreduceN©Úpolyval)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_é   )éÿÿÿÿr   é   é   )r   éýÿÿÿr   é   )r   r   iâÿÿÿr   é#   é   )r   é   r   iºÿÿÿr   é?   )éûÿÿÿr   éi   r   iÅþÿÿr   éç   é   )r   iÝÿÿÿr   é;  r   iKýÿÿr   i­  )	r   r   iûÿÿr   i  r   iÑÿÿr   i#  é€   )
r   r   r   iôíÿÿr   ibF  r   it›ÿÿr   i{/  c                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Útol)ÚlegÚlegtrim©Úx© r   úa/var/www/html/CropPilot/venv/lib/python3.10/site-packages/numpy/polynomial/tests/test_legendre.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   Ú	legdomain©Úselfr   r   r   Útest_legdomain!   ó   zTestConstants.test_legdomainc                 C   ó   t tjdgƒ d S )Nr   )r   r   Úlegzeror$   r   r   r   Útest_legzero$   ó   zTestConstants.test_legzeroc                 C   r(   ©Nr	   )r   r   Úlegoner$   r   r   r   Útest_legone'   r+   zTestConstants.test_legonec                 C   r"   )Nr   r	   )r   r   Úlegxr$   r   r   r   Ú	test_legx*   r'   zTestConstants.test_legxN)Ú__name__Ú
__module__Ú__qualname__r&   r*   r.   r0   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 ©Nr   úAt i=ú, j=r	   r   ©Úerr_msg)ÚrangeÚnpÚzerosÚmaxr   Úlegaddr   r    ©r%   ÚiÚjÚmsgÚtgtÚresr   r   r   Útest_legadd1   ó   $úÿzTestArithmetic.test_legaddc                 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   Úlegsubr   r    r@   r   r   r   Útest_legsub;   rG   zTestArithmetic.test_legsubc                 C   sŽ   t t dg¡dgƒ t t dg¡ddgƒ tddƒD ]*}d| d }dg| dg }dg|d  || d|d | g }t t |¡|ƒ qd S )Nr   r	   r   r   )r   r   Úlegmulxr;   )r%   rA   ÚtmpÚserrD   r   r   r   Útest_legmulxE   s   $üzTestArithmetic.test_legmulxc           
      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 )Nr   r   r	   r7   r8   r9   )r;   r   Úlegvalr   Úlegmulr   Úlenr   )
r%   rA   Úpol1Úval1rB   rC   Úpol2Úval2Úpol3Úval3r   r   r   Útest_legmulN   s   ùýzTestArithmetic.test_legmulc           
      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 )Nr   r7   r8   r   r	   r9   )r;   r   r?   ÚlegdivrO   r   r    )
r%   rA   rB   rC   ÚciÚcjrD   ÚquoÚremrE   r   r   r   Útest_legdiv\   s   ùÿzTestArithmetic.test_legdivc                 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 )Nr   r7   r8   r	   r9   )
r;   r<   Úaranger   r   rO   ÚarrayÚlegpowr   r    )r%   rA   rB   rC   ÚcrD   rE   r   r   r   Útest_legpowg   s   ûÿzTestArithmetic.test_legpowN)r1   r2   r3   r<   Úlinspacer   rF   rI   rM   rW   r]   rb   r   r   r   r   r4   .   s    

	r4   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)ç       @re   re   úi,j->ijú
i,j,k->ijk©r   r   r   r	   )ç      ð?re   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_legval.<locals>.<listcomp>é
   r7   r9   r   r   )r	   r   r   )r   r   rN   Úsizer<   rc   ÚLlistr;   r   r=   Úshape)r%   ÚyrA   rC   rD   rE   Údimsr   r   r   Útest_legval{   s   


ûzTestEvaluation.test_legvalc           
      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   rr   r   Ú
ValueErrorr   Úlegval2dÚc2dr   r<   Úonesr   rq   ©
r%   Úx1Úx2Úx3Úy1Úy2Úy3rD   rE   Úzr   r   r   Útest_legval2d�   s   

zTestEvaluation.test_legval2dc           
      C   sŒ   | j \}}}| j\}}}tttj|||d d… | jƒ || | }t |||| j¡}t||ƒ t 	d¡}	t |	|	|	| j¡}t
|jdkƒ d S ru   )r   rr   r   rw   r   Úlegval3dÚc3dr   r<   rz   r   rq   r{   r   r   r   Útest_legval3d¡   s   

zTestEvaluation.test_legval3dc           
      C   sl   | j \}}}| j\}}}t d||¡}t ||| j¡}t||ƒ t d¡}	t |	|	| j¡}t	|j
dkƒ d S )Nrf   rv   )r   r   r   r   )r   rr   r<   Úeinsumr   Ú	leggrid2dry   r   rz   r   rq   r{   r   r   r   Útest_leggrid2d²   s   

zTestEvaluation.test_leggrid2dc           
      C   sr   | j \}}}| j\}}}t d|||¡}t |||| j¡}t||ƒ t d¡}	t |	|	|	| j¡}t	|j
dkƒ d S )Nrg   rv   )r   r   r   r   r   r   )r   rr   r<   r‡   r   Ú	leggrid3dr…   r   rz   r   rq   r{   r   r   r   Útest_leggrid3dÀ   s   

zTestEvaluation.test_leggrid3dN)r1   r2   r3   r<   r_   Úc1dr‡   ry   r…   Úrandomr   r   rr   rt   rƒ   r†   r‰   r‹   r   r   r   r   rd   q   s    rd   c                   @   ó$   e Zd Zd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©Úaxisr   r   )ÚmÚk)r•   r–   r‘   )r•   r–   r’   ©r•   )r   Ú	TypeErrorr   Úlegintrw   r;   r   Úpoly2legÚleg2polyr    rN   Úlist)
r%   rA   r–   rE   r’   ÚpolrD   Úlegpolr™   rB   r   r   r   Útest_legintÑ   sŠ   




ú	ú	ú	úÿzTestIntegral.test_legintc                 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™   rj   r   r   r   rl   (  rm   z1TestIntegral.test_legint_axis.<locals>.<listcomp>r   r“   c                 S   r¢   r   r£   rj   r   r   r   rl   ,  rm   r	   c                 S   s   g | ]	}t j|d d�‘qS )r   )r–   r£   rj   r   r   r   rl   0  s    r   )r–   r”   )r<   r�   ÚvstackÚTr   r™   r   ©r%   ry   rD   rE   r   r   r   Útest_legint_axis$  s   

zTestIntegral.test_legint_axisc                 C   s   t t dd¡dƒ d S )N©r	   r   r   r   )r   r   r™   r$   r   r   r   Útest_legint_zerointord4  s   z#TestIntegral.test_legint_zerointordN)r1   r2   r3   rŸ   r§   r©   r   r   r   r   r�   Ï   s    Sr�   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
   r   r	   r—   r   )r•   r’   )
r   r˜   r   Úlegderrw   r;   r   r    r™   r   )r%   rA   rD   rE   rB   r   r   r   Útest_legder:  s&   ýýÿzTestDerivative.test_legderc                 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«   rj   r   r   r   rl   W  rm   z3TestDerivative.test_legder_axis.<locals>.<listcomp>r   r“   c                 S   r¢   r   r­   rj   r   r   r   rl   [  rm   r	   )r<   r�   r¤   r¥   r   r«   r   r¦   r   r   r   Útest_legder_axisS  s   
zTestDerivative.test_legder_axisc                 C   s   d}t t |d¡dgƒ d S )N)r	   r   r   r¡   r¡   r   )r   r   r«   )r%   ra   r   r   r   Ú test_legder_orderhigherthancoeff_  s   z/TestDerivative.test_legder_orderhigherthancoeffN)r1   r2   r3   r¬   r®   r¯   r   r   r   r   rª   8  s    rª   c                   @   s@   e Zd Zej d¡d d Z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 )Nr   r    r¡   r   r	   .r   r   é   )r   r   r¡   )
r<   r^   r   Ú	legvanderr   rq   r;   r   rN   r_   )r%   r   ÚvrA   Úcoefr   r   r   Útest_legvanderg  s   
þzTestVander.test_legvanderc                 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 )Nrv   r	   r   )r	   r   r±   )r   r<   r�   r   Úlegvander2drx   ÚdotÚflatr   r   rq   ©r%   r|   r}   r~   ra   ÚvanrD   rE   r   r   r   Útest_legvander2dx  s   
zTestVander.test_legvander2dc                 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   r   r¡   r¨   )r	   r   é   )r   r<   r�   r   Úlegvander3dr„   r·   r¸   r   r   rq   r¹   r   r   r   Útest_legvander3d…  s   
zTestVander.test_legvander3dc                 C   s   t ttjddƒ d S )Nr¨   r
   )r   rw   r   r²   r$   r   r   r   Útest_legvander_negdeg’  r'   z TestVander.test_legvander_negdegN)
r1   r2   r3   r<   r�   r   rµ   r»   r¾   r¿   r   r   r   r   r°   c  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_legfit.<locals>.fc                 S   s   | d | d  d S )Nr¡   r   r	   r   r   r   r   r   Úf2œ  r'   z#TestFitting.test_legfit.<locals>.f2r	   r
   r   r   )Úw)r   r
   r±   r   r¡   )r   r	   r   r   r   )r   r	   r   r   r¡   )r   r   r¡   r	   r   )r	   y              ð?r
   y       €      ð¿)r   r   r¡   )r   rw   r   Úlegfitr˜   r<   rc   r   rP   r   rN   r_   r¥   Ú
zeros_likeÚcopy)r%   rÂ   rÃ   r   rr   Úcoef3Úcoef4Úcoef2drÄ   ÚywÚwcoef3Úwcoef2dÚcoef1Úcoef2r   r   r   Útest_legfit˜  sp   


"zTestFitting.test_legfitN)r1   r2   r3   rÐ   r   r   r   r   rÁ   –  ó    rÁ   c                   @   rŽ   )ÚTestCompanionc                 C   s"   t ttjg ƒ t ttjdgƒ d S r,   )r   rw   r   Úlegcompanionr$   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%   rA   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   ç      à¿)r   r   rÓ   r$   r   r   r   Útest_linear_rootî  s   zTestCompanion.test_linear_rootN)r1   r2   r3   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¡ƒ d}t| 
¡ |ƒ d S )Nr5   éc   r	   re   )r   Úleggaussr²   r<   r·   r¥   ÚsqrtÚdiagonalr   ÚeyeÚsum)r%   r   rÄ   r³   ÚvvÚvdrD   r   r   r   Útest_100ô  s   zTestGauss.test_100N)r1   r2   r3   rá   r   r   r   r   rØ   ò  rÑ   rØ   c                   @   sL   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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	   r   r   r   r
   )r   Úlegfromrootsr   r    r;   r<   Úcosrc   ÚpirN   r   rP   r›   )r%   rE   rA   Úrootsr�   rD   r   r   r   Útest_legfromroots  s   
*
ùzTestMisc.test_legfromrootsc                 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   rÖ   r   r
   )r   r   Úlegrootsr;   r<   rc   rã   r    )r%   rA   rD   rE   r   r   r   Útest_legroots  s   ýzTestMisc.test_legrootsc                 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	   r   r   r   )r   rw   r   r   r   )r%   r´   r   r   r   Útest_legtrim  s
   zTestMisc.test_legtrimc                 C   s   t t dd¡ddgƒ d S )Nr   r¡   ©r   r   Úlegliner$   r   r   r   Útest_legline&  s   zTestMisc.test_leglinec                 C   s   t t dd¡dgƒ d S )Nr   r   rë   r$   r   r   r   Útest_legline_zeroscl)  s   zTestMisc.test_legline_zerosclc                 C   s2   t dƒD ]}tt dg| dg ¡t| ƒ qd S ©Nrn   r   r	   )r;   r   r   r›   rp   ©r%   rA   r   r   r   Útest_leg2poly,  ó   "ÿzTestMisc.test_leg2polyc                 C   s2   t dƒD ]}tt t| ¡dg| dg ƒ qd S rï   )r;   r   r   rš   rp   rð   r   r   r   Útest_poly2leg0  rò   zTestMisc.test_poly2legc                 C   s*   t  ddd¡}d}t |¡}t||ƒ d S )Nr
   r	   é   ri   )r<   rc   r   Ú	legweightr   )r%   r   rD   rE   r   r   r   Útest_weight4  s   
zTestMisc.test_weightN)r1   r2   r3   rç   ré   rê   rí   rî   rñ   ró   rö   r   r   r   r   râ     s    râ   )'Ú__doc__Ú	functoolsr   Únumpyr<   Únumpy.polynomial.legendreÚ
polynomialÚlegendrer   Únumpy.polynomial.polynomialr   Únumpy.testingr   r   r   r   r_   ÚL0ÚL1ÚL2ÚL3ÚL4ÚL5ÚL6ÚL7ÚL8ÚL9rp   r    r!   r4   rd   r�   rª   r°   rÁ   rÒ   rØ   râ   r   r   r   r   Ú<module>   s8    C^i+3M