3
OdF                @   s  d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&j%j'Z(d dl)m*Z* d dl+m,Z,m-Z-m.Z. d dl/Z/G dd	 d	e0Z1G d
d de0Z2G dd de0Z3G dd de0Z4G dd de0Z5G dd de0Z6G dd de0Z7G dd de0Z8G dd de0Z9G dd de0Z:G dd de0Z;G dd de0Z<G d d! d!e0Z=G d"d# d#e0Z>G d$d% d%e0Z?G d&d' d'e0Z@G d(d) d)e0ZAG d*d+ d+e0ZBG d,d- d-e0ZCG d.d/ d/e0ZDG d0d1 d1e0ZEG d2d3 d3e0ZFG d4d5 d5e0ZGG d6d7 d7e0ZHG d8d9 d9e0ZIG d:d; d;e0ZJG d<d= d=e0ZKG d>d? d?e0ZLG d@dA dAe0ZMG dBdC dCe0ZNG dDdE dEe0ZOG dFdG dGe0ZPG dHdI dIe0ZQG dJdK dKe0ZRG dLdM dMe0ZSdNdO ZTdPdQ ZUG dRdS dSe0ZVdTdU ZWdVdW ZXdXdY ZYdZd[ ZZd\d] Z[d^d_ Z\e,d`da Z]dbdc Z^ddde Z_dfdg Z`dhdi Zadjdk Zbdldm Zcdndo ZddS )p    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctanfloat_)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipk)with_special_errorsassert_func_equalFuncDatac               @   s  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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6e7j8j9didjdkdl Z:dmdn Z;dodp Z<dqdr Z=e7j8j9dsdjdtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd ZdddÄ Zeddń ZfddǄ ZgddɄ Zhdd˄ Zidd̈́ Zjddτ Zkddф Zlddӄ ZmddՄ Znddׄ Zoddل Zpddۄ Zqdd݄ Zrdd߄ Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd 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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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~S (  
TestCephesc             C   s   t jd d S )Nr   )cephesairy)self r(   R/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_basic.py	test_airy-   s    zTestCephes.test_airyc             C   s   t jd d S )Nr   )r%   airye)r'   r(   r(   r)   
test_airye0   s    zTestCephes.test_airyec             C   sN  t jddddg}t jddddg}t jt j|d d d f |d d d f jdd$j}t jd%ddd&gddddgddd'dgddddgg}ttj|j |dd t j	j
d t jt jd(ddt j	jd d f }t jdd }t jt j|d d d f |d d d f jdd)j}ttjtj|d d df |d d d	f d* |d"d"d# d S )+NgL7A`?   g@      g?   gffffff
@   g޸?g	TշJ?g	7?geLF?   g*+ @r   gM{@gףp=
%@gϔ>@g<w?g$@   g,y3@iK  g5@gvIh%<=)rtoli     i  i  f   gV瞯<g|=)atolr4   g޸geLFg<wir8   g     ?)npr   broadcast_arraysreshapeTr"   r%   binomZravelrandomseedr   r   Zrand)r'   nknkZrknownr(   r(   r)   
test_binom3   s$    *


&*
&zTestCephes.test_binomc             C   s   t jjd t jt jddd }t jdd}t jt j|d d d f |d d d f jddj	}t
tjtj|d d df |d d df d |d	d	d
 d S )Ni  r1   i,     r   r6   r/   gV瞯<g|=)r7   r4   r8   g     ?)r9   r>   r?   r   logspacer   r   r:   r;   r<   r"   r%   r=   )r'   r@   rA   rB   r(   r(   r)   test_binom_2J   s    *
&zTestCephes.test_binom_2c             C   s   t jdd }t jjd t jdd}t jdd}t jt j|d d d f |d d d f jdd	j}||d d df |d d df k }t	t
j||d d df |d d df |ddd d S )
Nc             S   s\   t | } t |}t d}t d}x.td|d D ]}|||  | 9 }||9 }q0W t|| S )Nr1   )intrangefloat)r@   rA   numZdenir(   r(   r)   	binom_intX   s    z.TestCephes.test_binom_exact.<locals>.binom_inti  r1      r   r/   )r7   r4   r8   )r9   	vectorizer>   r?   r   r   r:   r;   r<   r"   r%   r=   )r'   rL   r@   rA   rB   r(   r(   r)   test_binom_exactW   s    *
$ zTestCephes.test_binom_exactc             C   sH   d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAg}t j|}ttj|dBd0d1d2j  d S )CN    wP~    ii9~    yhY~    pvy~    zN~    GTɳ~    @jH~    F:aYͦ~    ɸV    
{9    yVxY    *I y      I    W@N    5yr   r1   r/   g-q=)r4   )rP   rQ   rR   )rS   rT   rU   )rV   rW   rX   )rY   rZ   r[   )r\   r]   r^   )r_   r`   ra   )rb   rc   rd   )re   rf   rg   )rh   ri   rj   )rk   rl   rm   )rn   ro   rp   )rq   rr   rs   )rt   ru   rv   )rw   rx   ry   )rz   r{   r|   )r   r1   )r9   r   r#   r%   r=   check)r'   Zdatasetr(   r(   r)   test_binom_nooverflow_8346n   s"    
z%TestCephes.test_binom_nooverflow_8346c             C   s   t tjdddd d S )Nr1   g      ?g      ?)r   r%   Zbdtr)r'   r(   r(   r)   	test_bdtr   s    zTestCephes.test_bdtrc             C   s   t tjdddd d S )Nr1      g      ?)r   r%   Zbdtri)r'   r(   r(   r)   
test_bdtri   s    zTestCephes.test_bdtric             C   s   t tjdddd d S )Nr1   r   g      ?)r   r%   Zbdtrc)r'   r(   r(   r)   
test_bdtrc   s    zTestCephes.test_bdtrcc             C   s   t tjdddd d S )Nr1   r   g      @)r   r%   Zbdtrin)r'   r(   r(   r)   test_bdtrin   s    zTestCephes.test_bdtrinc             C   s   t jddd d S )Nr1   r   g      ?)r%   Zbdtrik)r'   r(   r(   r)   test_bdtrik   s    zTestCephes.test_bdtrikc             C   s   t tjdd d S )Nr   g        )r   r%   bei)r'   r(   r(   r)   test_bei   s    zTestCephes.test_beic             C   s   t tjdd d S )Nr   g        )r   r%   beip)r'   r(   r(   r)   	test_beip   s    zTestCephes.test_beipc             C   s   t tjdd d S )Nr   g      ?)r   r%   ber)r'   r(   r(   r)   test_ber   s    zTestCephes.test_berc             C   s   t tjdd d S )Nr   g        )r   r%   berp)r'   r(   r(   r)   	test_berp   s    zTestCephes.test_berpc             C   s   t tjdddd d S )Nr   g      ?)r   r%   Z
besselpoly)r'   r(   r(   r)   test_besselpoly   s    zTestCephes.test_besselpolyc             C   sF   t tjddd ttjddtjd ttjddddd	d
 d S )Nr1   g      ?g33333Y@gN~hg?   g6.8@gvIh%<=r   )r4   r7   g33333Y)r   r%   betar   gamma)r'   r(   r(   r)   	test_beta   s    zTestCephes.test_betac             C   s,   t tjdddd ttjdddd d S )Nr1   g      ?g?r   g|=g*?)r   r%   betaincr   )r'   r(   r(   r)   test_betainc   s    zTestCephes.test_betaincc             C   sF   t tjddd ttjddtjd ttjddddd	d
 d S )Nr1   g        g33333Y@gN~hg?   gIs	@g+=r   )r4   r7   g33333Y)r   r%   betalnr   gammaln)r'   r(   r(   r)   test_betaln   s    zTestCephes.test_betalnc             C   s2   t tjdddd ttjddddddd	 d S )
Nr1   g      ?g?r   g      ?g"
Yx;gAfc=r   )r4   r7   )r   r%   
betaincinvr   )r'   r(   r(   r)   test_betaincinv   s    zTestCephes.test_betaincinvc             C   s   t tjtjdd d S )Nr1   r/   r8   )r   r9   isinfr   r   )r'   r(   r(   r)   test_beta_inf   s    zTestCephes.test_beta_infc             C   s   t tjdddd d S )Nr1   g      ?)r   r%   Zbtdtr)r'   r(   r(   r)   
test_btdtr   s    zTestCephes.test_btdtrc             C   s   t tjdddd d S )Nr1   g      ?)r   r%   Zbtdtri)r'   r(   r(   r)   test_btdtri   s    zTestCephes.test_btdtric             C   s   t tjdddd d S )Nr1   g      @)r   r%   Zbtdtria)r'   r(   r(   r)   test_btdtria   s    zTestCephes.test_btdtriac             C   s   t tjdddd d S )Nr1   g      @)r   r%   Zbtdtrib)r'   r(   r(   r)   test_btdtrib   s    zTestCephes.test_btdtribc             C   s   t tjdd d S )Nr1   g      ?)r   r%   cbrt)r'   r(   r(   r)   	test_cbrt   s    zTestCephes.test_cbrtc             C   s   t tjddd d S )Nr1   r   g        )r   r%   chdtr)r'   r(   r(   r)   
test_chdtr   s    zTestCephes.test_chdtrc             C   s   t tjddd d S )Nr1   r   g      ?)r   r%   chdtrc)r'   r(   r(   r)   test_chdtrc   s    zTestCephes.test_chdtrcc             C   s   t tjddd d S )Nr1   g        )r   r%   chdtri)r'   r(   r(   r)   test_chdtri   s    zTestCephes.test_chdtric             C   s   t tjddd d S )Nr   g      @)r   r%   Zchdtriv)r'   r(   r(   r)   test_chdtriv   s    zTestCephes.test_chdtrivc             C   sl  t tjdddd tjddddgddd	d
gddddgddddgddddgddddgddddgddddgddddgddddgd ddd!gd"ddd#gd$dddgg}tj|d d df |d d df |d d d%f }t||d d d&f d'd( ttjtjtjdd ttjd%dtjd ttj	tjtj
dd% ttj	tjd)tj
d% ttj	tjd)dtj
 d S )*Nr   r1   g        g      9@g      4@i  gL94g       @   g7Fh9gMbP?g      D@ggåc;g{Gz?g	;g       @k   g8x@x>g     6@gg1\>>g`>g      @g      ?gp!P?g     u@g     r@g      $@g j
?g      Y@g      +@g]?g     @g4ۙ?g     b@g?g      d@r/   r   g-q=)r4      )r   r%   Zchndtrr9   r   r   r   r   r   r   nan)r'   valuesZcdfr(   r(   r)   test_chndtr   s,    











2zTestCephes.test_chndtrc             C   s   t tjdddd d S )Nr   r1   g      @)r   r%   Z	chndtridf)r'   r(   r(   r)   test_chndtridf   s    zTestCephes.test_chndtridfc             C   s   t tjdddd d S )Nr   r1   g      @)r   r%   Z	chndtrinc)r'   r(   r(   r)   test_chndtrinc   s    zTestCephes.test_chndtrincc             C   s   t tjdddd d S )Nr   r1   g        )r   r%   Zchndtrix)r'   r(   r(   r)   test_chndtrix   s    zTestCephes.test_chndtrixc             C   s   t tjdd d S )Nr   g      ?)r   r%   cosdg)r'   r(   r(   r)   
test_cosdg   s    zTestCephes.test_cosdgc             C   s   t tjdd d S )Nr   g        )r   r%   cosm1)r'   r(   r(   r)   
test_cosm1   s    zTestCephes.test_cosm1c             C   s   t tjdd d S )N-   g      ?)r   r%   cotdg)r'   r(   r(   r)   
test_cotdg  s    zTestCephes.test_cotdgc             C   s$   t tjdd ttjdd d S )Nr   g        gGz?gf?)r   r%   dawsnr   )r'   r(   r(   r)   
test_dawsn  s    zTestCephes.test_dawsnc             C   s^  dddg}t jdt j d jt j}ttj||ddd t jdt j d	 jt j}ttj||dd
d t jdt j d jt j}ttj||dd
d t	t drt jdt j d jt j
}ttj||ddd dddg}t jdt j d	 jt j}ttj||dd
d t jdt j dt j dt j }ddddg}ttj|d|d
d d S )Nr1   r      r/   g-C6
?g      ?r0   )decimalg&.>rM   gV瞯<float128g-q=   r-      g?gg?gsOB?gsaL?g
7I^?r   g      g
7I^ʿ)r9   r   r   astypeZfloat32r   r   diricfloat64hasattrr   r   )r'   Zn_oddxZn_evenZoctave_resultr(   r(   r)   
test_diric	  s"    


 zTestCephes.test_diricc             C   sJ   t jd}t jdddg}ttj|d d t jf |j|j|jfk d S )Nr   r1   r   r0   )	r9   r   r   r   r   r   Znewaxisshapesize)r'   r   r@   r(   r(   r)   test_diric_broadcasting"  s    
z"TestCephes.test_diric_broadcastingc             C   s   t tjdd d S )Nr1   g      ?)r   r%   ellipe)r'   r(   r(   r)   test_ellipe'  s    zTestCephes.test_ellipec             C   s   t tjddd d S )Nr   r1   g        )r   r%   	ellipeinc)r'   r(   r(   r)   test_ellipeinc*  s    zTestCephes.test_ellipeincc             C   s   t jdd d S )Nr   r1   )r%   ellipj)r'   r(   r(   r)   test_ellipj-  s    zTestCephes.test_ellipjc             C   s   t tdtd  d S )Nr   r/   )r   r    r   )r'   r(   r(   r)   test_ellipk0  s    zTestCephes.test_ellipkc             C   s   t tjddd d S )Nr   g        )r   r%   	ellipkinc)r'   r(   r(   r)   test_ellipkinc3  s    zTestCephes.test_ellipkincc             C   s   t tjdd d S )Nr   g        )r   r%   erf)r'   r(   r(   r)   test_erf6  s    zTestCephes.test_erfc             C   s$   d}t tj|tj|  d d S )Ng#8x@g        )r   r%   r   )r'   r   r(   r(   r)   test_erf_symmetry9  s    zTestCephes.test_erf_symmetryc             C   s   t tjdd d S )Nr   g      ?)r   r%   erfc)r'   r(   r(   r)   	test_erfc=  s    zTestCephes.test_erfcc             C   s   t tjdd d S )Nr/   g      Y@)r   r%   exp10)r'   r(   r(   r)   
test_exp10@  s    zTestCephes.test_exp10c             C   s   t tjdd d S )Nr/   g      @)r   r%   exp2)r'   r(   r(   r)   	test_exp2C  s    zTestCephes.test_exp2c             C   sP   t tjdd t tjtjtj t tjtj d t tjtjtj d S )Nr   g        r1   r8   )r   r%   expm1r9   r   r   )r'   r(   r(   r)   
test_expm1F  s    zTestCephes.test_expm1c             C   s  t j}t|dd t|ttjdttjd t|ttjdttjtj t|ttjdttj tj t|ttjdttj tj  t|ttjdttjtj  t|tdtjttjtj t|tdtjttjtj t|ttjtjttjtj t|ttj tjtd	d t|ttj tjtd
d t|ttjtjttjtj t|tdtjttjtj t|tdtjttjtj t|ttjdttjtj t|ttjtjttjtj d S )Nr   y                r1   r/   r-   r   y                y                r8   r8   )r%   r   r   complexr9   r   r   )r'   r   r(   r(   r)   test_expm1_complexL  s"     "$"  "  "   zTestCephes.test_expm1_complexz-The real part of expm1(z) bad at these points)reasonc             C   sx   t jddddddg}t jt j| }|d|  }t jddddddg}tj|}t|j|jd t|j|jd d S )Ng?g?g333333?r      rD   y              ?g=<y        Cw?gC7gg)gF<y        Ug?gQ<y        D*?gg:><y        sK@g><y        $	Um>l@g;Vl <y        @r   g=y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKg>񸣼y>񸣼$	Um>ly;Vl <@)	r9   r   r   r	   r%   r   r   imagr   )r'   yr   zexpectedfoundr(   r(   r)   test_expm1_complex_hard_  s    
z"TestCephes.test_expm1_complex_hardc             C   s0   t tjdddd ttjdddddd	 d S )
Nr1   r   g        gư>r   
   g2?g-q=)r4   )r   r%   Zfdtrr   )r'   r(   r(   r)   	test_fdtrt  s    zTestCephes.test_fdtrc             C   s0   t tjdddd ttjdddddd	 d S )
