3
Od4#                 @   s>  d dl Zd dlmZmZ d dlZd dljjZ	d dl
mZ dd Zdd Zdd	 ZG d
d deZG dd deZdd Zejjdd ddgejjdd dejgdd Zejjdd dddgejjddejgejjddejgdd Zejjdd dddgejjdddejgejjdddejgdd ZdS )    N)assert_assert_allclose)FuncDatac              C   sX   t jddd} dt jj  d }t j| t j| }tj| |}tt j	||dd d S )Nr   i'           gV瞯<)rtol)
nparangerandomrandcosZarccosortheval_chebytr   Zallclose)nxv1v2 r   \/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_orthogonal_eval.pytest_eval_chebyt	   s
    r   c               C   s4   t tjtjddd t tjtjddd d S )Nr   r   g?r   )r   r	   isnanr   eval_genlaguerrer   r   r   r   !test_eval_genlaguerre_restriction   s    r   c               C   sB   t jdd, tjdd tjdd tjddd W d Q R X 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

    
   g:0yE>c	                sJ  t jjd g }	xt j|D ]}
fdd|D }t j|j}|sHdg}x|D ]}|rf|
ft| }n|
f}|d |d |d  t jj|  }|d |d< |d |d< t j|| j	}t j
t j||df|||f }|	j| qNW qW t j|	dd}	 fdd}t jd	d
0 t||	ttt|d d|d}|j  W d Q R X d S )Ni  c                s(   g | ] \}}||| t jj   qS r   )r	   r   r   ).0ab)nparamr   r   
<listcomp>,   s    z(TestPolys.check_poly.<locals>.<listcomp>r   r   )axisc                 s$   | d j 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   Zpoly1dZcoefc_tileappendconcatenater   r   listrangelencheck)selfr-   clsparam_rangesx_rangennr'   nxr   datasetr   paramsr,   r   polyzr.   dsr   )r-   r'   r   
check_poly&   s.    
$ zTestPolys.check_polyc             C   s$   | j tjtjdd	gd
dgdd d S )NgGz?r#   r   gh㈵>)r=   r>   r   Gz)rG   r#   Gz)rH   r#   r   )rF   r   eval_jacobiZjacobi)r;   r   r   r   test_jacobiG   s    zTestPolys.test_jacobic             C   s$   | j tjtjddgddgdd d S )Nr   r#   r   gh㈵>)r=   r>   r   )r   r#   )r   r   )rF   r   eval_sh_jacobiZ	sh_jacobi)r;   r   r   r   test_sh_jacobiL   s    zTestPolys.test_sh_jacobic             C   s"   | j tjtjdgddgdd d S )	NgV-?r#   r   gHz>)r=   r>   r   V-߿)rM   r#   r   )rF   r   r    Z
gegenbauer)r;   r   r   r   test_gegenbauerQ   s    
zTestPolys.test_gegenbauerc             C   s   | j tjtjg ddgd d S )Nr   )r=   r>   r   )rF   r   r   Zchebyt)r;   r   r   r   test_chebytV   s    zTestPolys.test_chebytc             C   s   | j tjtjg ddgd d S )Nr   )r=   r>   r   )rF   r   eval_chebyuZchebyu)r;   r   r   r   test_chebyuZ   s    zTestPolys.test_chebyuc             C   s   | j tjtjg ddgd d S )Nr   )r=   r>   )rF   r   eval_chebysZchebys)r;   r   r   r   test_chebys^   s    zTestPolys.test_chebysc             C   s   | j tjtjg ddgd d S )Nr   )r=   r>   rR   )rF   r   eval_chebycZchebyc)r;   r   r   r   test_chebycb   s    zTestPolys.test_chebycc             C   s6   t jdd  | jtjtjg ddgd W d Q R X d S )Nignore)r   r   r   )r=   r>   )r	   r   rF   r   eval_sh_chebytZ	sh_chebyt)r;   r   r   r   test_sh_chebytf   s    zTestPolys.test_sh_chebytc             C   s   | j tjtjg ddgd d S )Nr   r   )r=   r>   )rF   r   eval_sh_chebyuZ	sh_chebyu)r;   r   r   r   test_sh_chebyuk   s    zTestPolys.test_sh_chebyuc             C   s   | j tjtjg ddgd d S )Nr   )r=   r>   r   )rF   r   r   Zlegendre)r;   r   r   r   test_legendreo   s    zTestPolys.test_legendrec             C   s6   t jdd  | jtjtjg ddgd W d Q R X d S )NrW   )r   r   r   )r=   r>   )r	   r   rF   r   eval_sh_legendreZsh_legendre)r;   r   r   r   test_sh_legendres   s    zTestPolys.test_sh_legendrec             C   s    | j tjtjdgddgd d S )NgGz?r#   r   d   )r=   r>   Gz)r`   r#   )rF   r   r   Zgenlaguerre)r;   r   r   r   test_genlaguerrex   s    zTestPolys.test_genlaguerrec             C   s   | j tjtjg ddgd d S )Nr   r_   )r=   r>   )rF   r   r   Zlaguerre)r;   r   r   r   test_laguerre|   s    zTestPolys.test_laguerrec             C   s   | j tjtjg ddgd d S )Nr_   )r=   r>   i)rF   r   eval_hermiteZhermite)r;   r   r   r   test_hermite   s    zTestPolys.test_hermitec             C   s   | j tjtjg ddgd d S )Nr_   )r=   r>   i)rF   r   eval_hermitenormZhermitenorm)r;   r   r   r   test_hermitenorm   s    zTestPolys.test_hermitenormN)__name__
__module____qualname____doc__rF   rJ   rL   rN   rO   rQ   rT   rV   rY   r[   r\   r^   ra   rb   rd   rf   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#   g:0yE>c                s\  t jjd g }xt j|D ]}	fdd|D }
t j|
j}
|sHdg}
x|
D ]}|rf|	ft| }n|	f}|d |d |d  t jj|  }|d |d< |d |d< tt	|d d d d}t j
t j||df| ||f |f }|j| qNW qW t j|dd	} fd
d}t jdd0 t||ttt	|d d|d}|j  W d Q R X d S )Ni  c                s(   g | ] \}}||| t jj   qS r   )r	   r   r   )r$   r%   r&   )r'   r   r   r(      s    z-TestRecurrence.check_poly.<locals>.<listcomp>r   r   dz->d)sig)r)   c                 sD   | d j tf| dd   } tdt| d d  d d} | |S )Nr   r   lrl   z->d)rm   )r*   r+   dictr9   )r,   kw)r-   r   r   r.      s    z+TestRecurrence.check_poly.<locals>.polyfuncr   )r   r   )r   r   )r	   r   r/   r
   r0   r1   r2   r   ro   r9   r3   r4   r5   r6   r   r   r7   r8   r:   )r;   r-   r=   r>   r?   r'   r@   r   rA   r   rB   r,   r   rp   rD   r.   rE   r   )r-   r'   r   rF      s.    
