o
    	hJ                  
   @   sp  U d dl 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g d	Zg d
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g 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	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	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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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	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejd)dfe	jejd)dfe	jejddfe	jejddfe	jejd)dfe	jejd)dfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejd'dfe	jejddfe	jejddfe	jejd)dfe	jejd)dfe	jejddfe	jejd&dfe	jejddfe	jejddfe	jejddfe	jejd,dfe	jejd&dfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejd-dfe	jejd-dfe	jejd-dfe	jejddfe	jejddfe	jejd.dfe	jejd.dfe	jejd.dfe	jejd.dfe	jejd.dfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejd.dfe	jejd/dfe	jejddfe	jejd.d0fe	jejd/d0fe	jejd.d0fe	jejd/d0fe	jejddfe	jejddfe	jejddfe	jejd1dfe	jejd1dfe	jejd'dfe	jejddfe	jejddfe	jejddfe	jejd.dfe	jejd/dfe	jejddfe	jejd.d0fe	jejd/d0fe	jejd.d0fe	jejd/d0fe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	jejddfe	j ej d2d3fe	jejd2d3fe	jejd2d3fe	jejd2d3f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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Z e!e"eee"e#d5f e#dB f  e$d6< d7d e D Z%d8d9 Z&d:d; Z'ej(j)ej(*d<ej(j+d=e e%d>d?d@ Z,dS )A    )CallableN)product)assert_allclosesuppress_warnings)special)cython_specialTF)i   
   )g      $g      g      ?g      $@c                 C   s   g | ]}t | qS  )complex).0tupr   r   [/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/special/tests/test_cython_special.py
<listcomp>   s    r      )repeat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   )dldddd)r#   )r   )r!   DD)r#   DDD)ddddDDDD)r!   dDldzd and l differ for negative int)r#   ddDldd)r)   )r&   dddDlddd)r   r   r   )r)   r!   )r(   )r!   r(   )r#   r*   )r&   r,   )r   )lldr#   )r&   )dddddzsee gh-6211)r!   r!   )r)   ldblDlDbzMPython version supports negative reals; Cython version doesn't - see gh-21629)llddr&   .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_POINTSr6   r   r   r   	<genexpr>/      z(_generate_test_points.<locals>.<genexpr>)tuplelistr   )	typecodesaxesptsr   r   r   _generate_test_points.  s   rA   c                  C   sZ   t tD ]&} tt| }t|r*| ds*tD ]\}}}}||u r" nqt|  dqd S )N_z missing from tests!)dirr   getattrcallable
startswithr4   RuntimeError)namefuncrB   cyfunr   r   r   test_cython_api_completeness4  s   
rK      param)idsc              
      sn  | \}}}}|rt j|d tdd |D }dd t|D }|D ]}t|D ]\}}	|| |	 q(q"t }
dgt|  t|D ]\}}	tt	|	}||
v rRqCt|	dk |< |
| qC|D ]R} fddt|D }|rx|t| }nd }|}t
|}|D ]1}t }|t || }|| }W d    n1 sw   Y  t||| d	| d	| d
 qqbd S )N)reasonc                 s   s    | ]}t |V  qd S r8   )len)r   specr   r   r   r:   I  r;   z"test_cython_api.<locals>.<genexpr>c                 S   s   g | ]}t  qS r   )set)r   rB   r   r   r   r   J  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   Z  s     )err_msg)pytestxfailmaxrange	enumerateaddrR   rP   r<   sortedrA   r   filterDeprecationWarningr   )rM   pyfunccyfuncspecializationsknownfailure