Nr1   r   g      ?r/   g?g    _BgDIXl?g-q=)r4   )r   r%   Zfdtrcr   )r'   r(   r(   r)   
test_fdtrcz  s    zTestCephes.test_fdtrcc             C   sD   t tjddddgtddgdd d}t tjd	d|d
dd d S )Nr1   gV-?gx&1?g
}?g<zO'?gư>)r4   g׀?g?r   g-q=)r   r%   fdtrir   )r'   pr(   r(   r)   
test_fdtri  s    zTestCephes.test_fdtrizReturns nan on i686.c             C   s   t tjdddd d S )Nr1   g      ?)r   r%   r   )r'   r(   r(   r)   test_fdtri_mysterious_failure  s    z(TestCephes.test_fdtri_mysterious_failurec             C   s   t tjdddd d S )Nr1   r   g      @)r   r%   Zfdtridfd)r'   r(   r(   r)   test_fdtridfd  s    zTestCephes.test_fdtridfdc             C   s   t tjdd d S )Nr           )r   r   )r   r%   fresnel)r'   r(   r(   r)   test_fresnel  s    zTestCephes.test_fresnelc             C   s   t tjdd d S )Nr   g      8@)r   r%   r   )r'   r(   r(   r)   
test_gamma  s    zTestCephes.test_gammac             C   s   t tjddd d S )Nr   r1   g        )r   r%   gammainccinv)r'   r(   r(   r)   test_gammainccinv  s    zTestCephes.test_gammainccinvc             C   s   t jd d S )Nr   )r%   r   )r'   r(   r(   r)   test_gammaln  s    zTestCephes.test_gammalnc             C   s8   t jdddddgt j}ttj|t jtj| d S )	Nr-   g      @gffffff@r1   g@g      gffffff)r9   r   r   r   r%   Zgammasgnsignrgamma)r'   valsr(   r(   r)   test_gammasgn  s    zTestCephes.test_gammasgnc             C   s   t tjdddd d S )Nr1   r   g        )r   r%   gdtr)r'   r(   r(   r)   	test_gdtr  s    zTestCephes.test_gdtrc             C   s   t tjddtjd d S )Nr1   g      ?)r   r%   r   r9   r   )r'   r(   r(   r)   test_gdtr_inf  s    zTestCephes.test_gdtr_infc             C   s   t tjdddd d S )Nr1   r   g      ?)r   r%   Zgdtrc)r'   r(   r(   r)   
test_gdtrc  s    zTestCephes.test_gdtrcc             C   s   t tjdddd d S )Nr   r1   g        )r   r%   Zgdtria)r'   r(   r(   r)   test_gdtria  s    zTestCephes.test_gdtriac             C   s   t jddd d S )Nr1   r   )r%   Zgdtrib)r'   r(   r(   r)   test_gdtrib  s    zTestCephes.test_gdtribc             C   s   t jddd d S )Nr1   g?)r%   Zgdtrix)r'   r(   r(   r)   test_gdtrix  s    zTestCephes.test_gdtrixc             C   s   t jdd d S )Nr1   )r%   hankel1)r'   r(   r(   r)   test_hankel1  s    zTestCephes.test_hankel1c             C   s   t jdd d S )Nr1   )r%   hankel1e)r'   r(   r(   r)   test_hankel1e  s    zTestCephes.test_hankel1ec             C   s   t jdd d S )Nr1   )r%   hankel2)r'   r(   r(   r)   test_hankel2  s    zTestCephes.test_hankel2c             C   s   t jdd d S )Nr1   )r%   hankel2e)r'   r(   r(   r)   test_hankel2e  s    zTestCephes.test_hankel2ec             C   s>   t tjdddtd t tjdddd tjddd d S )Nr1   g      ?r   r-   r2   g㈮?i)r   r%   hyp1f1r   )r'   r(   r(   r)   test_hyp1f1  s    zTestCephes.test_hyp1f1c             C   s   t tjddddd d S )Nr1   r   g      ?)r   r%   hyp2f1)r'   r(   r(   r)   test_hyp2f1  s    zTestCephes.test_hyp2f1c             C   s   t tjdd d S )Nr   g      ?)r   r%   i0)r'   r(   r(   r)   test_i0  s    zTestCephes.test_i0c             C   s   t tjdd d S )Nr   g      ?)r   r%   i0e)r'   r(   r(   r)   test_i0e  s    zTestCephes.test_i0ec             C   s   t tjdd d S )Nr   g        )r   r%   i1)r'   r(   r(   r)   test_i1  s    zTestCephes.test_i1c             C   s   t tjdd d S )Nr   g        )r   r%   i1e)r'   r(   r(   r)   test_i1e  s    zTestCephes.test_i1ec             C   s   t jd d S )Nr1   )r%   it2i0k0)r'   r(   r(   r)   test_it2i0k0  s    zTestCephes.test_it2i0k0c             C   s   t jd d S )Nr1   )r%   it2j0y0)r'   r(   r(   r)   test_it2j0y0  s    zTestCephes.test_it2j0y0c             C   s   t jd d S )Nr1   )r%   Z
it2struve0)r'   r(   r(   r)   test_it2struve0  s    zTestCephes.test_it2struve0c             C   s   t jd d S )Nr1   )r%   Zitairy)r'   r(   r(   r)   test_itairy  s    zTestCephes.test_itairyc             C   s   t tjdd d S )Nr           )r  r  )r   r%   iti0k0)r'   r(   r(   r)   test_iti0k0  s    zTestCephes.test_iti0k0c             C   s   t tjdd d S )Nr           )r  r  )r   r%   itj0y0)r'   r(   r(   r)   test_itj0y0  s    zTestCephes.test_itj0y0c             C   s   t tjdd d S )Nr   g        )r   r%   Zitmodstruve0)r'   r(   r(   r)   test_itmodstruve0  s    zTestCephes.test_itmodstruve0c             C   s   t tjdd d S )Nr   g        )r   r%   Z	itstruve0)r'   r(   r(   r)   test_itstruve0  s    zTestCephes.test_itstruve0c             C   s   t tjddd d S )Nr1   r   g        )r   r%   iv)r'   r(   r(   r)   test_iv  s    zTestCephes.test_ivc             C   s   t tjddd d S )Nr1   r   g        )r   r%   ive)r'   r(   r(   r)   
_check_ive  s    zTestCephes._check_ivec             C   s   t tjdd d S )Nr   g      ?)r   r%   j0)r'   r(   r(   r)   test_j0  s    zTestCephes.test_j0c             C   s   t tjdd d S )Nr   g        )r   r%   j1)r'   r(   r(   r)   test_j1  s    zTestCephes.test_j1c             C   s   t tjddd d S )Nr   g      ?)r   r%   jn)r'   r(   r(   r)   test_jn  s    zTestCephes.test_jnc             C   s   t tjddd d S )Nr   g      ?)r   r%   jv)r'   r(   r(   r)   test_jv  s    zTestCephes.test_jvc             C   s   t tjddd d S )Nr   g      ?)r   r%   jve)r'   r(   r(   r)   
_check_jve  s    zTestCephes._check_jvec             C   s   t jd d S )Nr/   )r%   k0)r'   r(   r(   r)   test_k0   s    zTestCephes.test_k0c             C   s   t jd d S )Nr/   )r%   k0e)r'   r(   r(   r)   test_k0e  s    zTestCephes.test_k0ec             C   s   t jd d S )Nr/   )r%   k1)r'   r(   r(   r)   test_k1  s    zTestCephes.test_k1c             C   s   t jd d S )Nr/   )r%   k1e)r'   r(   r(   r)   test_k1e	  s    zTestCephes.test_k1ec             C   s   t jd d S )Nr/   )r%   kei)r'   r(   r(   r)   test_kei  s    zTestCephes.test_keic             C   s   t tjdd d S )Nr   g        )r   r%   keip)r'   r(   r(   r)   	test_keip  s    zTestCephes.test_keipc             C   s   t jd d S )Nr/   )r%   ker)r'   r(   r(   r)   test_ker  s    zTestCephes.test_kerc             C   s   t jd d S )Nr/   )r%   kerp)r'   r(   r(   r)   	test_kerp  s    zTestCephes.test_kerpc             C   s   t jd d S )Nr/   )r%   kelvin)r'   r(   r(   r)   _check_kelvin  s    zTestCephes._check_kelvinc             C   s   t jdd d S )Nr1   )r%   kn)r'   r(   r(   r)   test_kn  s    zTestCephes.test_knc             C   s*   t tjdd ttjtjtj d S )Nr1   g        )r   r%   Zkolmogir   r9   r   r   )r'   r(   r(   r)   test_kolmogi  s    zTestCephes.test_kolmogic             C   s   t tjdd d S )Nr   g      ?)r   r%   Z
kolmogorov)r'   r(   r(   r)   test_kolmogorov"  s    zTestCephes.test_kolmogorovc             C   s   t tjdd d S )Nr   g        g       )r   r%   Z_kolmogp)r'   r(   r(   r)   test_kolmogp%  s    zTestCephes.test_kolmogpc             C   s   t tjdd d S )Nr   g        )r   r%   Z_kolmogc)r'   r(   r(   r)   test_kolmogc(  s    zTestCephes.test_kolmogcc             C   s*   t tjdd ttjtjtj d S )Nr   g        )r   r%   Z	_kolmogcir   r9   r   r   )r'   r(   r(   r)   test_kolmogci+  s    zTestCephes.test_kolmogcic             C   s   t jdd d S )Nr1   )r%   kv)r'   r(   r(   r)   	_check_kv/  s    zTestCephes._check_kvc             C   s   t jdd d S )Nr1   )r%   kve)r'   r(   r(   r)   
_check_kve2  s    zTestCephes._check_kvec             C   sL   t j}t|dd t|dtj  t|dtj t|tjtj d S )Nr   g        r1   r/   r8   )r%   log1pr   r9   r   r   )r'   rP  r(   r(   r)   
test_log1p5  s
    zTestCephes.test_log1pc             C   s  t j}t}t|dd	 t||d
d|tj d t }|jtd t	||dtj|tjtj
d  t||dtj|tjtj t	||tj d|tjtj
 t||tjd|tjd t	||tj tj|tjdtj
 d  t	||tjtj|tjtj
d  t||tjtj|tjtj t||tj tj|tjtj t||tjtj|tjtj t||tjd|tjtj t||tjtj|tjtj W d Q R X d S )Nr   y                r1   z%invalid value encountered in multiplyr/   r   r-   y                y                r8   )r%   rP  r   r   r9   r   r   filterRuntimeWarningr   r   r   )r'   rP  csupr(   r(   r)   test_log1p_complex<  s"    
$ ",&"$" zTestCephes.test_log1p_complexc             C   s   t tjdddd d S )Nr   r1   g      ?)r   r%   lpmv)r'   r(   r(   r)   	test_lpmvO  s    zTestCephes.test_lpmvc             C   s   t tjddd d S )Nr1   r   g      ?)r   r%   Z	mathieu_a)r'   r(   r(   r)   test_mathieu_aR  s    zTestCephes.test_mathieu_ac             C   s   t tjddd d S )Nr1   r   g      ?)r   r%   Z	mathieu_b)r'   r(   r(   r)   test_mathieu_bU  s    zTestCephes.test_mathieu_bc             C   s   t tjdddd tjdd }tjdd}tjdtjddd
f }ttj|d d d f |d d d f dd ||d d d f |d d d f dddd d S )Nr1   r         ?        c             S   s   |t jd 9 }| dkr2ddd| td|    S | dkrVt||d td|   S | dkrtd| |td| d	 d   S t| | |t| d | d| d   t| d | d| d      S d S )N   r   r/   g      ?r1      r   r-      g      g;f?g      ?)r9   r   r	   )mqr   r(   r(   r)   	ce_smallq\  s    $z.TestCephes.test_mathieu_cem.<locals>.ce_smallqd   r5   	   r   grh|?g+=)r4   r7   )r[  r\  ii)	r   r%   mathieu_cemr9   rN   r   r   rE   r   )r'   rb  r`  ra  r(   r(   r)   test_mathieu_cemX  s    *"zTestCephes.test_mathieu_cemc             C   s   t tjdddd tjdd }tjdd}tjdtjddd
f }ttj|d d d f |d d d f dd ||d d d f |d d d f dddd d S )Nr1   r                 ?c             S   s   |t jd 9 }| dkr2t||d td|   S | dkrZtd| |td|  d  S t| | |t| d | d| d   t| d | d| d      S d S )Nr]  r1   r^  r   r/   r-   r_  )r9   r   r   )r`  ra  r   r(   r(   r)   	se_smallqq  s     z.TestCephes.test_mathieu_sem.<locals>.se_smallqrc  r5   rd  r   grh|?g+=)r4   r7   )rg  rh  ii)	r   r%   mathieu_semr9   rN   r   r   rE   r   )r'   ri  r`  ra  r(   r(   r)   test_mathieu_semm  s    	*"zTestCephes.test_mathieu_semc             C   s   t tjdddd d S )Nr1   r           )rl  rl  )r   r%   mathieu_modcem1)r'   r(   r(   r)   test_mathieu_modcem1  s    zTestCephes.test_mathieu_modcem1c             C   s   t jddd tjddd d d d f }tjtjd	dd d d d d f }tjdddd d d d f }t j||| d }t j||dd  t j||dd  }t j|||d  d| t j|||d   }t||dd d S )
Nr1   r   r-   r/   r   r0   g|=)r4   rO  )	r%   mathieu_modcem2r9   r   r   rE   linspacerm  r   )r'   r`  ra  r   y1fry2r(   r(   r)   test_mathieu_modcem2  s    "&.zTestCephes.test_mathieu_modcem2c             C   s   t tjdddd d S )Nr1   r           )ru  ru  )r   r%   mathieu_modsem1)r'   r(   r(   r)   test_mathieu_modsem1  s    zTestCephes.test_mathieu_modsem1c             C   s   t jddd tjddd d d d f }tjtjd	dd d d d d f }tjdddd d d d f }t j||| d }t j||dd t j||dd  }t j|||d d| t j|||d   }t||dd d S )
Nr1   r-   r/   r   r   r0   g|=)r4   rO  )	r%   mathieu_modsem2r9   r   r   rE   rp  rv  r   )r'   r`  ra  r   rq  rr  rs  r(   r(   r)   test_mathieu_modsem2  s    "$,zTestCephes.test_mathieu_modsem2c             C   s   t tjdddtjtjf t tjdddtjtjf t tjdddtjtjf t tjdddtjtjf t tjdddtjtjf t tjdddtjtjf t tjdddtjtjf t tj	dddtjtjf d S )Ni'  r   g?g      ?)
r   r%   re  r9   r   rj  rm  rv  ro  rx  )r'   r(   r(   r)   test_mathieu_overflow  s    z TestCephes.test_mathieu_overflowc             C   sH   xBt dD ]6}tjddd}t|d ddd t|d d	d
d q
W d S )N<   r/   rc  r1   r   g.dS?g|=)r4   gGc?g-C6?r8   )rH   r%   rx  r   )r'   rA   vr(   r(   r)   test_mathieu_ticket_1847  s    z#TestCephes.test_mathieu_ticket_1847c             C   s   t jd d S )Nr   )r%   Zmodfresnelm)r'   r(   r(   r)   test_modfresnelm  s    zTestCephes.test_modfresnelmc             C   s   t jd d S )Nr   )r%   Zmodfresnelp)r'   r(   r(   r)   test_modfresnelp  s    zTestCephes.test_modfresnelpc             C   s   t tjddd d S )Nr1   r   g        )r   r%   Z	modstruve)r'   r(   r(   r)   _check_modstruve  s    zTestCephes._check_modstruvec             C   s   t tjdddd d S )Nr1   g      ?)r   r%   nbdtr)r'   r(   r(   r)   
test_nbdtr  s    zTestCephes.test_nbdtrc             C   s   t tjdddd d S )Nr1   g        )r   r%   nbdtrc)r'   r(   r(   r)   test_nbdtrc  s    zTestCephes.test_nbdtrcc             C   s   t tjdddd d S )Nr1   g      ?)r   r%   nbdtri)r'   r(   r(   r)   test_nbdtri  s    zTestCephes.test_nbdtric             C   s   t jddd d S )Nr1   g?g      ?)r%   Znbdtrik)r'   r(   r(   r)   Z__check_nbdtrik  s    zTestCephes.__check_nbdtrikc             C   s   t tjdddd d S )Nr1   r   g      @)r   r%   Znbdtrin)r'   r(   r(   r)   test_nbdtrin  s    zTestCephes.test_nbdtrinc             C   s   t tjddddd d S )Nr1   r   g        )r   r%   ncfdtr)r'   r(   r(   r)   test_ncfdtr  s    zTestCephes.test_ncfdtrc             C   sJ   t tjddddd dddg}tjddd|}ttjddd|| d S )Nr1   r   g        g      ?g      ?r/   r   )r   r%   Zncfdtrir  r   )r'   fr   r(   r(   r)   test_ncfdtri  s    
zTestCephes.test_ncfdtric             C   s4   dddg}t jd|dd}tt jd|dd| d S )Nr1   r/   r   g      ?rM   )r%   r  r   Z
ncfdtridfd)r'   Zdfdr   r(   r(   r)   test_ncfdtridfd  s    
zTestCephes.test_ncfdtridfdc             C   s<   dddddg}t j|ddd}tt j|ddd|dd	 d S )
Ng?r1   r/   r   g     @g      ?rM   gh㈵>)r4   )r%   r  r   Z
ncfdtridfn)r'   dfnr   r(   r(   r)   test_ncfdtridfn  s    zTestCephes.test_ncfdtridfnc             C   s4   dddg}t jdd|d}tt jdd|d| d S )Ng      ?g      ?g       @r/   r   rM   )r%   r  r   Z	ncfdtrinc)r'   Zncr   r(   r(   r)   test_ncfdtrinc  s    
zTestCephes.test_ncfdtrincc             C   s   t tjdddd t tjdddd ttjtjdddd	 ttjtjd
tjd ttjd
dtjd ttjtjtjdd ttjtjd
tjd ttjtjd
dtj d S )Nr1   r   g      ?rd  i   r   g        g      ?r   g       @g      $@)	r   r%   Znctdtrr   r9   r   r   r   r   )r'   r(   r(   r)   test_nctdtr  s    zTestCephes.test_nctdtrc             C   s   t jddd d S )Nr1   g      ?r   )r%   Z	nctdtridf)r'   r(   r(   r)   Z__check_nctdtridf  s    zTestCephes.__check_nctdtridfc             C   s   t jddd d S )Nr1   r   )r%   Z	nctdtrinc)r'   r(   r(   r)   test_nctdtrinc  s    zTestCephes.test_nctdtrincc             C   s   t jddd d S )Ng?g?g      ?)r%   Znctdtrit)r'   r(   r(   r)   test_nctdtrit  s    zTestCephes.test_nctdtritc             C   s   t tjdddd d S )Ng      ?r1   g      ?)r   r%   Znrdtrimn)r'   r(   r(   r)   test_nrdtrimn  s    zTestCephes.test_nrdtrimnc             C   s   t tjddddddd d S )Ng      ?g        r   )r7   r4   )r   r%   Znrdtrisd)r'   r(   r(   r)   test_nrdtrisd  s    zTestCephes.test_nrdtrisdc             C   s   t jdddd d S )Nr1   r   )r%   Zobl_ang1)r'   r(   r(   r)   test_obl_ang1  s    zTestCephes.test_obl_ang1c             C   s2   t jddddd}t|d d t|d d d S )Nr1   r   g      ?g        )r%   Zobl_ang1_cvr   )r'   resultr(   r(   r)   test_obl_ang1_cv  s    zTestCephes.test_obl_ang1_cvc             C   s   t tjdddd d S )Nr1   r   g       @)r   r%   Zobl_cv)r'   r(   r(   r)   _check_obl_cv
  s    zTestCephes._check_obl_cvc             C   s   t jdddd d S )Nr1   r   )r%   Zobl_rad1)r'   r(   r(   r)   test_obl_rad1  s    zTestCephes.test_obl_rad1c             C   s   t jddddd d S )Nr1   r   )r%   Zobl_rad1_cv)r'   r(   r(   r)   test_obl_rad1_cv  s    zTestCephes.test_obl_rad1_cvc             C   s   t jdddd d S )Nr1   r   )r%   Zobl_rad2)r'   r(   r(   r)   test_obl_rad2  s    zTestCephes.test_obl_rad2c             C   s   t jddddd d S )Nr1   r   )r%   Zobl_rad2_cv)r'   r(   r(   r)   test_obl_rad2_cv  s    zTestCephes.test_obl_rad2_cvc             C   s   t tjddd d S )Nr1   r                 ?)r  r  )r   r%   pbdv)r'   r(   r(   r)   	test_pbdv  s    zTestCephes.test_pbdvc             C   s   t jdd d S )Nr1   r   )r%   pbvv)r'   r(   r(   r)   	test_pbvv  s    zTestCephes.test_pbvvc             C   s   t jdd d S )Nr1   r   )r%   Zpbwa)r'   r(   r(   r)   	test_pbwa  s    zTestCephes.test_pbwac             C   sB   t jdd}t|tjd t jdddgd}t|dddg d S )Nr   r1   r/   r8   )r%   Zpdtrr   r9   r   r   )r'   valr(   r(   r)   	test_pdtr"  s    zTestCephes.test_pdtrc             C   sF   t jdd}t|dtjd  t jdddgd}t|dddg d S )Nr   r1   r/   g        r8   )r%   Zpdtrcr   r9   r   r   )r'   r  r(   r(   r)   
test_pdtrc)  s    zTestCephes.test_pdtrcc          
   C   s.   t  }|jtd tjdd W d Q R X d S )Nz-floating point number truncated to an integerg      ?)r   rR  rS  r%   pdtri)r'   rU  r(   r(   r)   
