o
    ʩZhgD                     @   st  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d Zeddg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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 laguerre module.

    )reduceNpolyval)assert_almost_equalassert_raisesassert_equalassert_   )   r	   r   )   i	   r
   r   )   iH   ir	   r   )x   iiX  i8   r
   r   )  i i  ii  ir	   r   c                 C   s   t j| ddS )Ngư>)Ztol)laglagtrimx r   [/var/www/html/lang_env/lib/python3.10/site-packages/numpy/polynomial/tests/test_laguerre.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	lagdomainselfr   r   r   test_lagdomain      zTestConstants.test_lagdomainc                 C      t tjdg d S )Nr   )r   r   Zlagzeror   r   r   r   test_lagzero!      zTestConstants.test_lagzeroc                 C   r!   Nr	   )r   r   Zlagoner   r   r   r   test_lagone$   r#   zTestConstants.test_lagonec                 C   r   )Nr	   r
   )r   r   Zlagxr   r   r   r   	test_lagx'   r    zTestConstants.test_lagxN)__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   lagaddr   r   r   ijmsgtgtresr   r   r   test_lagadd.      $zTestArithmetic.test_lagaddc                 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.   )r4   r5   r6   r7   r   Zlagsubr   r   r9   r   r   r   test_lagsub8   r@   zTestArithmetic.test_lagsubc                 C   s   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 |d  g }tt|| qd S )Nr   r	   r
   r/   r   )r   r   Zlagmulxr4   r   )r   r:   Zserr=   r   r   r   test_lagmulxB   s   (zTestArithmetic.test_lagmulxc           
      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	   r0   r1   r2   )r4   r   lagvalr   lagmulr   lenr   )
r   r:   Zpol1Zval1r;   r<   Zpol2Zval2Zpol3Zval3r   r   r   test_lagmulJ   s   zTestArithmetic.test_lagmulc           
      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/   r0   r1   r   r	   r2   )r4   r   r8   ZlagdivrD   r   r   )
r   r:   r;   r<   cicjr=   Zquoremr>   r   r   r   test_lagdivX   s   zTestArithmetic.test_lagdivc                 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/   r0   r1   r	   r2   )
r4   r5   aranger   r   rD   arrayZlagpowr   r   )r   r:   r;   r<   cr=   r>   r   r   r   test_lagpowc   s   zTestArithmetic.test_lagpowN)r'   r(   r)   r5   linspacer   r?   rA   rB   rF   rJ   rN   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      "@g      ,g      @i,j->ij
i,j,k->ijkr,   r/   r   r	   )      ?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   .0rM   r   r   r   
<listcomp>}       z.TestEvaluation.test_lagval.<locals>.<listcomp>   r0   r2   r,   r   )r	   r   r   )r   r   rC   sizer5   rO   Llistr4   r   r6   shape)r   yr:   r<   r=   r>   dimsr   r   r   test_lagvalw   s   


zTestEvaluation.test_lagvalc           
      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   r]   r   
ValueErrorr   lagval2dc2dr   r5   onesr   r\   
r   x1x2x3y1y2Zy3r=   r>   zr   r   r   test_lagval2d   s   

zTestEvaluation.test_lagval2dc           
      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   r]   r   rb   r   lagval3dc3dr   r5   re   r   r\   rf   r   r   r   test_lagval3d   s   

zTestEvaluation.test_lagval3dc           
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )NrQ   ra   )r   r,   r   r,   )r   r]   r5   einsumr   Z	laggrid2drd   r   re   r   r\   rf   r   r   r   test_laggrid2d   s   

zTestEvaluation.test_laggrid2dc           
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )NrR   ra   )r   r,   r   r,   r   r,   )r   r]   r5   rq   r   Z	laggrid3dro   r   re   r   r\   rf   r   r   r   test_laggrid3d   s   

zTestEvaluation.test_laggrid3dN)r'   r(   r)   r5   rL   Zc1drq   rd   ro   randomr   r   r]   r_   rm   rp   rr   rs   r   r   r   r   rP   m   s    rP   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|| 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}   rx   )r|   r}   ry   r|   )r   	TypeErrorr   lagintrb   r4   r   poly2laglag2polyr   rC   list)
r   r:   r}   r>   ry   polr=   Zlagpolr   r;   r   r   r   test_lagint   s   




			zTestIntegral.test_lagintc                 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   rU   r   r   r   rW   $  rX   z1TestIntegral.test_lagint_axis.<locals>.<listcomp>r   rz   c                 S   r   r   r   rU   r   r   r   rW   (  rX   r	   c                 S   s   g | ]	}t j|d dqS )r,   )r}   r   rU   r   r   r   rW   ,  s    r,   )r}   r{   )r5   rt   vstackTr   r   r   r   rd   r=   r>   r   r   r   test_lagint_axis   s   

