
    xfH              
      43   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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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                  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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Z"d3e#d4<   e"D cg c]  }|d    jH                   c}Z%d5 Z&d6 Z'ejP                  jS                  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     I/usr/lib/python3/dist-packages/scipy/special/tests/test_cython_special.py	<genexpr>z(_generate_test_points.<locals>.<genexpr>&  s     3AQ3s   )tuplelistr   )	typecodesaxesptss      r7   _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
startswithr0   RuntimeError)namefuncrA   cyfuns       r7   test_cython_api_completenessrJ   +  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>>  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   7  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
betaincinv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 
								
  
								
tH[[.$$gt4tH\\>..
DAtH ]]N00*dCtH \\>&&=	tH
 ]]N((.$?tH ]]N((.$?tH ^^^**Hd;tH ^^^**Hd;tH [[.$$fd3tH \\>&&5tH [[.$$fd3tH \\>&&5tH 22HdCtH \\>&&6tH __n,,h=tH  22HdC!tH" ^^^**GT:#tH$ ]]N(('48%tH& ^^^**GT:'tH( ~..>)tH* ]]N(((D9+tH, ^^^**Hd;-tH. __n,,h=/tH0 __n,,h=1tH2 \\>&&53tH4 ]]N(('485tH6 ^^^**GT:7tH8 ^^^**GT:9tH: __n,,gt<;tH< ^^^**Hd;=tH> 00(DA?tH@ 00(DAAtHB ~..$?CtHD ]]N((&$7EtHF ]]N((&$7GtHH ]]N((&$7ItHJ ]]N((*d;KtHL ^^^**FD9MtHN 00'4@OtHP ^^^22GTBQtHR 00'4@StHT ~..=UtHV ^^^**FD9WtHX __n,,lDAYtHZ __n,,ndC[tH\ __n,,ndC]tH^ __n,,ndC_tH` __n,,.>EatHb \\>&&5ctHd [[.$$j$7etHf \\>&&
D9gtHh ]]N((*d;itHj \\>&&
D9ktHl ^^^**FD9mtHn __n,,fd;otHp .446H$OqtHr .446H&(stHv .446H&(wtHz .446H&({tH~ n<<>S&(tHB ~>>@U&(CtHF >66FGtHH ~>>NItHJ .446N&(KtHN N88:L&(OtHR N88:LdSStHT ^::<NPTUUtHV ^::<N&(WtHZ ^::<T&([tH^ ~>>@RTXY_tH` \\>&&
D9atHb ]]N((&$7ctHd \\>&&5etHf \\>&&
D9gtHh ]]N((/4@itHj ]]N((*d;ktHl \\>&&d;mtHn ^^^**FD9otHp \\>&&$7qtHr ]]N(((D9stHt ]]N(((D9utHv ~..$?wtHx __n44j$GytHz ]]N((*d;{tH| ~..>}tH~ 00'4@tH@ >66FAtHB .44gtDCtHD __n,,fd;EtHF ~..=GtHH \\>&&$7ItHJ ]]N(((D9KtHL ^^^**Hd;MtHN ^^^**Hd;OtHP ^^^**Hd;QtHR __n,,gt<StHT ~..>UtHV __n,,gt<WtHX ~..>YtHZ ]]N(('48[tH\ ^^^**L$?]tH^ ^^^**NDA_tH` ^^^**,<dCatHb ^^^**Hd;ctHd ZZ""FD1etHf [[.$$fd3gtHh ZZ""FD1itHj [[.$$fd3ktHl 22GTBmtHn >66FotHp __n44fdCqtHr __n44fdCstHt 22FDAutHv ^^^22FDAwtHx ^^^22FDAytHz ^^^22FDA{tH| >66E}tH~ 00&$?tH@ ZZ""L$7AtHB [[.$$lD9CtHD ZZ""FD1EtHF ZZ""FD1GtHH ZZ""L$7ItHJ [[.$$lD9KtHL ZZ""FD1MtHN [[.$$fd3OtHP ZZ""FD1QtHR [[.$$fd3StHT [[.$$fd3UtHV \\>&&5WtHX ^^^22FDAYtHZ [[.$$fd3[tH\ \\>&&5]tH^ ^^^**GT:_tH` ZZ""L$7atHb __n,,fd;ctHd 22FDAetHf ZZ""L$7gtHh [[.$$lD9itHj ]]N((*d;ktHl 00/4HmtHn ~..
DAotHp 00&$?qtHr ~..=stHt ]]N((/4@utHv \\>&&$7wtHx 00'4@ytHz 00'4@{tH| .<<hM}tH~ nDDhPTUtH@ nDDhPTUAtHB nDDhPTUCtHD nDDhPTUEtHF .<<hMGtHH .<<fdKItHJ .<<fdKKtHL 00'4@MtHN ]]N((.$?OtHP ^^^**NDAQtHR ^^^**NDAStHT __n,,h=UtHV __n,,h=WtHX ^^^**It<YtHZ __n,,i>[tH\ 22ItD]tH^ 22ItD_tH` 00)TBatHb ^^^**Hd;ctHd 00(DAetHf 00(DAgtHh ~..$?itHj \\>&&
D9ktHl ]]N((&$7mtHn ~..$?otHp ~..$?qtHr ~66	4HstHt .<<j$OutHv ^^^**Hd;wtHx ~66	=QytHz .<<j-X{tH| ~66	=Q}tH~ .<<j-XtH@ \\>..>AtHB \\>..>CtHD \\>..>EtHF \\>&&d;GtHH ]]N((,=ItHJ ]]N((,=KtHL ^^^**GT:MtHN \\>&&6OtHP ]]N(('48QtHR ~66	4HStHT .<<j$OUtHV ^^^**Hd;WtHX ~66	=QYtHZ .<<j-X[tH\ ~66	=Q]tH^ .<<j-X_tH` >66FatHb [[.$$j$7ctHd ^^^**Hd;etHf ~..>gtHh ^^^**J=itHj ]]N((&$7ktHl >668RTXYmtHn >668RTXYotHp >668RTXYqtHr >668RTXYstHt ^^^22JEutHv \\>..
DAwtHx ]]N((&$7ytHz __n,,lDA{tH| ~..dC}tH~ ^^^**J=tH@ ~..0@$GAtHB ]]N(('48CtHD ~..>EtHF __n,,gt<GtHH ^^^**GT:ItHJ ]]N((&$7KtHL __n,,gt<MtHN N88(DIOtHP \\>&&5QtHR N88(DIStHT .44fdCUtHV __n,,lDAWtHX ]]N((,=YtHZ ZZ""FD1[tH\ ZZ""FD1]tH^ ZZ""L$7_tH` ZZ""L$7atHb [[.$$lD9ctHd ]]N((&$7etHf __n,,gt<gtHD tn %%qt}}%	B &c2(S 3(SU	 Kh &s   AfeAf