
    Џkh[S                     Z   d dl mZ d dl mZ d dlZd dlZd dlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ g dg d	fZe ej<                  e
      dggz  ZddhZddiZ d Z!ejD                  jG                  d e!             d        Z$ejD                  jG                  de      d        Z%ejD                  jG                  de      d        Z&ejD                  jG                  de      d        Z'ejD                  jG                  de      d        Z(d Z)d Z*d Z+d Z,d Z-d  Z.ejD                  jG                  d!g d"      ejD                  jG                  d#e      d$               Z/ejD                  jG                  d#e      d%        Z0d& Z1ejD                  jG                  d' e1             d(        Z2ejD                  jg                  d      d)        Z4ejD                  jG                  d*e      d+        Z5ejD                  jm                  d,      d-        Z7d. Z8y)/    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               #      K   t               } t        D ][  \  }}|t        v r4t        j                  |||t        j
                  j                         n	|||| vf | j                  |       ] y w)N)marks)setr   distslowpytestparammarkslowadd)seendistnameargs      a/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basicr0      se     5D% #x,,xhfkk>N>NOOC!555s   A0A2zdistname,arg,first_casec                    t        | t              r,| j                  d      r|dkD  rt        j                  d       	 t        t        |       }t        j                  j                  d      } |j                  |d|d}t        j                  |      } |j                  | \  }}	t        |||| d	z          t        |||        t        |||| d
z          t!        ||       d}
t#        ||||
| dz          |rd}|j$                  |j&                  |j(                  |j*                  |j,                  g}ddddd}|j/                  | d      }t1        |||||       | dk7  rt3        |       |dk(  rt5        ||       | dvrt7        ||       t9        ||       t;        |||        |j<                  j>                  t        j@                  j>                  k7  rtC        ||t        j@                         y y y # t        $ r | }d} Y w xY w)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$q(FG)) ))


(C
&**c3
7C99S>D6<<DAq&#tX
%:;&#x(fc4F!23vs#EVS#u%46  V]]FJJ  aa+,.JJx#C):EB,,!&)1$'400vs+vs# 	fc8,$$(9(9(B(BB!&#u/@/@A C) #  )()s   G4 4HHzdistname,argc           	         	 t        t        |       } |j                  |ddi\  }}}}t        |||        t	        |||||        t        ||||        t        |||||        t        ||||||        t        j                  j                         5 }| dv r|j                  t               t        ||||||        d d d        t        |||d       t        |||||z  z   d       y # t        $ r | }d} Y w xY w# 1 sw Y   ?xY w)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3JAq!QX. aH-fc1h/VS!Q1fc1aH5		%	%	' :3--JJ~&&#q!Q9: Q*QqsUA.%  )(): :s   C% *C8%C54C58Dzdist,shape_argsc           
         | dv }	 t        t        |       }t        j                  d      }|j                  }g }g }| dk(  rEt        j                  dd      }||f}d	}t        || |||t        j                  t              g       y t        |      D ]P  }	|	d
z   fd|	dz   z  z   }
||	   }|j                  t        j                  |
|             |j                  d|
d          R |j                  |       |j                  |j                         t        || |||t        j                  t              g       y # t        $ r# | }d| j                  d| j                  d} Y Mw xY w)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   sf     D DJA5$' ((1+CEGFGGJ$c(HdG"J#	A 5\ !1uhq1u%qM	rwwsI./aQ 	!
 NN3
MM#(( $bhhsm_7  A%dgg[477+R@As   D8 8(E$#E$z	dist,argsc           
         	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]M  }t        j                  |dz
  |z   ||z   g |j                  dg|d|i |j                  d	g|d|ig       O y # t        $ r | }Y w xY w)
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V^^T"FB T#Xr#vVZZ,d,,jfjj.Mt.M.MN	  s   C C%$C%z
dist, argsc                 Z   	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S t        j                  j                  ddd
      t        j                  d
      t        j                  j                  ddd
      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S y # t        $ r | }Y w xY w)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V^^T"FB .8R!Vc\)fjj,d,,jfjj.Ld.L.LLx-.
 yy  bv 6xxyy  BV 46G V^^T"FB .8R!Vc\)fjj,d,,jfjj.Ld.L.LLx-.  s   F F*)F*c                 Z    | j                   |g| }t        j                  | j                  d      }||t	        j
                  |      z  z
  }t        j                   | j                  |g| ||dz          t        j                   | j                   | j                   |g| dz
  g| ||dz          t        | d      sg | j                  | \  }}|||k     }	t        j                   | j                   | j                   |	g| dz   g| |	| j                  z   |dz          y y )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/    vzz$%%H *--fkk2>F6"**X"666I:6::i6#6|!35 :6::jfjj&<&<t&CJcJ|!35 64 %BTBYzvzz*&**U*AS*AD*HO3O$vzz133H	J !    c           	      ,   t        | d      r| j                  }n7t         | j                  dg| dz
        }t	        t        ||dz               } | j                  |g| } | j                  |g| j                         }d\  }}|dk(  rd\  }}t        j                  ||d   z
  ||d   z
  ||	       t        j                  |      }	|	d d
 t        j                  |	      dz  z   }
