o
    ʩZhI                  
   @   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_e module.

    )reduceNpolyval)assert_almost_equalassert_raisesassert_equalassert_   )r   r	   )r   r   r	   )   r   ir   r	   )r      r   ir   r	   )r   -   r   r   r   r	   )r   ir   i   r   ir   r	   )	r   r   i\r      r   ir   r	   )
r   i  r   ir   iz  r   ir   r	   c                 C   s   t j| ddS )Ngư>)Ztol)herme	hermetrimx r   \/var/www/html/lang_env/lib/python3.10/site-packages/numpy/polynomial/tests/test_hermite_e.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hermedomainselfr   r   r   test_hermedomain!      zTestConstants.test_hermedomainc                 C      t tjdg d S )Nr   )r   r   Z	hermezeror   r   r   r   test_hermezero$      zTestConstants.test_hermezeroc                 C   r   Nr	   )r   r   Zhermeoner   r   r   r   test_hermeone'   r!   zTestConstants.test_hermeonec                 C   r   )Nr   r	   )r   r   Zhermexr   r   r   r   test_hermex*   r   zTestConstants.test_hermexN)__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 N   At i=, j=r	   r   err_msg)rangenpzerosmaxr   hermeaddr   r   r   ijmsgtgtresr   r   r   test_hermeadd1      $zTestArithmetic.test_hermeaddc                 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*   )r0   r1   r2   r3   r   Zhermesubr   r   r5   r   r   r   test_hermesub;   r<   zTestArithmetic.test_hermesubc                 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+   )r   r   Z	hermemulxr0   )r   r6   Zserr9   r   r   r   test_hermemulxE   s   zTestArithmetic.test_hermemulxc           
      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	   r,   r-   r.   )r0   r   hermevalr   hermemulr   lenr   )
r   r6   Zpol1Zval1r7   r8   Zpol2Zval2Zpol3Zval3r   r   r   test_hermemulM   s   zTestArithmetic.test_hermemulc           
      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+   r,   r-   r   r	   r.   )r0   r   r4   Zhermedivr@   r   r   )
r   r6   r7   r8   cicjr9   Zquoremr:   r   r   r   test_hermediv[   s   zTestArithmetic.test_hermedivc                 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+   r,   r-   r	   r.   )
r0   r1   aranger   r   r@   arrayZhermepowr   r   )r   r6   r7   r8   cr9   r:   r   r   r   test_hermepowf   s   zTestArithmetic.test_hermepowN)r%   r&   r'   r1   linspacer   r;   r=   r>   rB   rF   rJ   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      @       @      @i,j->ij
i,j,k->ijkr   r+      r	   )g      ?rM   rN   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   .0rI   r   r   r   
<listcomp>       z0TestEvaluation.test_hermeval.<locals>.<listcomp>
   r,   r.   r   rR   )r	   r   r   )r   r   r?   sizer1   rK   Helistr0   r   r2   shape)r   yr6   r8   r9   r:   dimsr   r   r   test_hermevalz   s   


zTestEvaluation.test_hermevalc           
      C   s   | j \}}}| j\}}}tttj||d d | j || }t||| j}t|| t	d}	t|	|	| j}t
|jdk d S NrR   rR   r   )r   r[   r   
ValueErrorr   
hermeval2dc2dr   r1   onesr   rZ   
r   x1x2x3y1y2Zy3r9   r:   zr   r   r   test_hermeval2d   s   

zTestEvaluation.test_hermeval2dc           
      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   r`   r   
hermeval3dc3dr   r1   rc   r   rZ   rd   r   r   r   test_hermeval3d   s   

zTestEvaluation.test_hermeval3dc           
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )NrO   r_   )rR   r   rR   r   )r   r[   r1   einsumr   Zhermegrid2drb   r   rc   r   rZ   rd   r   r   r   test_hermegrid2d   s   

zTestEvaluation.test_hermegrid2dc           
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )NrP   r_   )rR   r   rR   r   rR   r   )r   r[   r1   ro   r   Zhermegrid3drm   r   rc   r   rZ   rd   r   r   r   test_hermegrid3d   s   

zTestEvaluation.test_hermegrid3dN)r%   r&   r'   r1   rH   Zc1dro   rb   rm   randomr   r   r[   r]   rk   rn   rp   rq   r   r   r   r   rL   p   s    rL   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axisrR   r+   )mk)rz   r{   rv   )rz   r{   rw   rz   )r   	TypeErrorr   hermeintr`   r0   r   
poly2herme
herme2polyr   r?   list)
r   r6   r{   r:   rw   polr9   Zhermepolr~   r7   r   r   r   test_hermeint   s   




			zTestIntegral.test_hermeintc                 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~   rS   r   r   r   rU   '  rV   z3TestIntegral.test_hermeint_axis.<locals>.<listcomp>r   rx   c                 S   r   r   r   rS   r   r   r   rU   +  rV   r	   c                 S   s   g | ]	}t j|d dqS )r   )r{   r   rS   r   r   r   rU   /  s    r   )r{   ry   )r1   rr   vstackTr   r~   r   r   rb   r9   r:   r   r   r   test_hermeint_axis#  s   

zTestIntegral.test_hermeint_axisN)r%   r&   r'   r   r   r   r   r   r   rt      s    Srt   c                   @   rs   )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   ru   r
   r+   r	   r|   rR   )rz   rw   )
