
    S_fI              
      3   U d dl mZ 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 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j0                  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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j                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d dfej                  ej                  d d!fej                  ej                  d d!fej                  ej                  d d!fej                  ej                  d"d!fej                  ej                  d"d!fej                  ej                  d#dfej                  ej                  d#dfej                  ej                  d$d!fej                  ej                  d d!fej                  ej                  d dfej                  ej                  d dfej                  ej                  d d!fej                  ej                  d$d!fej                  ej                  d dfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d%dfej                  ej                  ddfej                  ej                  d&dfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d'dfej                  ej                  d'dfej                  ej                  d'dfej                  ej                  d'dfej                  ej                  ddfej                  ej                  d(dfej                   ej                   d)dfej                  ej                  d*dfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej
                  ej
                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                   ej"                  ddfej$                  ej&                  ddfej(                  ej(                  d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j@                  ej@                  ddfejB                  ejB                  ddfejD                  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jl                  ddfejn                  ejp                  ddfejr                  ejt                  ddfejv                  ejx                  ddfejz                  ej|                  ddfej~                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d,dfej                  ej                  d,dfej                  ej                  d,dfej                  ej                  ddfej                  ej                  ddfej                  ej                  d-dfej                  ej                  d-dfej                  ej                  d-dfej                  ej                  d-dfej                  ej                  d-dfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d-dfej                  ej                  d.dfej                  ej                  ddfej                  ej                  d-d/fej                  ej                  d.d/fej                  ej                  d-d/fej                  ej                  d.d/fe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                  d-dfej                  ej                  d.dfej                  ej                  ddfej                  ej                  d-d/fej                  ej                  d.d/fej                  ej                  d-d/fej                  ej                  d.d/fej                  ej                  ddfej                  ej                  ddfej                   ej                   ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d1dfej
                  ej
                  d1dfej                  ej                  d1dfej                  ej                  d1dfej                  ej                  ddfej                  ej                  ddfej                  ej                  ddfej                  ej                  d&dfej                  ej                  d&dfej                  ej                  dd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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Z$d3e%d4<   e$D cg c]  }|d    jL                   c}Z'd5 Z(d6 Z)ejT                  jW                  d7e$e'8      d9        Z,yc c} w c c}w ):    )annotations)CallableN)product)assert_allclosesuppress_warnings)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lDb)llddr"   z<list[tuple[Callable, Callable, tuple[str, ...], str | None]]PARAMSc                L    t        d | D              }t        t        |       }|S )Nc              3  .   K   | ]  }t         |     y wN)TEST_POINTS).0xs     Glib/python3.12/site-packages/scipy/special/tests/test_cython_special.py	<genexpr>z(_generate_test_points.<locals>.<genexpr>1  s     3AQ3s   )tuplelistr   )	typecodesaxesptss      r7   _generate_test_pointsr>   0  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
startswithr0   RuntimeError)namefuncrA   cyfuns       r7   test_cython_api_completenessrJ   6  sn    N# B~t,D>$//#"6"( B5!QD=B #dV+?#@AABr?   param)idsc                <   | \  }}}}|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 ]J  }t               5 }|j                  t                || } || }d d d        t        | d| d|        L  y c c}w c c}}	w # 1 sw Y   /xY w)N)reasonc              3  2   K   | ]  }t        |        y wr3   )len)r5   specs     r7   r8   z"test_cython_api.<locals>.<genexpr>I  s     ;4SY;s   Fr    )err_msg)pytestxfailmaxrangeset	enumerateaddrP   r9   sortedCYTHON_SIGNATURE_MAPr>   r   filterDeprecationWarningr   )rK   pyfunccyfuncspecializationsknownfailure
max_paramsrA   valuesr;   jvseenis_fused_codevvcode	signaturecy_spec_funcr=   ptsuppyvalcyvals                         r7   test_cython_apirq   B  s   49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"$ *

