o
    ig$                     @   sB  d dl Zd dlmZmZ d dlZd dlmZ d dlm	  m
Z d dlmZ dd Zdd Zd	d
 ZG dd dZG dd dZdd Zejdg dejdd dejgdd Zejdg dejddejgejddejgdd Zejdg dejdddejgejdddejgdd ZdS )     N)assert_assert_allclose)_ufuncs)FuncDatac                  C   sX   t ddd} dt j  d }t | t | }t| |}tt j	||dd d S )Nr   i'           gV瞯<rtol)
nparangerandomrandcosarccosr   eval_chebytr   allclose)nxv1v2 r   c/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/scipy/special/tests/test_orthogonal_eval.pytest_eval_chebyt
   s
   r   c                   C   s4   t ttddd t ttddd d S )Nr   g?)r   r   isnanr   eval_genlaguerrer   r   r   r   !test_eval_genlaguerre_restriction   s   r   c                   C   sX   t jdd tdd tdd tddd W d    d S 1 s%w   Y  d S )Nraiseallr   r   )r   errstater   eval_legendreeval_laguerreeval_gegenbauerr   r   r   r   test_warnings   s
   "r%   c                   @   s   e Zd ZdZg g ddddf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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 )%	TestPolyszQ
    Check that the eval_* functions agree with the constructed polynomials

    
   :0yE>c	                    sX  t jd g }	t |D ]c}
fdd|D }t |j}|s#dg}|D ]J}|r1|
ft| }n|
f}|d |d |d  t j|  }|d |d< |d |d< t || j	}t j
t ||df|||f }|	| q%qt j|	dd}	 fdd}t jd	d
 t||	ttt|d d|d}|  W d    d S 1 sw   Y  d S )N  c                    (   g | ]\}}||| t j   qS r   r   r   r   .0abnparamr   r   
<listcomp>-      ( z(TestPolys.check_poly.<locals>.<listcomp>r   r   axisc                     s$   | d  tf| dd   }  |  S )Nr   r   )astypeint)pfuncr   r   polyfunc?   s   z&TestPolys.check_poly.<locals>.polyfuncr   r   r   r   r	   )r   r   seedr   asarrayTtupler   poly1dcoefc_tileappendconcatenater!   r   listrangelencheck)selfr:   clsparam_rangesx_rangennr1   nxr
   datasetr   paramsr8   r   polyzr;   dsr   r:   r1   r   
check_poly'   s4   $ 
"zTestPolys.check_polyc                 C   s$   | j tjtjddgddgdd d S )NgGzr'   r   r   h㈵>rL   rM   r
   )rV   r   eval_jacobiorthjacobirJ   r   r   r   test_jacobiH   s   
zTestPolys.test_jacobic                 C   s$   | j tjtjddgddgdd d S )Nr   r'   r   r   r   r   rX   rY   )rV   r   eval_sh_jacobir[   	sh_jacobir]   r   r   r   test_sh_jacobiM   s   
zTestPolys.test_sh_jacobic                 C   s"   | j tjtjdgddgdd d S )NgV-߿r'   r   r   gHz>rY   )rV   r   r$   r[   
gegenbauerr]   r   r   r   test_gegenbauerR   s   

zTestPolys.test_gegenbauerc                 C      | j tjtjg ddgd d S Nr   r   rL   rM   )rV   r   r   r[   chebytr]   r   r   r   test_chebytW      
zTestPolys.test_chebytc                 C   rg   rh   )rV   r   eval_chebyur[   chebyur]   r   r   r   test_chebyu[   rl   zTestPolys.test_chebyuc                 C   rg   Nr   ri   )rV   r   eval_chebysr[   chebysr]   r   r   r   test_chebys_   rl   zTestPolys.test_chebysc                 C   rg   rp   )rV   r   eval_chebycr[   chebycr]   r   r   r   test_chebycc   rl   zTestPolys.test_chebycc                 C   L   t jdd | jtjtjg ddgd W d    d S 1 sw   Y  d S Nignorer   r   r   ri   )r   r!   rV   r   eval_sh_chebytr[   	sh_chebytr]   r   r   r   test_sh_chebytg   
   "zTestPolys.test_sh_chebytc                 C   rg   Nr   r   ri   )rV   r   eval_sh_chebyur[   	sh_chebyur]   r   r   r   test_sh_chebyul   rl   zTestPolys.test_sh_chebyuc                 C   rg   rh   )rV   r   r"   r[   legendrer]   r   r   r   test_legendrep   rl   zTestPolys.test_legendrec                 C   rx   ry   )r   r!   rV   r   eval_sh_legendrer[   sh_legendrer]   r   r   r   test_sh_legendret   r~   zTestPolys.test_sh_legendrec                 C   s    | j tjtjdgddgd d S NrW   r   d   ri   )rV   r   r   r[   genlaguerrer]   r   r   r   test_genlaguerrey   s   

