
    bifJ              
       3   U d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ ddgZg d	Zg d
Z eed      D  cg c]  }  e|  	 c} 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	j0                  ej0                  ddfe	j2                  ej2                  ddfe	j4                  ej4                  ddfe	j6                  ej6                  ddfe	j8                  ej8                  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	jB                  ejB                  ddfe	jD                  ejD                  ddfe	jF                  ejF                  ddfe	jH                  ejH                  ddfe	jJ                  ejJ                  ddfe	jL                  ejL                  ddfe	jN                  ejN                  ddfe	jP                  ejP                  ddfe	jR                  ejR                  ddfe	jT                  ejT                  ddfe	jV                  ejV                  ddfe	jX                  ejX                  ddfe	jZ                  ejZ                  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	jb                  ejb                  ddfe	jd                  ejd                  ddfe	jf                  ejf                  ddfe	jh                  ejh                  ddfe	jj                  ejj                  ddfe	jl                  ejl                  ddfe	jn                  ejn                  ddfe	jp                  ejp                  ddfe	jr                  ejr                  ddfe	jt                  ejt                  ddfe	jv                  ejv                  ddfe	jx                  ejz                  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	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	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	j.                  ej.                  d'dfe	j0                  ej0                  ddfe	j2                  ej2                  ddfe	j4                  ej4                  ddfe	j6                  ej6                  ddfe	j8                  ej8                  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	jB                  ejB                  ddfe	jD                  ejD                  ddfe	jF                  ejF                  d%dfe	jH                  ejH                  ddfe	jJ                  ejJ                  ddfe	jL                  ejL                  d'dfe	jN                  ejN                  d'dfe	jP                  ejP                  ddfe	jR                  ejR                  d$dfe	jT                  ejT                  ddfe	jV                  ejV                  ddfe	jX                  ejX                  ddfe	jZ                  ejZ                  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	jb                  ejb                  ddfe	jd                  ejf                  ddfe	jh                  ejj                  ddfe	jl                  ejn                  ddfe	jp                  ejr                  ddfe	jt                  ejv                  ddfe	jx                  ejz                  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	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                  d0d1fe	j                  ej                  d0d1fe	j                  ej                  d0d1fe	j                  ej                  d0d1f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	j0                  ej0                  ddfe	j2                  ej2                  ddfe	j4                  ej4                  ddfe	j6                  ej6                  d%dfe	j8                  ej8                  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#d2f   e#dz  f      e$d3<   e D cg c]  }|d    jJ                   c}Z&d4 Z'd5 Z(ejR                  jU                  d6      ejR                  jW                  d7e e&8      d9               Z,yc c} w c c}w ):    N)Callable)product)assert_allclose)special)cython_specialTF)i   
   )g      $g      g      ?g      $@   )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.PARAMSc                 L    t        d | D              }t        t        |       }|S )Nc              3   .   K   | ]  }t         |     y wN)TEST_POINTS).0xs     b/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/special/tests/test_cython_special.py	<genexpr>z(_generate_test_points.<locals>.<genexpr>0  s     3AQ3s   )tuplelistr   )	typecodesaxesptss      r4   _generate_test_pointsr;   /  s%    333D
w~
CJ    c                      t        t              D ]S  } t        t        |       }t        |      s| j	                  d      r1t
        D ]  \  }}}}||u s F t        |  d       y )N_z missing from tests!)dirr   getattrcallable
startswithr-   RuntimeError)namefuncr>   cyfuns       r4   test_cython_api_completenessrG   5  sn    N# B~t,D>$//#"6"( B5!QD=B #dV+?#@AABr<      param)idsc                 Z   | \  }}}}|rt        j                  |       t        d |D              }t        |      D cg c]  }t	                }}|D ])  }t        |      D ]  \  }	}
||	   j                  |
        + t	               }dgt        |      z  }t        |      D ]@  \  }	}
