o
    ʩZhH                  
   @   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   ir   #      )r      r   ir   ?   )r   i   r   ir         )r   ir   ;  r   iKr   i  )	r   r   ir   i  r   ir   i#     )
r   r   r   ir   ibF  r   itr   i{/  c                 C   s   t j| ddS )Ngư>)Ztol)leglegtrimx r   [/var/www/html/lang_env/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   Z	legdomainselfr   r   r   test_legdomain!      zTestConstants.test_legdomainc                 C      t tjdg d S )Nr   )r   r   Zlegzeror"   r   r   r   test_legzero$      zTestConstants.test_legzeroc                 C   r&   Nr	   )r   r   Zlegoner"   r   r   r   test_legone'   r(   zTestConstants.test_legonec                 C   r!   )Nr   r	   )r   r   Zlegxr"   r   r   r   	test_legx*   r%   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 ]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 r1   )r6   r7   r8   r9   r   Zlegsubr   r   r;   r   r   r   test_legsub;   rB   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   Zlegmulxr6   )r#   r<   tmpZserr?   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	   r2   r3   r4   )r6   r   legvalr   legmulr   lenr   )
r#   r<   Zpol1Zval1r=   r>   Zpol2Zval2Zpol3Z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   r2   r3   r   r	   r4   )r6   r   r:   ZlegdivrG   r   r   )
r#   r<   r=   r>   cicjr?   Zquoremr@   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   r2   r3   r	   r4   )
r6   r7   aranger   r   rG   arrayZlegpowr   r   )r#   r<   r=   r>   cr?   r@   r   r   r   test_legpowg   s   zTestArithmetic.test_legpowN)r,   r-   r.   r7   linspacer   rA   rC   rE   rI   rM   rQ   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)       @rT   rT   i,j->ij
i,j,k->ijkr   r   r   r	   )      ?rT   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   .0rP   r   r   r   
<listcomp>       z.TestEvaluation.test_legval.<locals>.<listcomp>
   r2   r4   r   r   )r	   r   r   )r   r   rF   sizer7   rR   Llistr6   r   r8   shape)r#   yr<   r>   r?   r@   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   ra   r   
ValueErrorr   legval2dc2dr   r7   onesr   r`   
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 rd   )r   ra   r   rf   r   legval3dc3dr   r7   ri   r   r`   rj   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 )NrU   re   )r   r   r   r   )r   ra   r7   einsumr   Z	leggrid2drh   r   ri   r   r`   rj   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 )NrV   re   )r   r   r   r   r   r   )r   ra   r7   ru   r   Z	leggrid3drs   r   ri   r   r`   rj   r   r   r   test_leggrid3d   s   

zTestEvaluation.test_leggrid3dN)r,   r-   r.   r7   rO   Zc1dru   rh   rs   randomr   r   ra   rc   rq   rt   rv   rw   r   r   r   r   rS   q   s    rS   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|| qtd	D ]8}|d }dg| dg }|gdg|  d| g }t|}tj|d|gdd}t|}tt	|t	| qt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}qtj||	tt|	dd}tt	|t	| qqtd	D ]B}tdd	D ]9}	dg| dg }|d d  }t|	D ]}tj|d|gdd}qtj||	tt|	dd}tt	|t	| qِqd S )Nr         ?r
   r	   )lbnd)sclaxisr   r   )mk)r   r   r|   )r   r   r}   r   )r   	TypeErrorr   legintrf   r6   r   poly2legleg2polyr   rF   list)
r#   r<   r   r@   r}   polr?   Zlegpolr   r=   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   rY   r   r   r   r[   (  r\   z1TestIntegral.test_legint_axis.<locals>.<listcomp>r   r~   c                 S   r   r   r   rY   r   r   r   r[   ,  r\   r	   c                 S   s   g | ]	}t j|d dqS )r   )r   r   rY   r   r   r   r[   0  s    r   )r   r   )r7   rx   vstackTr   r   r   r#   rh   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   rz      s    Srz   c                   @   ry   )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   legderrf   r6   r   r   r   r   )r#   r<   r?   r@   r=   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   rY   r   r   r   r[   W  r\   z3TestDerivative.test_legder_axis.<locals>.<listcomp>r   r~   c                 S   r   r   r   rY   r   r   r   r[   [  r\   r	   )r7   rx   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#   rP   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 )
TestVanderrW   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   )
r7   rN   r   	legvanderr   r`   r6   r   rF   rO   )r#   r   vr<   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 )Nre   r	   r   )r	   r   r   )r   r7   rx   r   Zlegvander2drg   dotflatr   r   r`   r#   rk   rl   rm   rP   Zvanr?   r@   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   r7   rx   r   Zlegvander3drr   r   r   r   r   r`   r   r   r   r   test_legvander3d  s   
zTestVander.test_legvander3dc                 C   s   t ttjdd d S )Nr   r
   )r   rf   r   r   r"   r   r   r   test_legvander_negdeg  r%   z TestVander.test_legvander_negdegN)
r,   r-   r.   r7   rx   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   rf   r   Zlegfitr   r7   rR   r   rH   r   rF   rO   r   Z
zeros_likecopy)r#   r   r   r   ra   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         r   c                   @   ry   )TestCompanionc                 C   s"   t ttjg  t ttjdg d S r)   )r   rf   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   )r6   r   r   r   r`   )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	   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                   @   r   )	TestGaussc                 C   s|   t d\}}t |d}t|j| |}dt|  }|d d d f | | }t|t	d d}t|
 | d S )Nr0   c   r	   rT   )r   Zleggaussr   r7   r   r   sqrtZdiagonalr   eyesum)r#   r   r   r   vvZvdr?   r   r   r   test_100  s   zTestGauss.test_100N)r,   r-   r.   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   r6   r7   cosrR   pirF   r   rH   r   )r#   r@   r<   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 ]}tdd|}tt|}t t|t| qd S )Nr	   r   r   r   r
   )r   r   Zlegrootsr6   r7   rR   r   r   )r#   r<   r?   r@   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   rf   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 Nr]   r   r	   )r6   r   r   r   r_   r#   r<   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   )r6   r   r   r   r_   r   r   r   r   test_poly2leg0  r   zTestMisc.test_poly2legc                 C   s*   t ddd}d}t|}t|| d S )Nr
   r	      rX   )r7   rR   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   numpyr7   Znumpy.polynomial.legendreZ
polynomialZlegendrer   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rO   ZL0ZL1ZL2ZL3ZL4ZL5ZL6ZL7ZL8ZL9r_   r   r    r/   rS   rz   r   r   r   r   r   r   r   r   r   r   <module>   s8    C^i+3M