max_paramsvaluesr>   rT   vseenvv	signaturecy_spec_funcr@   ptsuppyvalcyvalr   rV   r   test_cython_api@  sF   


 rr   (-  collections.abcr   rZ   	itertoolsr   numpy.testingr   r   scipyr   scipy.specialr   bint_points
int_pointsreal_pointscomplex_pointsrS   r9   agmairy_airy_pywrapairye_airye_pywrapbdtrbdtrcbdtribdtrikbdtrinbeibeipberberp
besselpolybetabetaincbetaincc
betaincinvbetainccinvbetalnbinomboxcoxboxcox1pbtdtriabtdtribcbrtchdtrchdtrcchdtrichdtrivchndtr	chndtridf	chndtrincchndtrixcosdgcosm1cotdgdawsnellipe	ellipeincellipj_ellipj_pywrap	ellipkincellipkm1ellipkelliprcelliprdelliprfelliprgelliprjentrerferfcerfcxerfierfinverfcinveval_chebyceval_chebyseval_chebyteval_chebyueval_gegenbauereval_genlaguerreeval_hermiteeval_hermitenormeval_jacobieval_laguerreeval_legendreeval_sh_chebyteval_sh_chebyueval_sh_jacobieval_sh_legendreexp1exp10exp2expiexpitexpm1expnexprelfdtrfdtrcfdtrifdtridfdfresnel_fresnel_pywrapgammagammainc	gammainccgammainccinvgammaincinvgammalngammasgngdtrgdtrcgdtriagdtribgdtrixhankel1hankel1ehankel2hankel2ehuberhyp0f1hyp1f1hyp2f1hyperui0i0ei1i1e
inv_boxcoxinv_boxcox1pit2i0k0_it2i0k0_pywrapit2j0y0_it2j0y0_pywrap
it2struve0itairy_itairy_pywrapiti0k0_iti0k0_pywrapitj0y0_itj0y0_pywrapitmodstruve0	itstruve0ivivej0j1jvjvek0k0ek1k1ekeikeipkelvin_kelvin_pywrapkerkerpkl_divknkolmogi
kolmogorovkvkvelog1p	log_expitlog_ndtrlog_wright_bessel	ndtri_exploggammalogitlpmv	mathieu_a	mathieu_bmathieu_cem_mathieu_cem_pywrapmathieu_modcem1_mathieu_modcem1_pywrapmathieu_modcem2_mathieu_modcem2_pywrapmathieu_modsem1_mathieu_modsem1_pywrapmathieu_modsem2_mathieu_modsem2_pywrapmathieu_sem_mathieu_sem_pywrapmodfresnelm_modfresnelm_pywrapmodfresnelp_modfresnelp_pywrap	modstruvenbdtrnbdtrcnbdtrinbdtriknbdtrinncfdtrncfdtri
ncfdtridfd
ncfdtridfn	ncfdtrincnctdtr	nctdtridf	nctdtrincnctdtritndtrndtrinrdtrimnnrdtrisdobl_ang1_obl_ang1_pywrapobl_ang1_cv_obl_ang1_cv_pywrapobl_cvobl_rad1_obl_rad1_pywrapobl_rad1_cv_obl_rad1_cv_pywrapobl_rad2_obl_rad2_pywrapobl_rad2_cv_obl_rad2_cv_pywrappbdv_pbdv_pywrappbvv_pbvv_pywrappbwa_pbwa_pywrappdtrpdtrcpdtripdtrikpochpowm1pro_ang1_pro_ang1_pywrappro_ang1_cv_pro_ang1_cv_pywrappro_cvpro_rad1_pro_rad1_pywrappro_rad1_cv_pro_rad1_cv_pywrappro_rad2_pro_rad2_pywrappro_rad2_cv_pro_rad2_cv_pywrappseudo_huberpsiradianrel_entrrgammaroundspherical_jnspherical_ynspherical_inspherical_knshichi_shichi_pywrapsici_sici_pywrapsindgsmirnovsmirnovispencesph_harmstdtrstdtridfstdtritstruvetandgtklmbdavoigt_profilewofzwright_besselwrightomegaxlog1pyxlogyy0y1ynyvyvezetacowens_tr4   r=   r<   str__annotations__IDSrA   rK   markthread_unsafe	fail_slowparametrizerr   r   r   r   r   <module>   s   	
 !"#$%&'()*+,-./012345678
9
;
=
?
ACD
E
GIJ
K
M
OQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  
@  B  
C  E  F  G  H  I  J  K  L  M  N  O  P  Q  
R  T  
U  W  X  Y  Z  [  \  ]  _  a  c  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~ 6  


