
    bii                     :   d dl 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mZ d dlZd dlmZmZmZ d dlmZ d dlmZ d dlm Z  e jB                  jE                  dg d	      d
        Z#e jB                  jE                  dddg      d        Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,e jB                  jE                  d ejZ                  e.e/fgdz         d        Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7e jB                  jE                  d g d!      d"        Z8d# Z9d$ Z:d% Z;d& Z<d' Z= G d( d)      Z> G d* d+      Z?e jB                  jE                  d,g d-g d.g      d/        Z@d0 ZA G d1 d2      ZB G d3 d4      ZCd5 ZD G d6 d7      ZE G d8 d9      ZFy):    N)stats)	betabinom
betanbinom	hypergeom
nhypergeom	bernoulli	boltzmannskellamzipfzipfianbinomnbinomnchypergeom_fishernchypergeom_walleniusrandintpoisson_binom)assert_almost_equalassert_equalassert_allclose)r   )root_scalar)quadzk, M, n, N, expected, rtol))   
         g<<?V瞯<)k   '       g?r   )r   r   r   r    gS;绽|=c                 P    t        j                  | |||      }t        |||       y Nrtol)r   cdfr   kMnNexpectedr%   ps          a/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_discrete_distns.pytest_hypergeom_cdfr/      s$     	aAq!AAxd+    )   r   r   r    g?r   )}   r   r   r    g!:<r!   c                 P    t        j                  | |||      }t        |||       y r#   )r   sfr   r'   s          r.   test_hypergeom_sfr5   $   s$     	Q1a AAxd+r0   c                     d} d}d}d}t        j                  | |||      }t        j                  || z
  |||z
  |      }t        j                  || z
  ||||z
        }t        j                  | |||      }t        ||d       t        ||d       t        ||d       d} d}d}d}t        j                  | |||      }t        j                  | ||z        }	t        ||	d       y )Nr   2   r      )decimal      )r   logpmfr   r   )
