
    9i[S                     T   S SK Jr  S SK Jr  S SKrS SKrS SKJr  SSK	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJr  / SQ/ S	Q4r\\R<                  " \S
9S//-  rSS1rSS0r S r!\RD                  RG                  S\!" 5       5      S 5       r$\RD                  RG                  S\5      S 5       r%\RD                  RG                  S\5      S 5       r&\RD                  RG                  S\5      S 5       r'\RD                  RG                  S\5      S 5       r(S r)S r*S r+S r,S r-S  r.\RD                  RG                  S!/ S"Q5      \RD                  RG                  S#\5      S$ 5       5       r/\RD                  RG                  S#\5      S% 5       r0S& r1\RD                  RG                  S'\1" 5       5      S( 5       r2\RD                  Rg                  S5      S) 5       r4\RD                  RG                  S*\5      S+ 5       r5\RD                  Rm                  S,5      S- 5       r7S. r8g)/    N)assert_allclose)stats   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_edge_supportcheck_named_argscheck_random_state_propertycheck_picklingcheck_rvs_broadcastcheck_freezing)distdiscreteinvdistdiscrete)rv_discrete_frozen)r            )皙?皙?g333333?g?values zipfian
nhypergeomnbinom   c               #      #    [        5       n [         HY  u  pU[        ;   a1  [        R                  " XU[        R
                  R                  S9v   OXX;  4v   U R                  U5        M[     g 7f)N)marks)setr   distslowpytestparammarkslowadd)seendistnameargs      e/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basicr0      sW     5D%x,,xhfkk>N>NOO!555 &s   A/A1zdistname,arg,first_casec                    [        U [        5      (       a0  U R                  S5      (       a  US:  a  [        R                  " SS9   [        [        U 5      n[        R                  R                  S5      nUR                  " USUS.6n[        R                  " U5      nUR                  " U6 u  p[        XAXpS	-   5        [        XAU 5        [        XAXpS
-   5        [!        XA5        Sn
[#        XAXjU S-   5        U(       a  SnUR$                  UR&                  UR(                  UR*                  UR,                  /nSSSSS.nUR/                  U S5      n[1        XNXU5        U S:w  a  [3        U5        US:X  a  [5        XA5        U S;  a  [7        XA5        [9        XA5        [;        XAU 5        UR<                  R>                  [        R@                  R>                  :w  a  [C        XA[        R@                  5        g g g ! [         a    U nSn  GNf = f)Nnchypergeomr   z)nchypergeom has a global random generator)reasonsample distributioniP i  sizerandom_statez cdf_ppfz oth{Gz?z
 chisquare)r      r   r      )randint	hypergeom	bernoullinchypergeom_wallenius>   poisson_binom)"
isinstancestr
startswithr'   skipgetattrr   	TypeErrornprandomRandomStatervsuniquecheck_cdf_ppfcheck_pmf_cdf	check_othr   check_discrete_chisquarepmflogpmfcdflogcdflogsfgetr   check_scale_docstringr   r   r   r   	__class___entropyrv_discreter   )r-   r.   
first_casenum_parallel_threadsdistfnrngrI   suppmvalphalocscale_defaultsmethsspec_kks                  r/   test_discrete_basicre   &   s   8S!!h&9&9-&H&H$q(FG)) ))


(C
**c3
7C99S>D<<DA&t
%:;&x(f4F!23v#EV#%46  V]]FJJ  aa+,.JJx#CEB,,!&)1$'400v+v# 	f8,$$(9(9(B(BB!&u/@/@A C) #  )()s   G8 8H
	H
zdistname,argc           	          [        [        U 5      nUR                  " USS06u  p4pV[        X!U 5        [	        X!X4U 5        [        X!X05        [        X!X4U 5        [        X!X4XP5        [        R                  R                  5        nU S;   a  UR                  [        5        [        X!X4X`5        S S S 5        [        X!US5        [        X!XCU-  -   S5        g ! [         a    U nSn  Nf = f! , (       d  f       NB= f)Nr4   momentsmvsk)zipf
betanbinomr   r   )rD   r   rE   r   r   r   r	   r
   rF   testingsuppress_warningsfilterRuntimeWarningr   check_moment_frozen)r-   r.   r[   r^   r_   srd   sups           r/   test_momentsrr   W   s    )) s3F3JA!X. aH-f1/V!1f15		%	%	'3--JJ~&&qQ9 
( Q*QsUA.%  )() 
(	's   C )C)C&%C&)
C7zdist,shape_argsc           
         U S;   n [        [        U 5      n[
        R                  " S5      nUR                  n/ n/ nU S:X  aD  [
        R                  " SS5      nX4nS	n[        X0UXr[
        R                  " [        5      /5        g [        U5       HP  n	U	S
-   4SU	S-   -  -   n
X   nUR                  [
        R                  " X5      5        UR                  SU
S   5        MR     UR                  U5        UR                  UR                  5        [        X0XgU[
        R                  " [        5      /5        g ! [         a%    U nSU R                  < SU R                  < S3n  GNQf = f)N)	betabinomrj   skellam	yulesimondlaplacenchypergeom_fisherr>   r?   zrv_discrete(values=(z, z))r   r?   )r   r   
         ?)r   r   r   )r   r   r   )rD   r   rE   xkpkrF   zerosnumargsfullr   dtypeintrangeappendinsertr6   )dist
shape_args
shape_onlydistfunclocnargsallargsbshapeprd   shp	param_vals               r/   test_rvs_broadcastr   p   sS     D DJA5$' ((1+CEGFGGJ$(HG"#	A 5\1uhq1u%M	rwws./aQ 	 
 NN3
MM#(( bhhsm_7  A%dgg[477+R@As   D: :+E)(E)z	dist,argsc           
          [        [        U 5      n[        R                  R                  S5        [        R                  R                  SS5      S[        R                  R                  SS5      /nUR                  " U6 u  pEU HN  n[        R                  " US-
  U-   XV-   /UR                  " S/UQ7SU06UR                  " S	/UQ7SU06/5        MP     g ! [         a    U n Nf = f)
NM r   r   ry           r         ?)rD   r   rE   rF   rG   seedr;   supportnptassert_array_equalppf)r   argsr[   re_locs_a_br   s          r/   test_ppf_with_locr      s    % IINN7yy  b)1bii.?.?2.FGG^^T"FBT#XrvZZ,d,,fjj.Mt.M.MN	   s   C C'&C'z
dist, argsc                 R    [        [        U 5      n[        R                  R                  S5        [        R                  R                  SS5      S[        R                  R                  SS5      /nUR                  " U6 u  pEU HQ  nXV-   US-
  U-   4nUR                  " S/UQ7SU06UR                  " S	/UQ7SU064n[        R                  " Xx5        MS     [        R                  R                  SSS
S9[        R                  " S
5      [        R                  R                  SSS
S9/nUR                  " U6 u  pEU HQ  nXV-   US-
  U-   4nUR                  " S/UQ7SU06UR                  " S	/UQ7SU064n[        R                  " Xx5        MS     g ! [         a    U n GNf = f)Nr   r   r   r   r   ry   r   r   r   )   r   r6   )rD   r   rE   rF   rG   r   r;   r   isfr   r   r}   )	r   r   r[   r   r   r   r   expectedress	            r/   test_isf_with_locr      s   % IINN7yy  b)1bii.?.?2.FGG^^T"FB8R!Vc\)jj,d,,fjj.Ld.L.LLx- 
 yy  bv 6xxyy  BV 46G ^^T"FB8R!Vc\)jj,d,,fjj.Ld.L.LLx-   s   F F&%F&c                 `   U R                   " U/UQ76 n[        R                  U R                  S5      nXE[        R
                  " U5      -  -
  n[        R                  " U R                  " U/UQ76 X#S-   5        [        R                  " U R                  " U R                   " U/UQ76 S-
  /UQ76 X#S-   5        [        U S5      (       de  U R                  " U6 u  pxX"U:     n	[        R                  " U R                  " U R                   " U	/UQ76 S-   /UQ76 XR                  -   US-   5        g g )N   z
-roundtrip:0yE>r{   z ppf-cdf-next)rQ   roundtrip_cdf_ppf_exceptionsrT   namerF   spacingr   r   r   hasattrr   inc)
r[   r.   r]   msgcdf_suppn_ulps	cdf_supp0r   r   supp1s
             r/   rK   rK      s    zz$%%H *--fkk2>F"**X"666I6::i6#6|!35 6::fjj&<&<t&CJcJ|!35 64  %BYvzz&**U*AS*AD*HO3O$zz133H	J !    c           	      0   [        U S5      (       a  U R                  nO6[        U R                  " S/UQ76 S-
  5      n[	        [        XDS-   5      5      nU R                  " U/UQ76 nU R                  " U/UQ76 R                  5       nSu  pxUS:X  a  Su  px[        R                  " XUS   -
  XfS   -
  XxS	9  [        R                  " U5      n	U	S S
 [        R                  " U	5      S-  -   n
[        R                  " U R                  " U
/UQ76 S5        SnU " USU06n[        R                  " UR                  U	SS  U-   5      [        R                  " UR                  X-   5      5      5        [        R                  " UR                  X-   5      S5        g )Nr{   r8   r   ry   )绽|=r   ru   )h㈵>r   r   atolrtolr   r   rz   r   )r   r{   r   r   listr   rQ   rO   cumsumr   r   rF   asarraydiffassert_equal)r[   r.   r-   indexstartindcdfspmfs_cumr   r   rd   	k_shiftedr   r   s                r/   rL   rL      sa   vt		vzz$--12U8]34::e"c"Dzz%&#&--/HJD9
AwA;(>!. 	

5A#2A%IVZZ	0C0!4 CC c D12-rwwtxx7H/IJTXXio.2r   c                 V    [         R                  " U " U6 R                  U5      USSS9  g )Nr   r   )r   r   moment)r[   r.   r^   rd   s       r/   ro   ro      s(    ++A."0r   c                    [         R                  " U R                  " U/UQ76 SU R                  " U/UQ76 -
  SSS9  [        R
                  " SSS5      n[         R                  " U R                  " U/UQ76 U R                  " SU-
  /UQ76 SSS9  U R                  " S/UQ76 n[         R                  " U R                  " US-
  /UQ76 S:  5        [         R                  " U R                  " US-   /UQ76 S:  5        g )	Nr   r   r   r8   Gz?   rz   r   )	r   r   sfrQ   rF   linspacer   r   assert_)r[   r.   r]   r   q	median_sfs         r/   rM   rM     s    		$--rFJJt4Jc4J/J"0 	D$#A

1+s+VZZQ-E-E"0 

3%%IKK		)a-.#.45KK

9q=/3/#56r   c                 6   SnU R                   " U6 u  pg[        [        US5      5      n[        [        US5      5      S-   n	[	        X5      n
SnU/n/ nU
 HT  nU R
                  " U/UQ76 nX-
  US-
  :  d  M#  UR                  U5        UR                  X-
  5        UnUSU-
  :  d  MT    O   US   U:  a%  UR                  U5        UR                  SU-
  5        [        R                  " U5      n[        R                  " U5      nUS-   nUUS'   [        R                  " UU5      u  nn[        R                  " [        R                  " U5      [        U5      U-  5      u  nn[        R                  " UU:  S	U S
[        U5       S[        U5       35        g)a?  Perform chisquare test for random sample of a discrete distribution

Parameters
----------
distname : string
    name of distribution function
arg : sequence
    parameters of distribution
alpha : float
    significance level, threshold for p-value

Returns
-------
result : bool
    0 if test passes, 1 if test fails

g?ii  r   r   g+=r   r   zchisquare - test for z
 at arg = z with pval = N)r   r   maxminr   rQ   r   rF   array	histogramr   	chisquarelenr   r   rA   )r[   r.   rI   r`   r   wsuppr   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvals                        r/   rN   rN     sy   $ E ^^S!FB	SU^	Bs2t}!D/KDtHH**R&#&>UU]*OOBOOGN+D!e)$  |bD!xx!Hxx!H $HHQK ,,sH-KD%$S(1BCJD$KKu
uJs3xjc$i[Qr   c                 f    U R                   b$  [        R                  " SU R                   ;  5        g g )Nscale)__doc__r   r   )r[   s    r/   rU   rU   L  s&    ~~!G6>>12 "r   method)rO   rP   rQ   rR   r   rS   r   r   zdistname, argsc           	      D    [        [        U5      n[        X05      nU S;   a  SS/nOSS/nU Vs/ s H  of/S-  PM
     nnSS/nU" U/UQ7SU06n	[        R                  " U	[        U/UQUP76  V
s/ s H  o" U
6 PM	     sn
SSS	9  g ! [         a     g f = fs  snf s  sn
f )
N)r   r   r   r   r   r   r   r   V瞯<)r   r   )rD   r   rE   r   r   zip)r   r-   r   r   dist_methodzr   p2r   resultr_   s              r/   test_methods_with_listsr   R  s    uh' $'K#JF	A#a%B	a&C)R)S)F25a2B"2Bc2BC2BQa2BC"0   
 Ds   B B2B

BBc                     [        [        U 5      n[        R                  " SS5      nUR                  " U/UQ76 n[        R
                  n[        R                  " XE5        g )Nr   )rD   r   rF   arangerQ   nanr   r   )r-   r   r   xvalsr   s         r/   test_cdf_gh13280_regressionr   i  sJ     5(#D
		"bA88ADvvHT$r   c               #     #    S1S1S.n [        5       n[         H  u  p#X!;   a  M  UR                  U5         [        [        U5      nUR                  5       n[        U5       HP  u  pgUR                  U R                  U[        5       5      ;   d  UR                  (       d  M@  X'R                  U4v   MR     M     g ! [
         a     M  f = f7f)Nn)r!   rj   )r%   r   r+   rD   r   rE   _shape_info	enumerater   rT   integrality)integrality_exceptionsr,   r-   shapesr   
shape_infoishapes           r/   "cases_test_discrete_integer_shapesr  s  s      *-cUC5D(	5(+D %%'
!*-HA

48835II))JJ.. . )  		s)   5CB<A4C<
C
C	C

Czdistname, shapename, shapesc                    [        [        U 5      nUR                  5       nU Vs/ s H  oUR                  PM     nnUR	                  U5      n[        U5      nX'   n	U	S-
  n
U	S-
  nU	/U
/U//X'   UR                  " U6 u  p[        R                  " [        R                  " XS5      5      nUR                  " U/UQ76 n[        R                  " [        R                  " USS S 24   5      5      (       a   e[        R                  " [        R                  " USS S 24   5      5      (       d   e[        R                  " [        R                  " USS S 24   5      5      (       a   eg s  snf )Nrz   r   r   r   r   )rD   r   r   r   r   r   r   rF   roundr   rO   anyisnanall)r-   	shapenamer   r   r   r  shape_namesr   shapes_copyvalid_shapeinvalid_shapenew_valid_shapeabr   rO   s                   r/   test_integer_shapesr    s2    5(#D!!#J+56:%:::K6)$Av,K)K#%M!AoO"mm_6GHKN<< DA
Q1%&A
((1
#{
#Cvvbhhs1a4y)****66"((3q!t9%&&&&vvbhhs1a4y)*****! 7s   E(c                     Sn [         R                  " [        U S9   [        R                  " SS5      R
                    S S S 5        [         R                  " [        U S9   [        R                  " SS5      R                    S S S 5        S[        R                  l        [        R                  " SS5      n[        U[        5      (       d   e[        [        R                  S5        g ! , (       d  f       N= f! , (       d  f       N}= f)Nz,'rv_discrete_frozen' object has no attribute)matchry   rz   herringpdf)
r'   raisesAttributeErrorr   binomr  logpdfr@   r   delattr)messagefrozen_binoms     r/   test_frozen_attributesr    s     =G	~W	5B   
6	~W	5B## 
6EKKO;;r3'Ll$67777EKK 
6	5	5	5s   "C'"C8'
C58
Dzdistname, shapesc                    [        U [        5      (       a  [        [        U 5      nOU nUR                  " U6 u  p4[
        R                  " UR                  " SS//UQ76 US-
  U45        [
        R                  " UR                  " SS//UQ76 US-
  U45        [
        R                  " UR                  " S/UQ76 US-
  U45        g )Nr   r   )
r@   rA   rD   r   r   r   r   r   r   interval)r-   r   r   r  r  s        r/   test_intervalr    s     (C  uh'<< DATXXq!f.v.1a9TXXq!f.v.1a9T]]1.v.1a9r   zSensible to machine precisionc            	        ^ [         R                  R                  S5      n [         R                  " U R                  S5      S-  5      nU R                  S5      nU[         R                  " U5      -  n[
        R                  " X4S9m[         R                  " S/US S R                  5       -   5      U-   S-  n[         R                  " USS  R                  5       US   S-   /-   5      U-   S-  n[         R                  " U5      n[         R                  " S/US S R                  5       -   5      U-   S-  n[         R                  " USS  R                  5       S/-   5      U-   S-  nTR                  5       u  p[        XS   5        [        XS   5        [        TR                  U5      U5        [        TR                  U5      S5        [        TR                  U5      S5        [         R                  " SS	9   [        TR                  U5      [         R                  " U5      5        [        TR                  U5      [         R                   * 5        [        TR                  U5      [         R                   * 5        S S S 5        [        TR#                  U5      U5        [        TR#                  U5      U5        [        TR#                  U5      S/US S R                  5       -   5        [         R                  " SS	9   [        TR%                  U5      [         R                  " TR#                  U5      5      S
S9  [        TR%                  U5      [         R                  " TR#                  U5      5      S
S9  [        TR%                  U5      [         R                  " TR#                  U5      5      S
S9  S S S 5        [        TR'                  U5      STR#                  U5      -
  5        [        TR'                  U5      STR#                  U5      -
  5        [        TR'                  U5      STR#                  U5      -
  5        [         R                  " SS	9   [        TR)                  U5      [         R                  " TR'                  U5      5      S
S9  [        TR)                  U5      [         R                  " TR'                  U5      5      S
S9  [        TR)                  U5      [         R                  " TR'                  U5      5      S
S9  S S S 5        [        TR+                  U5      U5        [        TR+                  U5      U5        [        TR+                  U5      S S USS  5        [        TR+                  S5      US-
  5        [        TR+                  S5      U	5        TR'                  U5      n
[        TR-                  U
5      U5        [        TR-                  SU-
  5      TR+                  U5      5        [        TR-                  SU-
  5      TR+                  U5      5        [        TR-                  S5      U	5        [        TR-                  S5      US-
  5        [         R.                  " SSS5      nTR+                  US-  5      TR-                  US-  5      4n[        TR1                  SU-
  5      U5        [        TR1                  S5      TR3                  5       5        [        TR1                  S5      US-
  U	45        TR+                  S5      n[        TR3                  5       U5        [         R                  " X-  5      n[         R                  " X-
  S-  U-  5      n[         R                  " X-
  S-  U-  5      US-  -  n[         R                  " X-
  S-  U-  5      US-  -  S-
  n[        TR5                  5       U5        [        TR7                  5       [         R8                  " U5      5        [        TR;                  5       U5        [        TR                  SS9XUU45        [         R                  " US-  U-  5      n[        TR=                  S5      U5        [        TR?                  S 5      S5        [        TR?                  5       U5        [        TR?                  S 5      U5        [         R                  " SS	9   [        TR?                  U4S j5      * TRA                  5       5        S S S 5        [         R                  R                  S5      n TRC                  SU S9n[         R                  R                  S5      n TR+                  U R                  SS95      n[        UU5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f)Nl   KU[ ry   r   r   r   r   r   ignore)divider   )r   r8   r   rz   r   g      ?r   rh   )rg   c                     g)Nr   r   r   s    r/   <lambda> test_rv_sample.<locals>.<lambda>+  s    !r   c                     U S-  $ )Nr   r   r$  s    r/   r%  r&  -  s    !Q$r   c                 &   > TR                  U 5      $ )N)rP   )r   r   s    r/   r%  r&  1  s    t{{1~r   d   r5   r   )"rF   rG   default_rngsortsumr   rX   r   tolistr   r   r   rO   errstaterP   loginfrQ   rR   r   rS   r   r   r   r  medianmeanstdsqrtvarr   expectentropyrI   )r\   r{   r|   xk_leftxk_rightcdf2	cdf2_left
cdf2_rightr  r  sf2psint2med2mean2var2skew2kurt2mom3rI   rvs0r   s                        @r/   test_rv_samplerG    s1   
 ))


,C	B"$	%B	BB"&&*BRH-D xxb"gnn../"4a7GABBrF1H:56;Q>H 99R=D1#Sb	 0 0 223d:A=I((48??,s23d:A=J <<>DAA!uA"v DHHRL"%DHHX&*DHHW%q) 
H	%B4H-w7G,rvvg6 
& DHHRL$'DHHX&-DHHW%s49+;+;+='=>	H	%B)="	$H-rvvdhhx6H/I"	$G,bffTXXg5F.G"	$ 
& DGGBK488B<0DGGH%q();';<DGGG$a(9&9:	H	%

2twwr{(;"	$

8,bffTWWX5F.G"	$

7+RVVDGGG4D-E"	$ 
& DHHTNB'DHHY',DHHZ("-r!"v6DHHQKQ'DHHQK# ''"+CDHHSM2&DHHQy[)488I+>?DHHQz\*DHHZ,@ADHHQK#DHHQKQ' 
T4	$B88BqD>488BqD>)DDMM!B$'.DMM!$dkkm4DMM!$qsAh/ 88C=DDKKM4( FF25ME662:/B&'DFFBJ?R'(4#;6EFFBJ?R'(472Q6EDIIK'DHHJ.DHHJ%DJJvJ.eU0KL 662q5B,DDKKND) DKK,a0DKKM5)DKK/6 
H	%%=>>O 
& ))


,C
((#(
.C
))


,C88CJJCJ()DCk 
&	% 
&	% 
&	%l 
&	%s3   ;Bf	B8fB8f-/f?	
f
f*-
f<?
gc                       " S S[         R                  5      n U " S[        S5      S9nUR                  SS9n[	        US5        g )	Nc                       \ rS rSrS rSrg)-test__pmf_float_input.<locals>.rv_exponentiali>  c                     SSSU-
  -  -  $ )NgUUUUUU?r   r   r   )selfr   s     r/   _pmf2test__pmf_float_input.<locals>.rv_exponential._pmf?  s    QU##r   r   N)__name__
__module____qualname____firstlineno__rM  __static_attributes__r   r   r/   rv_exponentialrJ  >  s    	$r   rT  r   r0  )r  r  *   )r7   r   )r   rX   floatrI   r   )rT  rvrI   s      r/   test__pmf_float_inputrX  :  s@    $** $ 
#u	.B
&&b&
!CCr   )9numpy.testingrk   r   r   numpyrF   r'   scipyr   common_testsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   scipy.stats._distr_paramsr   r   !scipy.stats._distn_infrastructurer   r   rX   r&   r   r0   r)   parametrizere   rr   r   r   r   rK   rL   ro   rM   rN   rU   r   r   r  r  parallel_threadsr  r  xfail_on_32bitrG  rX  r   r   r/   <module>rb     sm    )   , , , , D @*+ %##40"56 6 |$ !)"~  24M4OP-B Q-B` 6/ 7/0 *L9- :-` l3 4  |4. 5.0J4360
76r3  $A B)<80 9B0( )?;% <%/4 6;=?+?+, a   !  +\:: ;: ;<s =sj
r   