zTestPolys.test_genlaguerrec                 C   rg   Nr   r   ri   )rV   r   r#   r[   laguerrer]   r   r   r   test_laguerre}   rl   zTestPolys.test_laguerrec                 C   rg   Nir   ri   )rV   r   eval_hermiter[   hermiter]   r   r   r   test_hermite   rl   zTestPolys.test_hermitec                 C   rg   r   )rV   r   eval_hermitenormr[   hermitenormr]   r   r   r   test_hermitenorm   rl   zTestPolys.test_hermitenormN)__name__
__module____qualname____doc__rV   r^   rc   rf   rk   ro   rt   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r&   !   s(    
!r&   c                   @   s   e Zd ZdZg g ddddf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d Zdd Zdd Zdd Zdd Zdd Zd d! Zd"S )#TestRecurrencezI
    Check that the eval_* functions sig='ld->d' and 'dd->d' agree.

    r'   r(   c              	      sn  t jd g }t |D ]n}	fdd|D }
t |
j}
|s#dg}
|
D ]U}|r1|	ft| }n|	f}|d |d |d  t j|  }|d |d< |d |d< tt	|d d d d}t j
t ||df| ||f i |f }|| q%qt j|dd	} fd
d}t jdd t||ttt	|d d|d}|  W d    d S 1 sw   Y  d S )Nr)   c                    r*   r   r+   r,   r0   r   r   r2      r3   z-TestRecurrence.check_poly.<locals>.<listcomp>r   r   d->dsigr4   c                     sH   | d  tf| dd   } tdt| d d  d d} | i |S )Nr   r   lr   r   r   )r6   r7   dictrH   )r8   kwr9   r   r   r;      s   z+TestRecurrence.check_poly.<locals>.polyfuncr   r   r   r   r	   )r   r   r<   r   r=   r>   r?   r   r   rH   rB   rC   rD   rE   r!   r   rF   rG   rI   )rJ   r:   rL   rM   rN   r1   rO   r
   rP   r   rQ   r8   r   r   rS   r;   rT   r   rU   r   rV      s4   $,
"zTestRecurrence.check_polyc                 C   s   | j tjddgddgd d S )NrW   r   r   ri   )rV   r   rZ   r]   r   r   r   r^      s   
zTestRecurrence.test_jacobic                 C   s   | j tjddgddgd d S )Nr_   r`   r   r   ri   )rV   r   ra   r]   r   r   r   rc      s   
zTestRecurrence.test_sh_jacobic                 C      | j tjdgddgd d S )Nrd   r   r   ri   )rV   r   r$   r]   r   r   r   rf         

zTestRecurrence.test_gegenbauerc                 C      | j tjg ddgd d S rh   )rV   r   r   r]   r   r   r   rk         
zTestRecurrence.test_chebytc                 C   r   rh   )rV   r   rm   r]   r   r   r   ro      r   zTestRecurrence.test_chebyuc                 C   r   rp   )rV   r   rr   r]   r   r   r   rt      r   zTestRecurrence.test_chebysc                 C   r   rp   )rV   r   ru   r]   r   r   r   rw      r   zTestRecurrence.test_chebycc                 C   r   r   )rV   r   r{   r]   r   r   r   r}      r   zTestRecurrence.test_sh_chebytc                 C   r   r   )rV   r   r   r]   r   r   r   r      r   zTestRecurrence.test_sh_chebyuc                 C   r   rh   )rV   r   r"   r]   r   r   r   r      r   zTestRecurrence.test_legendrec                 C   r   r   )rV   r   r   r]   r   r   r   r      r   zTestRecurrence.test_sh_legendrec                 C   r   r   )rV   r   r   r]   r   r   r   r      r   zTestRecurrence.test_genlaguerrec                 C   r   r   )rV   r   r#   r]   r   r   r   r      r   zTestRecurrence.test_laguerrec                 C   s   t dd}d}t|| d S )NF         ?gi\m)r   r   r   )rJ   vr.   r   r   r   r      s   zTestRecurrence.test_hermiteN)r   r   r   r   rV   r^   rc   rf   rk   ro   rt   rw   r}   r   r   r   r   r   r   r   r   r   r   r      s&    
"r   c                   C   s0   t tddsJ t tddsJ d S )Nr   r   )r   r   r   r   r   r   r   r   r   test_hermite_domain   s   r   r   )r   r   r   r   r   c                 C   sX   t t| |t t | |gksJ t t| |t t | |gks*J d S N)r   r   r   r   anyr   )r   r   r   r   r   test_hermite_nan   s   *.r   )r   r   r   g	@alphar   c                 C   :   t t| ||}t t | ||g}||ksJ d S r   )r   r   r   r   r   )r   r   r   nan_laguerrenan_argr   r   r   test_genlaguerre_nan      r   g        gư>c                 C   r   r   )r   r   r   r$   r   )r   r   r   nan_gegenbauerr   r   r   r   test_gegenbauer_nan  r   r   )numpyr   numpy.testingr   r   pytestscipy.specialr   scipy.special._orthogonalspecial_orthogonalr[   scipy.special._testutilsr   r   r   r%   r&   r   r   markparametrizenanr   r   r   r   r   r   r   <module>   s.    	ic