r(   r+   Kr*   logpmf1logpmf2logpmf3logpmf4hypergeom_logpmfbernoulli_logpmfs
             r.   test_hypergeom_logpmfrD   .   s     	
A
A
A	Aq!Q*Gq1uaQ2Gq1uaAE2Gq!Q*G"5"5"5 	
A
A	A	A ''1a3 ''1Q3/(*:BGr0   c                      d\  } }}d}t        j                  || ||      }t        j                  || |||z   dz
        | |z
  |dz
  z
  z  | ||z   dz
  z
  z  }t        ||d       y )N)-            r:   绽|=r$   )r   pmfr   r   )r)   r*   rr(   NHGHGs         r.   test_nhypergeom_pmfrO   H   sp    GAq!	A
..Aq!
$C	q!Q!A	&!a%1Q3-	8A1QK	HBB%(r0   c                      d} d}d}t        j                  |dz         }t        j                  || ||      }t        j                  || ||      }t        |g dd       t        |g dd       y )	NrH   r   r   r:   )$I$I?g۶m۶m?m۶m?rR   vIh%<=r$   )rQ   $I$I?g%I$I?      ?)nparanger   rK   r&   r   )r)   r*   rL   supportrK   r&   s         r.   test_nhypergeom_pmfcdfrY   Q   sd    	A	A	Aii!nG
..!Q
*C
..!Q
*CC1>C0u=r0   c                  t    d} d}d}t        j                  g dg dg| ||      }t        |g dg dgd	       y )
Nr   r   r   )r   r:      r   )r:   r[   r   r   )r:   r   r   r:   )r   r   r:   r   rS   r$   )r   rK   r   )r)   r*   rL   rK   s       r.   test_nhypergeom_r0r\   ]   s;    
A	A	A
..,5q!Q
?CC,5EBr0   c                  d    t        j                  dg ddgdggd      } | j                  dk(  sJ y )N   )r;   rH   	   r8   rG   r   r:   r[   r   size)r   rvsshape)xs    r.   test_nhypergeom_rvs_shaperf   f   s2     	r9tbTlFA77l"""r0   c                      t         j                  j                  d      } t        j                  dddd|       }t         j                  j                  d      } | j                  d      }t        j                  |ddd      }t        ||       y )Nr   r^   r;      d   rb   random_statera   )rV   randomRandomStater   rc   uniformppfr   )rngre   r-   ys       r.   test_nhypergeom_accuracyrr   n   sp     ))


"Cr1bs=A
))


"CAq"a$AAr0   c                  V   t        j                  dd      } d}t        j                  | d|      }| dk(  }t	        ||       t        j
                  d      }d}t        j                  | ||      }g d}t        ||d	
       t        j                  | ||      }g d}t        ||d	
       y )Nr   r:   grh|?r   r[   r   )r   r   r   $I$I?rT   g$I$I?r   r   rS   r$   )r   r   r   ru   g۶m۶m?r:   r:   r:   )rV   rW   r	   rK   r   logr   r&   )r(   r+   r-   r,   lamcs         r.   test_boltzmann_upper_boundry   y   s    
		"aA	Aa"AAvHH
&&)C	Aaa A-HAxe,aa A+HAxe,r0   c                      d} t        j                  | dz         }t        | dd      j                  |      }t        j                  d| dz   z  | dz         }t        ||       y )N   r:   )rV   rW   r   rK   repeatr   )r*   r(   r-   r,   s       r.   test_betabinom_a_and_b_unityr}      sZ     	A
		!a%A!Qq!Ayya!ea!e,H8$r0   dtypesr   c                     | \  }}} |d       |d       |d      }}}t        t        j                  |||d      d       y )Nr   r[   r   r(   momentsgaa)r   r   r   )r~   n_typea_typeb_typer*   abs          r.   -test_betabinom_stats_a_and_b_integers_gh18026r      sC     $FFFRj&)VAY!qAIOOAq!S9;NOr0   c                      d} d}t        j                  d      }t        d| |      j                  |      }t	        | | |z   z        j                  |      }t        ||       y )Ngffffff@g)\(?r[   r:   )rV   rW   r   rK   r   r   )r   r   r(   r-   r,   s        r.   test_betabinom_bernoullir      sY    AA
		!A!Qq!Aa!e%))!,H8$r0   c                  T    d\  } }}t        t        j                  | ||      d       y )N)g?r   r:   
confidencer*   r-   r   r   )r   r   intervalalphar*   r-   s      r.   test_issue_10317r      s$    KE1aEQ!<fEr0   c                  T    d\  } }}t        t        j                  | ||      d       y )N)gffffff?r   r   r   r   )r   r   r   r   s      r.   test_issue_11134r      s$    KE1a5A;VDr0   c                  &   t         j                  j                  d      } t        t	        j
                  | j                  d      dd      d       t        t	        j
                  ddd      d       t        t	        j
                  ddd      d       y )Nl   <U7 r   r         ?r:   )rV   rl   default_rngr   r   ro   )rp   s    r.   test_issue_7406r      se    
))



+C3::b>1c2A6 1a%r*1a%q)r0   c                  t   t         j                  j                  d      } d}| j                  dd      }d}t	        j
                  |||      }t        |d       t        j                  ddd      }t	        j
                  |||      }t        |d       d	}t	        j
                  |||      }t        ||       y )
Nl   U^ r   ri   r   ra   r   {Gz?Gz?r:   )rV   rl   r   integersr   ro   r   linspace)rp   r-   r*   re   ro   s        r.   test_issue_5122r      s    
))



+C	ASr"A	A
))Aq!
Cb
D$#A
))Aq!
Ca	A
))Aq!
Car0   c            	      v    t        t        dt        j                  dd            j	                  d      d       y )N  rt   ir   r   )r   r   rV   logspacero    r0   r.   test_issue_1603r      s)    tR[[T2377=qAr0   c                      d} t        j                  ddd      }t        t        j                  |d|z  |       dd       y )Nr   r      r8   r[   r   )atol)rV   r   r   r   r&   )r-   re   s     r.   test_issue_5503r      s6    A
Ar2AEIIa1a(#D9r0   zx, n, p, cdf_desired))i,  r   333333?g24?)r   r   r   gU7i(?)i0u  順 r   gέ̑?)i i@B r   g8@
?)i- 逖 r   gf(G?)i r   gwtg ?)ir   r   gV}ֈ?)ipr   r   gz̍?)i0 r   r   gnC:)i i ʚ;r   g@  ?)l    ^e l    d(	 r   gM|X
 ?c                 F    t        t        j                  | ||      |       y Nr   r   r&   )re   r*   r-   cdf_desireds       r.   test_issue_5503pt2r      s     EIIaA&4r0   c                  F    t        t        j                  ddd      d       y )Nr[   l    J)g-q=gB.+n?r   r   r0   r.   test_issue_5503pt3r      s    EIIa13IJr0   c                  F    t        t        j                  ddd      d       y )N   r7   gAA?g_[Cˮi8)r   r   r4   r   r0   r.   test_issue_6682r      s     FIIc2w/1FGr0   c                  v    t        j                  g ddd      } dt        j                   dg}t	        | |       y )N)r   r   r:   r   r   gG޿g1D&+)r   logcdfrV   infr   )result	references     r.   test_issue_19747r      s0    ]]:q#.Frvvg{3IFI&r0   c                  R    d} d}d}t        t        j                  || |      d       y )Nr   r   i          )r   r   rK   )r*   r-   r(   s      r.   %test_boost_divide_by_zero_issue_15101r      s(    AAAEIIaA&,r0   c                  Z    g d} t        j                  d| |       }g d}t        ||       y )N)	r:   r   ri   r     i  i  i  ip  r   )	g>l?gzo?gVrRs?g$?gVWCW?g4yB?g4.?g.Lr?gD?)r
   r&   r   )mur&   cdf_expecteds      r.   test_skellam_gh11474r     s-    	9B
++aR
 CPL C&r0   c                      e Zd Zd Zd Zd Zej                  j                  d      Z	 ej                   ej                  ddd      e	j                  dd	d      f      j                  Zej                   j#                  d
e      d        Zd Zej                   j#                  dddg      d        Zej                   j#                  dg d      d        Zej                   j#                  dg d      d        Zd Zy)TestZipfianc                    d}d}t        j                  dd      }t        t        j                  |||      t        j                  ||             t        t        j                  |||      t        j                  ||             t        t        j                  |||      t        j                  ||             t        t        j                  ||d      t        j                  |d             y )Ng      @r   r:      msvkr   )	rV   rW   r   r   rK   r   r&   r4   r   )selfr   r+   r(   s       r.   test_zipfian_asymptoticz#TestZipfian.test_zipfian_asymptotic  s    IIaAq!,dhhq!n=Aq!,dhhq!n=

1a+TWWQ];aF;

1f5	7r0   c                    d\  }}d}t        j                  d|dz         }t        t        j                  |||      t        j                  |||      d       t        t        j
                  |||      t        j
                  |||      d       t        t        j                  |||      t        j                  |||      d       t        t        j                  ||d      t        j                  ||d      d       y )N)gG?g1  ?   r:   gƠ>r$   r   r   )rV   rW   r   r   rK   r&   r4   r   )r   alt1agt1r+   r(   s        r.   test_zipfian_continuityz#TestZipfian.test_zipfian_continuity  s     ,
dIIaQAtQ/Qa1H!	#AtQ/Qa1H!	#

1dA.

1dA0F!	#dAv>dAv>T	Kr0   c                 t   t         j                  j                  d      }|j                  ddd      }|j	                  d      dz  dz   }|j                  ddd      }g d}g d}t        t        j                  |||      dd  |dd  d	
       t        t        j                  |||      dd  |dd  d
       y )Nr   r:   r{   r   ra   ri   )
gĹԨ?gءk>	]x[?g>g	W4?g
-?g$fhn=g9[.>g`֔>gnm?)
gaj?gZk=?r   g?g90?gɸU?rU   gJ_9?g2h2-?gB0?ư>r$   g-C6
?)	rV   rl   rm   r   randr   r   rK   r&   )r   rp   r(   r   r*   rK   r&   s          r.   test_zipfian_RzTestZipfian.test_zipfian_R-  s     ii##A&KK2BK'HHRLOaKK3RK(+F 	Aq!,QR0#ab'EAq!,QR0#ab'Er0   r   r:   r   r[   (   za, nc                    t         j                  d        t         j                  fd       }t        j                  |dz         } ||||      }t        j                  |      }t        j                  ||      }t        j                  ||z
  dz  |      }|dz  }	t        j                  ||z
  |	z  dz  |      }
t        j                  ||z
  |	z  dz  |      dz
  }t        t        j                  |||      |       t        t        j                  |||      |       t        t        j                  ||d	
      |||
|g       y )Nc                 \    dt        j                  d| dz         |z  z  j                         S )z$Naive implementation of harmonic sumr:   )rV   rW   sum)r*   ss     r.   Hnsz+TestZipfian.test_zipfian_naive.<locals>.HnsM  s,     bii1Q3'**//11r0   c                 >    | dk  s| |kD  ryd| |z  z   ||      z  S )z#Naive implementation of zipfian pmfr:   r   r   )r(   r   r*   r   s      r.   pzipz,TestZipfian.test_zipfian_naive.<locals>.pzipR  s.     1uA1a4x#a)++r0   r:   )weightsr[   r   r   r   mvskr   )
rV   	vectorizerW   cumsumaverager   r   rK   r&   r   )r   r   r*   r   r(   rK   r&   meanvarstdskewkurtosisr   s               @r.   test_zipfian_naivezTestZipfian.test_zipfian_naiveI  s!    
	2 
	2 
	, 
	, IIacN1amiinzz!S)jj!d(Q43hzzAdFC<!+S9::$|a/=AAq!,c2Aq!,c2aF;sD(3	5r0   c                     t        j                  dd      }|j                  t         j                        }t	        dd      }|j                  |      }|j                  |      }t        ||       y )Nr   r   o   r^   )rV   rW   astypeint32r   rK   r   r   r(   k_int32distrK   pmf_k_int32s         r.   test_pmf_integer_kzTestZipfian.test_pmf_integer_kg  sU    IIa((288$sBhhqkhhw'S+&r0   zk, a, n, ref)r   g    ?r   gdA_"?)i  0D   ?r   g:"!?c                 L    t        j                  |||      }t        ||d       y )NgV瞯<)r   rK   r   )r   r(   r   r*   refr-   s         r.   test_pmf_against_mpmathz#TestZipfian.test_pmf_against_mpmathp  s"     KK1a 3&r0   ))i~  g      ?r   g_M?)i'        @r   g.a=)iP  r   r   g?Ӂqdb=)r         @ri   g >)_   r   ri   g{c=c                 N    t        j                  |||      }t        ||d       y NgV瞯=r$   )r   r4   r   )r   r(   r   r*   r   r4   s         r.   test_sf_against_mpmathz"TestZipfian.test_sf_against_mpmathz  s"     ZZ1a Ce,r0   z	a, n, ref))r   ri   ggG3@)g  ?r   gI'@)gjt?r   g%-?c                 L    t        j                  ||      }t        ||d       y r   )r   r   r   )r   r   r*   r   ms        r.   test_mean_against_mpmathz$TestZipfian.test_mean_against_mpmath  s      LLA3U+r0   c                 n    d}d}t        j                  d||      }t        |t        j                         y )Ng      @g}Ô%ITr   )r   rK   r   rV   nan)r   r   r*   r-   s       r.   test_ridiculously_large_nz%TestZipfian.test_ridiculously_large_n  s,    KKAq!Qr0   N)__name__
__module____qualname__r   r   r   rV   rl   rm   rp   vstackr   r   Tnaive_testspytestmarkparametrizer   r   r   r   r   r  r   r0   r.   r   r     s   	7KF0 ))


"C"))[R[[Q3 [[B35 667a  [[V[15 25:' [[	0	5	7
'
'
 [[	0--
 [[	),, r0   r   c                       e Zd Zd Zej
                  j                  dddg      d        Zd Zd Z	d Z
ej
                  j                  dddg      d	        Zy
)TestNCHc                    t         j                  j                  d      }d}d}|j                  d||      }|j                  d||      }||z   }t	        j
                  d||j                  |      }t        j                  d||z
        }t        j                  ||      }	t	        j
                  ||	|j                  |      }
|j                  |
j                        dz  }|
||||f\  | _	        | _
        | _        | _        | _        y )	Nl   U r[   r   r   ri   r:   ra   r   rj   r[   )rV   rl   r   r   r   rc   rd   maximumminimumre   r+   m1r*   odds)r   rp   rd   max_mr  m2r+   r*   xlxure   r  s               r.   setup_methodzTestNCH.setup_method  s    ii##J/\\!U\/\\!U\/GKK1177=ZZ1R4 ZZ2KKBRXXC@zz!''"1$562q$5F2r0   	dist_namer   r   c           	          t         t        d}||   }| j                  | j                  | j                  | j
                  f\  }}}}t        |j                  ||||d      t        j                  ||||             y )Nr   r   r:   )r  )	r   r   re   r+   r  r*   r   rK   r   )r   r  distsr   re   r+   r  r*   s           r.   test_nch_hypergeomzTestNCH.test_nch_hypergeom  sq    
 (:*?AYffdffdggtvv51b!Ar115!aB2	4r0   c           	         | j                   | j                  | j                  | j                  | j                  f\  }}}}}t
        j                  d        } ||||||      \  }}}	t        t        j                  |||||      |       t        t        j                  ||||d      |       t        t        j                  ||||d      |	       y )Nc                    |z
  t        j                  dz
        t        j                        fdfd} |d      } |d      } |d      } |       |z  }	||z  }
||z  ||z  dz  z
  }|	|
|fS )Nr   c                 P    t        |       }t        | z
        }||z  | z  z  S r   )special_binom)re   t1t2r  r  r*   ws      r.   fzFTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.f  s1    "2q)"2q1u-BwA~%r0   c                 J     t         fdt        dz         D              S )Nc              3   :   K   | ]  } |      |z  z    y wr   r   ).0rq   r$  r(   s     r.   	<genexpr>zYTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.P.<locals>.<genexpr>  s     @1Q419@s   r:   )r   range)r(   r$  r  r  s   `r.   PzFTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.P  s    @eBQ.?@@@r0   r:   r[   rV   r  r  )re   r+   r  r*   r#  r*  P0P1P2rK   r   r   r$  r  r  r  s     ```       @@@@r.   pmf_mean_varz;TestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var  s     RBAqt$BAr"B&
A 1B1B1BA$)C7Dr'R"WqL(Cc>!r0   r   r   v)re   r+   r  r*   r  rV   r   r   r   rK   r   )
r   re   r+   r  r*   r  r/  rK   r   r   s
             r.   test_nchypergeom_fisher_naivez%TestNCH.test_nchypergeom_fisher_naive  s     FFDFFDGGTVVTYYF1b!T		" 
	", &aB48T3*..q!RDA3G*00B4M	*00B4M	r0   c           
         t         j                  j                  d      }d}d}|j                  d||      }|j                  d||      }||z   }t        j                  d||j
                  |      }t        j                  d||z
        }t        j                  ||      }	t        j                  ||	|j
                  |      }
 |j                  |
j
                   dz  }d t         j                  fd	       t        j                         5  t        j                  d
t        d       t        t        j                   ||||       ||||      d       d d d        t         j                  fd       }t        j                         5  t        j                  d
t        d       t        t        j"                  ||||d       |||||      d       d d d        t         j                  fd       } ||
||||      }t        j$                  |
||||      }d\  }}t        j&                  ||z
        ||t        j&                  |      z  z   k  }|j)                         t        j*                  |      dz  kD  sJ t-        ||    ||    ||    ||          D ]  \  }}}}||z
  } ||||      \  }}	t        j.                  ||	dz         }
 ||
||||      j)                         dk  sJ t        t        j$                  |
||||      j)                         d        y # 1 sw Y   xY w# 1 sw Y   ]xY w)Nr[   r  ri   r:   ra   r   rj   c                 r    | |z
  }t        j                  d||z
        }t        j                  ||      }||fS )Nr   r+  )r+   r  r*   r#  r  r  r  s          r.   rX   z9TestNCH.test_nchypergeom_wallenius_naive.<locals>.support  s8    RBAqt$BAr"Br6Mr0   c                 t    | z
   |       \  }}fd}t        |||f      j                  S )Nc                 2    | z  d| z
  z  z
  z  z   dz
  S Nr:   r   )ur  r  r*   r#  s    r.   funzCTestNCH.test_nchypergeom_wallenius_naive.<locals>.mean.<locals>.fun  s(    tqAaC8|a//!33r0   )bracket)r   root)	r+   r  r*   r#  r  r  r8  r  rX   s	    ```   @r.   r   z6TestNCH.test_nchypergeom_wallenius_naive.<locals>.mean  s>    RBQAq)FB4 sRH5:::r0   ignorez!invalid value encountered in mean)categorymessageg{Gz?r$   c                     | |z
  } | |||      }|||z
  z  }||z
  ||z   |z
  z  }| |z  |z  | dz
  ||z  ||z  z   z  z  S r6  r   )	r+   r  r*   r#  r  r7  r   r   r   s	           r.   variancez:TestNCH.test_nchypergeom_wallenius_naive.<locals>.variance  sg    RBQAq!AR!VA1q2vz"AQ3q5QqSRTBqD[122r0   r0  r   g?c                 h    	 |z
  	 
|      \  }}	 fd	fd} |       S )Nc                 j    z
  z  z
  z
  z   }d| |z  z  z
  z  d| d|z  z  z
  z
  z  z  }|S r6  r   )tDresr  r  r*   r#  re   s      r.   	integrandzHTestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf.<locals>.integrand  sQ    rAvJ"!*-QqSzAo1qs8qs(;;
r0   c                 p    t        |       }t        | z
        }t        dddd      }||z  |d   z  S )Nr   r:   gؗҜ<)epsrelepsabs)r   r   )re   r!  r"  the_integralrE  r  r  r*   s       r.   r$  z@TestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf.<locals>.f  sH    "2q)"2q1u-#Iq!+0 @Bwa00r0   r   )re   r+   r  r*   r#  r  r  r$  rE  r  rX   s   ` ```   @@r.   rK   z5TestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf  s:    RBQAq)FB 
1 Q4Kr0   )r   r   r   )rV   rl   rm   r   rc   rd   r  r  r   r   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r   r   rK   absr   prodziprW   )r   rp   rd   r  r  r  r+   r*   r  r  re   r#  r?  rK   pmf0pmf1r   r%   ir   rX   s                      @@r.    test_nchypergeom_wallenius_naivez(TestNCH.test_nchypergeom_wallenius_naive  s    ii##A&[[E[.[[E[.GKK1177=ZZ1R4 ZZ2KKBRXXC@CHHaggq 	 
	; 
	; $$& 	:##H~BD166q"aC B1-D:	: 
	3 
	3 $$& 	##H~BD%++Ar1aEB1%	 
	 
	$ 1aQ"$((Ar1a8
dFF4$;$bffTl):"::uuw!++++ q!ub!faeQrU; 		PKAr1aRBQAq)FB		"b1f%A q!RA&**,r111155aB1EIIKQO		Pe	: 	:	 	s   A
L+AL8+L58Mc           	      P   d}d}d}d}t        j                  d      }t        j                  g d      }d}d}t        t	        j
                  |||||      |d	d	
       t        t	        j                  ||||      |d	       t        t	        j                  ||||      |d       y )Nr7   r   r{   g      @r   )g9T;gr<gD,P=g4 V=g'	,=gCG>gyztj>gt>g+k?g MeGD?gqNZVɒo?gc2n?g~ZN?gE}?Y?g?g·aQ?g]??gr)?gp{?g39	y?g m>?gJ򕴝-@gih@rS   )r%   r   r$   gdy=)rV   rW   arrayr   r   rK   r   r   )	r   r)   r*   r+   r  suprK   r   r   s	            r.   test_wallenius_against_mpmathz%TestNCH.test_wallenius_against_mpmath3  s     iimhh / 0* "  	-11#q!QEs"	0-221aDA5	*-11!Q4@%	)r0   c                     t         t        d}||   }|j                  dddgdggg dd      }|j                  dk(  sJ y )	Nr  r7   r   r   r{   )r   rU   g       @r`   ra   )r   r   rc   rd   )r   r  r  r   re   s        r.   test_rvs_shapezTestNCH.test_rvs_shape]  sN     (:*?AYHHRrdRD\?HNww,&&&r0   N)r  r  r  r  r  r	  r
  r  r1  rT  rX  rZ  r   r0   r.   r  r    s|    G [[[24KLN4N4 DZPx()T [[[24KLN'N'r0   r  zmu, q, expected)r   x   g@	#)i  r   g"qVUc                 ^    d}|||| z   z  }}t        t        j                  |||      |       y )Nr{   )r   r   r   )r   qr,   rb   r*   r-   s         r.   test_nbinom_11465r^  j  s3    
 DtBwqA FMM!Q*H5r0   c                      t        j                  ddd      } d}t        |      j                  |       }| dz  dk(  }t	        |d   |       t	        |d   d|z
         t        ||    d       y )Nr   r:   rh   g?r   )rV   r   r   rK   r   r   )re   r-   rK   rS  s       r.   test_gh_17146r`  w  sl     	Aq"AA
A,

1
C	
Q!ACGQCFAaC aR!r0   c                       e Zd Zej                  j                  dg dg dg dg      d        Zej                  j                  dg dg dg d	g      d
        Zy)TestBetaNBinomzx, n, a, b, ref)r   g    SAr   r{   g:[Y))ri   r7   r   r{   g dg?)r   r   r   r{   gL&[>c                 L    t        t        j                  ||||      |d       y )NrJ   r$   )r   r   rK   )r   re   r*   r   r   r   s         r.   test_betanbinom_pmfz"TestBetaNBinom.test_betanbinom_pmf  s      	
q!Q2CeDr0   zn, a, b, ref)r   r   r7   g:o?)r   r_   r_   g>["@)ri   r   r   g >[?c                 N    t        t        j                  |||d      |d       y )Nr(   r   g [n<r$   )r   r   r   )r   r*   r   r   r   s        r.   test_betanbinom_kurtosisz'TestBetaNBinom.test_betanbinom_kurtosis  s$    * 	
((Aq#>%	)r0   N)r  r  r  r  r	  r
  rd  rf  r   r0   r.   rb  rb    so    [[.EBHJKE	KE [[^C:?AB)	B)r0   rb  c                       e Zd Zd Zy)TestZipfc                     t        j                  dd      }|j                  t         j                        }t	        d      }|j                  |      }|j                  |      }t        ||       y )Nr   r   r_   )rV   rW   r   r   r   rK   r   r   s         r.   test_gh20692zTestZipf.test_gh20692  sR    IIa((288$Awhhqkhhw'S+&r0   N)r  r  r  rj  r   r0   r.   rh  rh    s    'r0   rh  c                       G d dt         j                        }  | t        j                        }d}t	        j
                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)#test_gh20048.<locals>.test_dist_genc                      t        |dz  d      S )Nri   r   )min)r   r(   s     r.   _cdfz(test_gh20048.<locals>.test_dist_gen._cdf  s    q3w%%r0   N)r  r  r  rp  r   r0   r.   test_dist_genrm    s    	&r0   rq  )r   zArguments that bracket...)matchg+?)r   rv_discreterV   r   r  raisesRuntimeErrorro   )rq  	test_distr=  s      r.   test_gh20048rw    sX    &)) & 'I)G	|7	3 e  s   A))A2c                       e Zd Zd Zy)TestPoissonBinomialc                    t         j                  j                  d      }|j                  d      }t        j                  |dz         }|j                  |      }t        j                  ||      }g d}t        ||       y )Nl   zb} r   r:   )gcƙ?g!)@*?g/_?g?TxY^?gg	SUH?)rV   rl   r   r   rW   r   rK   r   )r   rp   r*   r(   r-   rD  r   s          r.   test_pmfzTestPoissonBinomial.test_pmf  sh     ii##L1LLIIa!eJJqM1%=S!r0   N)r  r  r  r{  r   r0   r.   ry  ry    s    "r0   ry  c                       e Zd Zd Zy)TestRandIntc                 *   d}t        |      }t        |      D cg c]
  }|dz   |z    }}t        j                  d||      }|dkD  j	                         sJ dt        j                  |t
        j                        |z
  z  }t        ||       y c c}w )Nil        iE  r   r:   )dtype)	rN  r)  r   rK   allrV   asarrayfloat64r   )r   r   	max_rangerS  all_b_1rD  r   s          r.   test_gh19759zTestRandInt.test_gh19759  s    F	,1),<=q1w;?==kk#q'*a}}2::gRZZ81<=S!	 >s   BN)r  r  r  r  r   r0   r.   r}  r}    s    "r0   r}  )Gr  	itertoolsrJ  scipyr   scipy.statsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   numpyrV   numpy.testingr   r   r   scipy.specialr   scipy.optimizer   scipy.integrater   r	  r
  r/   r5   rD   rO   rY   r\   rf   rr   ry   r}   productintfloatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r^  r`  rb  rh  rw  ry  r}  r   r0   r.   <module>r     s      1 1 1 1 1
   1 &  
 5:;,;, 56:;<
,<
,
H4)	>C#-&% #49#4#4U|nQ6F#GHP IP%F
E
*$B: / 2 55K
H'-'D  D NN' N'b *;79:6:6	*) *)Z' '" "2	" 	"r0   