test_pdtri0  s    zTestCephes.test_pdtric             C   sT   t jdd}tt j|d dd t jdgdgdggdddg}t|tjd	 d S )
Ng      ?r1   r   g      ?gffffff?g#B;gư>r   )r   r   )r%   Zpdtrikr   Z	gammainccr   r9   r   )r'   rA   r(   r(   r)   test_pdtrik5  s    zTestCephes.test_pdtrikc             C   s   t jdddd d S )Nr1   r   )r%   Zpro_ang1)r'   r(   r(   r)   test_pro_ang1<  s    zTestCephes.test_pro_ang1c             C   s    t tjdddddtd d S )Nr1   r         ?        )r  r  )r   r%   Zpro_ang1_cvr   )r'   r(   r(   r)   test_pro_ang1_cv?  s    zTestCephes.test_pro_ang1_cvc             C   s   t tjdddd d S )Nr1   r   g       @)r   r%   Zpro_cv)r'   r(   r(   r)   _check_pro_cvC  s    zTestCephes._check_pro_cvc             C   s   t jdddd d S )Nr1   g?)r%   Zpro_rad1)r'   r(   r(   r)   test_pro_rad1F  s    zTestCephes.test_pro_rad1c             C   s   t jddddd d S )Nr1   r   )r%   Zpro_rad1_cv)r'   r(   r(   r)   test_pro_rad1_cvI  s    zTestCephes.test_pro_rad1_cvc             C   s   t jdddd d S )Nr1   r   )r%   Zpro_rad2)r'   r(   r(   r)   test_pro_rad2L  s    zTestCephes.test_pro_rad2c             C   s   t jddddd d S )Nr1   r   )r%   Zpro_rad2_cv)r'   r(   r(   r)   test_pro_rad2_cvO  s    zTestCephes.test_pro_rad2_cvc             C   s   t jd d S )Nr1   )r%   psi)r'   r(   r(   r)   test_psiR  s    zTestCephes.test_psic             C   s   t tjdddd d S )Nr   )r   r%   radian)r'   r(   r(   r)   test_radianU  s    zTestCephes.test_radianc             C   s   t tjdd d S )Nr1   g      ?)r   r%   r   )r'   r(   r(   r)   test_rgammaX  s    zTestCephes.test_rgammac             C   sd   t tjdd t tjdd t tjdd t tjdd	 t tjdd t tjd
d d S )Ng333333@g      @g@g      @g      @g333333g      gg      g      g      )r   r%   round)r'   r(   r(   r)   
test_round[  s    zTestCephes.test_roundc             C   s   t jd d S )Nr1   )r%   Zshichi)r'   r(   r(   r)   test_shichic  s    zTestCephes.test_shichic             C   sl   t jd t jtj\}}t|tjd  t|d t jtj \}}t|tj d  ttj|d d S )Nr1   g      ?r   z cosine integral(-inf) is not nan)r%   Zsicir9   r   r   r   r   r   )r'   srT  r(   r(   r)   	test_sicif  s    

zTestCephes.test_sicic             C   s   t tjdd d S )NZ   g      ?)r   r%   sindg)r'   r(   r(   r)   
test_sindgq  s    zTestCephes.test_sindgc             C   s.   t tjddd ttjtjdtj d S )Nr1   g?g?)r   r%   smirnovr   r9   r   r   )r'   r(   r(   r)   test_smirnovt  s    zTestCephes.test_smirnovc             C   sR   t tjddd t tjddd t tjddd ttjtjdtj d S )Nr1   g?r/   g      ?g      ?r   r8   rO  r1   g      ?g      r/   g      ?g      ȿ)r   r%   Z	_smirnovpr   r9   r   r   )r'   r(   r(   r)   test_smirnovpx  s    zTestCephes.test_smirnovpc             C   s   t tjddd ttjtjdtj tjddddd}ttjd|dtj	d|  tjddddd}ttjd	|dtj	d	|  d S )
Nr1   g?r   r   T)endpointr   r   r-   )
r   r%   	_smirnovcr   r9   r   r   rp  r   r  )r'   Zx10Zx4r(   r(   r)   test_smirnovc~  s    zTestCephes.test_smirnovcc             C   sP   t tjdtjddd t tjdtjddd ttjtjdtj d S )Nr1   g?g333333?)r   r%   r  smirnovir   r9   r   r   )r'   r(   r(   r)   test_smirnovi  s    zTestCephes.test_smirnovic             C   sP   t tjdtjddd t tjdtjddd ttjtjdtj d S )Nr1   g?g333333?)r   r%   r  Z
_smirnovcir   r9   r   r   )r'   r(   r(   r)   test_smirnovci  s    zTestCephes.test_smirnovcic             C   s   t tjdd d S )Nr1   g        )r   r%   Zspence)r'   r(   r(   r)   test_spence  s    zTestCephes.test_spencec             C   s:   t tjddd ttjddd ttjddd d S )Nr1   r   g      ?g      ?r/   gMoF?)r   r%   Zstdtrr   )r'   r(   r(   r)   
test_stdtr  s    zTestCephes.test_stdtrc             C   s   t jdd d S )Ngffffff?r1   )r%   Zstdtridf)r'   r(   r(   r)   test_stdtridf  s    zTestCephes.test_stdtridfc             C   s   t jdd d S )Nr1   gffffff?)r%   Zstdtrit)r'   r(   r(   r)   test_stdtrit  s    zTestCephes.test_stdtritc             C   s   t tjddd d S )Nr   g        )r   r%   struve)r'   r(   r(   r)   test_struve  s    zTestCephes.test_struvec             C   s   t tjdd d S )Nr   g      ?)r   r%   tandg)r'   r(   r(   r)   
test_tandg  s    zTestCephes.test_tandgc             C   s   t tjddd d S )Nr1   g      ?)r   r%   Ztklmbda)r'   r(   r(   r)   test_tklmbda  s    zTestCephes.test_tklmbdac             C   s   t jd d S )Nr1   )r%   y0)r'   r(   r(   r)   test_y0  s    zTestCephes.test_y0c             C   s   t jd d S )Nr1   )r%   rq  )r'   r(   r(   r)   test_y1  s    zTestCephes.test_y1c             C   s   t jdd d S )Nr1   )r%   yn)r'   r(   r(   r)   test_yn  s    zTestCephes.test_ync             C   s   t jdd d S )Nr1   )r%   yv)r'   r(   r(   r)   test_yv  s    zTestCephes.test_yvc             C   s   t jdd d S )Nr1   )r%   yve)r'   r(   r(   r)   
_check_yve  s    zTestCephes._check_yvec             C   s  t dd:t d;dt ddt d<dt d=d>t d?dt d@d
t dAdt dBdt ddt ddt dCdDt ddEt ddFt ddt ddg}t dGdt ddHt ddt d dIt d"d#t d$dJt d&dKt d(dLt d*dMt d,dt d-d.t dNdOt d1d2t dPdQt d5d6t d7d7g}ttj||d8d9 d S )RNg@g+?g?g      @g333333?g       @g      ?g      "@g4׵/Y>g8EGr?gffffff@5   g>@g        g|Pk?r   r1      r/   rd        !   g     j@g  ļBg0"b>gpتO#M?gMF>?g5-?g`?g	S+?g6U?gǗ?gjD{?/,Gg` 0Gg!^?gnF5o{?gI\Y?g7f8>goC9	?gyh?gEbr?g{?g.
?ga~gT-s?gɤ,P&?g|b?gޗY3?g!ؑ-@gi$bghzgy(V@^zgһ>g>gx\h<gvIh%<=)r4   g+пgٿg      g      g      "g      g4׵/Yg      iirO  iig0"bg5-gǗʿgnF5o{g7f8gyhg{g|bgޗY3ghgy(V@^)r   r"   r%   wofz)r'   r   wr(   r(   r)   	test_wofz  sN    zTestCephes.test_wofzN)__name__
__module____qualname__r*   r,   rC   rF   rO   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r!  r"  r#  r%  r'  r)  r+  r-  r/  r1  r3  r5  r7  r9  r;  r=  r?  rA  rC  rE  rF  rG  rH  rI  rJ  rL  rN  rQ  rV  rX  rY  rZ  rf  rk  rn  rt  rw  ry  rz  r}  r~  r  r  r  r  r  Z_TestCephes__check_nbdtrikr  r  r  r  r  r  r  Z_TestCephes__check_nctdtridfr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(   r(   r(   r)   r$   ,   sz  	r$   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestAiryc             C   sj   t jd}t|tddddgd t jd}t|tddd
dgd t jd}t|tddddgd d S )NgGz?g*?gTk'kP?ge+?gyCyt?r^  g=
ףp=?g'$'?ge?gL?g
HVV?g
ףp=
?gl@D|?gV~׭?gU?g3{ɔ?gTk'kPĿgeοg
ףp=
׿gV~׭Ϳ)r   r&   r   r   )r'   r   r(   r(   r)   r*     s    


zTestAiry.test_airyc             C   s   t jd}t jd}d gd }x,tdD ] }|| tdtd  ||< q(W x8tddD ]*}|| tttd
td   ||< qXW t||d d S )Ng{Gz?r-   r/   g       @g      @r2   gUUUUUU?gN贁N{?gUUUUUU?gN贁N{?)	r   r+   r&   rH   r   r   absr   r   )r'   abZb1r@   r(   r(   r)   r,     s    


 *zTestAiry.test_airyec             C   s   t jd}td%d&gtd'd(gtd)dgtdd*gf}t||d
 t jd}t|d td+d,d-d.d/gd t|d td0d1d2d3d4gd t|d td5dd6dd7gd t|d td d8d"d9d$gd d S ):Nr/   gl?goe2+
@g(0[@g X*J@gUf?g˰zU`?g4c1=C?gCuT?r-   r   r   g&?g(.2+
@gR@g}`@g%́@r   r1   g7;1[@ge*J@gVw@gL @g<3@r   gN?g3%IQ`?gZyΌ?gʀ11^?g33t?r   gqM0=C?g7uT?g\G`?gp⍞v?g$.m?glgoe2+
g(0[g X*JgUfݿgCuTg&g(.2+
gRg}`g%́g7;1[ge*JgVwgL g<3gNݿgZyΌ׿g33tտg7uTgp⍞v)r   bi_zerosr   r   )r'   biZbiar(   r(   r)   test_bi_zeros  s6    




zTestAiry.test_bi_zerosc             C   s:   t jd}t|tdgtdgtdgtdgfd d S )	Nr1   gcq@g!xL?gMSt$?g ~:p?r-   gcqg!xL)r   ai_zerosr   r   )r'   Zair(   r(   r)   test_ai_zeros  s
    
zTestAiry.test_ai_zerosc             C   s   t jd\}}}}t j|\}}}}t j|\}}	}}dt|d  }
t|d }t||dd t||dd t||
 dddd t|	| dddd t|d d	 ddddddgdd t|d d	 ddd d!d"d#gdd d S )$NiP  r1   g      ?r-   g|=)r4   r   )r7   r4   r2   guq@gqHkZ@g4@g9Ζ%@gB~@gL"@gL?gQO	@gMQnG@g3:@g)}@g @g      ?g      ?guqgqHkZg4g9Ζ%gB~gL"gLgQO	gMQnGg3:g)}g )r   r  r&   r  r   )r'   r   zpZai_zpxZaip_zxZai_zZaip_z_Zai_zpZaip_zpZai_envelopeZaip_enveloper(   r(   r)   test_ai_zeros_big   s    zTestAiry.test_ai_zeros_bigc             C   s   t jd\}}}}t j|\}}}}t j|\}}}}	dt|d  }
t|d }t||dd t||dd t||
 dddd t|	| dddd t|d d	 ddddddgdd t|d d	 ddd d!d"d#gdd d S )$NiP  r1   g      ?r-   g|=)r4   r   )r7   r4   r2   gx&?gg-2+
@gR@gg`@gu%́@g{ @g K;1[@g*J@gVw@g<w @gd
3@g/{
"@g      ?g      ?gx&gg-2+
gRgg`gu%́g{ g K;1[g*JgVwg<w gd
3g/{
")r   r  r&   r  r   )r'   r   r  Zbi_zpxZbip_zxr  Zbi_zZbip_zZbi_zpZbip_zpZbi_envelopeZbip_enveloper(   r(   r)   test_bi_zeros_big8  s    zTestAiry.test_bi_zeros_bigN)	r  r  r  r*   r,   r  r  r  r  r(   r(   r(   r)   r    s   

!r  c               @   s   e Zd Zdd ZdS )TestAssocLaguerrec             C   sL   t jdd}t jddd}t||dd t jddd}t||dd d S )Nr   r1   g?r^  )r   genlaguerreZassoc_laguerrer   )r'   Za1Za2r(   r(   r)   test_assoc_laguerreR  s
    z%TestAssocLaguerre.test_assoc_laguerreN)r  r  r  r  r(   r(   r(   r)   r  Q  s   r  c               @   s   e Zd Zdd ZdS )TestBesselpolyc             C   s   d S )Nr(   )r'   r(   r(   r)   r   [  s    zTestBesselpoly.test_besselpolyN)r  r  r  r   r(   r(   r(   r)   r  Z  s   r  c               @   s   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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 )&
TestKelvinc             C   s   t jd}t|dd d S )Nr/   gT?r   )r   r   r   )r'   Zmbeir(   r(   r)   r   `  s    
zTestKelvin.test_beic             C   s   t jd}t|dd d S )Nr/   gD,X?r   )r   r   r   )r'   Zmbeipr(   r(   r)   r   d  s    
zTestKelvin.test_beipc             C   s   t jd}t|dd d S )Nr/   gPA4?r   )r   r   r   )r'   Zmberr(   r(   r)   r   h  s    
zTestKelvin.test_berc             C   s   t jd}t|dd d S )Nr/   gii?r   gii߿)r   r   r   )r'   Zmberpr(   r(   r)   r   l  s    
zTestKelvin.test_berpc             C   s(   t jd}t|tdddddgd d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r-   )r   Z	bei_zerosr   r   )r'   r  r(   r(   r)   test_bei_zerosp  s    
zTestKelvin.test_bei_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r^  )r   Z
beip_zerosr   r   )r'   Zbipr(   r(   r)   test_beip_zerosy  s    
zTestKelvin.test_beip_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r-   )r   Z	ber_zerosr   r   )r'   r   r(   r(   r)   test_ber_zeros  s    
zTestKelvin.test_ber_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r-   )r   Z
berp_zerosr   r   )r'   Zbrpr(   r(   r)   test_berp_zeros  s    
zTestKelvin.test_berp_zerosc             C   sr   t jd}t|t jdt jdd  t jdt jdd  t jdt jdd  t j	dt j
dd  fd d S )Nr/   y              ?r^  )r   rB  r   r   r   r>  r:  r   r   r@  r<  )r'   Zmkelvr(   r(   r)   test_kelvin  s
    
zTestKelvin.test_kelvinc             C   s   t jd}t|dd d S )Nr/   g>?r   g>ɿ)r   r:  r   )r'   Zmkeir(   r(   r)   r;    s    
zTestKelvin.test_keic             C   s   t jd}t|dd d S )Nr/   gr@d"?r   )r   r<  r   )r'   Zmkeipr(   r(   r)   r=    s    
zTestKelvin.test_keipc             C   s   t jd}t|dd d S )Nr/   gܙU?r   gܙU)r   r>  r   )r'   Zmkerr(   r(   r)   r?    s    
zTestKelvin.test_kerc             C   s   t jd}t|dd d S )Nr/   g^.n3J?r   g^.n3J)r   r@  r   )r'   Zmkerpr(   r(   r)   rA    s    
zTestKelvin.test_kerpc             C   s(   t jd}t|tdddddgd d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r-   )r   Z	kei_zerosr   r   )r'   r:  r(   r(   r)   test_kei_zeros  s    
zTestKelvin.test_kei_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r-   )r   Z
keip_zerosr   r   )r'   r<  r(   r(   r)   test_keip_zeros  s    
zTestKelvin.test_keip_zerosc       
      C   s   t jd}|\}}}}}}}}	t|tdddddgd t|tdd	d
