o
    iJ                  
   @   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   a/home/kim/smarthome/.venv/lib/python3.10/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lDbzMPython version supports negative reals; Cython version doesn't - see gh-21629)Z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_POINTSr)   r   r   r   	<genexpr>/      z(_generate_test_points.<locals>.<genexpr>)tuplelistr   )	typecodesZaxesptsr   r   r   _generate_test_points.  s   r3   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
startswithr'   RuntimeError)namefuncr4   Zcyfunr   r   r   test_cython_api_completeness4  s   
r<      param)Z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 r+   )len)r   specr   r   r   r-   I  r.   z"test_cython_api.<locals>.<genexpr>c                 S   s   g | ]}t  qS r   )set)r   r4   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Zis_fused_coder   r   r   Z  s     )err_msg)pytestZxfailmaxrange	enumerateaddrB   r@   r/   sortedr3   r   filterDeprecationWarningr   )r>   ZpyfuncZcyfuncZspecializationsZknownfailureZ
max_paramsvaluesr1   rD   vseenZvv	signatureZcy_spec_funcr2   ptsupZpyvalZcyvalr   rF   r   test_cython_api@  sF   


 rW   (-  collections.abcr   rI   	itertoolsr   Znumpy.testingr   r   Zscipyr   Zscipy.specialr   Zbint_pointsZ
int_pointsZreal_pointsZcomplex_pointsrC   r,   ZagmZairyZ_airy_pywrapZairyeZ_airye_pywrapZbdtrZbdtrcZbdtriZbdtrikZbdtrinZbeiZbeipZberZberpZ
besselpolybetaZbetaincZbetainccZ
betaincinvZbetainccinvZbetalnZbinomZboxcoxZboxcox1pZ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log_wright_besselZ	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'   r0   r/   str__annotations__ZIDSr3   r<   markZthread_unsafeZ	fail_slowZparametrizerW   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  