t        j                   | j                  |
g| d       d} | |d|i}t        j                  |j                  |	dd  |z         t        j                  |j                  |	|z                      t        j                  |j                  |
|z         d       y )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      sv   vt		zvzz$--12U8X]346::e"c"Dvzz%&#&--/HJD$9
dtAw8A;(>!. 	

5A#2A%IZVZZ	0C0!4 CC c D12-rwwtxxC7H/IJTXXi#o.2r   c                 Z    t        j                   | | j                  |      |dd       y )Nr   r   )r   r   moment)r[   r.   r^   rd   s       r/   ro   ro      s(    ++A."0r   c                     t        j                   | j                  |g| d | j                  |g| z
  dd       t	        j
                  ddd      }t        j                   | j                  |g|  | j                  d|z
  g| dd        | j                  dg| }t        j                   | j                  |dz
  g| dkD         t        j                   | j                  |dz   g| dkD         y )	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    			$--rJFJJt4Jc4J/J"0 	D$#A


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

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

9q=/3/#56r   c                 &   d} | j                   | \  }}t        t        |d            }t        t        |d            dz   }	t	        ||	      }
d}|g}g }|
D ]R  } | j
                  |g| }||z
  |dz
  k\  s"|j                  |       |j                  ||z
         |}|d|z
  kD  sR n |d   |k  r%|j                  |       |j                  d|z
         t        j                  |      }t        j                  |      }|dz   }||d<   t        j                  ||      \  }}t        j                  t        j                  |      t        |      |z        \  }}t        j                  ||kD  d	| d