-.$b)* E5RD)Ai[2QR	SS 0 ** *s   F:F FF(-  
__future__r   typingr   rT   	itertoolsr   numpy.testingr   r   scipyr   scipy.specialr	   bint_points
int_pointsreal_pointscomplexcomplex_pointsr\   r4   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btdtrbtdtri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	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_tr0   __annotations____name__IDSr>   rJ   markparametrizerq   )tupr6   s   00r7   <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(((D9/H0 ^^^**Hd;1H2 __n,,h=3H4 __n,,h=5H6 \\>&&57H8 ]]N(('489H: ^^^**GT:;H< ^^^**GT:=H> __n,,gt<?H@ ^^^**Hd;AHB 00(DACHD 00(DAEHF ~..$?GHH ]]N((&$7IHJ ]]N((&$7KHL ]]N((&$7MHN ]]N((*d;OHP ^^^**FD9QHR 00'4@SHT ^^^22GTBUHV 00'4@WHX ~..=YHZ ^^^**FD9[H\ __n,,lDA]H^ __n,,ndC_H` __n,,ndCaHb __n,,ndCcHd __n,,.>EeHf \\>&&5gHh [[.$$j$7iHj \\>&&
D9kHl ]]N((*d;mHn \\>&&
D9oHp ^^^**FD9qHr __n,,fd;sHt .446H$OuHv .446H&(wHz .446H&({H~ .446H&(HB n<<>S&(CHF ~>>@U&(GHJ >66FKHL ~>>NMHN .446N&(OHR N88:L&(SHV N88:LdSWHX ^::<NPTUYHZ ^::<N&([H^ ^::<T&(_Hb ~>>@R	cHf \\>&&
D9gHh ]]N((&$7iHj \\>&&5kHl \\>&&
D9mHn ]]N((/4@oHp ]]N((*d;qHr \\>&&d;sHt ^^^**FD9uHv \\>&&$7wHx ]]N(((D9yHz ]]N(((D9{H| ~..$?}H~ __n44j$GH@ ]]N((*d;AHB ~..>CHD 00'4@EHF >66FGHH .44gtDIHJ __n,,fd;KHL ~..=MHN \\>&&$7OHP ]]N(((D9QHR ^^^**Hd;SHT ^^^**Hd;UHV ^^^**Hd;WHX __n,,gt<YHZ ~..>[H\ __n,,gt<]H^ ~..>_H` ]]N(('48aHb ^^^**L$?cHd ^^^**NDAeHf ^^^**,<dCgHh ^^^**Hd;iHj ZZ""FD1kHl [[.$$fd3mHn ZZ""FD1oHp [[.$$fd3qHr 22GTBsHt >66FuHv __n44fdCwHx __n44fdCyHz 22FDA{H| ^^^22FDA}H~ ^^^22FDAH@ ^^^22FDAAHB >66ECHD 00&$?EHF ZZ""L$7GHH [[.$$lD9IHJ ZZ""FD1KHL ZZ""FD1MHN ZZ""L$7OHP [[.$$lD9QHR ZZ""FD1SHT [[.$$fd3UHV ZZ""FD1WHX [[.$$fd3YHZ [[.$$fd3[H\ \\>&&5]H^ ^^^22FDA_H` [[.$$fd3aHb \\>&&5cHd ^^^**GT:eHf ZZ""L$7gHh __n,,fd;iHj 22FDAkHl ZZ""L$7mHn [[.$$lD9oHp ]]N((*d;qHr 00/4HsHt ~..
DAuHv 00&$?wHx ~..=yHz ]]N((/4@{H| \\>&&$7}H~ 00'4@H@ 00'4@AHB .<<hMCHD nDDhPTUEHF nDDhPTUGHH nDDhPTUIHJ nDDhPTUKHL .<<hMMHN .<<fdKOHP .<<fdKQHR 00'4@SHT ]]N((.$?UHV ^^^**NDAWHX ^^^**NDAYHZ __n,,h=[H\ __n,,h=]H^ ^^^**It<_H` __n,,i>aHb 22ItDcHd 22ItDeHf 00)TBgHh ^^^**Hd;iHj 00(DAkHl 00(DAmHn ~..$?oHp \\>&&
D9qHr ]]N((&$7sHt ~..$?uHv ~..$?wHx ~66	4HyHz .<<j$O{H| ^^^**Hd;}H~ ~66	=QH@ .<<jAHD ~66	=QEHF .<<jGHJ \\>..>KHL \\>..>MHN \\>..>OHP \\>&&d;QHR ]]N((,=SHT ]]N((,=UHV ^^^**GT:WHX \\>&&6YHZ ]]N(('48[H\ ~66	4H]H^ .<<j$O_H` ^^^**Hd;aHb ~66	=QcHd .<<jeHh ~66	=QiHj .<<jkHn >66FoHp [[.$$j$7qHr ^^^**Hd;sHt ~..>uHv ^^^**J=wHx ]]N((&$7yHz >668R	{H~ >668R	HB >668R	CHF >668R	GHJ ^^^22JEKHL \\>..
DAMHN ]]N((&$7OHP __n,,lDAQHR ~..dCSHT ^^^**J=UHV ~..0@$GWHX ]]N(('48YHZ ~..>[H\ __n,,gt<]H^ ^^^**GT:_H` ]]N((&$7aHb __n,,gt<cHd N88(DIeHf \\>&&5gHh N88(DIiHj .44fdCkHl __n,,lDAmHn ]]N((,=oHp ZZ""FD1qHr ZZ""FD1sHt ZZ""L$7uHv ZZ""L$7wHx [[.$$lD9yHz ]]N((&$7{H| __n,,gt<}HD D %%qt}}%	B &c2(S 3(Sk	 K~ &s   Age;Ag