3
OdF                 @   s  d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 ddgZ
d:d;d	dgZd<d=dd
gZdd eeddD Zdddddddddd	Ze
eeeeeeeed	Zeje	jd>dfeje	jd?dfeje	jd@dfeje	jdAdfeje	jdBdfeje	jdCdfeje	jdDdfeje	jdEdfeje	jdFdfeje	jdGdfeje	jdHdfeje	jdIdfeje	jdJdfeje	jdKdfej e	j dLdfej!e	j!dMdfej"e	j"dNdfej#e	j#dOdfej$e	j$dPdfej%e	j%dQdfej&e	j&dRdfej'e	j'dSdfej(e	j(dTdfej)e	j)dUdfej*e	j*dVdfej+e	j+dWdfej,e	j,dXdfej-e	j-dYdfej.e	j.dZdfej/e	j/d[dfej0e	j0d\dfej1e	j1d]dfej2e	j2d^dfej3e	j3d_dfej4e	j4d`dfej5e	j5dadfej6e	j6dbdfej7e	j7dcdfej8e	j8dddfej9e	j:dedfej;e	j;dfdfej<e	j<dgdfej=e	j=dhdfej>e	j>didfej?e	j?djdfej@e	j@dkdfejAe	jAdldfejBe	jBdmdfejCe	jCddfejDe	jDddfejEe	jEdndfejFe	jFdod!fejGe	jGdpd!fejHe	jHdqd!fejIe	jIdrd!fejJe	jJdsd!fejKe	jKdtdfejLe	jLdudfejMe	jMdvd!fejNe	jNdwd!fejOe	jOdxdfejPe	jPdydfejQe	jQdzd!fejRe	jRd{d!fejSe	jSd|dfejTe	jTd}dfejUe	jUd~dfejVe	jVddfejWe	jWddfejXe	jXddfejYe	jYddfejZe	jZddfej[e	j[ddfej\e	j\ddfej]e	j]ddfej^e	j^ddfej_e	j_ddfej`e	jaddfejbe	jbddfejce	jcddfejde	jdddfejee	jeddfejfe	jfddfejge	jgddfejhe	jhddfejie	jiddfejje	jjddfejke	jkddfejle	jlddfejme	jmddfejne	jnddfejoe	joddfejpe	jpddfejqe	jqddfejre	jrddfejse	jsddfejte	jtddfejue	juddfejve	jvddfejwe	jwddfejxe	jxddfejye	jyddfejze	jzddfej{e	j{ddfej|e	j|ddfej}e	j~ddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jdd+feje	jdd+feje	jdd+feje	jdd+feje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jdd+feje	jdd+feje	jdd+feje	jdd+feje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jd dfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfej e	j d	dfeje	jd
dfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfej	e	j	ddfej
e	j
ddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfeje	jddfgZd1d eD Zd2d3 Zd4d5 Ze jjd6eed7d8d9 ZdS (      N)product)assert_allclosesuppress_warnings)special)cython_specialTF
      g      $@g      ?c             C   s   g | ]}t | qS  )complex).0tupr	   r	   [/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_cython_special.py
<listcomp>   s    r      )repeatZbintfloatdoublezlong doublezfloat complexzdouble complexzlong double complexintlong)	bfdgFDGilddr   r   dldddddDldzd and l differ for negative intddDldddddddddDldddr   r   llddddddzsee gh-6211ldblDlDbllddDDc             C   s   g | ]}|d  j qS )r   )__name__)r   xr	   r	   r   r     s    c             C   s"   t tdd | }tt| }|S )Nc             S   s   t |  S )N)TEST_POINTS)r0   r	   r	   r   <lambda>  s    z'_generate_test_points.<locals>.<lambda>)tuplemaplistr   )	typecodesZaxesptsr	   r	   r   _generate_test_points  s    r8   c              C   sb   x\t tD ]P} tt| }t|r
| jd r
x,tD ]\}}}}||kr2P q2W tdj| q
W d S )N_z{} missing from tests!)dirr   getattrcallable
startswithPARAMSRuntimeErrorformat)namefuncr9   Zcyfunr	   r	   r   test_cython_api_completeness  s    
rC   param)idsc                sj  | \}}}}|rt j|d tdd |D }dd t|D }x0|D ](}x"t|D ]\}}	|| j|	 qTW qFW t }
dgt|  xDt|D ]8\}}	tt	|	}||
krqt|	dk |< |
j| qW x|D ]} fddt|D }|r|t| }nd }|}t
|}xR|D ]J}t  }|jt || }|| }W d Q R X t||d	j|||d
 qW qW d S )N)reasonc             s   s   | ]}t |V  qd S )N)len)r   specr	   r	   r   	<genexpr>2  s    z"test_cython_api.<locals>.<genexpr>c             S   s   g | ]
}t  qS r	   )set)r   r9   r	   r	   r   r   3  s    z#test_cython_api.<locals>.<listcomp>Fr   c                s    g | ]\}} | rt | qS r	   )CYTHON_SIGNATURE_MAP)r   jcode)is_fused_coder	   r   r   C  s   z{} {} {})err_msg)pytestZxfailmaxrange	enumerateaddrJ   rG   r3   sortedr8   r   filterDeprecationWarningr   r@   )rD   ZpyfuncZcyfuncZspecializationsZknownfailureZ
max_paramsvaluesr6   rL   vseenvv	signatureZcy_spec_funcr7   ptsupZpyvalZcyvalr	   )rN   r   test_cython_api+  s<    