ddgd t|tdddddgd t|tdddddgd t|tdddddgd t|tddddd gd t|td!d"d#d$d%gd t|	td&d'd(d)d*gd d S )+Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r-   g&jj@g+"@g(rw+@gU2@g`<6@g#?gQ5U@gq89 %@gol`.@gO0q3@gE>Q@gB= @gPN)@gm91@g
%5@g '@gs%@gF ^-@gvۅj3@gB7@gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@gWf,@g?"@gFZ*o+@gOpN2@gEa6@)r   Zkelvin_zerosr   r   )
r'   tmpZberzZbeizZkerzZkeizZberpzZbeipzZkerpzZkeipzr(   r(   r)   test_kelvin_zeros  sT    
zTestKelvin.test_kelvin_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   g#?gQ5U@gq89 %@gol`.@gD;q3@r-   )r   Z	ker_zerosr   r   )r'   r>  r(   r(   r)   test_ker_zeros  s    
zTestKelvin.test_ker_zerosc             C   s(   t jd}t|tdddddgd d S )Nr   gS@g89@@g^C'@g1ZG0@g+ڇ4@r-   )r   Z
kerp_zerosr   r   )r'   r@  r(   r(   r)   test_kerp_zeros  s    
zTestKelvin.test_kerp_zerosN)r  r  r  r   r   r   r   r  r  r  r  r   r;  r=  r?  rA  r  r  r  r  r  r(   r(   r(   r)   r  _  s$   		.r  c               @   s   e Zd Zdd ZdS )TestBernoullic          	   C   s*   t jd}t|tddddd	dgd d S )
Nr   g      ?g      ?g-!lV?g        g镲?r-   g      g镲)r   Z	bernoullir   r   )r'   Zbrnr(   r(   r)   test_bernoulli  s    
zTestBernoulli.test_bernoulliN)r  r  r  r  r(   r(   r(   r)   r    s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestBetac             C   s:   t jdd}t jdt jd t jd }t||d d S )Nr/   r-   r2   r^  )r   r   r   r   )r'   betZbetgr(   r(   r)   r     s    zTestBeta.test_betac             C   s0   t jdd}ttt jdd}t||d d S )Nr/   r-   r^  )r   r   r   r  r   r   )r'   Zbetlnr
  r(   r(   r)   r   	  s    zTestBeta.test_betalnc             C   s   t jddd}t|dd d S )Nr1   g?r^  )r   r   r   )r'   Zbtincr(   r(   r)   r     s    zTestBeta.test_betaincc             C   s,   t jddd}t jdd|}t|dd d S )Nr/   r-   g      ?r   )r   r   r   r   )r'   r   compr(   r(   r)   r     s    zTestBeta.test_betaincinvN)r  r  r  r   r   r   r   r(   r(   r(   r)   r	    s   r	  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestCombinatoricsc             C   s   t tjddgddgddg ttjddd ttjddddd ttjddddd	d
 tdd tdD tjdttddd tj	t
jd }ttj||d dd| d}ttjdddd| d S )Nr   r   r-   g      ^@g     @j@T)exactx   )r  Z
repetition   c             S   s   g | ]}t jd |ddqS )rD   T)r  )r   comb).0rA   r(   r(   r)   
<listcomp>  s    z/TestCombinatorics.test_comb.<locals>.<listcomp>r  rD   gV瞯<)r7   r1   l   hU7`S?Q rc  2   )r   r   r  r   r   r   rH   listr9   ZiinforG   max)r'   iir   r(   r(   r)   	test_comb  s    zTestCombinatorics.test_combc             C   sB   d}d}t j|}t j|}ttj||ddtj||dd d S )NF   r5   T)r  )r9   Zint64r   r   r  )r'   r@   rA   Znp_nZnp_kr(   r(   r)   test_comb_with_np_int64(  s    

z)TestCombinatorics.test_comb_with_np_int64c             C   s   t tjddddd t tjddddd t tjddddd t tjddddd ttjddddgddddgd	d	d	d
g d S )Nr/   r   T)r  r   r1   Fr   g        g      ^@r8   r8   r8   r8   r8   )r   r   r  r   )r'   r(   r(   r)   test_comb_zeros0  s    z!TestCombinatorics.test_comb_zerosc             C   sJ   t tjddgddgddg ttjddd ttjddddd d S )	Nr   r   r-   g     @g     @T)r  i  )r   r   permr   r   )r'   r(   r(   r)   	test_perm8  s    zTestCombinatorics.test_permc             C   s   t tjddddd t tjddddd t tjddddd t tjddddd ttjddddgddddgd	d	d	d
g d S )Nr/   r   T)r  r   r1   Fr   g        g     @r8   r8   r8   r8   r8   )r   r   r  r   )r'   r(   r(   r)   test_perm_zeros=  s    z!TestCombinatorics.test_perm_zerosN)r  r  r  r  r  r  r  r  r(   r(   r(   r)   r    s
   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d Z
dd Zdd Zdd ZdS )TestTrigonometricc             C   s   t jd}d}t|| d S )N   g      ?g      @gUUUUUU?g      @)r   r   r   )r'   cbZcbrlr(   r(   r)   r   G  s    
zTestTrigonometric.test_cbrtc             C   s   t jd}d}t||d d S )Ngfffff;@g      ?g      @r^  gUUUUUU?g鎖C@)r   r   r   )r'   Zcb1Zcbrl1r(   r(   r)   test_cbrtmoreL  s    
zTestTrigonometric.test_cbrtmorec             C   s&   t jd}ttd }t||d d S )Nr  g       @r^  )r   r   r	   r   r   )r'   ZcdgZcdgrlr(   r(   r)   r   Q  s    
zTestTrigonometric.test_cosdgc             C   s&   t jd}ttd }t||d d S )Nr5   g      @r^  )r   r   r	   r   r   )r'   ZcdgmZcdgmrlr(   r(   r)   test_cosdgmoreV  s    
z TestTrigonometric.test_cosdgmorec             C   sV   t jdt jdt jtd f}tdd tdd ttd d f}t||d d S )Nr   g333333?r   r1   r^  )r   r   r   r	   r   )r'   csZcsrlr(   r(   r)   r   [  s     &zTestTrigonometric.test_cosm1c             C   s*   t jd}ttd d }t||d d S )Nr5   g      @r1   r^  r8   )r   r   r
   r   r   )r'   ctZctrlr(   r(   r)   r   `  s    
zTestTrigonometric.test_cotdgc             C   s*   t jd}ttd d }t||d d S )Nr   g      @r1   r^  r8   )r   r   r
   r   r   )r'   Zct1Zctrl1r(   r(   r)   test_cotdgmoree  s    
z TestTrigonometric.test_cotdgmorec             C   s   t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjd	dd t tjddd t tjd
dd d S )Nr   g      ?   r  g              i  i;  i  ig      ig      iyig      ig      i)r   r   r   )r'   r(   r(   r)   test_specialpointsj  s    z$TestTrigonometric.test_specialpointsc             C   s&   t tjdgd ttjdd d S )Nr   r1   g        g      ?)r   r   Zsincr   )r'   r(   r(   r)   	test_sincy  s    zTestTrigonometric.test_sincc             C   s   t jd}t|d d S )Nr  g      ?)r   r  r   )r'   Zsnr(   r(   r)   r  ~  s    
zTestTrigonometric.test_sindgc             C   sH   t jd}ttd }t||d t jd}ttd }t||d d S )Nr5   g      @r^  r   g      @)r   r  r   r   r   )r'   ZsnmZsnmrlZsnm1Zsnmrl1r(   r(   r)   test_sindgmore  s    

z TestTrigonometric.test_sindgmoreN)r  r  r  r   r!  r   r"  r   r   r%  r)  r*  r  r+  r(   r(   r(   r)   r  F  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )	TestTandgc             C   s&   t jd}ttd }t||d d S )Nr5   g      @r^  )r   r  r
   r   r   )r'   tnZtnrlr(   r(   r)   r    s    
zTestTandg.test_tandgc             C   sH   t jd}ttd }t||d t jd}ttd }t||d d S )Nr   g      @r^  r{  g      @)r   r  r
   r   r   )r'   ZtnmZtnmrlZtnm1Ztnmrl1r(   r(   r)   test_tandgmore  s    

zTestTandg.test_tandgmorec             C   s   t tjddd t tjddd t tjd
dd t tjddd t tjddd t tjddd t tjddd t tjddd t tjddd t tjd	dd t tjddd d S )Nr   g        r&  r   g      ?r'  r]  r(  i;  ig      g      iyiLig      g      i)r   r   r  )r'   r(   r(   r)   r)    s    zTestTandg.test_specialpointsN)r  r  r  r  r.  r)  r(   r(   r(   r)   r,    s   r,  c               @   sT   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d Z
dd ZdS )	TestEllipc             C   s   t jdtj dS )zRegression test for #912.g      ?N)r   r   r9   r   )r'   r(   r(   r)   test_ellipj_nan  s    zTestEllip.test_ellipj_nanc             C   s0   t jdd}tdtdddg}t||d d S )Ng?r   g      ?   )r   r   r   r	   r   )r'   elrelr(   r(   r)   r     s    zTestEllip.test_ellipjc             C   s   t jd}t|dd tt jdtj tt jdtd  tt jtjd tt jtjtj tt jd
tj t	t jdd	 d S )Ng?g;{yэ?r   g        g      ?r/   r1   r   gN?r8   i)
r   r    r   r   Zellipkm1r9   r   r   r   r   )r'   elkr(   r(   r)   r     s    
zTestEllip.test_ellipkc             C   s  t jtd d}t jd}t||d dt d }dt d }t|d }t j||}t|dd tt jtd d	td  tt jtd d
tj tt jtd tj d	 tt jtd tj	tj	 tt jtd dtj	 tt jddd	 tt jtjdtj tt jtj dtj  tt jtjtjtj	 tt jtjtj tj	 tt jtj tj tj	 tt jtj tjtj	 tt jtj	dtj	 tt jtj	tj	tj	 t
t jddddd t
t jddd d S )Nr/   g?rM   rD   r]  r   gfoKh?r^  g        g      ?r   g      ?gt?r1   g?g+=)r4   g6<R!?r   gfON?i)r   r   r   r    r   r   r   r9   r   r   r   )r'   Zelkincr4  alphaphir`  r(   r(   r)   r     s0    
zTestEllip.test_ellipkincc             C   s   d}d}t j|d}g }x&tdD ]}|j| t j|d}q"W tj||}t|t j|dd tj|t |}t|t j|dd d S )	Ng    ?gPag?r   r   r1   gV^8j?g,j6Ƅ@r/   )	r9   	nextafterrH   appendr   r   r   	full_liker   )r'   mbadr6  r`  mvalsjr  f1r(   r(   r)   test_ellipkinc_2  s    
zTestEllip.test_ellipkinc_2c             C   sD  t jddd}t jddd}t jdtd ddd}ttj|d	t jt j|d
d ttj|d	t jt j|d
d ttj|d	t jt j|d
d t	tjt jd d	t j
 ttj| d	t jt j| d
d ttj| d	t jt j| d
d ttj| d	t jt j| d
d t	tjt j d d	t j
 d S )Ni,  r.   r   gFFg<g?r/   F)r  r1   g  ļB)r4   ii)r9   rE   rp  r   r   r   r   Zarcsinhr
   r   r   )r'   ZxlogZxlinZxlin2r(   r(   r)   test_ellipkinc_singular  s    """&&&z!TestEllip.test_ellipkinc_singularc             C   s   t jd}t|dd tt jdtd  tt jdd tt jtj tj tt jtjtj tt jdtj tt jd	d d S )
Ng?gl?r^  g        r/   g      ?r   g?eg@i)	r   r   r   r   r   r9   r   r   r   )r'   eler(   r(   r)   r     s    
zTestEllip.test_ellipec             C   s  t jtd d}t jd}t||d dt d dt d  }}t|d }t j||}t|dd tt jtd d	td  tt jtd d
d
 tt jtd tj tj tt jtd tj	tj	 tt jtd dtj	 tt jddd	 tt jtjdtj tt jtj dtj  tt jtjtj tj tt jtj tj tj  tt jtjtjtj	 tt jtj tjtj	 tt jtj	dtj	 tt jtj	tj	tj	 t
t jddd d S )Nr/   g?r&  4   r]  #   g'?r^  g        g      ?r   g      ?g6<R!?r   gL@i)r   r   r   r   r   r   r   r9   r   r   r   )r'   Zeleincr@  r5  r6  r`  r(   r(   r)   r     s,    
zTestEllip.test_ellipeincc             C   s   d}d}t j|d}g }x&tdD ]}|j| t j|d}q"W tj||}t|t j|dd tj|t |}t|t j|dd	 d S )
Ng    ?gPag?r   r   r1   g%?r/   gXo
@r-   )	r9   r7  rH   r8  r   r   r   r9  r   )r'   r:  r6  r`  r;  r<  r  r=  r(   r(   r)   test_ellipeinc_2  s    
zTestEllip.test_ellipeinc_2N)r  r  r  r0  r   r   r   r>  r?  r   r   rC  r(   r(   r(   r)   r/    s   r/  c               @   sv   e Zd Zdd Zdd Zd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 )TestErfc             C   s   t jd}t|dd d S )Ng      ?g);T?r^  )r   r   r   )r'   Zerr(   r(   r)   r   1  s    
zTestErf.test_erfc             C   s,   t jd}tdddddg}t||d d S )Nr   gTcJ5?y        =W?go@y        n@g'ʷ@y        g	@g"[

@y        ,y]+@gld&@y        -;'j'>@r-   yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@)r   Z	erf_zerosr   r   )r'   ZerzZerzrr(   r(   r)   test_erf_zeros5  s    
zTestErf.test_erf_zerosr   c             C   s   t jjd d}t jjd|dt jjdd| d  }t jjd|dt jjdd| d  }|d|  }t jdd	p ||}	||j}
t j|	}|	| }	|| }t j|
}|
| }
|| }t||	|||d
 t||
|||d
 W d Q R X d S )Ni  i'  g{Gz?r/   r   r1   y              ?ignore)all)r4   r7   )	r9   r>   r?   paretorandinterrstater   isfiniter"   )r'   funcZ