zTestIntegral.test_lagint_axisN)r'   r(   r)   r   r   r   r   r   r   rv      s    Srv   c                   @   ru   )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   rw   r
   r/   r	   r~   r   )r|   ry   )
r   r   r   lagderrb   r4   r   r   r   r   )r   r:   r=   r>   r;   r   r   r   test_lagder3  s&   zTestDerivative.test_lagderc                 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   rU   r   r   r   rW   P  rX   z3TestDerivative.test_lagder_axis.<locals>.<listcomp>r   rz   c                 S   r   r   r   rU   r   r   r   rW   T  rX   r	   )r5   rt   r   r   r   r   r   r   r   r   r   test_lagder_axisL  s   
zTestDerivative.test_lagder_axisN)r'   r(   r)   r   r   r   r   r   r   r   1  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 )
TestVanderrS   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   )
r5   rK   r   	lagvanderr   r\   r4   r   rC   rL   )r   r   vr:   coefr   r   r   test_lagvander]  s   
zTestVander.test_lagvanderc                 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 )Nra   r	   r   )r	   r/   r   )r   r5   rt   r   Zlagvander2drc   dotflatr   r   r\   r   rg   rh   ri   rM   Zvanr=   r>   r   r   r   test_lagvander2dn  s   
zTestVander.test_lagvander2dc                 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   r5   rt   r   Zlagvander3drn   r   r   r   r   r\   r   r   r   r   test_lagvander3d{  s   
zTestVander.test_lagvander3dN)	r'   r(   r)   r5   rt   r   r   r   r   r   r   r   r   r   Y  s
    r   c                   @      e Zd Zdd ZdS )TestFittingc                 C   sf  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|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 d S )Nc                 S   s   | | d  | d  S )Nr	   r   r   r   r   r   r   f  r    z"TestFitting.test_lagfit.<locals>.fr	   r
   r   r   )w)r   r
   r   r,   r   )r   r	   r   r,   r/   )r   r	   r   r,   r   )r	   y              ?r
   y             )r   rb   r   Zlagfitr   r5   rO   r   rE   r   rC   rL   r   Z
zeros_likecopy)r   r   r   r]   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dr   r   r   test_lagfit  sZ   


" zTestFitting.test_lagfitN)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   rb   r   lagcompanionr   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   )r4   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   g      ?)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 )Nr-   c   r	   rT   )r   Zlaggaussr   r5   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                   @   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	   r/   r   r   r
   )r   lagfromrootsr   r   r4   r5   cosrO   pirC   r   rE   r   )r   r>   r:   rootsr   r=   r   r   r   test_lagfromroots  s   
*
zTestMisc.test_lagfromrootsc                 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lagrootsr4   r5   rO   r   r   )r   r:   r=   r>   r   r   r   test_lagroots  s   zTestMisc.test_lagrootsc                 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   rb   r   r   r   )r   r   r   r   r   test_lagtrim  s
   zTestMisc.test_lagtrimc                 C   s   t tddddg d S )Nr,   r   rY   r   )r   r   Zlagliner   r   r   r   test_lagline
  s   zTestMisc.test_laglinec                 C   s2   t dD ]}ttdg| dg t|  qd S NrY   r   r	   )r4   r   r   r   r[   r   r:   r   r   r   test_lag2poly     "zTestMisc.test_lag2polyc                 C   s2   t dD ]}ttt| dg| dg  qd S r   )r4   r   r   r   r[   r   r   r   r   test_poly2lag  r   zTestMisc.test_poly2lagc                 C   s2   t ddd}t | }t|}t|| d S )Nr   
      )r5   rO   expr   Z	lagweightr   )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   numpyr5   Znumpy.polynomial.laguerreZ
polynomialZlaguerrer   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rL   ZL0ZL1ZL2ZL3ZL4ZL5ZL6r[   r   r   r*   rP   rv   r   r   r   r   r   r   r   r   r   r   <module>   s2    B^f(0>