t        t        |
            }||v rt        |
      dkD  ||	<   |j                  |       B |D ]  }t        |      D 	cg c]  \  }	}||	   r	t        |    }}	}|r|t        |         }nd }|}t        |      }|D ]Y  }t        j                         5  t        j                  dt                || } || }d d d        t!        | d| d|        [  y c c}w c c}}	w # 1 sw Y   /xY w)N)reasonc              3   2   K   | ]  }t        |        y wr0   )len)r2   specs     r4   r5   z"test_cython_api.<locals>.<genexpr>I  s     ;4SY;s   Fr	   ignore )err_msg)pytestxfailmaxrangeset	enumerateaddrN   r6   sortedCYTHON_SIGNATURE_MAPr;   warningscatch_warningssimplefilterDeprecationWarningr   )rI   pyfunccyfuncspecializationsknownfailure
max_paramsr>   valuesr8   jvseenis_fused_codevvcode	signaturecy_spec_funcr:   ptpyvalcyvals                        r4   test_cython_apirq   A  s    5:1FFO\L) ;?;;J":./ce/F/$ 	i( 	DAq1IMM!	 5DGc&k)M&! 16!9:FQJa % S	 %.i$8* D%a( *$/ *	 * !%	"23LI!L $I. 	SB((* *%%h0BC$b)* E5RD)Ai[2QR	SS 0 ** *s   F:F%F!!F*(-  r\   collections.abcr   rS   	itertoolsr   numpy.testingr   scipyr   scipy.specialr   bint_points
int_pointsreal_pointscomplexcomplex_pointsr[   r1   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stdtrstdtridfstdtritstruvetandgtklmbdavoigt_profilewofzwright_besselwrightomegaxlog1pyxlogyy0y1ynyvyvezetacowens_tr-   r7   r6   str__annotations____name__IDSr;   rG   mark	fail_slowparametrizerq   )tupr3   s   00r4   <module>r     s!     $   )  ( Um
&+2;q+IJC'3-J 
								
  
								
}H[[.$$gt4}H\\>..
DA}H ]]N00*dC}H \\>&&=	}H
 ]]N((.$?}H ]]N((.$?}H ^^^**Hd;}H ^^^**Hd;}H [[.$$fd3}H \\>&&5}H [[.$$fd3}H \\>&&5}H 22HdC}H \\>&&6}H __n,,h=}H  ~..$?!}H" 22HdC#}H$ .44hE%}H& ^^^**GT:'}H( ]]N(('48)}H* ^^^**GT:+}H, ~..>-}H. __n,,h=/}H0 __n,,h=1}H2 \\>&&53}H4 ]]N(('485}H6 ^^^**GT:7}H8 ^^^**GT:9}H: __n,,gt<;}H< ^^^**Hd;=}H> 00(DA?}H@ 00(DAA}HB ~..$?C}HD ]]N((&$7E}HF ]]N((&$7G}HH ]]N((&$7I}HJ ]]N((*d;K}HL ^^^**FD9M}HN 00'4@O}HP ^^^22GTBQ}HR 00'4@S}HT ~..=U}HV ^^^**FD9W}HX __n,,lDAY}HZ __n,,ndC[}H\ __n,,ndC]}H^ __n,,ndC_}H` __n,,.>Ea}Hb \\>&&5c}Hd [[.$$j$7e}Hf \\>&&