other_funcr4   r7   r@   r   r   r   r  Zw_realmaskr(   r(   r)   _check_variant_func>  s     &&


zTestErf._check_variant_funcc             C   s   | j tjdd ddd d S )Nc             S   s   dt j|  S )Nr1   )r%   r   )r   r(   r(   r)   <lambda>X  s    z.TestErf.test_erfc_consistent.<locals>.<lambda>g-q=g+=)r4   r7   )rN  r%   r   )r'   r(   r(   r)   test_erfc_consistentU  s
    zTestErf.test_erfc_consistentc             C   s   | j tjdd dd d S )Nc             S   s   t j| |  tj|  S )N)r9   r   r%   r   )r   r(   r(   r)   rO  `  s    z/TestErf.test_erfcx_consistent.<locals>.<lambda>g-q=)r4   )rN  r%   erfcx)r'   r(   r(   r)   test_erfcx_consistent]  s    zTestErf.test_erfcx_consistentc             C   s   | j tjdd dd d S )Nc             S   s   dt jd|   S )Ny              ?y             )r%   r   )r   r(   r(   r)   rO  g  s    z.TestErf.test_erfi_consistent.<locals>.<lambda>g-q=)r4   )rN  r%   erfi)r'   r(   r(   r)   test_erfi_consistentd  s    zTestErf.test_erfi_consistentc             C   s   | j tjdd dd d S )Nc             S   s&   t td tj|  |   tj|  S )Nr/   )r   r   r9   r   r%   rS  )r   r(   r(   r)   rO  n  s    z/TestErf.test_dawsn_consistent.<locals>.<lambda>g-q=)r4   )rN  r%   r   )r'   r(   r(   r)   test_dawsn_consistentk  s    zTestErf.test_dawsn_consistentc             C   s6   t jt j t jg}t jddg}ttj||dd d S )Nr1   gV瞯<)r4   r8   )r9   r   r   r   r   r   )r'   r   r   r(   r(   r)   test_erf_nan_infr  s    zTestErf.test_erf_nan_infc             C   s6   t jt j t jg}t jddg}ttj||dd d S )Nr/   r   gV瞯<)r4   )r9   r   r   r   r   r   )r'   r   r   r(   r(   r)   test_erfc_nan_infw  s    zTestErf.test_erfc_nan_infc             C   s8   t jt j t jg}t jt jdg}ttj||dd d S )Nr   gV瞯<)r4   )r9   r   r   r   r   rQ  )r'   r   r   r(   r(   r)   test_erfcx_nan_inf|  s    zTestErf.test_erfcx_nan_infc             C   s<   t jt j t jg}t jt j t jg}ttj||dd d S )NgV瞯<)r4   )r9   r   r   r   r   rS  )r'   r   r   r(   r(   r)   test_erfi_nan_inf  s    zTestErf.test_erfi_nan_infc             C   s6   t jt j t jg}t jddg}ttj||dd d S )Ng        gV瞯<)r4   g       )r9   r   r   r   r   r   )r'   r   r   r(   r(   r)   test_dawsn_nan_inf  s    zTestErf.test_dawsn_nan_infc             C   s@   t jt j t jg}t jt jd  ddg}ttj||dd d S )Ny              ?g        y                gV瞯<)r4   y                y                )r9   r   r   r   r   r  )r'   r   r   r(   r(   r)   test_wofz_nan_inf  s    zTestErf.test_wofz_nan_infN)r   )r  r  r  r   rE  rN  rP  rR  rT  rU  rV  rW  rX  rY  rZ  r[  r(   r(   r(   r)   rD  /  s   	
rD  c               @   s   e Zd Zdd ZdS )	TestEulerc       
      C   s  t jd}t jd}t jd}t|dgdd t|ddgdd t|dddgdd t jd}ddddd	d
dddddddg}tdd}xFtddD ]8}|d rt||  |d| < qt|| |d| < qW tjdd t|| | }t	|}	W d Q R X t
|	dd d S )Nr   r1   r/   gV瞯<)r4   r   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: r   dr1  rF  )rG  g        r&  r8   )r   )r   Zeulerr   r   rH   rI   r9   rJ  r   r  r   )
r'   Zeu0Zeu1Zeu2Zeu24Z	mathworldcorrectrA   errZerrmaxr(   r(   r)   
test_euler  s(    




zTestEuler.test_eulerN)r  r  r  ra  r(   r(   r(   r)   r\    s   r\  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestExpc             C   s   t jd}d}t|| d S )Nr/   r-   )r   r   r   )r'   exexrlr(   r(   r)   r     s    
zTestExp.test_exp2c             C   s   t jd}d}t||d d S )Ng      @r/   r^  g;f@)r   r   r   )r'   exmexmrlr(   r(   r)   test_exp2more  s    
zTestExp.test_exp2morec             C   s   t jd}d}t|| d S )Nr/   r   rc  )r   r   r   )r'   rc  rd  r(   r(   r)   r     s    
zTestExp.test_exp10c             C   s   t jd}d}t||d d S )Ng      @r   r^  gYs@)r   r   r   )r'   re  rf  r(   r(   r)   test_exp10more  s    
zTestExp.test_exp10morec             C   sN   t jdt jdt jdf}tdd tdd tdd f}t||d d S )Nr/   r   r-   r1   r^  )r   r   r   r   )r'   rc  rd  r(   r(   r)   r     s    "zTestExp.test_expm1c             C   sN   t jdt jdt jdf}tdd tdd tdd f}t||d d S )Nr/   g @g@r1   r^  )r   r   r   r   )r'   Zex1Zexrl1r(   r(   r)   test_expm1more  s    "zTestExp.test_expm1moreN)	r  r  r  r   rg  r   rh  r   ri  r(   r(   r(   r)   rb    s   rb  c               @   s   e Zd Zdd Zejjdddejddfejddfgdd Z	d	d
 Z
dd Zejjdejdfejdfejejgdfejejgdfgdd Zdd ZdS )TestFactorialFunctionsc             C   s  t tjdd t tjdd t tjdd t dddgtjddd	gd
d t tjd	dgddggddgddgg ttjdddd ttjdddd ttjdddd ttjd	ddd ttjdddd ttjddddgddddddg ttjd	dgddggdddgddgg ttjtjdddtjtjddd
 ttjtjdddtjtjddd
 ttjtjdd	dtjtjdd	d
 xBdD ]:}tdtjd| tddddgtjdddd g| qW xtddD ]}tj|}t|tj|d t|tj|gdd  t	t
|tj|d
 t	t
|tj|gd
d  ttj|dtj|d
 ttj|gdtj|gd
 qW d S )!Nr   r1   r/   g      @g      8@g      ^@r   r-   r   F)r  r  r2   r   TrM   l    Xnr0   r   i  i _7 r  r  r  r  r  r  r  )TFr  r   )r   r   	factorialr   r9   r   r   rH   mathr   rI   )r'   r  r@   r_  r(   r(   r)   test_factorial  sH    


z%TestFactorialFunctions.test_factorialzx, exactr1   TFc             C   s   t jtj||dstd S )N)r  )r9   Zisscalarr   rl  AssertionError)r'   r   r  r(   r(   r)   test_factorial_0d_return_type  s    z4TestFactorialFunctions.test_factorial_0d_return_typec             C   s8   t dddgtjdddgdd ttjdd	dd
 d S )Ng     @Z@g      x@g     @r0   r^  rd  F)r  Ti   )r   r   Z
factorial2r   )r'   r(   r(   r)   test_factorial2  s    
z&TestFactorialFunctions.test_factorial2c             C   s0   t tjddddd t tjddddd d S )Nr   r1   T)r  r  r   r   )r   r   Z
factorialk)r'   r(   r(   r)   test_factorialk  s    z&TestFactorialFunctions.test_factorialkc             C   s    t j||d}ttj| d S )N)r  )r   rl  r   r9   r   )r'   r   r  r  r(   r(   r)   test_nan_inputs  s    z&TestFactorialFunctions.test_nan_inputsc             C   s   t jt jdddt jg}t j}|jtd tj|dd}tt jt jdddt jg| tj|dd}tt jt jdddt jg| W d Q R X d S )	Nr1   r/   r   z-Using factorial\(\) with floats is deprecatedT)r  r2   F)	r9   r   r   r   rR  DeprecationWarningr   rl  r   )r'   r   rU  r  r(   r(   r)   test_mixed_nan_inputs!  s    z,TestFactorialFunctions.test_mixed_nan_inputsN)r1   T)r1   F)r  r  r  rn  r  r  Zparametrizer9   r   rp  rr  rs  r   rt  rv  r(   r(   r(   r)   rj    s   :rj  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestFresnelc             C   s&   t tjd}t|t ddgd d S )Ng      ?ggN?gց[?r^  )r   r   r   r   )r'   frsr(   r(   r)   r   ,  s    zTestFresnel.test_fresnelc             C   s   t jtj}t|d d S )N      ?)ry  ry  )r   r   r9   r   r   )r'   rx  r(   r(   r)   test_fresnel_inf10  s    zTestFresnel.test_fresnel_inf1c             C   s   t jtj }t|d d S )Ng      ?            )r{  r|  )r   r   r9   r   r   )r'   rx  r(   r(   r)   test_fresnel_inf24  s    zTestFresnel.test_fresnel_inf2c          	   C   sz   t jd\}}t|tdddddgd t|tdd d!d"d#gd t j|d }t j|d }t|dd t|dd d S )$Nr   g @y        X9v?g^I@y        48E?g=
ףp@y        +?g@y        eX?gO@y        Ǻ?r   g.1?y        ǘ?gʡE6@y        :#J{/?gq-
@y        y&1?gh o@y        ߾3?gW2q@y        qh?r   r1   r&  y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?)r   fresnel_zerosr   r   r   )r'   szoczoZvals1Zvals2r(   r(   r)   test_fresnel_zeros:  s"    zTestFresnel.test_fresnel_zerosc             C   s(   t jd\}}t jd}t||d d S )Nr2   r_  )r   r~  Zfresnelc_zerosr   )r'   r  r  Zfrcr(   r(   r)   test_fresnelc_zerosM  s    
zTestFresnel.test_fresnelc_zerosc             C   s(   t jd\}}t jd}t||d d S )Nr   r_  )r   r~  Zfresnels_zerosr   )r'   r  r  rx  r(   r(   r)   test_fresnels_zerosR  s    
zTestFresnel.test_fresnels_zerosN)	r  r  r  r   rz  r}  r  r  r  r(   r(   r(   r)   rw  +  s   rw  c               @   sL   e Zd Zdd Zdd Zdd Zedd Zed	d
 Zdd Z	dd Z
dS )	TestGammac             C   s   t jd}t|d d S )Nr   g      8@)r   r   r   )r'   Zgamr(   r(   r)   r   Y  s    
zTestGamma.test_gammac             C   s(   t jd}tt jd}t||d d S )Nr   r^  )r   r   r   r   r   )r'   ZgamlnZlngamr(   r(   r)   r   ]  s    
zTestGamma.test_gammalnc             C   s(   t jdd}t jdd}t||d d S )Ng      ?r^  )r   r   gammaincinvr   )r'   ZgccinvZgcinvr(   r(   r)   r   b  s    zTestGamma.test_gammainccinvc             C   sv   t jdd}t jd|}t|dd t jdd}t jdd}td|dd t|ddd t jdd}td	|dd d S )
Ng?r1   r   g?g`	\;)r   r  gmb<g      &@)r   r  gammaincr   )r'   r   r   r(   r(   r)   test_gammaincinvg  s    zTestGamma.test_gammaincinvc             C   sV   dt jdddt jdddg}x2|D ]*}tjd|}tjd|}t||dd q$W d S )	Ng      ?r   g-q=r1   g?)r4   gCs?g^F    ?)r9   r7  r   r  r  r   )r'   ZptsZxpr   r   r(   r(   r)   test_975s  s    
zTestGamma.test_975c             C   s(   t jd}dt jd }t||d d S )Nr^  r1   )r   r   r   r   )r'   ZrgamZrlgamr(   r(   r)   r    s    
zTestGamma.test_rgammac             C   s(   t tjtjd ttjdd d S )Nr1   r   r8   r8   )r   r9   r   r   r   r   r   )r'   r(   r(   r)   test_infinity  s    zTestGamma.test_infinityN)r  r  r  r   r   r   r!   r  r  r  r  r(   r(   r(   r)   r  X  s   r  c               @   sL   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d Z
dS )
TestHankelc             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   
test_negv1  s    zTestHankel.test_negv1c             C   s8   t jdd}t jddt jddd  }t||d d S )Nr1   g?y              ?r^  )r   r  r.  r  r   )r'   Zhank1Zhankrlr(   r(   r)   r    s    zTestHankel.test_hankel1c             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   test_negv1e  s    zTestHankel.test_negv1ec             C   s0   t jdd}t jddtd }t||d d S )Nr1   g?y        ?r^  y       )r   r  r  r   r   )r'   Zhank1eZhankrler(   r(   r)   r    s    zTestHankel.test_hankel1ec             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   
test_negv2  s    zTestHankel.test_negv2c             C   s8   t jdd}t jddt jddd  }t||d d S )Nr1   g?y              ?r^  )r   r  r.  r  r   )r'   Zhank2Zhankrl2r(   r(   r)   r    s    zTestHankel.test_hankel2c             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   
test_neg2e  s    zTestHankel.test_neg2ec             C   s(   t jdd}t jdd}t||d d S )Nr1   g?r^  )r   r  r   )r'   Zhank2eZhankrl2er(   r(   r)   test_hankl2e  s    zTestHankel.test_hankl2eN)r  r  r  r  r  r  r  r  r  r  r  r(   r(   r(   r)   r    s   r  c               @   s\   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d Z
dd Zdd ZdS )	TestHyperc             C   s8   t jdd}t jddt jddd  }t||d d S )Nr1   g?y              ?r^  )r   Zh1vpjvpyvpr   )r'   h1Zh1realr(   r(   r)   	test_h1vp  s    zTestHyper.test_h1vpc             C   s8   t jdd}t jddt jddd  }t||d d S )Nr1   g?y              ?r^  )r   Zh2vpr  r  r   )r'   h2Zh2realr(   r(   r)   	test_h2vp  s    zTestHyper.test_h2vpc             C   s&  t tjddddd t tjddddd tjd	ddddd
g}tjdddddg}t ||dd tjd	tjddddd
gd }t ||jtdd dd
dg}dddg}tj||}dddg}t ||dd tjtj|gd |}t |tj|gd dd tt	tjtj|gd ddg d S )Ng      @g      ?gQvo?g-q=)r4   r   g      ?gV瞯<g      @g      ?r1   g̷?g3|t-Ք?go?g{h?y                gc?r/   r   g      r8   g      r8   )
r   r   hyp0f1r9   r   r   r   	row_stackassert_raises
ValueError)r'   r   r   x1Zx2r(   r(   r)   test_hyp0f1  s"    

 


zTestHyper.test_hyp0f1c             C   s   t jdd}t|d	 d S )
Ng?g      ?y              ?g;EG?guM?y              ?y      ?      ?y        uM?y;EG?uM?)r   r  r   )r'   resr(   r(   r)   test_hyp0f1_gh5764  s    zTestHyper.test_hyp0f1_gh5764c          h   C   s8  t jddd}t|dd tddddgd	dddgddddgddddgddddgddddgdddd gd!dd#d$gd%dddgd)d*d+d,gdd.dd0gd1dd3d4gd5dd7dgdd:dd<gd=d>d?d@gdAdBdCdDgdEddGdHgddJddLgdMddOdgdQdRddTgdUdVdWdXgddd[d\gd]dd_dgddbdcddgdedfdgdhgddjddlgdmdddpgdddsdgdudddgddd{dgdĐdddgdƐdǐddgddddgddddgddddgddddgddΐddgddddgddddgddddgddАddgddddgddddgddddgddddgdאdؐdِdgdېdddgdސdddgddddgdddːdgd͐dddgddddgdd֐ddgdddېdgdݐddߐdgddddgddddgddddgddddgddddgddddgddddgdddd gddddgddddgddddgddd dgddddgddddgddddgdddd gdd	d#d$gd%d&d
dgd)dd+dgdd.d/dgd1dd3dgd5d6dd8gd9dd;d<gdd>dd@gdddCdDgddFddHgddJdKdLgddddPgddRdSdTgdUddWdXgd d!d[d"gd#d$d%d&gdadbd'ddgd(d)dgdhgdid*dkd+gd,dnd-dpgdqd.dsdtgdud/d0dxgd1d2d{d|gd}d~d3dgddddgd4dd5dgd6ddd7gd8d9d:dgd;d<ddggd}x>|D ]6\}}}}t j|||}tt|| | dk  qW d S (=  Ng?g333333?g?r0   g{*= @g˱a)@g5=@gvX@g)AI@gDAh@g$Pj)@g~٭@g,qUp,@g@=&?gX 3@gZ@g\@g88*@g\ֳ!=@g   ƞAgAZ;@gOFA'@gxŝO<@g_Dc Dg^g@g V*E7@g4)3@g7-XtDgΧU(@g2Tj8@g$@g  LhBge;@gJgo?gr@g `屫Bg5'.@gqZ=@g7߈Y.@g8w@gB,@g"^#@grT[	R3@g  BgY@gN],*@g*!j,@g1@g#r @gq{874*@gWs%o.@gMdDg8|.2@g*!,@g?I(#@gJ
r .Dgu8@g#=)@g*'1@g)ψvAg%0N:@gUx1@gx@gr),c@g:M8@gGb+=@g3ҜV/@gX9ҙim@g"dxz@gqK?gv7##@g  >Bg kx-@gD8L+8@g܈2@g72LU@gtd@Q4h6@g%@}@gr3b @gu߯ѡCg򋷺?g"p$`E2@gY|T3@g\D?gV-(+@g$[3@g;/@gEQwв@g[f@gLL4@gQV@g0#.@g;@g/?jv@gx.<N&@g^IDg+9@gX[?gbZSH%@g5/)@g}RgŢ	@g},*@g6@g1w-@gRA(@g_@g5A} :=@g   FAgQz5@gq.#@gTq&@gc ?gφ%#@gZV@
@g%@0@g   SydAgB۽ܟ%@g*>8@gV@'@g	ʦ@g/H:@gn@S @g)bǙ9@g  9AgT쁹3!@gD @gkLFr%@g3333`4Ag:k
?g\=)'@gi,k9@gbx?giXw@g-CwU5@g'jin9@gX5@gb@gTy4#/@g]pH=@gIw?g63@g2XxM:@g~?^0@gW1?g37@g R{@gicx.4?gmm?gv܏%7@g9Ma%=@g}y@gGr##@gG8-xы.@gǂ@ghb(@g  Agw1@gq2@gO],@g0ɷ-X@g2@g́y#<@gͣx?g]?g];˄f$@g1}0@g_9@g8ڃ@g:!ω1@g)q(@gg2@gv%)AgYN:+@gn	Ȱ-?g>@gZd|I.Agr/K@g\}L9@g*@gΙ?gQq5V@g?)@g'@0@glۭ`@gVn:@gRQ0@gT&@g QCBgR4 8@gi+@gK @g{GAgtiq+@g(O?3@g	1=@g  8cBg|>oϘ@g\!<@g"?4V?g%c\q?g ?gpfP!@gAO:@g,\Cg=R8@g%;@gz3@g~0Gg.CVl@ge< .@g9@gkq1Ag=~$@gpR7@g 77@g,ǆ@g^?g{)@gRA2@g  dLBgf=4,R@gyO-@g#ޕ~8@gEg|ݩ%P4@g:<9@gKzs4@g$(~O4@g2y3@g1$6@g&TpxA6@gG!JAgf^XH
^;@g7r:@g`,/@gi{dAgihx@g!B8(@g7j*@gh@glmF<@gpO4@g`2"@g->gnV3!2@g.mq1@g!Z{.@grOEgs`m@gzAU@guC=V#@g  \BgPL-(@g,9$"9@g6u7@geRFgw8@gv=5@gjRW+@g(\-@gy@g~=@g4MV@gwz:@g^0@g+7%@g-@j81@g5ׂ,j@gj4@gz0@g-</;@gݽ]
DgN43@g}W6@gLUS!9@gɍF>g Q4@g=}@gȮ5@g]nhgFgV9@g9@gf9,#@gF|}fv?g=^ee;@gy}2@g'T> @g#o@g+5@g;@gN8Cg8@g   bkAgSx+26@g@gI0@gSMC>gT*0@g`<6@gWy5@gǟRjFgӰk
@g/:?gJLHR"@gxu-@gKu@g6@gt8_x7@gd;='Fg+:;@gBͤ10@g";?gK$?gp @g d@g	=@g=6` FgTbR.@g9:g3@gUf@gRbKZ@g!@g%P73;@g]?gr	y?g)Yv2@gȹq@g/3@g   Ag?j/|?g7:@g#~oݽ?g8pE?gPj/@gS"X)@gY@gt0N?g@go&	xT7@g-hT@#@g.;%r?g'_@gɖ@7@g:Kڞ$@g [Bgk5ں9@gѼ:@gk%tp;@g  .<^Bgf:OI&@gO/@g#01|2@gf`Y@gqv~@guFd9@gz+S7@gF1/$?gx3@g~[6:@g;s9@gKw*1@gP@gv;K,@gҬd&<@g!sFgֈ`|.@gOwx=@g+MK<@gUU@gکI@g©jG1@g4g؃66@g(4ν4EgS>?gD-l?gSL,c<@gԉE4?gd?A @g3$)@glx^?gs>|T?g(%@g:ĉ$@g~^gv2@gJHF&?g}r":@g3\z;@go)@g+hAg@')"@gVv/@guQU-@gfy2yt@gM6y%$@g/;R#@g):@gw%",6?g%x'@g$6@g5@gu$9?glkC9@g<tF8@gp?g ?g-C6?g{*= g˱a)g5=gDAhg$Pj)g,qUp,gAZ;gOFA'gxŝO<g V*E7g2Tj8gJgogqZ=g7߈Y.g8wgYg*!j,gq{874*g*!,gJ
r .gu8g*'1gqKg kx-g܈2g%@}gu߯ѡgY|T3g[fgLL4g/?jvg^Ig+9gRA(g5A} :=gq.#gTq&gφ%#gZV@
g   Sydg*>8gV@'g	ʦg/H:gn@S g  9gT쁹3!gD g:k
g\=)'gi,k9giXwg'jin9g]pH=g~?^0g37g9Ma%=g}yg1}0g_9g:!ω1gg2gYN:+g>g*gVn:gRQ0gT&g QCgR4 8gi+g{Ggtiq+g(O?3g|>oϘg gpfP!g,\g%;g=~$g 77g^g{)g  dLgyO-gg|ݩ%P4gKzs4g1$6g&TpxA6glmF<g-g.mq1gzAUg  \g,9$"9gw8gjRW+gyg4MVg^0g+7%g-@j81g5ׂ,jgj4gz0g-</;gLUS!9g=}gV9g9gf9,#gy}2g'T> g+5g;gI0gSMCg`<6gǟRjgӰk
gxu-g6gd;='g";g dgTbR.gUfg!g%P73;g)Yv2g/3g?j/|gPj/gS"X)gYggɖ@7gk5ں9gѼ:g  .<^gf:OI&gO/g#01|2gf`Ygz+S7gx3g~[6:gv;K,g!sgֈ`|.g+MK<g©jG1gD-lgSL,c<gd?A g3$)g~^gv2g@')"guQU-gM6y%$gw%",6Կg%x'g$6g5glkC9g<tF8)r   r
  r   r   r   r  )r'   hyp1Zref_datar  r  rT  r   r  r(   r(   r)   r    s    