$(zTestRecurrence.check_polyc             C   s   | j tjddgd	dgd d S )
NgGz?r#   r   )r=   r>   Gz)rq   r#   Gz)rr   r#   r   )rF   r   rI   )r;   r   r   r   rJ      s    zTestRecurrence.test_jacobic             C   s   | j tjddgddgd d S )Nr   r#   r   )r=   r>   )r   r#   )r   r   )rF   r   rK   )r;   r   r   r   rL      s    zTestRecurrence.test_sh_jacobic             C   s   | j tjdgddgd d S )NgV-?r#   r   )r=   r>   V-߿)rs   r#   r   )rF   r   r    )r;   r   r   r   rN      s    zTestRecurrence.test_gegenbauerc             C   s   | j tjg ddgd d S )Nr   )r=   r>   r   )rF   r   r   )r;   r   r   r   rO      s    zTestRecurrence.test_chebytc             C   s   | j tjg ddgd d S )Nr   )r=   r>   r   )rF   r   rP   )r;   r   r   r   rQ      s    zTestRecurrence.test_chebyuc             C   s   | j tjg ddgd d S )Nr   )r=   r>   rR   )rF   r   rS   )r;   r   r   r   rT      s    zTestRecurrence.test_chebysc             C   s   | j tjg ddgd d S )Nr   )r=   r>   rR   )rF   r   rU   )r;   r   r   r   rV      s    zTestRecurrence.test_chebycc             C   s   | j tjg ddgd d S )Nr   r   )r=   r>   )rF   r   rX   )r;   r   r   r   rY      s    zTestRecurrence.test_sh_chebytc             C   s   | j tjg ddgd d S )Nr   r   )r=   r>   )rF   r   rZ   )r;   r   r   r   r[      s    zTestRecurrence.test_sh_chebyuc             C   s   | j tjg ddgd d S )Nr   )r=   r>   r   )rF   r   r   )r;   r   r   r   r\      s    zTestRecurrence.test_legendrec             C   s   | j tjg ddgd d S )Nr   r   )r=   r>   )rF   r   r]   )r;   r   r   r   r^      s    zTestRecurrence.test_sh_legendrec             C   s   | j tjdgddgd d S )NgGz?r#   r   r_   )r=   r>   Gz)rt   r#   )rF   r   r   )r;   r   r   r   ra      s    zTestRecurrence.test_genlaguerrec             C   s   | j tjg ddgd d S )Nr   r_   )r=   r>   )rF   r   r   )r;   r   r   r   rb      s    zTestRecurrence.test_laguerrec             C   s   t jdd}d}t|| d S )NF   g      ?gi\mLgi\m)r   rc   r   )r;   vr%   r   r   r   rd      s    zTestRecurrence.test_hermiteN)rg   rh   ri   rj   rF   rJ   rL   rN   rO   rQ   rT   rV   rY   r[   r\   r^   ra   rb   rd   r   r   r   r   rk      s"   !rk   c               C   s0   t jtjddstt jtjdds,td S )Nr   g      ?r   r   )r	   r   r   rc   AssertionErrorre   r   r   r   r   test_hermite_domain   s    rx   r   r   r   r   c             C   sX   t jtj| |t jt j| |gks*tt jtj| |t jt j| |gksTtd S )N)r	   r   r   rc   anyrw   re   )r   r   r   r   r   test_hermite_nan   s    *rz   g	@alphac             C   s:   t jtj| ||}t jt j| ||g}||ks6td S )N)r	   r   r   r   ry   rw   )r   r{   r   Znan_laguerrenan_argr   r   r   test_genlaguerre_nan   s    r}   g        gư>c             C   s:   t jtj| ||}t jt j| ||g}||ks6td S )N)r	   r   r   r    ry   rw   )r   r{   r   Znan_gegenbauerr|   r   r   r   test_gegenbauer_nan  s    r~   )Znumpyr	   Znumpy.testingr   r   ZpytestZscipy.special.orthogonalZspecialZ
orthogonalr   Zscipy.special._testutilsr   r   r   r!   objectr"   rk   rx   markZparametrizenanrz   r}   r~   r   r   r   r   <module>   s$   	ib  