D9g}Hh ]]N((*d;i}Hj \\>&&
D9k}Hl ^^^**FD9m}Hn __n,,fd;o}Hp .446H$Oq}Hr .446H&(s}Hv .446H&(w}Hz .446H&({}H~ n<<>S&(}HB ~>>@U&(C}HF >66FG}HH ~>>NI}HJ .446N&(K}HN N88:L&(O}HR N88:LdSS}HT ^::<NPTUU}HV ^::<N&(W}HZ ^::<T&([}H^ ~>>@R	_}Hb \\>&&
D9c}Hd ]]N((&$7e}Hf \\>&&5g}Hh \\>&&
D9i}Hj ]]N((/4@k}Hl ]]N((*d;m}Hn \\>&&d;o}Hp ^^^**FD9q}Hr \\>&&$7s}Ht ]]N(((D9u}Hv ]]N(((D9w}Hx ~..$?y}Hz __n44j$G{}H| ]]N((*d;}}H~ ~..>}H@ 00'4@A}HB >66FC}HD .44gtDE}HF __n,,fd;G}HH ~..=I}HJ \\>&&$7K}HL ]]N(((D9M}HN ^^^**Hd;O}HP ^^^**Hd;Q}HR ^^^**Hd;S}HT __n,,gt<U}HV ~..>W}HX __n,,gt<Y}HZ ~..>[}H\ ]]N(('48]}H^ ^^^**L$?_}H` ^^^**NDAa}Hb ^^^**,<dCc}Hd ^^^**Hd;e}Hf ZZ""FD1g}Hh [[.$$fd3i}Hj ZZ""FD1k}Hl [[.$$fd3m}Hn 22GTBo}Hp >66Fq}Hr __n44fdCs}Ht __n44fdCu}Hv 22FDAw}Hx ^^^22FDAy}Hz ^^^22FDA{}H| ^^^22FDA}}H~ >66E}H@ 00&$?A}HB ZZ""L$7C}HD [[.$$lD9E}HF ZZ""FD1G}HH ZZ""FD1I}HJ ZZ""L$7K}HL [[.$$lD9M}HN ZZ""FD1O}HP [[.$$fd3Q}HR ZZ""FD1S}HT [[.$$fd3U}HV [[.$$fd3W}HX \\>&&5Y}HZ ^^^22FDA[}H\ [[.$$fd3]}H^ \\>&&5_}H` ^^^**GT:a}Hb ZZ""L$7c}Hd __n,,fd;e}Hf 22FDAg}Hh ZZ""L$7i}Hj [[.$$lD9k}Hl ]]N((*d;m}Hn 00/4Ho}Hp ~..
DAq}Hr  @ @(DQs}Ht 00&$?u}Hv ~..=w}Hx ]]N((/4@y}Hz \\>&&$7{}H| 00'4@}}H~ 00'4@}H@ .<<hMA}HB nDDhPTUC}HD nDDhPTUE}HF nDDhPTUG}HH nDDhPTUI}HJ .<<hMK}HL .<<fdKM}HN .<<fdKO}HP 00'4@Q}HR ]]N((.$?S}HT ^^^**NDAU}HV ^^^**NDAW}HX __n,,h=Y}HZ __n,,h=[}H\ ^^^**It<]}H^ __n,,i>_}H` 22ItDa}Hb 22ItDc}Hd 00)TBe}Hf ^^^**Hd;g}Hh 00(DAi}Hj 00(DAk}Hl ~..$?m}Hn \\>&&
D9o}Hp ]]N((&$7q}Hr ~..$?s}Ht ~..$?u}Hv ~66	4Hw}Hx .<<j$Oy}Hz ^^^**Hd;{}H| ~66	=Q}}H~ .<<j}HB ~66	=QC}HD .<<jE}HH \\>..>I}HJ \\>..>K}HL \\>..>M}HN \\>&&d;O}HP ]]N((,=Q}HR ]]N((,=S}HT ^^^**GT:U}HV \\>&&6W}HX ]]N(('48Y}HZ ~66	4H[}H\ .<<j$O]}H^ ^^^**Hd;_}H` ~66	=Qa}Hb .<<jc}Hf ~66	=Qg}Hh .<<ji}Hl >66Fm}Hn [[.$$j$7o}Hp ^^^**Hd;q}Hr ~..>s}Ht ^^^**J=u}Hv ]]N((&$7w}Hx >668RTVy}H| >668RTV}}H@ >668RTVA}HD >668RTVE}HH ^^^22JEI}HJ \\>..
DAK}HL ]]N((&$7M}HN __n,,lDAO}HP ~..dCQ}HR ^^^**J=S}HT ]]N(('48U}HV ~..>W}HX __n,,gt<Y}HZ ^^^**GT:[}H\ ]]N((&$7]}H^ __n,,gt<_}H` N88(DIa}Hb \\>&&5c}Hd N88(DIe}Hf .44fdCg}Hh __n,,lDAi}Hj ]]N((,=k}Hl ZZ""FD1m}Hn ZZ""FD1o}Hp ZZ""L$7q}Hr ZZ""L$7s}Ht [[.$$lD9u}Hv ]]N((&$7w}Hx __n,,gt<y}HU8XuS#Xd
BCD }@ %%qt}}%	B r&c2(S 3 (Si	 Kz &s    Af?eAg