U
    »mœdI  ã                í   @  sz  U d dl mZ d dlmZmZmZmZ 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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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j5d dfej6ej6d#dfej7ej7d#dfej8ej8d#dfej9ej9d#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jAd dfejBejBd dfejCejCd$dfejDejDd$dfejEejEd%dfejFejFd&dfejGejGd&dfejHejHd&dfejIejId'dfejJejJd$dfejKejKd!dfejLejLd!dfejMejMd!dfejNejNd!dfejOejOd$dfejPejPd$dfejQejQd(d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jWd+dfejXejXd+dfejYejYd,d)fejZejZd(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jaejad$dfejbejbd$dfejcejcd!dfejdejdd-dfejeejed!dfejfejfd.dfejgejgd$dfejhejhd#dfejiejid#dfejjejjd#dfejkejkd#dfejlejmd!dfejnejnd!dfejoejod dfejpejpd dfejqejqd d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jwd#dfejxejxd#dfejyejyd#dfejzejzd/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d0dfej€ej€d1dfej�ej�d2d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–d0dfej—ej—d0dfej˜ej˜d$dfej™ej™d$dfejšejšd0dfej›ej›d0d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ªd0dfej«ej«d0d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°d3d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Æd4dfejÇejÇd4dfejÈejÈd4dfejÉejÉd#dfejÊejÊd#dfejËejËd5dfejÌejÌd5dfejÍejÍd5dfejÎejÎd5dfejÏejÏd5d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Ùd5dfejÚejÛd6dfejÜejÜd#dfejÝejÞd5d7fejßejàd6d7fejáejâd5d7fejãejäd6d7f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ëd8dfejìejìd8d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òd5dfejóejôd6dfejõejõd#dfejöej÷d5d7fejøejùd6d7fejúejûd5d7fejüejýd6d7f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d9dfe�je�jd9dfe�je�jd9dfe�je�jd9d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d3dfe�je�jd#dfe�je�jd3d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 d0dfe�j!e�j!d0dfe�j"e�j"d$dfe�j#e�j#d dfgê�Z$d;�e%d<< d=d„ �e$D ƒ�Z&d>d?„ �Z'd@dA„ �Z(e�j)�j*dB�e$�e&dC�dDdE„ ƒ�Z+dS )Fé    )Úannotations)ÚListÚTupleÚCallableÚOptionalN)Úproduct)Úassert_allcloseÚsuppress_warnings)Úspecial)Úcython_specialTFiöÿÿÿéÿÿÿÿé   é
   g      $Àg      ð¿g      ð?g      $@c                 C  s   g | ]}t |Ž ‘qS © )Úcomplex)Ú.0Útupr   r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/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)Údd)r   r    )ZdldÚddd)r%   )r   )r$   ZDD)r%   ZDDD)ÚddddZDDDD)r$   ÚdDÚldzd and l differ for negative int)r%   ÚddDZldd)r(   )r&   ÚdddDZlddd)r   r   r   )r(   r$   )r'   )r$   r'   )r%   r)   )r&   r*   )r    )Zlldr%   )r&   )Zdddddzsee gh-6211)r$   r$   )r(   ZldbZlDZlDb)Zllddr&   z?List[Tuple[Callable, Callable, Tuple[str, ...], Optional[str]]]ÚPARAMSc                 C  s   g | ]}|d  j ‘qS )r   )Ú__name__©r   Úxr   r   r   r   "  s     c                 C  s"   t dd„ | D ƒƒ}tt|Ž ƒ}|S )Nc                 s  s   | ]}t | V  qd S ©N)ÚTEST_POINTSr-   r   r   r   Ú	<genexpr>&  s     z(_generate_test_points.<locals>.<genexpr>)ÚtupleÚlistr   )Ú	typecodesZaxesÚptsr   r   r   Ú_generate_test_points%  s    r6   c                  C  sZ   t tƒD ]L} tt| ƒ}t|ƒr|  d¡stD ]\}}}}||kr, qq,t| › d�ƒ‚qd S )NÚ_z missing from tests!)Údirr   ÚgetattrÚcallableÚ
startswithr+   ÚRuntimeError)ÚnameÚfuncr7   Zcyfunr   r   r   Útest_cython_api_completeness+  s    
r?   Úparam)Zidsc                   sV  | \}}}}|rt j|d� tdd„ |D ƒƒ}dd„ t|ƒD ƒ}|D ]$}t|ƒD ]\}}	||  |	¡ qPqDtƒ }
dgt|ƒ ‰ t|ƒD ]8\}}	tt	|	ƒƒ}||
kr¤q†t|	ƒdkˆ |< |
 |¡ q†|D ]Œ}‡ fdd„t|ƒD ƒ}|rð|t|ƒ }nd }|}t
|ƒ}|D ]J}tƒ � }| t¡ ||Ž }||Ž }W 5 Q R X t||d	 |||¡d
� �qqÄd S )N)Úreasonc                 s  s   | ]}t |ƒV  qd S r/   )Úlen)r   Úspecr   r   r   r1   >  s     z"test_cython_api.<locals>.<genexpr>c                 S  s   g | ]
}t ƒ ‘qS r   )Úset)r   r7   r   r   r   r   ?  s     z#test_cython_api.<locals>.<listcomp>Fr   c                   s    g | ]\}}ˆ | rt | ‘qS r   )ÚCYTHON_SIGNATURE_MAP)r   ÚjÚcode©Zis_fused_coder   r   r   O  s   þz{} {} {})Úerr_msg)ÚpytestZxfailÚmaxÚrangeÚ	enumerateÚaddrD   rB   r2   Úsortedr6   r	   ÚfilterÚDeprecationWarningr   Úformat)r@   ZpyfuncZcyfuncZspecializationsZknownfailureZ
max_paramsÚvaluesr4   rF   ÚvÚseenÚvvÚ	signatureZcy_spec_funcr5   ÚptÚsupZpyvalZcyvalr   rH   r   Útest_cython_api7  s>    
ÿ
rZ   (,  Ú
__future__r   Útypingr   r   r   r   rJ   Ú	itertoolsr   Znumpy.testingr   r	   Zscipyr
   Zscipy.specialr   Zbint_pointsZ
int_pointsZreal_pointsZcomplex_pointsrE   r0   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elliprcZelliprdZelliprfZelliprgZelliprjZ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_expitZlog_ndtrZ	ndtri_expZ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powm1Z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wright_besselZwrightomegaZxlog1pyZxlogyZy0Úy1ZynZyvZyveZzetacZowens_tr+   Ú__annotations__ZIDSr6   r?   ÚmarkZparametrizerZ   r   r   r   r   Ú<module>   sF   ÷÷
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ€ � x

