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¡d	 Ze dd
ddg¡d	 Ze dddddg¡d Ze ddddddg¡d Ze dddddddg¡d Ze ddddddddg¡d Ze dddddddddg	¡d Ze dddd dd!dd"dd#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 d0d1„ d1ƒZ"G d2d3„ d3ƒZ#G d4d5„ d5ƒZ$G d6d7„ d7ƒZ%G d8d9„ d9ƒZ&dS ):zTests for legendre module.

é    )ÚreduceN©Úpolyval)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_é   éÿÿÿÿé   é   éýÿÿÿé   iâÿÿÿé#   é   é   iºÿÿÿé?   éûÿÿÿéi   iÅþÿÿéç   é   iÝÿÿÿi;  iKýÿÿi­  iûÿÿi  iÑÿÿi#  é€   iôíÿÿibF  it›ÿÿi{/  c                 C   s   t j| dd�S )Ng�íµ ÷Æ°>)Ztol)ÚlegÚlegtrim©Úx© r   úg/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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   s   t tjddgƒ d S )Nr
   r	   )r   r   Z	legdomain©Úselfr   r   r   Útest_legdomain!   s    zTestConstants.test_legdomainc                 C   s   t tjdgƒ d S )Nr   )r   r   Zlegzeror    r   r   r   Útest_legzero$   s    zTestConstants.test_legzeroc                 C   s   t tjdgƒ d S ©Nr	   )r   r   Zlegoner    r   r   r   Útest_legone'   s    zTestConstants.test_legonec                 C   s   t tjddgƒ d S )Nr   r	   )r   r   Zlegxr    r   r   r   Ú	test_legx*   s    zTestConstants.test_legxN)Ú__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 ©Nr   úAt i=ú, j=r	   r   ©Úerr_msg)ÚrangeÚnpÚzerosÚmaxr   Úlegaddr   r   ©r!   ÚiÚjÚmsgÚtgtÚresr   r   r   Útest_legadd1   s    $zTestArithmetic.test_legaddc                 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,   )r1   r2   r3   r4   r   Zlegsubr   r   r6   r   r   r   Útest_legsub;   s    $zTestArithmetic.test_legsubc                 C   sŽ   t t dg¡dgƒ t t dg¡ddgƒ tddƒD ]T}d| d }dg| dg }dg|d  || d|d | g }t t |¡|ƒ q4d S )Nr   r	   r   r   )r   r   Zlegmulxr1   )r!   r7   ÚtmpZserr:   r   r   r   Útest_legmulxE   s    $zTestArithmetic.test_legmulxc           
      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/   )r1   r   Úlegvalr   Úlegmulr   Úlenr   )
r!   r7   Zpol1Zval1r8   r9   Zpol2Zval2Zpol3Zval3r   r   r   Útest_legmulN   s    zTestArithmetic.test_legmulc           
      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/   )r1   r   r5   ZlegdivrA   r   r   )
r!   r7   r8   r9   ÚciÚcjr:   ZquoÚremr;   r   r   r   Útest_legdiv\   s    zTestArithmetic.test_legdivc                 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/   )
r1   r2   Úaranger   r   rA   ÚarrayZlegpowr   r   )r!   r7   r8   r9   Úcr:   r;   r   r   r   Útest_legpowg   s    zTestArithmetic.test_legpowN)r'   r(   r)   r2   Úlinspacer   r<   r=   r?   rC   rG   rK   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 )ÚTestEvaluationç       @úi,j->ijú
i,j,k->ijk©r   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   ©Ú.0rJ   r   r   r   Ú
<listcomp>�   s     z.TestEvaluation.test_legval.<locals>.<listcomp>é
   r-   r/   r   r   )r   r   r@   Úsizer2   rL   ÚLlistr1   r   r3   Úshape)r!   Úyr7   r9   r:   r;   Z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   rZ   r   Ú
