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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 module.

    )reduceNpolyval)assert_almost_equalassert_raisesassert_equalassert_      )r      )r   ir      )   r   ir      )r   x   r   i`r       )ir   i  r   i r   @   )r   ipr   i   r   ir      )	i  r   ir   i4  r   i r      )
r   i v  r   i r   i   r   i r   i   c                 C   s   t j| ddS )Ngư>)Ztol)hermhermtrimx r   Z/var/www/html/lang_env/lib/python3.10/site-packages/numpy/polynomial/tests/test_hermite.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   Z
hermdomainselfr   r   r   test_hermdomain!      zTestConstants.test_hermdomainc                 C      t tjdg d S )Nr   )r   r   Zhermzeror   r   r   r   test_hermzero$      zTestConstants.test_hermzeroc                 C   r#   Nr	   )r   r   Zhermoner   r   r   r   test_hermone'   r%   zTestConstants.test_hermonec                 C   r   )Nr         ?)r   r   Zhermxr   r   r   r   
test_hermx*   r"   zTestConstants.test_hermxN)__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   hermaddr   r   r    ijmsgtgtresr   r   r   test_hermadd1      $zTestArithmetic.test_hermaddc                 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   )r7   r8   r9   r:   r   Zhermsubr   r   r<   r   r   r   test_hermsub;   rC   zTestArithmetic.test_hermsubc                 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	   r(   r2   )r   r   Zhermmulxr7   )r    r=   Zserr@   r   r   r   test_hermmulxE   s   zTestArithmetic.test_hermmulxc           
      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 )Nr2   r   r	   r3   r4   r5   )r7   r   hermvalr   hermmulr   lenr   )
r    r=   Zpol1Zval1r>   r?   Zpol2Zval2Zpol3Zval3r   r   r   test_hermmulM   s   zTestArithmetic.test_hermmulc           
      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 )Nr2   r3   r4   r   r	   r5   )r7   r   r;   ZhermdivrG   r   r   )
r    r=   r>   r?   cicjr@   ZquoremrA   r   r   r   test_hermdiv[   s   zTestArithmetic.test_hermdivc                 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 )Nr2   r3   r4   r	   r5   )
r7   r8   aranger   r   rG   arrayZhermpowr   r   )r    r=   r>   r?   cr@   rA   r   r   r   test_hermpowf   s   zTestArithmetic.test_hermpowN)r*   r+   r,   r8   linspacer   rB   rD   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)g      @      ?g      ?i,j->ij
i,j,k->ijkr/   r2   r
   r	   )rT   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   .0rP   r   r   r   
<listcomp>       z/TestEvaluation.test_hermval.<locals>.<listcomp>
   r3   r5   r/   r
   )r	   r   r   )r   r   rF   sizer8   rR   Hlistr7   r   r9   shape)r    yr=   r?   r@   rA   dimsr   r   r   test_hermvalz   s   


zTestEvaluation.test_hermvalc           
      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   	hermval2dc2dr   r8   onesr   r_   
r    x1x2x3y1y2Zy3r@   rA   zr   r   r   test_hermval2d   s   

zTestEvaluation.test_hermval2dc           
      C   s   | j \}}}| j\}}}tttj|||d d | j || | }t|||| j}t|| t	d}	t|	|	|	| j}t
|jdk d S rc   )r   r`   r   re   r   	hermval3dc3dr   r8   rh   r   r_   ri   r   r   r   test_hermval3d   s   

zTestEvaluation.test_hermval3dc           
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )NrU   rd   )r
   r/   r
   r/   )r   r`   r8   einsumr   Z
hermgrid2drg   r   rh   r   r_   ri   r   r   r   test_hermgrid2d   s   

zTestEvaluation.test_hermgrid2dc           
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )NrV   rd   )r
   r/   r
   r/   r
   r/   )r   r`   r8   rt   r   Z
hermgrid3drr   r   rh   r   r_   ri   r   r   r   test_hermgrid3d   s   