zTestHyper.test_hyp1f1c             C   s,   t jddd}t jddd}t||d d S )Ng      ?g      ?g7B.@g|:B.@r_  g7B.g|:B.)r   r
  r   )r'   r  Zhyp2r(   r(   r)   test_hyp1f1_gh2957K  s    zTestHyper.test_hyp1f1_gh2957c             C   s   t jddd}t|dd d S )Ng      ?g      ?i  g<`?r_  i)r   r
  r   )r'   Zhypr(   r(   r)   test_hyp1f1_gh2282P  s    zTestHyper.test_hyp1f1_gh2282c       	      C   s  dddd d!t d$ gdddd&d'td gddddd)t d* gdddd+d6gd7ddtdd td9gdd
ddtjdtjd; tjd< tjd= gddd?d@dBtt tjdD tjdG tjdI gd	ddKdLdNtt tjdP tjdS tjdU gd
dVdXdZd^tjd_ tjda tjdb tjde gddfddgdgdhddddgddidddjgdkddddgddldddmgdodrg}xDt|D ]8\}\}}}}}tj	||||}t
||dd| d qvW d S )sNg      ?r1   g      ?g?r/   g      ?r   g      @r   r-   r^  g       @rd  g      @g      @g      $@gEciH!@gffffff?gzG?gy&1|?r2   g"nN%@?g!J>r   i        %@Gz?zS;[B.VP<ztest #%d)err_msgg|Gz?g      @g333333?g?g?g|Gz?g|Gzg      @r8   g      g?g|Gz?g      @rk  g      g333333?rk  g3\?g?rk  gi@gYi2gYi2?r  r2   g433333?r-   r1   r   r-   r1   r/   r8   r^  g      ?r-   r/   g      ?g      @g      ?g      ?g       @r   r-   r8       g      ?r2   r-   g      @g      @g      ?g      @g      @g      @r^  g      g      gUUUUUUտgqq?rO  ig  @gUUUUUU?r^  g      g      ?gUUUUUU?r^  gg      g      $rO  r  gy&1|irk  g!J|)r   r  r  r  r  |      %)r   r  r  r  r  )r   r   r   r	   r   r   r   r   	enumerater  r   )	r'   r   rK   r  r  rT  r   r|  cvr(   r(   r)   r  T  s.    0**,zTestHyper.test_hyp2f1c             C   s   t jddd}t|dd ddddgd
dddg }}t|t| }}d}t j|||}ttt|  t j|||t jd| | t j|  |d|  t jd| | d| | t j|t jd|     }t||d d S )Nr1   g?rc  g D?r0   g333333?g333333?g333333?g@g      ?g	@g?g      ?r/   r_  ggٿg	)	r   hyperur   r   r   r   r
  r   r   )r'   Zval1r  r  r   ZhypuZhprlr(   r(   r)   test_hyperus  s    BzTestHyper.test_hyperuc             C   s   t tjddddd d S )Nr1   g      ?g3333334@g(¨?r_  )r   r   r  )r'   r(   r(   r)   test_hyperu_gh2287  s    zTestHyper.test_hyperu_gh2287N)r  r  r  r  r  r  r  r  r  r  r  r  r  r(   r(   r(   r)   r    s   rr  c               @   s  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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2ddddeZ3e4j5j6e7j8 dfkdgdhdidj Z9e4j5j6e7j8 dfkdgdhdkdl Z:dmdn Z;dodp Z<e4j5j=dqdr Z>dsdt Z?dudv Z@dwdx ZAdydz ZBd{d| ZCd}d~ ZDdd ZEdddZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdcS )
TestBesselc             C   s&   t tjd}t|t ddgd d S )Ng?gbɃ?gΝJ ?r^  gΝJ ֿ)r   r   r   r   )r'   Zit0r(   r(   r)   r!    s    zTestBessel.test_itj0y0c             C   s&   t tjd}t|t ddgd d S )Ng?gbqTtt?g/]oo?r^  g/]ooۿ)r   r   r  r   )r'   Zit2r(   r(   r)   r    s    zTestBessel.test_it2j0y0c             C   s   t tjddtjdd d S )Nr   r/   r  )r   r   r$  )r'   r(   r(   r)   test_negv_iv  s    zTestBessel.test_negv_ivc             C   s&   t jd}t jdd}t||d d S )Ng?r   r^  )r   r(  r,  r   )r'   ozozrr(   r(   r)   r)    s    
zTestBessel.test_j0c             C   s&   t jd}t jdd}t||d d S )Ng?r1   r^  )r   r*  r,  r   )r'   o1o1rr(   r(   r)   r+    s    
zTestBessel.test_j1c             C   s   t jdd}t|dd d S )Nr1   g?g;x?r^  )r   r,  r   )r'   Zjnnrr(   r(   r)   r-    s    zTestBessel.test_jnc             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r.  )r'   r(   r(   r)   test_negv_jv  s    zTestBessel.test_negv_jvc             C   sl   dddgdddgddd	gd
ddgdddgg}x:t |D ].\}\}}}tj||}t||dd| d q6W d S )Nr   g?g
Ye?g       @r   g:0yE>g˿+>g|=g)%->g@g5c)!9g      @g%,?r^  ztest #%d)r  gUUUUUU?gUUUUUU?gUUUUUU?g%,Ϳ)r  r   r.  r   )r'   r   rK   r|  r   r   Zycr(   r(   r)   r/    s    zTestBessel.test_jvc             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r0  )r'   r(   r(   r)   test_negv_jve  s    zTestBessel.test_negv_jvec             C   sT   t jdd}t|dd t jdd}d}t jd|tt|j  }t||d d S )Nr1   g?g;x?r^  y              ?y?      ?y?      ?)r   r0  r   r.  r   r  r   )r'   ZjvexpZjvexp1r   Zjvexprr(   r(   r)   test_jve  s    zTestBessel.test_jvec             C   s   t jdd}t jdd}t|tdddddgd	 t|td
ddddgd	 t jdd}t|tdddddgdd t jdd}t|tdddddgdd d S )Nr   r   r1   go@.=@gzj,[@glN!@g5/ D'@gh>-@r-   gW@g0@gQX$@g*@g8*5{x0@r6   gEk[@g~Cju]@gYrʝ^@g, `@gf	`@gvIh%<=)r4   i-  gts@g&ǭr3t@gWt@g,$Y&u@gu@)r   jn_zerosr   r   r   )r'   jn0Zjn1Zjn102Zjn301r(   r(   r)   test_jn_zeros  s0    zTestBessel.test_jn_zerosc             C   s   t jdd}t|d ddd t|d d	dd t|d d
dd t jdd}t|d ddd t|d ddd t|d ddd t jdd}t|tdddddgdd d S )Nr   i,  i  r1   g;@gvIh%<=)r4   i  g8v@gׂMm@r   gxi@g	,@gи{>@i  r   gUDX@g!@g*HS@gz5 @g@2;@g:0yE>i  i  i+  i  i  i+  )r   r  r   r   )r'   r  Zjn10Zjn3010r(   r(   r)   test_jn_zeros_slow  s    zTestBessel.test_jn_zeros_slowc       
         s   t j  fdd}xtddD ]z}t j|\}}}}xbt|||D ]R\}}}	|	dkrjt ||ddd qB|	dkrt|||ddd qBtd| qBW qW d S )	Nc                s     | d | | d | d S )Nr1   r/   r(   )r@   r   )r,  r(   r)   jnp  s    z(TestBessel.test_jnjnp_zeros.<locals>.jnpr1   r5   r   gư>)r7   zInvalid t return for nt=%d)r   r,  rH   Zjnjnp_zeroszipr   ro  )
r'   r  ntr   r@   r`  tzznnttr(   )r,  r)   test_jnjnp_zeros  s    zTestBessel.test_jnjnp_zerosc             C   sL   t jdd}t|tdddddgd t jd	d}tt jd	|d
dd d S )Nr1   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r-   i  r   gV瞯<)r7   )r   Z	jnp_zerosr   r   r   r  )r'   r  r(   r(   r)   test_jnp_zeros  s    zTestBessel.test_jnp_zerosc             C   s\   t jdd}t|tdddddgtdd	d
ddgtdddddgtdddddgfd d S )Nr1   r   gW@g0@gQX$@g*@g8*5{x0@g(yu?gOXeS@ga!@gxi'@g'Nw(-@g"@g+@g-9(1!@gȘ'@g>tA}-@g0v@gjt@gH.?$@g}"O*@gGŧp0@)r   Z
jnyn_zerosr   r   )r'   Zjnzr(   r(   r)   test_jnyn_zeros  s*    zTestBessel.test_jnyn_zerosc             C   s8   t jdd}t jddt jdd d }t||d d S )Nr/   r1   r   r   )r   r  r.  r   )r'   ZjvprimZjv0r(   r(   r)   test_jvp	  s    zTestBessel.test_jvpc             C   s&   t jd}t jdd}t||d d S )Ng?r   r^  )r   r2  rK  r   )r'   ZozkZozkrr(   r(   r)   r3  	  s    
zTestBessel.test_k0c             C   s&   t jd}t jdd}t||d d S )Ng?r   r^  )r   r4  rM  r   )r'   ZozkeZozkerr(   r(   r)   r5   	  s    
zTestBessel.test_k0ec             C   s&   t jd}t jdd}t||d d S )Ng?r1   r^  )r   r6  rK  r   )r'   Zo1kZo1krr(   r(   r)   r7  %	  s    
zTestBessel.test_k1c             C   s&   t jd}t jdd}t||d d S )Ng?r1   r^  )r   r8  rM  r   )r'   Zo1keZo1kerr(   r(   r)   r9  *	  s    
zTestBessel.test_k1ec       
      C   s  dt jj  d }dt jj  d }tjd||}tjd||}tjd||}tjd||}t|jdgd t|jt|| d || gd d || d || d  d|| d  |d  d|d  |d  g}|d |d d|d   |d |d  |d  g}t|jt|d	 d || d || d  || d
  d
|| d  || d  |d  d|| d  |d  |d  d|d  |d  |d  g}|d |d d|d   |d d|d   d|d   |d |d  |d  |d  g}	t|jt|	d d d S )Nr   r1   r   r/   r   r1  g       @r-   g       @r2   r_  r^  g      H@)r9   r>   r   Zjacobir   rT  r   )
r'   r  r  ZP0ZP1ZP2ZP3cpZp2cZp3cr(   r(   r)   test_jacobi/	  s    &B2D<XzTestBessel.test_jacobic             C   s   t jdd}t|dd d S )Nr   g?g_2?r^  )r   rD  r   )r'   Zkn1r(   r(   r)   rE  A	  s    zTestBessel.test_knc             C   s   t tjddtjdd d S )Ng      @g@g      )r   r   rK  )r'   r(   r(   r)   test_negv_kvE	  s    zTestBessel.test_negv_kvc             C   s   t jdd}t|dd d S )Nr   g?g_2?r   )r   rK  r   )r'   Zkv0r(   r(   r)   test_kv0H	  s    zTestBessel.test_kv0c             C   s   t jdd}t|dd d S )Nr1   g?gKދ@r   )r   rK  r   )r'   kv1r(   r(   r)   test_kv1L	  s    zTestBessel.test_kv1c             C   s   t jdd}t|dd d S )Nr/   g?g)lHH@r   )r   rK  r   )r'   kv2r(   r(   r)   test_kv2P	  s    zTestBessel.test_kv2c             C   s   t tjddd d S )Nr  r1   g.Ք"H)r   r   rD  )r'   r(   r(   r)   test_kn_largeorderT	  s    zTestBessel.test_kn_largeorderc             C   s   t tjddd d S )Nr   g =`XC)r   r   rK  )r'   r(   r(   r)   test_kv_largeargW	  s    zTestBessel.test_kv_largeargc             C   s   t tjddtjdd d S )Ng      @g@g      )r   r   rM  )r'   r(   r(   r)   test_negv_kveZ	  s    zTestBessel.test_negv_kvec             C   s`   t jdd}t jddtd }t||d d}t jd|}t jd|t| }t||d d S )Nr   g?r^  y              ?y?      ?)r   rM  rK  r   r   )r'   Zkve1r  r   Zkve2r  r(   r(   r)   test_kve]	  s    zTestBessel.test_kvec             C   s*   d}t tjd| tjd|ddd d S )Ng@r1   r   )r@   r   )r   r   rK  kvp)r'   r   r(   r(   r)   test_kvp_v0n1f	  s    zTestBessel.test_kvp_v0n1c             C   sN   d}d}t j|d | || t j||  }t j||dd}t||d d S )Ng      @g@r1   )r@   r   )r   rK  r  r   )r'   r|  r   xcr   r(   r(   r)   test_kvp_n1j	  s
    &zTestBessel.test_kvp_n1c             C   sd   d}d}|d |d  | |d  t j|| t j|d ||  }t j||dd}t||d d S )Ng      @g@r/   r1   )r@   r   )r   rK  r  r   )r'   r|  r   r  r   r(   r(   r)   test_kvp_n2q	  s
    <zTestBessel.test_kvp_n2c             C   s&   t jd}t jdd}t||d d S )Ng?r   r^  )r   r  r  r   )r'   r  r  r(   r(   r)   r  x	  s    
zTestBessel.test_y0c             C   s&   t jd}t jdd}t||d d S )Ng?r1   r^  )r   rq  r  r   )r'   r  r  r(   r(   r)   r  }	  s    
zTestBessel.test_y1c             C   sp   t jd\}}t jddd\}}t||f }t||f }ttt jd|dd ttt jd|| dd d S )Nr/   r1   )r   g        r   )r   Zy0_zerosr   r   r  r  )r'   ZyoZypoZzoZzporG  Zallvalr(   r(   r)   test_y0_zeros	  s    zTestBessel.test_y0_zerosc             C   s*   t jd}t|tdgtdgfd d S )Nr1   g"@gѮBO?r   )r   Zy1_zerosr   r   )r'   rq  r(   r(   r)   test_y1_zeros	  s    
zTestBessel.test_y1_zerosc             C   s.   t jddd}t|tdgtd
gfd d S )Nr1   )r   gL
F%u?y        !rh?g;On?y        гY?r   yL
F%u?!rh?g;Ony;OnгY?)r   Z	y1p_zerosr   r   )r'   Zy1pr(   r(   r)   test_y1p_zeros	  s    zTestBessel.test_y1p_zerosc             C   sH   t jdd}t|tddgd t jdd}t|ddd	d
dgdd d S )Nr-   r/   g3@g(A&"@r   i  g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@gV瞯<)r4   )r   Zyn_zerosr   r   r   )r'   Zanr(   r(   r)   test_yn_zeros	  s    zTestBessel.test_yn_zerosc             C   sh   t jdd}t|tddgd t jdd}tt jd|ddd	 t jd
d}tt jd
|ddd	 d S )Nr   r/   gQhվ@gzN@r2   +   r   gV瞯<)r7   i  g&.>)r   	ynp_zerosr   r   r   r  )r'   aor(   r(   r)   test_ynp_zeros	  s    zTestBessel.test_ynp_zerosc             C   s&   t jdd}tt jd|ddd d S )Ni  r   r   g+=)r7   )r   r  r   r  )r'   r  r(   r(   r)   test_ynp_zeros_large_order	  s    z%TestBessel.test_ynp_zeros_large_orderc             C   s   t jdd}t|dd d S )Nr1   g?g5,1
@r^  g5,1
)r   r  r   )r'   Zyn2nr(   r(   r)   r  	  s    zTestBessel.test_ync             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   test_negv_yv	  s    zTestBessel.test_negv_yvc             C   s   t jdd}t|dd d S )Nr1   g?g5,1
@r^  g5,1
)r   r  r   )r'   Zyv2r(   r(   r)   r  	  s    zTestBessel.test_yvc             C   s"   t tjddtjdd d d S )Nr   r/   r&  r  )r   r   r  )r'   r(   r(   r)   test_negv_yve	  s    zTestBessel.test_negv_yvec             C   sH   t jdd}t|dd t jddtd }t jdd	}t||d d S )
Nr1   g?g5,1
@r^  y              ?g5,1
y?      ?r8   y?      ?)r   r  r   r  r   )r'   Zyve2Zyve2rZyve22r(   r(   r)   test_yve	  s
    zTestBessel.test_yvec             C   s8   t jddt jdd d }t jdd}t||d d S )Nr1   g?r   g       @r/   r   )r   r  r  r   )r'   ZyvprZyvp1r(   r(   r)   test_yvp	  s    zTestBessel.test_yvpc             c   sL   x$dD ]}xd"D ]}||fV  qW qW x dt d#d D ]}|dfV  q6W dS )$z>Yield points at which to compare Cephes implementation to AMOSr  g33333Y@g      4@      $@      ?g      ?        {G(@      ^@-    r   r   r1        i@     y@     Ă@@'  r{  g      @N33333Y      4      $            )r  r  r  r  r  r  r  r  r  r  r  r8   )r  r  r  r8   r  r  r  r  r  r  r  r  i)r   )r'   r|  r   r(   r(   r)   _cephes_vs_amos_points	  s    z!TestBessel._cephes_vs_amos_pointsdy=r   Nc             C   s   x| j  D ]\}}|d k	r&|||r&q
||||||d |t||  }}	}
tj|rtttj|	dk||f q
tj|rt|	jdk||f q
t||	||f||d |t|kr
t|
|	||f||d q
W d S )Ny                gu <7~r   )r  r4   r7   )	r  rG   r9   r   r   r  r   r   r   )r'   r=  f2r4   r7   skipr|  r   c1c2c3r(   r(   r)   check_cephes_vs_amos	  s    *