r   r}   r   hermederr`   r0   r   r   r~   r   )r   r6   r9   r:   r7   r   r   r   test_hermeder6  s*   zTestDerivative.test_hermederc                 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   rS   r   r   r   rU   T  rV   z5TestDerivative.test_hermeder_axis.<locals>.<listcomp>r   rx   c                 S   r   r   r   rS   r   r   r   rU   X  rV   r	   )r1   rr   r   r   r   r   r   r   r   r   r   test_hermeder_axisP  s   
z!TestDerivative.test_hermeder_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 )
TestVanderrQ   rR   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	   .rR   r+      )r   rR   r   )
r1   rG   r   hermevanderr   rZ   r0   r   r?   rH   )r   r   vr6   coefr   r   r   test_hermevandera  s   
zTestVander.test_hermevanderc                 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	   rR   )r	   r+   r   )r   r1   rr   r   Zhermevander2dra   dotflatr   r   rZ   r   re   rf   rg   rI   Zvanr9   r:   r   r   r   test_hermevander2dr  s   
zTestVander.test_hermevander2dc                 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)rR   r   r   )r	   rR   r   )r	   r+      )r   r1   rr   r   Zhermevander3drl   r   r   r   r   rZ   r   r   r   r   test_hermevander3d  s   
zTestVander.test_hermevander3dN)	r%   r&   r'   r1   rr   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	   rR   r   r   r   r   r   f  r   z$TestFitting.test_hermefit.<locals>.fc                 S   s   | d | d  d S )Nr   rR   r	   r   r   r   r   r   f2  r   z%TestFitting.test_hermefit.<locals>.f2r	   r
   r   rR   )w)rR   r
   r   r   r   )r   r	   rR   r   r+   )r   r	   rR   r   r   )rR   r   r   r	   r   )r	   y              ?r
   y             )r   rR   r   )r   r`   r   Zhermefitr}   r1   rK   r   rA   r   r?   rH   r   Z
zeros_likecopy)r   r   r   r   r[   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   test_hermefit  sp   


"zTestFitting.test_hermefitN)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   r`   r   hermecompanionr   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   )r0   r   r   r   rZ   )r   r6   r   r   r   r   test_dimensions  s   zTestCompanion.test_dimensionsc                 C   s   t tddgd dk d S )Nr	   rR   )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 tdtj
 }t| | d S )Nr)   c   r	   rR   )r   Z
hermegaussr   r1   r   r   sqrtZdiagonalr   eyepisum)r   r   r   r   vvZvdr9   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   rR   r
   )r   hermefromrootsr   r   r0   r1   cosrK   r   r?   r   rA   r   )r   r:   r6   rootsr   r9   r   r   r   test_hermefromroots  s   
*
zTestMisc.test_hermefromrootsc                 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
   rR   r+   )r   r   Z
hermerootsr0   r1   rK   r   r   )r   r6   r9   r:   r   r   r   test_hermeroots
  s   zTestMisc.test_hermerootsc                 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)rR   r
   r	   r   r
   r	   r   rR   r   )r   r`   r   r   r   )r   r   r   r   r   test_hermetrim  s
   zTestMisc.test_hermetrimc                 C   s   t tddddg d S )Nr   r   )r   r   Z	hermeliner   r   r   r   test_hermeline  s   zTestMisc.test_hermelinec                 C   s2   t dD ]}ttdg| dg t|  qd S NrW   r   r	   )r0   r   r   r   rY   r   r6   r   r   r   test_herme2poly      "zTestMisc.test_herme2polyc                 C   s2   t dD ]}ttt| dg| dg  qd S r   )r0   r   r   r   rY   r   r   r   r   test_poly2herme$  r   zTestMisc.test_poly2hermec                 C   s8   t ddd}t d|d  }t|}t|| d S )Nr+      r   rR   )r1   rK   expr   Zhermeweightr   )r   r   r9   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   numpyr1   Znumpy.polynomial.hermite_eZ
polynomialZ	hermite_er   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   rH   ZHe0ZHe1ZHe2ZHe3ZHe4ZHe5ZHe6ZHe7ZHe8ZHe9rY   r   r   r(   rL   rt   r   r   r   r   r   r   r   r   r   r   <module>   s8    B^f)0M