t        |       dt        |              y)as  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     s   $ E V^^S!FB	SU^	Bs2t}!DD/KDtHH &**R&#&T>UU]*OOBOOGdN+D!e)$ |bD!xx!Hxx!H $HHQK ,,sH-KD%$S(1BCJD$KKu
uJs3xjc$i[Qr   c                 `    | j                   "t        j                  d| j                   v       y y )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           	      <   	 t        t        |      }t        ||       }| dv rddg}nddg}|D cg c]  }|gdz  
 }}ddg} ||g|d|i}	t        j                  |	t        |g|| D 
cg c]  }
 ||
 	 c}
dd	       y # t        $ r Y y w xY wc c}w c c}
w )
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	A1#a%	B	a&C)R)S)F25a2B"2Bc2BCQaC"0   
 Ds   B B.B
	BBc                     t        t        |       }t        j                  dd      } |j                  |g| }t        j
                  }t        j                  ||       y )Nr   )rD   r   rF   arangerQ   nanr   r   )r-   r   r   xvalsr   s         r/   test_cdf_gh13280_regressionr   i  sN     5(#D
		"bA488ADvvHT8$r   c               #     K   dhdhd} t               }t        D ]  \  }}||v r|j                  |       	 t        t        |      }|j                         }t        |      D ]I  \  }}|j                  | j                  |t                     v s|j                  s9||j                  |f K  y # t
        $ r Y w xY ww)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( /&t	5(+D %%'
!*- 	/HAu

48835II))EJJ..	//  		s)   4C B1A*C 1	B=:C <B==C zdistname, shapename, shapesc                    t        t        |       }|j                         }|D cg c]  }|j                   }}|j	                  |      }t        |      }||   }	|	dz
  }
|	dz
  }|	g|
g|gg||<    |j                  | \  }}t        j                  t        j                  ||d            } |j                  |g| }t        j                  t        j                  |dd d f               rJ t        j                  t        j                  |dd d f               sJ t        j                  t        j                  |dd d f               rJ y c c}w )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    s6    5(#D!!#J+56%5::6K6)$Av,K)K#%M!AoO"mm_6GHKN4<< DAq
Q1%&A
$((1
#{
#Cvvbhhs1a4y)***66"((3q!t9%&&&vvbhhs1a4y)****! 7s   Ec                     d} t        j                  t        |       5  t        j                  dd      j
                   d d d        t        j                  t        |       5  t        j                  dd      j                   d d d        dt        j                  _        t        j                  dd      }t        |t              sJ t        t        j                  d       y # 1 sw Y   xY w# 1 sw Y   mxY w)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  !	~W	5 $B##$EKKO;;r3'Ll$6777EKK! !$ $s   !C#"!C/#C,/C8zdistname, shapesc                 ~   t        | t              rt        t        |       }n| } |j                  | \  }}t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  dg| |dz
  |f       y )Nr   r   )
r@   rA   rD   r   r   r   r   r   r   interval)r-   r   r   r  r  s        r/   test_intervalr    s     (C uh'4<< DAqXTXXq!f.v.1a9XTXXq!f.v.1a9]T]]1.v.1a9r   zSensible to machine precisionc            	         t         j                  j                  d      } t        j                  | j                  d      dz        }| j                  d      }|t        j                  |      z  }t        j                  ||f      t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         |d   dz   gz         |z   dz  }t        j                  |      }t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         dgz         |z   dz  }j                         \  }}	t        ||d          t        |	|d          t        j                  |      |       t        j                  |      d       t        j                  |      d       t        j                  d	      5  t        j                  |      t        j                  |             t        j                  |      t         j                           t        j                  |      t         j                           d d d        t        j#                  |      |       t        j#                  |      |       t        j#                  |      dg|d d j                         z          t        j                  d	      5  t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       d d d        t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j                  d	      5  t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       d d d        t        j+                  |      |       t        j+                  |      |       t        j+                  |      d d |dd         t        j+                  d      |dz
         t        j+                  d      |	       j'                  |      }
t        j-                  |
      |       t        j-                  d|z
        j+                  |             t        j-                  d|z
        j+                  |             t        j-                  d      |	       t        j-                  d      |dz
         t        j.                  ddd      }j+                  |dz        j-                  |dz        f}t        j1                  d|z
        |       t        j1                  d      j3                                t        j1                  d      |dz
  |	f       j+                  d      }t        j3                         |       t        j                  ||z        }t        j                  ||z
  dz  |z        }t        j                  ||z
  dz  |z        |dz  z  }t        j                  ||z
  dz  |z        |dz  z  dz
  }t        j5                         |       t        j7                         t        j8                  |             t        j;                         |       t        j                  d      ||||f       t        j                  |dz  |z        }t        j=                  d      |       t        j?                  d       d       t        j?                         |       t        j?                  d       |       t        j                  d	      5  t        j?                  fd       jA                                d d d        t         j                  j                  d      } jC                  d|       }t         j                  j                  d      } j+                  | j                  d            }t        ||       y # 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nl   KU[ ry   r   r   r   r   r   ignore)divider   )r   r8   r   rz   r   g      ?r   rh   )rg   c                      y)Nr   r   r   s    r/   <lambda>z test_rv_sample.<locals>.<lambda>+  s    r   c                     | dz  S )Nr   r   r$  s    r/   r%  z test_rv_sample.<locals>.<lambda>-  s
    !Q$ r   c                 &    j                  |       S )N)rP   )r   r   s    r/   r%  z test_rv_sample.<locals>.<lambda>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_samplerF    sc   
 ))


,C	B"$	%B	BB"&&*BRH-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 <<>DAqAr!uAr"v DHHRL"%DHHX&*DHHW%q) 
H	% 7B4H-w7G,rvvg67 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( FF2b5ME662:/B&'DFFBJ?R'(4#;6EFFBJ?R'(472Q6EDIIK'DHHJ.DHHJ%DJJvJ.eU0KL 662q5B,DDKKND) DKK,a0DKKM5)DKK/6 
H	% P%=>>OP ))


,C
((#(
.C
))


,C88CJJCJ()DCk7 7$ $$ $lP Ps3   <Bf!B>f.&B>f;,.g!f+.f8;ggc                       G d dt         j                        }  | dt        d            }|j                  d      }t	        |d       y )	Nc                       e Zd Zd Zy)-test__pmf_float_input.<locals>.rv_exponentialc                     ddd|z
  z  z  S )NgUUUUUU?r   r   r   )selfr   s     r/   _pmfz2test__pmf_float_input.<locals>.rv_exponential._pmf?  s    QU##r   N)__name__
__module____qualname__rL  r   r   r/   rv_exponentialrI  >  s    	$r   rP  r   r/  )r  r  *   )r7   r   )r   rX   floatrI   r   )rP  rvrI   s      r/   test__pmf_float_inputrT  :  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_32bitrF  rT  r   r   r/   <module>r^     sp    )   , , , , 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   