zTestBessel.check_cephes_vs_amosppc64lezfails on ppc64le)r   c             C   s   | j tjtjddd d S )Ng|=gu5% )r4   r7   )r  r   r.  r,  )r'   r(   r(   r)   test_jv_cephes_vs_amos	  s    z!TestBessel.test_jv_cephes_vs_amosc             C   s   | j tjtjddd d S )Ngdy=gu5% )r4   r7   )r  r   r  r  )r'   r(   r(   r)   test_yv_cephes_vs_amos	  s    z!TestBessel.test_yv_cephes_vs_amosc             C   s$   dd }| j tjtjdd|d d S )Nc             S   s   t | dkS )Nr  )r  )r|  r   r(   r(   r)   rO  	  s    zETestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.<lambda>gdy=gu5% )r4   r7   r  )r  r   r  r  )r'   skipperr(   r(   r)   (test_yv_cephes_vs_amos_only_small_orders	  s    z3TestBessel.test_yv_cephes_vs_amos_only_small_ordersc             C   s2   t jdd | jtjtjddd W d Q R X d S )NrF  )rG  g:0y5>gu5% )r4   r7   )r9   rJ  r  r   r$  )r'   r(   r(   r)   test_iv_cephes_vs_amos	  s    z!TestBessel.test_iv_cephes_vs_amosc       	      C   sd  d}t jjd t jjd|dt jjd|d  }t jjd|dt jjd|d  }t jjd|ddk}|| jt||< t jd	d
 tj	||}tj	||d }t j
|t|dk< t j
|t|dk< d|t|dk < d|t|dk < t|| d }d|t j|< W d Q R X t j|}t|| dk || || tj	|| || tj	|| || d f d S )Ni@B r1   g      ?r/   )r   g?r^  r   rF  )rG  y                gu <7~gYngH׊>r8   r8   )r9   r>   r?   rH  rI  r   rG   rJ  r   r$  r   r  r   Zargmaxr   )	r'   Nr|  r   Zimskr  r   dcrA   r(   r(   r)    test_iv_cephes_vs_amos_mass_test	  s"    ""
z+TestBessel.test_iv_cephes_vs_amos_mass_testc             C   s0   | j tjtjddd | j tjtjddd d S )Ng&.>gu5% )r4   r7   )r  r   rK  rD  )r'   r(   r(   r)   test_kv_cephes_vs_amos
  s    z!TestBessel.test_kv_cephes_vs_amosc             C   s:   t tjddd t tjddd t tjddd	 d S )
Nr   r-   gP?i-  i  g~Omʒ?gY8E@@gKSn?gKSn)r   r   r.  )r'   r(   r(   r)   test_ticket_623
  s    zTestBessel.test_ticket_623c             C   s  t tjddd t tjddd t tjd dd t tjd!dd" t tjd#dd t tjd$dd t tjd%dd	 t tjd&dd
 t tjd'dd t tjd(dd t tjd)dd t tjd*dd t tjd+d,d- t tjd.d/d t tjd0d1d t tjd2d3d4 t tjd5d6d t tjd7d8d t tjd9d:d	 t tjd;d<d
 t tjd=d>d t tjd?d@dA t tjdBdCd t tjdDdEdF t tjdGdHd t tjdIdJdK t tjdLdMd t tjdNdOdP t tjdQdRtjdSdTtdU  t tjdVdWtjdXdYtdZ  t tj	d[d\tjd]d^td_  t tj