ValueErrorr   Úlegval2dÚc2dr   r2   Úonesr   rY   ©
r!   Úx1Úx2Úx3Úy1Úy2Zy3r:   r;   Ú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 r\   )r   rZ   r   r^   r   Úlegval3dÚc3dr   r2   ra   r   rY   rb   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 )NrO   r]   )r   r   r   r   )r   rZ   r2   Úeinsumr   Z	leggrid2dr`   r   ra   r   rY   rb   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 )NrP   r]   )r   r   r   r   r   r   )r   rZ   r2   rm   r   Z	leggrid3drk   r   ra   r   rY   rb   r   r   r   Útest_leggrid3dÀ   s    

zTestEvaluation.test_leggrid3dN)r'   r(   r)   r2   rI   Zc1drm   r`   rk   Úrandomr   r   rZ   r[   ri   rl   rn   ro   r   r   r   r   rM   q   s   rM   c                   @   s$   e Zd Zd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©Úaxisr   r   )ÚmÚk)rw   rx   rs   )rw   rx   rt   ©rw   )r   Ú	TypeErrorr   Úlegintr^   r1   r   Úpoly2legÚleg2polyr   r@   Úlist)
r!   r7   rx   r;   rt   Úpolr:   Zlegpolr{   r8   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   s   g | ]}t  |¡‘qS r   ©r   r{   rS   r   r   r   rU   (  s     z1TestIntegral.test_legint_axis.<locals>.<listcomp>r   ru   c                 S   s   g | ]}t  |¡‘qS r   rƒ   rS   r   r   r   rU   ,  s     r	   c                 S   s   g | ]}t j|d d�‘qS )r   )rx   rƒ   rS   r   r   r   rU   0  s     r   )rx   rv   )r2   rp   ÚvstackÚTr   r{   r   ©r!   r`   r:   r;   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)r'   r(   r)   r€   r‡   r‰   r   r   r   r   rq   Ï   s   Srq   c                   @   s$   e Zd Zd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   rr   r
   r   r	   ry   r   )rw   rt   )
r   rz   r   Úlegderr^   r1   r   r   r{   r   )r!   r7   r:   r;   r8   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   s   g | ]}t  |¡‘qS r   ©r   r‹   rS   r   r   r   rU   W  s     z3TestDerivative.test_legder_axis.<locals>.<listcomp>r   ru   c                 S   s   g | ]}t  |¡‘qS r   r�   rS   r   r   r   rU   [  s     r	   )r2   rp   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!   rJ   r   r   r   Ú test_legder_orderhigherthancoeff_  s    z/TestDerivative.test_legder_orderhigherthancoeffN)r'   r(   r)   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 )Ú
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‚   )
r2   rH   r   Ú	legvanderr   rY   r1   r   r@   rI   )r!   r   Úvr7   Ú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 )Nr]   r	   r   )r	   r   r‘   )r   r2   rp   r   Zlegvander2dr_   ÚdotÚflatr   r   rY   ©r!   rc   rd   re   rJ   Zvanr:   r;   r   r   r   Útest_legvander2dx  s    
zTestVander.test_legvander2dc                 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   r2   rp   r   Zlegvander3drj   r–   r—   r   r   rY   r˜   r   r   r   Útest_legvander3d…  s    
zTestVander.test_legvander3dc                 C   s   t ttjddƒ d S )Nrˆ   r
   )r   r^   r   r’   r    r   r   r   Útest_legvander_negdeg’  s    z TestVander.test_legvander_negdegN)
r'   r(   r)   r2   rp   r   r•   r™   r›   rœ   r   r   r   r   r�   c  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_legfit.<locals>.fc                 S   s   | d | d  d S )Nr‚   r   r	   r   r   r   r   r   Úf2œ  s    z#TestFitting.test_legfit.<locals>.f2r	   r
   r   r   )Úwr‘   r   r‚   r   y              ð?y       €      ð¿)r   r^   r   Zlegfitrz   r2   rL   r   rB   r   r@   rI   r…   Z
zeros_likeÚcopy)r!   rž   rŸ   r   rZ   Zcoef3Zcoef4Zcoef2dr    ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   Útest_legfit˜  sp    "


&zTestFitting.test_legfitN)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   Ú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   )r1   r   r   r¤   rY   )r!   r7   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)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¡ƒ d}t| 
¡ |ƒ d S )Nr+   éc   r	   rN   )r   Zleggaussr’   r2   r–   r…   ÚsqrtZdiagonalr   ÚeyeÚ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                   @   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 ]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   Úlegfromrootsr   r   r1   r2   ÚcosrL   Úpir@   r   rB   r}   )r!   r;   r7   Úrootsr   r:   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 ]4}t dd|¡}t t |¡¡}t t|ƒt|ƒƒ q2d S )Nr	   r   r§   r   r
   )r   r   Zlegrootsr1   r2   rL   r°   r   )r!   r7   r:   r;   r   r   r   Útest_legroots  s    zTestMisc.test_legrootsc                 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_legtrim  s
    zTestMisc.test_legtrimc                 C   s   t t dd¡ddgƒ d S )Nr   r‚   ©r   r   Z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 ©NrV   r   r	   )r1   r   r   r}   rX   ©r!   r7   r   r   r   Útest_leg2poly,  s    zTestMisc.test_leg2polyc                 C   s2   t dƒD ]$}tt t| ¡dg| dg ƒ qd S rº   )r1   r   r   r|   rX   r»   r   r   r   Útest_poly2leg0  s    zTestMisc.test_poly2legc                 C   s*   t  ddd¡}d}t |¡}t||ƒ d S )Nr
   r	   é   rR   )r2   rL   r   Z	legweightr   )r!   r   r:   r;   r   r   r   Útest_weight4  s    
zTestMisc.test_weightN)r'   r(   r)   r´   rµ   r¶   r¸   r¹   r¼   r½   r¿   r   r   r   r   r¯     s   r¯   )'Ú__doc__Ú	functoolsr   Únumpyr2   Znumpy.polynomial.legendreZ
polynomialZlegendrer   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rI   ZL0ZL1ZL2ZL3ZL4ZL5ZL6ZL7ZL8ZL9rX   r   r   r*   rM   rq   rŠ   r�   r�   r£   r©   r¯   r   r   r   r   Ú<module>   s6    "C^i+3M