r_   ig      $g      )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   )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   )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!   )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%   )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"   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   (  rP   	itertoolsr   Znumpy.testingr   r   Zscipyr   Zscipy.specialr   Zbint_pointsZ
int_pointsZreal_pointsZcomplex_pointsrK   r1   ZagmZairyZ_airy_pywrapZairyeZ_airye_pywrapZbdtrZbdtrcZbdtriZbdtrikZbdtrinZbeiZbeipZberZberpZ
besselpolybetaZbetaincZ
betaincinvZbetalnZbinomZboxcoxZboxcox1pZbtdtrZbtdtriZbtdtriaZbtdtribZcbrtZchdtrZchdtrcZchdtriZchdtrivZchndtrZ	chndtridfZ	chndtrincZchndtrixZcosdgZcosm1ZcotdgZdawsnZellipeZ	ellipeincZellipjZ_ellipj_pywrapZ	ellipkincZellipkm1ZellipkZentrerferfcZerfcxZerfiZerfinvZerfcinvZeval_chebycZeval_chebysZeval_chebytZeval_chebyuZeval_gegenbauerZeval_genlaguerreZeval_hermiteZeval_hermitenormZeval_jacobiZeval_laguerreZeval_legendreZeval_sh_chebytZeval_sh_chebyuZeval_sh_jacobiZeval_sh_legendreZexp1Zexp10Zexp2ZexpiZexpitexpm1ZexpnZexprelZfdtrZfdtrcZfdtriZfdtridfdZfresnelZ_fresnel_pywrapgammaZgammaincZ	gammainccZgammainccinvZgammaincinvZgammalnZgammasgnZgdtrZgdtrcZgdtriaZgdtribZgdtrixZhankel1Zhankel1eZhankel2Zhankel2eZhuberZhyp0f1Zhyp1f1Zhyp2f1ZhyperuZi0Zi0ei1Zi1eZ
inv_boxcoxZinv_boxcox1pZit2i0k0Z_it2i0k0_pywrapZit2j0y0Z_it2j0y0_pywrapZ
it2struve0ZitairyZ_itairy_pywrapZiti0k0Z_iti0k0_pywrapZitj0y0Z_itj0y0_pywrapZitmodstruve0Z	itstruve0ZivZiveZj0Zj1ZjvZjveZk0Zk0eZk1Zk1eZkeiZkeipZkelvinZ_kelvin_pywrapZkerZkerpZkl_divknZkolmogiZ
kolmogorovkvZkvelog1pZlog_ndtrZloggammaZlogitZlpmvZ	mathieu_aZ	mathieu_bZmathieu_cemZ_mathieu_cem_pywrapZmathieu_modcem1Z_mathieu_modcem1_pywrapZmathieu_modcem2Z_mathieu_modcem2_pywrapZmathieu_modsem1Z_mathieu_modsem1_pywrapZmathieu_modsem2Z_mathieu_modsem2_pywrapZmathieu_semZ_mathieu_sem_pywrapZmodfresnelmZ_modfresnelm_pywrapZmodfresnelpZ_modfresnelp_pywrapZ	modstruveZnbdtrZnbdtrcZnbdtriZnbdtrikZnbdtrinZncfdtrZncfdtriZ
ncfdtridfdZ
ncfdtridfnZ	ncfdtrincZnctdtrZ	nctdtridfZ	nctdtrincZnctdtritZndtrZndtriZnrdtrimnZnrdtrisdZobl_ang1Z_obl_ang1_pywrapZobl_ang1_cvZ_obl_ang1_cv_pywrapZobl_cvZobl_rad1Z_obl_rad1_pywrapZobl_rad1_cvZ_obl_rad1_cv_pywrapZobl_rad2Z_obl_rad2_pywrapZobl_rad2_cvZ_obl_rad2_cv_pywrapZpbdvZ_pbdv_pywrapZpbvvZ_pbvv_pywrapZpbwaZ_pbwa_pywrapZpdtrZpdtrcZpdtriZpdtrikZpochZpro_ang1Z_pro_ang1_pywrapZpro_ang1_cvZ_pro_ang1_cv_pywrapZpro_cvZpro_rad1Z_pro_rad1_pywrapZpro_rad1_cvZ_pro_rad1_cv_pywrapZpro_rad2Z_pro_rad2_pywrapZpro_rad2_cvZ_pro_rad2_cv_pywrapZpseudo_huberpsiZradianZrel_entrZrgammaroundZspherical_jnZspherical_ynZspherical_inZspherical_knZshichiZ_shichi_pywrapZsiciZ_sici_pywrapZsindgZsmirnovZsmirnoviZspenceZsph_harmZstdtrZstdtridfZstdtritZstruveZtandgZtklmbdaZvoigt_profileZwofzZwrightomegaZxlog1pyZxlogyZy0y1ZynZyvZyveZzetacZowens_tr>   ZIDSr8   rC   markZparametrizer_   r	   r	   r	   r   <module>   s  