zTestEvaluation.test_hermgrid3dN)r*   r+   r,   r8   rO   Zc1drt   rg   rr   randomr   r   r`   rb   rp   rs   ru   rv   r   r   r   r   rS   p   s    rS   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   r	   )lbnd)sclaxisr
   r2   )mk)r~   r   rz   )r~   r   r{   r~   )r   	TypeErrorr   hermintre   r7   r   	poly2herm	herm2polyr   rF   list)
r    r=   r   rA   r{   polr@   Zhermpolr   r>   r   r   r   test_hermint   s   




			zTestIntegral.test_hermintc                 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/   r   c                 S      g | ]}t |qS r   r   r   rX   r   r   r   rZ   '  r[   z2TestIntegral.test_hermint_axis.<locals>.<listcomp>r   r|   c                 S   r   r   r   rX   r   r   r   rZ   +  r[   r	   c                 S   s   g | ]	}t j|d dqS )r/   )r   r   rX   r   r   r   rZ   /  s    r/   )r   r}   )r8   rw   vstackTr   r   r   r    rg   r@   rA   r   r   r   test_hermint_axis#  s   

zTestIntegral.test_hermint_axisN)r*   r+   r,   r   r   r   r   r   r   ry      s    Sry   c                   @   rx   )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   r2   r	   r   r
   )r~   r{   )
r   r   r   hermderre   r7   r   r   r   r   )r    r=   r@   rA   r>   r   r   r   test_hermder6  s&   zTestDerivative.test_hermderc                 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   rX   r   r   r   rZ   S  r[   z4TestDerivative.test_hermder_axis.<locals>.<listcomp>r   r|   c                 S   r   r   r   rX   r   r   r   rZ   W  r[   r	   )r8   rw   r   r   r   r   r   r   r   r   r   test_hermder_axisO  s   
z TestDerivative.test_hermder_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 )
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
   r2      )r/   r
   r   )
r8   rN   r   
hermvanderr   r_   r7   r   rF   rO   )r    r   vr=   coefr   r   r   test_hermvander`  s   
zTestVander.test_hermvanderc                 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 )Nrd   r	   r
   )r	   r2   r   )r   r8   rw   r   Zhermvander2drf   dotflatr   r   r_   r    rj   rk   rl   rP   Zvanr@   rA   r   r   r   test_hermvander2dq  s   
zTestVander.test_hermvander2dc                 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	   r2      )r   r8   rw   r   Zhermvander3drq   r   r   r   r   r_   r   r   r   r   test_hermvander3d~  s   
zTestVander.test_hermvander3dN)	r*   r+   r,   r8   rw   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	   r
   r   r   r   r   r   f  r"   z#TestFitting.test_hermfit.<locals>.fc                 S   s   | d | d  d S )Nr   r
   r	   r   r   r   r   r   f2  r"   z$TestFitting.test_hermfit.<locals>.f2r	   r   r   r
   )w)r
   r   r   r/   r   )r   r	   r
   r/   r2   )r   r	   r
   r/   r   )r
   r/   r   r	   r   )r	   y              ?r   y             r(   )r   r
   r   )r   re   r   Zhermfitr   r8   rR   r   rH   r   rF   rO   r   Z
zeros_likecopy)r    r   r   r   r`   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   test_hermfit  sp   


"zTestFitting.test_hermfitN)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   re   r   hermcompanionr   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	   r2   r   )r7   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 ttj
}t| | d S )Nr0   c   r	   )r   Z	hermgaussr   r8   r   r   sqrtZdiagonalr   eyepi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	   r2   r   r
   r   )r   hermfromrootsr   r   r7   r8   cosrR   r   rF   r   rH   r   )r    rA   r=   rootsr   r@   r   r   r   test_hermfromroots  s   
*
zTestMisc.test_hermfromrootsc                 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	   g      r
   r2   r   )r   r   Z	hermrootsr7   r8   rR   r   r   )r    r=   r@   rA   r   r   r   test_hermroots	  s   zTestMisc.test_hermrootsc                 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   re   r   r   r   )r    r   r   r   r   test_hermtrim  s
   zTestMisc.test_hermtrimc                 C   s   t tddddg d S )Nr/   r   r
   )r   r   Zhermliner   r   r   r   test_hermline  s   zTestMisc.test_hermlinec                 C   s2   t dD ]}ttdg| dg t|  qd S Nr\   r   r	   )r7   r   r   r   r^   r    r=   r   r   r   test_herm2poly     "zTestMisc.test_herm2polyc                 C   s2   t dD ]}ttt| dg| dg  qd S r   )r7   r   r   r   r^   r   r   r   r   test_poly2herm#  r   zTestMisc.test_poly2hermc                 C   s6   t ddd}t |d  }t|}t|| d S )Nr2      r
   )r8   rR   expr   Z
hermweightr   )r    r   r@   rA   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   numpyr8   Znumpy.polynomial.hermiteZ
polynomialZhermiter   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rO   ZH0ZH1ZH2ZH3ZH4ZH5ZH6ZH7ZH8ZH9r^   r   r   r-   rS   ry   r   r   r   r   r   r   r   r   r   r   <module>   s8    B^f(0M