d`datjdbdctdd  t tjdedftjdgdhdtjdidj   t tjdkdltjdmdndtjdodp   dS )qzNegative-order Besselsr1   gl)?r/   gPj?gk?g%E*2i?g敋?gw--`?gÉB?gW?g      ?g޴?gz|?ga?gpx%?y                y              ?gYD?y        `{1w?g6x?y        B]#Ӯ?g ?y        b>?g.}9d?y        8k?y        333333?g333333?Nr8   gl)ܿrO  r8   rO  g%E*2ir8   rO  r8   rO  g      g      g      g      r8   y      ?        gl)ܿrO  y      ?        r8   y      ?        rO  y      ?        g%E*2ir8   y      ?        rO  y      ?        r8   y      ?        rO  y      ?        g      y      ?        g      y      ?      ?yYD?`{1wg      y      ?        g      y      ?      ?y6x?B]#Ӯ?g      y      ?        g      y      ?      ?y ?b>?g      y      ?        g      y      ?      ?y.}9d?8kؿg      y      ?333333?g      y      ?333333?g333333ӿg      y      ?333333?g      y      ?333333?g333333ӿg      y333333?      ?g      y333333?      ?g333333ӿg      y333333?      ?g      y333333?      ?y333333?      ?g      y      ?      ?g      y      ?      ?g      y      ?      ?g      y      ?      ?g      y      ?      ?g      y      ?      ?)r   r   r.  r  r$  rK  r0  r   r  r&  rM  r  r  )r'   r(   r(   r)   test_ticket_853
  sD    """"*zTestBessel.test_ticket_853c             C   sB  t ttjdd t ttjdd t ttjdd	 t ttjdd
 t ttjdd t ttjdd t ttjdd t ttjdd t ttj	dd t ttj	dd t ttj
dd t ttj
dd t ttjddd j tjd t ttjddd j  tjd dS )zReal-valued Bessel domainsg      ?r1   r   r/   r-   Nr8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   )r   r   r   r.  r$  r  rK  r0  r&  r  rM  r+   rG  any)r'   r(   r(   r)   test_ticket_854A
  s    &zTestBessel.test_ticket_854c             C   s0   t tjddtjk t tjddtjk d S )Ng      ?r   )r   r   rK  r9   r   rM  )r'   r(   r(   r)   test_gh_7909R
  s    zTestBessel.test_gh_7909c             C   s(   t tjddd t tjddd dS )zReal-valued Bessel I overflowr1   i  g~i  i`  g ?los~N)r   r   r$  )r'   r(   r(   r)   test_ticket_503V
  s    zTestBessel.test_ticket_503c             C   s   t tjddd d S )Ng      ?r1   ga?g      )r   r   r$  )r'   r(   r(   r)   test_iv_hyperg_poles[
  s    zTestBessel.test_iv_hyperg_poles   c             C   s   t d|jt}|d|  td|  tj|d  tj|| d  }t|t|< t|}t	|j
 ttj | t	|d d  }|j |fS )Nr   r/   g      ?r1   r   r8   )r   r   r   r   r   r   r   r   r   r  r  r   epssum)r'   r|  r   r@   rA   rr`  r(   r(   r)   	iv_series^
  s    8*zTestBessel.iv_seriesc             C   s8   x2dD ]*}| j d|\}}ttj||||d qW d S )N      ?      $@     i@r   )r7   r  )r  r  r  )r  r   r   r  )r'   r   valuer`  r(   r(   r)   test_i0_seriesf
  s    
zTestBessel.test_i0_seriesc             C   s8   x2dD ]*}| j d|\}}ttj||||d qW d S )N      ?      $@     i@r1   )r7   r  )r  r  r   )r  r   r   r  )r'   r   r  r`  r(   r(   r)   test_i1_seriesk
  s    
zTestBessel.test_i1_seriesc             C   sL   xFdD ]>}x8dD ]0}| j ||\}}ttj||||||fd
 qW qW d S )Ng      4@      $@      ?        {G(@      ^@     i@r1   y               @)r7   r        4      $      )r(  r)  r*  r$  r#  r%  r&  r8                @)r#  r"  r'  r+  )r  r   r   r$  )r'   r|  r   r  r`  r(   r(   r)   test_iv_seriesp
  s    

zTestBessel.test_iv_seriesc          	   C   sz   ddgddgddgddgddgd	d
gddgddgg}x@t |D ]4\}\}}tj|t|  }t||dd| d q>W d S )Ng        g      ?g|=g?g0oO?g      ?g!?grb?g      @gpH?g      @gC~?g      4@ggo?r^  ztest #%d)r  )r  r   r  r   r   )r'   r   rK   r   r|  r  r(   r(   r)   r  v
  s    
zTestBessel.test_i0c             C   s&   t jd}t jdd}t||d d S )Ng?r   r^  )r   r  r&  r   )r'   ZoizeZoizerr(   r(   r)   r  
  s    
zTestBessel.test_i0ec             C   st   ddgddgddgddgdd	gd
dgddgg}x@t |D ]4\}\}}tj|t|  }t||dd| d q8W d S )Ng        g|=gj|=g?gȕ![1?g      ?g;͘?g      ?gRΜ?g      @g|?g      4@g}f?r^  ztest #%d)r  )r  r   r  r   r   )r'   r   rK   r   r|  r  r(   r(   r)   r  
  s    
zTestBessel.test_i1c             C   s&   t jd}t jdd}t||d d S )Ng?r1   r^  )r   r  r&  r   )r'   Zoi1eZoi1err(   r(   r)   r  
  s    
zTestBessel.test_i1ec             C   s&   t tjd}t|t ddgd d S )Nr   gїJB?@g*u?)r   r   r  r   )r'   Ziti0r(   r(   r)   r  
  s    zTestBessel.test_iti0k0c             C   s"   t jd}t|tddgd d S )Ng?gݳɄ|T?gVƥ
@r2   )r   r  r   r   )r'   Zit2kr(   r(   r)   r  
  s    
zTestBessel.test_it2i0k0c             C   s$   t jddtd }t|dd d S )Nr   g?gv M?r   g)r   r$  r   r   )r'   iv1r(   r(   r)   r%  
  s    zTestBessel.test_ivc             C   s   t tjddtjdd d S )Nr   r/   r  )r   r   r&  )r'   r(   r(   r)   test_negv_ive
  s    zTestBessel.test_negv_ivec             C   s0   t jdd}t jddtd }t||d d S )Nr   g?r   g)r   r&  r$  r   r   )r'   Zive1r-  r(   r(   r)   test_ive
  s    zTestBessel.test_ivec             C   s    t tjddtjddd d S )Nr1   r/   r   r   )r   r   r$  ivp)r'   r(   r(   r)   	test_ivp0
  s    zTestBessel.test_ivp0c             C   s8   t jddt jdd d }t jdd}t||d d S )Nr   r/   r1   r   )r   r$  r0  r   )r'   r   r   r(   r(   r)   test_ivp
  s    zTestBessel.test_ivp)r  r   N)r  )Ur  r  r  r!  r  r  r)  r+  r-  r  r/  r  r  r  r  r  r  r  r  r3  r5  r7  r9  r  rE  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  platformmachiner  r  r  r  Zslowr  r  r  r  r  r  r  r  r  r  r!  r,  r  r  r  r  r  r  r%  r.  r/  r1  r2  r(   r(   r(   r)   r    s   
	
,
r  c               @   s   e Zd Zdd Zdd ZdS )TestLaguerrec          	   C   s   t jd}t jd}t jd}t jd}t jd}t jd}t|jdgd t|jddgd t|jtdddgd d t|jtdd	ddgd d t|jtdddddgd d t|jtddddddgd d d S ) Nr   r1   r/   r   r-   r   r1  g       @rd     r2   g      @   H   `   r   g      8@r   r  iX  r  g      ^@r8   r   r8   iiir8   i8i)r   Zlaguerrer   rT  r   )r'   lag0lag1lag2lag3Zlag4Zlag5r(   r(   r)   test_laguerre
  s    





 zTestLaguerre.test_laguerrec          	   C   s   dt jj  d }tjd|}tjd|}tjd|}tjd|}t|jdg t|jd
|d g t|jtdd|d  |d |d  gd  t|jtdd|d  d|d  |d  |d |d  |d  gd	  d S )Nr   g?r   r1   r/   r   g      ?g       @g      @r8   rO  r8   r  )r9   r>   r   r  r   rT  r   r   )r'   rA   r:  r;  r<  r=  r(   r(   r)   test_genlaguerre
  s    .zTestLaguerre.test_genlaguerreN)r  r  r  r>  r?  r(   r(   r(   r)   r5  
  s   r5  c               @   s   e Zd Zdd ZdS )TestLegendrec          	   C   s   t jd}t jd}t jd}t jd}t jd}t jd}t|jdg t|jddg t|jtdddgd dd	 t|jtddddgd  t|jtd
ddddgd  t|jtddddddgd  d S )Nr   r1   r/   r   r-   r   g       @r1  )r   rB  r5   g       @?   r  rM   r8   r  ii)r   Zlegendrer   rT  r   r   )r'   Zleg0Zleg1Zleg2Zleg3Zleg4Zleg5r(   r(   r)   test_legendre
  s    





zTestLegendre.test_legendreN)r  r  r  rB  r(   r(   r(   r)   r@  
  s   r@  c               @   s   e Zd Zdd ZdS )
TestLambdac             C   sx   t jdd}tt jdddt jdd d gtt jdddt jdd d dt jdd d  gf}t||d d S )Nr1   g?r   r/   g{Gz?r^  rO  )r   Zlmbdar   r,  r  r.  r   )r'   ZlamZlamrr(   r(   r)   
test_lmbda
  s    ":zTestLambda.test_lmbdaN)r  r  r  rD  r(   r(   r(   r)   rC  
  s   rC  c               @   s   e Zd Zdd Zdd ZdS )	TestLog1pc             C   sB   t jdt jdt jdf}tdtdtdf}t||d d S )Nr   r   r_  r1  r^  )r   rP  r   r   )r'   Zl1pZl1prlr(   r(   r)   rQ  
  s    zTestLog1p.test_log1pc             C   sB   t jdt jdt jdf}tdtdtdf}t||d d S )Nr1   g?g333333?r/   g @g@r^  )r   rP  r   r   )r'   Zl1pmZl1pmrlr(   r(   r)   test_log1pmore
  s    zTestLog1p.test_log1pmoreN)r  r  r  rQ  rF  r(   r(   r(   r)   rE  
  s   rE  c               @   st   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d Z
dd Zdd Zdd Zdd Zdd ZdS )TestLegendreFunctionsc             C   s   d
}t jdd|d}t|td|dd| | d  gdt|| d d| t|| d  gddd|| d  ggtddd| gd|t|| d  dd| | d  t|| d  gddd| ggfd	 d S )Ng      ?y        333333?r/   r   g      ?r1   g        r2   r0   y      ?333333?)r   clpmnr   r   r   )r'   r   Zclpr(   r(   r)   
test_clpmn
  s    (8z TestLegendreFunctions.test_clpmnc             C   s   d}d}d}d}t j|||d|  dd ||f }t j|||d|  dd ||f }tt||gtt j|||t j|||gd d S )	Ng|=r1   r   g      ?y              ?r/   r   r0   )r   rH  r   r   rW  )r'   r  r`  r@   r   clp_plus	clp_minusr(   r(   r)   test_clpmn_close_to_real_2  s    $$z0TestLegendreFunctions.test_clpmn_close_to_real_2c             C   s   d}d}d}d}t j|||d|  dd ||f }t j|||d|  dd ||f }tt||gtt j|||tjd	| tj  t j|||tjd| tj  gd d S )
Ng|=r1   r   g      ?y              ?r   y              ?r0   y             )r   rH  r   r   rW  r9   r   r   )r'   r  r`  r@   r   rJ  rK  r(   r(   r)   test_clpmn_close_to_real_3  s    $$"$z0TestLegendreFunctions.test_clpmn_close_to_real_3c          	   C   sn   d}d}d}d}xXdD ]P}t tj|||d|  |d ||f tj|||d|  |d ||f d qW d S )	NgHz>r1   y              ?r/   r   r   r2   )r/   r   )r   r   rH  )r'   r  r`  r@   r   typer(   r(   r)   test_clpmn_across_unit_circle  s    
$z3TestLegendreFunctions.test_clpmn_across_unit_circlec          	   C   s   xdD ]}xt dD ]x}xrt d|D ]d}tj|||}ttj|d ddd f j  tj|||}ttj|d ddd f j  q$W qW qW d S )Nr1   r-   r8   )r1   r8   )rH   r   rH  r   r9   r   rG  lpmn)r'   r   r@   r`  lpr(   r(   r)   test_inf&  s    
"zTestLegendreFunctions.test_infc          
   C   s   ddddddddg}d}d}xdD ]z}xt|D ]l}xfdD ]^}t j|||d|  |d	 t j|||d|  |d	  | }tt j||||d |d
d q6W q,W q"W d S )Ng      ?y              ?r1   y              ?r/   r   MbP?        MbP?r   g-C6?)r4   y      ?      ?g      y            ?g      y            y      ?      y      ?      ?r8   y            ?r8   y            y      ?      )r/   r   )rS  rT  )r   rH  r   )r'   Zzvalsr`  r@   rN  r   hZapprox_derivativer(   r(   r)   test_deriv_clpmn/  s    


"z&TestLegendreFunctions.test_deriv_clpmnc             C   s:   t jddd}t|tddd	ggtdddggfd d S )
Nr   r/   g      ?g      ?g      ?g        g      ?r-   g      )r   rP  r   r   )r'   rQ  r(   r(   r)   	test_lpmn>  s    zTestLegendreFunctions.test_lpmnc             C   s4   t jdd}t|tdddgtdddgfd d S )	Nr/   g      ?g      ?g      ?g        g      ?r-   g      )r   Zlpnr   r   )r'   Zlpnfr(   r(   r)   test_lpnG  s    zTestLegendreFunctions.test_lpnc             C   st   t jddd}t|dd t jddd}t|dd tjd	d
 t jddd}W d Q R X t|dkpltj| d S )Nr   r/   g      ?g      ?r0   (   gMbP?gI?rF  )rG  r1   g      r8   r8   )r   rW  r   r9   rJ  r   r   )r'   rQ  r(   r(   r)   rX  P  s    zTestLegendreFunctions.test_lpmvc             C   sN   t jddd}t jdd}t|d d |d d t|d d |d d d S )Nr   r/   g      ?r-   r1   )r   lqmnlqnr   )r'   Zlqmnflqfr(   r(   r)   	test_lqmn\  s    zTestLegendreFunctions.test_lqmnc             C   sV   d}d}xH|| || fD ]4}t jdd|d d	 }d|| d  }t|| qW dS )
znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gqh ?gh㈵>r/   r1   r   Nr8   r8   )r8   r8   )r   rZ  r   )r'   Zx0deltar   Zlqr   r(   r(   r)   test_lqmn_gt1b  s    z#TestLegendreFunctions.test_lqmn_gt1c             C   sX   t jddd\}}t|jd t|jd t jddd\}}t|jd t|jd	 d S )
Nr-   g?r   r   r1   )r   r   )r   r   )r   r1   )r   r1   )r   rZ  r   r   )r'   r  r  r(   r(   r)   test_lqmn_shapem  s    z%TestLegendreFunctions.test_lqmn_shapec             C   s4   t jdd}t|tdd
dgtdddgfd	 d S )Nr/   g      ?gk+ݓ?g=yX5?gW2?g|a2U?g~jt?gڊe?r-   g=yX5gW2gڊe)r   r[  r   r   )r'   r\  r(   r(   r)   test_lqnv  s    zTestLegendreFunctions.test_lqnN)r  r  r  rI  rL  rM  rO  rR  rV  rW  rX  rX  r]  r_  r`  ra  r(   r(   r(   r)   rG  
  s   					rG  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestMathieuc             C   s   d S )Nr(   )r'   r(   r(   r)   rY  ~  s    zTestMathieu.test_mathieu_ac             C   s   t jdd d S )Nr/   r   )r   Zmathieu_even_coef)r'   r(   r(   r)   test_mathieu_even_coef  s    z"TestMathieu.test_mathieu_even_coefc             C   s   d S )Nr(   )r'   r(   r(   r)   test_mathieu_odd_coef  s    z!TestMathieu.test_mathieu_odd_coefN)r  r  r  rY  rc  rd  r(   r(   r(   r)   rb  |  s   rb  c               @   s   e Zd Zdd Zdd ZdS )TestFresnelIntegralc             C   s   d S )Nr(   )r'   r(   r(   r)   r    s    z$TestFresnelIntegral.test_modfresnelpc             C   s   d S )Nr(   )r'   r(   r(   r)   r~    s    z$TestFresnelIntegral.test_modfresnelmN)r  r  r  r  r~  r(   r(   r(   r)   re    s   re  c               @   s   e Zd Zdd ZdS )TestOblCvSeqc             C   s*   t jddd}t|td	dddgd d S )
Nr   r   r1   g~T~O?gt_J?gm{@g@j'&@r   g~T~Oֿ)r   Z
obl_cv_seqr   r   )r'   Zoblr(   r(   r)   test_obl_cv_seq  s
    zTestOblCvSeq.test_obl_cv_seqN)r  r  r  rg  r(   r(   r(   r)   rf    s   rf  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestParabolicCylinderc             C   s0   t jdd}t|tddgtddgfd d S )	Nr1   g?gQ?gx$(~?gx$(~?g(\?r-   gx$(~)r   pbdn_seqr   r   )r'   Zpbr(   r(   r)   test_pbdn_seq  s
    z#TestParabolicCylinder.test_pbdn_seqc             C   s4   t jdd dt jddd  t jddd   d S )Nr1   g?r/   r   g      ?g?)r   r  )r'   r(   r(   r)   r    s    zTestParabolicCylinder.test_pbdvc             C   s<   t jdd}t jdd}t|t|d t|d fd d S )Nr1   g?r   r-   )r   ri  Zpbdv_seqr   r   )r'   ZpbnZpbvr(   r(   r)   test_pbdv_seq  s    z#TestParabolicCylinder.test_pbdv_seqc             C   s   t jddd}d|d  t jt j tjdd|   }ttj|dd |ddd ttjd	d
d ddd ttjddd ddd d S )Nr   r   r/   g      ?g        r   g+=)r4   r7   gGz$@gq=
ףp4@gHQ9g-q=)r4   g(\#@gQ@gkS a>ig(\#)r9   rp  r   r   r   r   r   r  )r'   etar   r(   r(   r)   test_pbdv_points  s
    *z&TestParabolicCylinder.test_pbdv_pointsc             C   s   t jdddd d d f }t jdddd d d f }tj||}ddt|  }tj||| d tj||| d  | d }t|d |d	d	d
 d S )Nr-   r^  r   r   gHz>r   g       @r1   gư>)r4   r7   r   i)r9   rp  r   r  r  r   )r'   r   rl  r   r  dpr(   r(   r)   test_pbdv_gradient  s    0z(TestParabolicCylinder.test_pbdv_gradientc             C   s   t jdddd d d f }t jdddd d d f }tj||}ddt|  }tj||| d tj||| d  | d }t|d |d	d	d
 d S )Nr-   r^  r   r   gHz>r   g       @r1   gư>)r4   r7   r   i)r9   rp  r   r  r  r   )r'   r   rl  r   r  rn  r(   r(   r)   test_pbvv_gradient  s    0z(TestParabolicCylinder.test_pbvv_gradientN)	r  r  r  rj  r  rk  rm  ro  rp  r(   r(   r(   r)   rh    s   
	rh  c               @   s   e Zd Zdd ZdS )TestPolygammac             C   s   t jdd}t jdd}t|dd t|dd dddg}tt jd|t j| dddg}d	d
dg}dddg}tt j||| tj|gd }tt j|tj|gd | tt jtj|gd || d S )Nr/   r1   r   gX];@r   gOV,@@g  8Br   g      ?g      ?g      @g2}j?g.M?g}2;?gX];g2}jg}2;ο)r   Z	polygammar   r  r9   r  )r'   Zpoly2Zpoly3r   r@   r   r(   r(   r)   test_polygamma  s     


zTestPolygamma.test_polygammaN)r  r  r  rr  r(   r(   r(   r)   rq    s   rq  c               @   s   e Zd Zdd ZdS )TestProCvSeqc             C   s*   t jddd}t|tddddgd d S )	Nr   r   r1   g"~j?g6?Ң@g)u8F"@g2g)@r   )r   Z
pro_cv_seqr   r   )r'   Zprolr(   r(   r)   test_pro_cv_seq  s
    zTestProCvSeq.test_pro_cv_seqN)r  r  r  rt  r(   r(   r(   r)   rs    s   rs  c               @   s   e Zd Zdd ZdS )TestPsic             C   s   t jd}t|dd d S )Nr1   gox?r^  gox)r   r  r   )r'   Zpsr(   r(   r)   r    s    
zTestPsi.test_psiN)r  r  r  r  r(   r(   r(   r)   ru    s   ru  c               @   s   e Zd Zdd Zdd ZdS )
TestRadianc             C   s"   t jddd}t|td d d S )Nr  r   g       @r   )r   r  r   r   )r'   Zradr(   r(   r)   r    s    zTestRadian.test_radianc             C   s&   t jddd}t|td d d d S )Nr  r1   r{  r/   gC?r   )r   r  r   r   )r'   Zrad1r(   r(   r)   test_radianmore  s    zTestRadian.test_radianmoreN)r  r  r  r  rw  r(   r(   r(   r)   rv    s   rv  c               @   s   e Zd Zdd Zdd ZdS )TestRiccatic             C   s   d\}}t j||f}xPt|D ]D}tj||}tj||dd}|| |d|f< || | |d|f< q W t|tj||d d S )	Nr/   皙?T)
derivativer   r1   r^  )r/   ry  )r9   emptyrH   r   Zspherical_jnr   Z
riccati_jn)r'   r	  r   Sr@   r<  Zjpr(   r(   r)   test_riccati_jn  s    zTestRiccati.test_riccati_jnc             C   s   d\}}t j||f}xPt|D ]D}tj||}tj||dd}|| |d|f< || | |d|f< q W t|tj||d d S )	Nr/   皙?T)rz  r   r1   r^  )r/   r~  )r9   r{  rH   r   Zspherical_ynr   Z
riccati_yn)r'   r	  r   Cr@   r   Zypr(   r(   r)   test_riccati_yn  s    zTestRiccati.test_riccati_ynN)r  r  r  r}  r  r(   r(   r(   r)   rx    s   
rx  c               @   s   e Zd Zdd ZdS )	TestRoundc             C   s@   t tttjdtjdtjdtjdf}d}t|| d S )Ng333333$@g$@g      %@g333333%@r   r   )r   r   r   r   )r  maprG   r   r  r   )r'   ZrndZrndrlr(   r(   r)   r    s    .zTestRound.test_roundN)r  r  r  r  r(   r(   r(   r)   r    s   r  c              C   s  t j} tj}tj}tj}tj}tj}t| ddddd||  t| ddd|d d|dd|   ||d d   t| ddd|d d|dd|    t| dd||d d|d	d|   |dd| d
   ||d d   t| dd|d |d d|dd|   |dd| d d
   ||d d  d||d d  d   t| dd|d |d d|dd|   |dd| d d
   ||d d   d S )Nr   g      ?r/   g        r-   g      ?g      .@g       @rM   y              ?g      @g      @g       @g      @g      @r1   g      @g      0@g     A@rO  rO  g      ?g      ?)	r   sph_harmr9   r   r   r   r   r	   r   )shr   r   r   r   r	   r(   r(   r)   test_sph_harm  s(    ::r  c              C   s   t jt j} ttjddddj|  ttjdgdddj|  ttjddgddj|  ttjdddgdj|  ttjddddgj|  ttjdgdgdgdgj|  d S )Nr   )r9   dtypeZ
complex128r   r   r  )dtr(   r(   r)   "test_sph_harm_ufunc_loop_selection<  s    r  c               @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )
TestStruverc  c             C   sp   t d|}d| d| d| | d   tj|d  tj|| d  }t|j ttj | }|j |fS )z?Compute Struve function & error estimate from its power series.r   r1   g      ?r/   g      ?r8   )	r   r   r   r  r  r   r   r  r  )r'   r|  r   r@   rA   r  r`  r(   r(   r)   _seriesH  s    
@zTestStruve._seriesc          
   C   sP   xJdD ]B}x<dD ]4}| j ||\}}ttj|||d|d||ff qW qW dS )z-Check Struve function versus its power seriesrD   r   g(\@333333@r1   r   {G(@r7  r   r  r5   )r4   r7   N(\333333r8   )
r  r  r  r  r8   r   r1   r  r  r7  )r1   r   r   r  r5   )r  r   r   r  )r'   r|  r   r  r`  r(   r(   r)   test_vs_seriesO  s    

zTestStruve.test_vs_seriesc             C   s   t tjddddd t tjddddd t tjdd
ddd t tjddddd ttjddtjdd  ttjddtjd d  ttjd!d"tjd#d
  ttjd$d%tjd&d
  tttjd'd( tttjd)d* d S )+Ng(\@r  g;cv=?gHz>)r4   gQ @g< j?g:0yE>g      @r  g?g-q=g       @)   gzz?gdy=r_  r   gffffff@r1   g333333$@g(\gQ g      g       iiiir_  ir_  iiir   ir   gffffffr8   g333333$r8   )r   r   r  r   r   r   )r'   r(   r(   r)   test_some_valuesV  s    zTestStruve.test_some_valuesc             C   sR   t tjddtjd	d
 t tjddtjdd t tjddtjdd dS )zRegression test for #679g      ?rD   g:0yE>g       @g333333@Ng      g3@g      g*   4@g       g3@g       g*   4@g333333g3@g333333g*   4@)r   r   r  )r'   r(   r(   r)   test_regression_679c  s    zTestStruve.test_regression_679N)rc  )r  r  r  r  r  r  r  r(   r(   r(   r)   r  G  s   
r  c               C   s   t tjddd d S )Ng333333?r   gdX	
?)r   r   r   r(   r(   r(   r)   test_chi2_smalldfj  s    r  c               C   s   t tjdtjd d S )Ngffffff?g      ?)r   r   r   r9   r   r(   r(   r(   r)   test_ch2_infn  s    r  c               C   s   t tjddd d S )Ng333333?r   r1   gdX	
?gyj_?)r   r   r   r(   r(   r(   r)   test_chi2c_smalldfr  s    r  c               C   s   t tjddd d S )Ng333333?r1   gdX	
?r   gyj_?)r   r   r   r(   r(   r(   r)   test_chi2_inv_smalldfv  s    r  c              C   s  d} t dtjdtjd d| d d}d}d}t tjdgd	ggdd	d
gd||g|d	|gg| d d}t tjdd|| d t tjdd|| d t tjd%d&| | d t tjddd| d t tjddd| d t tjddd| d t tjddd| d t tjddd| d t tjddd| d t tjddd| d tjd}t tj|j|jd| d t tjd|j |jd | d t tj|jd	|j d!| d ttjd"d"d" ttjd#d"d" ttjd'd$tj	 ttjd"tj
tj	 ttjtj
d"tj	 ttjd"tj
 tj	 ttjtj
 d"tj	 ttjtj
tj
 tj	 ttjtj
 tj
tj	 ttjdtj	tj	 ttjtj	d(tj	 ttjdtj
tj
 ttjtj
dtj
 ttjd)tj
 tj
  ttjtj
 d*tj
  d S )+NgvIh%<=r1   r/   gDSYC?)r4   gQ_?g?@g>;,
i}@r   r   g=O?r   r2   gXs*@r1  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ g      ?g][#!Rg      ?gٍS1gN_ r   c   r   r8   rO  r8   r8   r8   r8   )r   r   Zagmr9   r   r   Ztinyr  r   r   r   )r4   Zagm13Zagm15Zagm35Zagm12fir(   r(   r)   test_agm_simplez  s\    
r  c              C   s  t  } | jtd ttjddtjdd ttjdddtjddd ttjdddtjddd ttjdddtjddd ttj	ddtj	dd ttj
ddtj
dd ttjddtjdd ttjddtjdd ttjddtjdd W d Q R X d S )Nz-floating point number truncated to an integerr1   g333333?g?r/   gffffff@)r   rR  rS  r   r   Zexpnr  r  r  r  rD  r  r  r  )rU  r(   r(   r)   test_legacy  s    
r  c               C   s   t tjtjdd d S )Nr1   y        .B}T)r  r   ZSpecialFunctionErrorr$  r(   r(   r(   r)   test_error_raising  s    r  c              C   s   dd } t jddt jfdt jfdgtd}t j|ddgf }t j| |d d df |d d df }ttj	||d	d	d
 t j| |d d df |d d df }ttj	||d	d	d
 d S )Nc          
   S   sB   t jdd, | dkr&t j| r&| S | t j| S W d Q R X d S )NrF  )invalidr   )r9   rJ  r   r   )r   r   r(   r(   r)   xfunc  s    ztest_xlogy.<locals>.xfuncr         ?       @)r                ?r1   gvIh%<=)r4   r7   )r   r   )r  r  )r   r  )r1   r  )
r9   r   r   r   rI   r   rN   r"   r   xlogy)r  z1Zz2w1Zw2r(   r(   r)   
test_xlogy  s    "((r  c              C   sl   dd } t jddt jfdt jfddgtd}t j| |d d df |d d df }ttj||d	d	d
 d S )Nc          
   S   sB   t jdd, | dkr&t j| r&| S | t j| S W d Q R X d S )NrF  )r  r   )r9   rJ  r   rP  )r   r   r(   r(   r)   r    s    ztest_xlog1py.<locals>.xfuncr         ?       @r1   KH9)r  gvIh%<=)r4   r7   )r   r   )r  r  )r1   r  )	r9   r   r   r   rI   rN   r"   r   Zxlog1py)r  r  r  r(   r(   r)   test_xlog1py  s
    (r  c              C   s   dd } dddt jf}ddg}g }x&tj||D ]\}}|j||  q0W t j|td}t j| t jgd|}t	t
j||d	d	d
 d S )Nc             S   s"   | dk rt j S tj| |  S d S )Nr   )r9   r   r   r  )r   r(   r(   r)   r    s    ztest_entr.<locals>.xfuncr   g      ?g      ?r1   )r  )otypesgvIh%<=)r4   r7   r8   )r9   r   	itertoolsproductr8  r   rI   rN   r   r"   r   Zentr)r  r   signsarrZsgnr|  r   r  r(   r(   r)   	test_entr  s    r  c        
      C   s   dd } d}ddg}g }x6t j||||D ]"\}}}}|j|| || f q*W tj|td}tj| tjgd|d d df |d d df }	tt	j
|	|d	d	d
 d S )Nc             S   sh   | dk s |dk s |dkr&| dkr&t jS t j| s:t j|r@t jS | dkrL|S tj| | | |  | S d S )Nr   )r9   r   Zisposinfr   r  )r   r   r(   r(   r)   r    s     ztest_kl_div.<locals>.xfuncr         ?      ?r1   )r  )r  gvIh%<=)r4   r7   )r   r  r  r8   )r  r  r8  r9   r   rI   rN   r   r"   r   Zkl_div)
r  r   r  r  sgnavasgnbvbr   r  r(   r(   r)   test_kl_div  s    0r  c        
      C   s   dd } d}ddg}g }x6t j||||D ]"\}}}}|j|| || f q*W tj|td}tj| tjgd|d d df |d d df }	tt	j
|	|d	d	d
 d S )Nc             S   s>   | dkr |dkr t j| | | S | dkr4|dkr4dS tjS d S )Nr   )r   r  r9   r   )r   r   r(   r(   r)   r    s
    ztest_rel_entr.<locals>.xfuncr         ?      ?r1   )r  )r  gvIh%<=)r4   r7   )r   r  r  r8   )r  r  r8  r9   r   rI   rN   r   r"   r   Zrel_entr)
r  r   r  r  r  r  r  r  r   r  r(   r(   r)   test_rel_entr  s    0r  c              C   s   t tjddtj ttjdddtjd  ttjddd dd } tjjdd}tj	| tj
gd	|d d d
f |d d df }ttj||ddd d S )Nr1   g      ?r/   g      ?g      @c             S   sD   | dk rt jS t j|| k r*dt j| S | t j|d|    S d S )Nr   g      ?)r9   r   r  square)r^  r  r(   r(   r)   r  '  s
    ztest_huber.<locals>.xfuncr   )r  r   gvIh%<=)r4   r7   r8   g      ?g      ?g      @)r   r   Zhuberr9   r   r   r  r>   randnrN   r   r"   )r  r   r  r(   r(   r)   
test_huber"  s    0r  c              C   sx   dd } t jt jjddj ddgddgg }t j| t jgd|d d df |d d df }ttj	||d	d	d
 d S )Nc             S   sD   | dk rt jS |  s| rdS | d t jd||  d  d  S d S )Nr   r/   r1   )r9   r   r   )r^  r  r(   r(   r)   r  5  s
    z test_pseudo_huber.<locals>.xfuncr   r/   r   g      ?)r  r1   gvIh%<=)r4   r7   )
r9   r   r>   r  tolistrN   r   r"   r   Zpseudo_huber)r  r   r  r(   r(   r)   test_pseudo_huber4  s    (0r  )er  r3  Znumpyr9   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r  r   r  Znumpy.testingr   r   r   r   r   r   r   r   r   Zscipyr   Zscipy.special._ufuncsZ_ufuncsr%   Zscipy.specialr    Zscipy.special._testutilsr!   r"   r#   rm  objectr$   r  r  r  r  r  r	  r  r  r,  r/  rD  r\  rb  rj  rw  r  r  r  r  r5  r@  rC  rE  rG  rb  re  rf  rh  rq  rs  ru  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(   r(   r(   r)   <module>   s   T,       >n	 .E b a-2# Y    7 		.	
#=