
    Cpjz              	          S SK r S SKrS SKrS SKJr  S SKrS SKrS SKrS SKrS SK	r
S SKJrJr  S SKJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJrJr  S S	KJ r J!r!  S S
K"J#r#  S SK$J%r%   " S S5      r&SS\&" 5       04SS/ SQ04SS/ SQ04SS\&" 5       04SS\&" 5       04S\&" 5       S S.4/r'Sr(S \S4S \)\(4S \*S4S \S4S \S4S \)S 4/r+S! \S4S" \S4S# \)\(4S$ \*S4S% \)S 4/r,S& \)\(4S' \*S4S( \S4S) \S4S* \)S 4/r-/ S+4S,S-//S.4S/S0\
R\                  S1/S24S/S0\
R^                  S1/S24S-S-/S34/r0S4\1S54S6\1S54/r2S7\S84S9\S84/r3S:\S84\
R^                  \
R^                  4\S84\
R^                  * \
R^                  * 4\S84\
R^                  \
R^                  * 4\S84\
R^                  * \
R\                  4\1S;4\
R\                  \
R^                  4\1S;4/r4S \
R\                  4\1S;4\
R\                  \
R\                  4\1S;4/r5\Rl                  Ro                  S<\3\2-   \5-   5      \Rl                  Ro                  S=\'5      S> 5       5       r8\Rl                  Ro                  S=\'5      S? 5       r9S@ r:SA r;\Rl                  Ro                  S=\'5      SB 5       r<\Rl                  Ro                  SC/ SDQ5      SE 5       r=SF r>SG r?S^SH jr@S_SI jrASJ rB\Rl                  Ro                  SK/ SLQ5      SM 5       rC\Rl                  Ro                  SKSS/5       " SN SO5      5       rD " SP SQ5      rE " SR SS5      rF " ST SU5      rG " SV SW5      rH " SX SY5      rI " SZ S[5      rJ " S\ S]5      rKg)`    N)deepcopy)assert_allcloseassert_equal)TransformedDensityRejectionDiscreteAliasUrnDiscreteGuideTableNumericalInversePolynomialNumericalInverseHermiteRatioUniformsSimpleRatioUniformsUNURANError)raises)stats)special)	chisquarecramervonmises)distdiscretedistcont)check_random_state)assert_deallocatedc                   &    \ rS rSrS rS rS rSrg)StandardNormal#   c                     S[         R                  " S[         R                  -  5      -  [         R                  " SU-  U-  5      -  $ N      ?       @      ࿩npsqrtpiexpselfxs     [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/stats/tests/test_sampling.pypdfStandardNormal.pdf$   s4    "''"RUU(##bffTAXaZ&888    c                     S[         R                  " S[         R                  -  5      -  U* -  [         R                  " SU-  U-  5      -  $ r   r   r$   s     r'   dpdfStandardNormal.dpdf(   s;    "''"RUU(##qb(266$(1*+===r*   c                 .    [         R                  " U5      $ N)r   ndtrr$   s     r'   cdfStandardNormal.cdf+   s    ||Ar*    N__name__
__module____qualname____firstlineno__r(   r,   r1   __static_attributes__r3   r*   r'   r   r   #   s    9>r*   r   r   distr   ){Gz?
ףp=
?皙?r   r	   r
   r   )r:   modezmust be real number, not listc                     U * $ r/   r3   r&   s    r'   <lambda>rA   >   s    rr*   z...c                     / $ r/   r3   r@   s    r'   rA   rA   @       rr*   c                     [         $ r/   foor@   s    r'   rA   rA   B       sr*   name 'foo' is not definedc                 "    [         R                  $ r/   r    infr@   s    r'   rA   rA   D       rvvr*   c                 "    [         R                  $ r/   r    nanr@   s    r'   rA   rA   F   rL   r*   c                      gNr   r3   r3   r*   r'   rA   rA   H       Sr*   ,takes 0 positional arguments but 1 was givenc                 "    [         R                  $ r/   rJ   r@   s    r'   rA   rA   O   rL   r*   c                 "    [         R                  $ r/   rN   r@   s    r'   rA   rA   Q   rL   r*   c                     / $ r/   r3   r@   s    r'   rA   rA   S   rC   r*   c                     [         $ r/   rE   r@   s    r'   rA   rA   U   rG   r*   c                      grQ   r3   r3   r*   r'   rA   rA   W   rR   r*   c                     / $ r/   r3   r@   s    r'   rA   rA   ^   rC   r*   c                     [         $ r/   rE   r@   s    r'   rA   rA   `   rG   r*   c                 "    [         R                  $ r/   rJ   r@   s    r'   rA   rA   b   rL   r*   c                 "    [         R                  $ r/   rN   r@   s    r'   rA   rA   d   rL   r*   c                      grQ   r3   r3   r*   r'   rA   rA   f   rR   r*   z!must contain at least one elementr           z0wrong number of dimensions \(expected 1, got 2\)皙?皙?r=   )must contain only finite / non-nan values(must contain at least one non-zero value)         zmust be a length 2 tupler3   )rd   rc   zleft >= right)rc   rc   )
   rf   zonly non-nan valuesdomain, err, msgzmethod, kwargsc                     [        [        R                  U5      n[        R                  " XS9   U" S0 UDSU 0D6  S S S 5        g ! , (       d  f       g = f)Nmatchdomainr3   )getattrr   samplingpytestr   )rk   errmsgmethodkwargsMethods         r'   test_bad_domainrt      s<    
 U^^V,F	s	&''' 
'	&	&s   A
Ac                 0   [        [        R                  U 5      nSnU" S0 UDSU0D6nU" S0 UDSU0D6n[        UR	                  S5      UR	                  S5      5        [
        R                  R                  S5      nU" S0 UD6nUR	                  SUS9n[
        R                  R                  S 5        U" S0 UDSS0D6nUR	                  S5      n[        Xx5        [
        R                  R                  [
        R                  R                  S5      5      n	[
        R                  R                  [
        R                  R                  S5      5      n
U" S0 UDSU	0D6nU" S0 UDSU
0D6n[        UR	                  S5      UR	                  S5      5        g )N{   random_stated   rw   r3   )rl   r   rm   r   rvsr    randomRandomStateseedMT19937	Generator)rq   rr   rs   r}   rng1rng2rngrvs1rvs2seed1seed2s              r'   test_random_stater      sI   U^^V,F D.F..D.F..D#. ))


$CFD88Cc8*DIINN4-F--D88C=D
 II!!"))"3"3C"89EII		 1 1# 67E/F//D/F//D#.r*   c                  d   [        [        5       SS9n [        [        5       5      nUR                  S5        [        U R	                  S5      UR	                  S5      5        [        [        5       SS9nUR	                  S5      nUR                  S5        UR	                  S5      n[        X45        g )Nrv   ry   rx   )r   r   set_random_stater   rz   )r   r   r   r   r   s        r'   test_set_random_stater      s    &~'7cJD&~'78D##.
%n&6S
IC773<D773<Dr*   c                  >  ^^ S S S.m " S S5      mUU4S jn UU4S jn[         R                  " U S9n[         R                  " US9nUR                  5         UR                  5         UR                  5         UR                  5         TS   S:X  d   eTS	   S
:X  d   eg )N)err1err2c                   &    \ rS rSrS rS rS rSrg).test_threading_behaviour.<locals>.Distribution   c                     Xl         g r/   pdf_msg)r%   r   s     r'   __init__7test_threading_behaviour.<locals>.Distribution.__init__   s    "Lr*   c                 R    SUs=:  a  S:  a  O  U$ [        U R                  5      eU$ )Ng33333H@g      I@)
ValueErrorr   r$   s     r'   r(   2test_threading_behaviour.<locals>.Distribution.pdf   s(    a$H !..Hr*   c                     gNrc   r3   r$   s     r'   r,   3test_threading_behaviour.<locals>.Distribution.dpdf   s    r*   r   N)r5   r6   r7   r8   r   r(   r,   r9   r3   r*   r'   Distributionr      s    	#	
	r*   r   c                     > T" S5      n [        U SSS9n UR                  S5        g ! [         a  nUR                  S   TS'    S nAg S nAff = f)NrF   rf   rx      rk   rw   順 r   r   r   rz   r   argsr:   r   er   errorss      r'   func1'test_threading_behaviour.<locals>.func1   sO    E")$y79;	'GGFO 	'VVAYF6N	'   ( 
AA		Ac                     > T" S5      n [        U SSS9n UR                  S5        g ! [         a  nUR                  S   TS'    S nAg S nAff = f)Nbarr   rd   r   r   r   r   r   r   s      r'   func2'test_threading_behaviour.<locals>.func2   sO    E")$y78:	'GGFO 	'VVAYF6N	'r   )targetr   rF   r   r   )	threadingThreadstartjoin)r   r   t1t2r   r   s       @@r'   test_threading_behaviourr      s     D)F
 
'' 
			'B				'BHHJHHJGGIGGI&>U"""&>U"""r*   c                     [        [        R                  U 5      nU" S0 UDSS0D6n[        R                  " U5      n[        R
                  " U5      n[        UR                  S5      UR                  S5      5        g )Nrw   rv   rx   r3   )rl   r   rm   pickledumpsloadsr   rz   )rq   rr   rs   r   objr   s         r'   test_pickler      sZ    U^^V,F-F--D
,,t
C<<D#.r*   size)Nr   )r   rc   )rf   re   )rd   re         )r   r   )r   rc   c                    [        [        5       5      nU c-  [        R                  " UR	                  U 5      5      (       d   eg [        R                  " U 5      (       a  U 4n UR	                  U 5      R
                  U :X  d   eg r/   )r   r   r    isscalarrz   shape)r   r   s     r'   test_rvs_sizer     se    
 &n&6
7C|{{3774=))));;t8Dwwt}""d***r*   c                     [         R                  " 5       n [        R                  R	                  S5      n[        XS9n[        R                  " SSSS9n[        X U R                  5       5        [        U R                  U5      UR                  U5      5        [         R                  " SSS9n [        XS9n[        X U R                  5       5        [        U R                  U5      UR                  U5      5        [         R                  " S	S
5      n [        XS9nU R                  5       nU R                  [        R                  " US   US   S-   5      5      n[        X%U R                  5       5        g )Nr   ry   rc   rx   num      $@      @)locscalerf   r_   )r   normr    r{   default_rngr
   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r:   urngr   urk   pvs         r'   test_with_scipy_distributionr     s   ::<D99  #D
!$
:C
Aqc"As$**,/DHHQK,::#R(D
!$
:Cs$**,/DHHQK,;;r3D
4
3C\\^F	"))F1Ivay{3	4B.r*   c                  r   [         R                  " 5       n [        R                  R	                  S5      n[        [        XS9 n[        R                  " SSSS9n[        X U R                  5       5        [        U R                  U5      UR                  U5      5        AS S S 5        g ! , (       d  f       g = f)Nr   ry   rc   rx   r   )r   r   r    r{   r   r   r
   r   r   r   r   )r:   r   r   r   s       r'   %test_NumericalInverseHermite_refcycler   '  s{    ::<D99  #D	3T	MQTKK1#&3djjl3SWWQZ0	 
N	M	Ms   AB((
B6c                 p   U R                  S5      nUR                  5       UR                  5       4n[        R                  " US   5      (       a
  [        XbX4S9  U R                  S5      n[        R                  " UR                  5      Ul        [        XQR                  5      R                  nUS:  d   eg )Nr   rc   rtolatoli  皙?)
rz   meanvarr    isfiniter   	vectorizer1   r   pvalue)r   r:   mv_exr   r   rz   mvpvals           r'   r   r   2  s    
''&/C	SWWY	B	{{588
''#,C||DHH%DH#xx(//D#::r*   c                 r   U R                  S5      nUR                  5       UR                  5       4n[        XbX4S9  XR	                  5       -  n[
        R                  " U5      n[
        R                  " USS9u  pXR	                  5       -  n	XS U	R                  & [        Xq5      R                  n
U
S:  d   eg )Nr   r   T)return_countsr   )rz   r   r   r   sumr    
zeros_likeuniquer   r   r   )r   r   r   r   r   rz   r   	obs_freqs_freqsr   s              r'   r   r   ?  s    
''&/C	SWWY	BBD4	ffhBb!IyyD1HAIIKE"kuzzY#**D#::r*   c                     Sn [         R                  " [        U S9   [        [	        5       SSS9  S S S 5        [         R                  " [        U S9   [        [	        5       SS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nz.102 : center moved into domain of distributionri   r   re   r   )centerrk   rk   )rn   warnsRuntimeWarningr	   r   )rp   s    r'   !test_warning_center_not_in_domainr   O  s^     ;C	nC	0">#3AfM 
1	nC	0">#3FC 
1	0 
1	0	0	0s   A-A>-
A;>
Brq   )r   r	   r   c                     [        [        R                  U 5      nSn[        R                  " [
        US9   U" [        5       SSS9  S S S 5        g ! , (       d  f       g = f)Nz17 : mode not in domainri   r   r   )r>   rk   )rl   r   rm   rn   r   r   r   )rq   rs   rp   s      r'   test_error_mode_not_in_domainr   Y  sB     U^^V,F
#C	{#	.~a7 
/	.	.s   A
Ac                      \ rS rSrS rS\R                  R                  SSS9\R                  R                  SSS9/r	S\
" 5       4SS	S
S/rS\
" 5       4S\
" 5       4S/r\R                  R                  S\	5      \R                  R                  S\5      \R                  R                  S\5      \R                  R!                  SS9S 5       5       5       5       rS rSrg)TestQRVSig  c                    Sn[         R                  " [        US9   [        [        R
                  U5      nU" [        5       5      nUR                  SS9  S S S 5        [        [        R
                  U5      nU" [        5       5      nSn[         R                  " [        US9   UR                  S[        R                  R                  S5      S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nz&`qmc_engine` must be an instance of...ri   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.re   rd   dr   )
rn   r   r   rl   r   rm   r   qrvsqmcHalton)r%   rq   rj   rs   gens        r'   test_input_validationTestQRVS.test_input_validationj  s    8]]:U3U^^V4F)*CHHH" 4 0^%&H]]:U3HHqUYY%5%5a%8H9 43 43 43s   :C#.C+
C(+
C9Nrc   r   r}   re   )rc   rc   )r   r   )r  r  )rd   r   r  )re   re   qrngsize_in, size_outzd_in, d_outzfails in parallelreasonc                 H   [         R                  S:H  =(       a    [        R                  " 5       S   S:H  nU(       a  US:X  a  [        R                  " S5        [        5       n[        [        R                  U5      n	U	" U5      n
UbH  UbE  UR                  U:w  a5  Sn[        R                  " [        US9   U
R                  X$US9  S S S 5        g Uc   Ub  UR                  S	:w  a  UR                  4nX5-   n[        U5      nU
R                  X$US
9nUb  UR                  U:X  d   eUbh  UR                  [         R"                  " U5      =(       d    S	5      n[        R$                  R'                  U5      R)                  U5      n[+        UUSS9  g g ! , (       d  f       g = f)Nwin32r   32bitr	   z4NumericalInversePolynomial.qrvs fails for Win 32-bitr   ri   r   rc   r   r   r   -q=r   )sysplatformarchitecturern   xfailr   rl   r   rm   r   r   r   r   r   r   r{   r    prodr   r   reshaper   )r%   r
  size_insize_outd_ind_outrq   w32r:   rs   r  rj   shape_expectedqrng2r   uniformqrvs2s                    r'   test_QRVS_shape_consistency$TestQRVS.test_QRVS_shape_consistency  sc    llg%O(*?*?*A!*D*O699LL " # 0Tl  0TVVt^LEz7T: 8 <D,1VVIE!)xxWx>::///ll2777#3#8q9GJJNN7+33NCED%e4  87s   6F
F!c                    [        5       n[        [        R                  U5      nU" U5      nSnSn[        R                  R                  USS9n[        R                  R                  USS9nUR                  [        R                  " U5      5      n	UR                  XVUS9n
[        R                  R                  U	5      n[        U5       H,  nU
SU4   nUS S 2U4   R                  U5      n[        XSS9  M.     g )	N)re   r   r   r   r  r  .r  r  )r   rl   r   rm   r   r  r{   r    r  r   r   r   ranger  r   )r%   rq   r:   rs   r  r   r   r
  r   r!  r   r"  isamplesample2s                  r'   test_QRVS_size_tupleTestQRVS.test_QRVS_size_tuple  s     0Tlyy*		   +,,rwwt}-xxT4x8

w'qA#q&\FAqDk))$/GF%8 r*   r3   )r5   r6   r7   r8   r  r   r   Sobolr  qrngstuplesizesdsrn   markparametrizethread_unsafer#  r*  r9   r3   r*   r'   r   r   g  s    : 599??11?-uyy/?/?/?/JKEEG_i+-E /Auw<	3B[[VU+[[0%8[[]B/[[&9: 5 ; 0 9 , 5D9r*   r   c            
       0   \ rS rSr " S S5      r " S S5      r " S S5      r\" 5       \" 5       \" S5      \" S	5      /rSS
/rSS/r	S\
R                  /rS	\
R                  /r\\	\\/r\R                   R#                  S\" \" \\5      5      5      \R                   R)                  SS9S 5       5       rS \S4/r\\-  r\R                   R#                  S\5      S 5       r\R                   R#                  S\5      S 5       r\R                   R#                  S\5      S 5       r\R                   R#                  S/ SQ5      S 5       rS r\R                   R#                  SS\
R@                  \
R                  SS/5      S  5       r!\
RD                  " S!S"S#S$9/ / /\
R@                  /\
R                  * \
R@                  \
R                  /S!\
R@                  S%S/S&S'\
R                  // S(Q//r#\R                   R#                  S)\#5      S* 5       r$S+ r%S,r&g-).TestTransformedDensityRejectioni  c                   ,    \ rS rSrS rS rS rS rSrg)%TestTransformedDensityRejection.dist0i  c                     SSX-  -
  -  $ N      ?rc   r3   r$   s     r'   r(   )TestTransformedDensityRejection.dist0.pdf      !AC%= r*   c                     SSU-  -  $ )Nr:  r3   r$   s     r'   r,   *TestTransformedDensityRejection.dist0.dpdf  s    "Q$<r*   c                 "    SXS-  S-  -
  S-   -  $ Nr:  re   gUUUUUU?r3   r$   s     r'   r1   )TestTransformedDensityRejection.dist0.cdf      !d1f*s*++r*   c                     gN)rc   r3   r%   s    r'   r   -TestTransformedDensityRejection.dist0.support      r*   r3   N	r5   r6   r7   r8   r(   r,   r1   r   r9   r3   r*   r'   dist0r7    s    	!	 	,	r*   rK  c                   &    \ rS rSrS rS rS rSrg)%TestTransformedDensityRejection.dist1i  c                 F    [         R                  R                  US-  5      $ Nr   r   r   _pdfr$   s     r'   r(   )TestTransformedDensityRejection.dist1.pdf      ::??1s7++r*   c                 T    U* S-  [         R                  R                  US-  5      -  $ )N{Gz?r   rP  r$   s     r'   r,   *TestTransformedDensityRejection.dist1.dpdf  s$    29uzzq3w777r*   c                 F    [         R                  R                  US-  5      $ rO  r   r   _cdfr$   s     r'   r1   )TestTransformedDensityRejection.dist1.cdf  rS  r*   r3   Nr4   r3   r*   r'   dist1rM    s    	,	8	,r*   r[  c                   ,    \ rS rSrS rS rS rS rSrg)%TestTransformedDensityRejection.dist2i  c                     Xl         g r/   shiftr%   r`  s     r'   r   .TestTransformedDensityRejection.dist2.__init__  s    Jr*   c                 P    XR                   -  nS[        U5      S-   -  nSU-  U-  $ Nr         ?r`  absr%   r&   ys      r'   r(   )TestTransformedDensityRejection.dist2.pdf  -    OAc!frk"A7Q;r*   c                 d    XR                   -  nS[        U5      S-   -  nX"-  U-  nUS:  a  U$ U* $ )Nr   r^   rf  rh  s      r'   r,   *TestTransformedDensityRejection.dist2.dpdf  s=    OAc!frk"A	AR1(qb(r*   c                 P    XR                   -  nUS::  a  SSU-
  -  $ SSSU-   -  -
  $ Nr^   re  r   r_  r$   s     r'   r1   )TestTransformedDensityRejection.dist2.cdf  5    OABwb1f~%C26N**r*   r_  N)	r5   r6   r7   r8   r   r(   r,   r1   r9   r3   r*   r'   dist2r]    s    		
	)	+r*   rr  r^        @?rU  dist, mv_exdeadlocks for unknown reasonsr  c                     [         R                  " 5          [         R                  " S[        5        [	        USS9nS S S 5        [        WX5        g ! , (       d  f       N= f)Nignore*   ry   )warningscatch_warningssimplefilterr   r   r   r%   r:   r   r   s       r'   
test_basic*TestTransformedDensityRejection.test_basic  sF     $$&!!(N;-dDC ' 	3,	 '&s   &A
Ac                     g)Nr   r3   r@   s    r'   rA   (TestTransformedDensityRejection.<lambda>  s    1r*   50 : bad construction points.pdf, err, msgc                      " S S5      nXl         S Ul        [        R                  " X#S9   [	        U5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg):TestTransformedDensityRejection.test_bad_pdf.<locals>.disti  r3   Nr5   r6   r7   r8   r9   r3   r*   r'   r:   r        r*   r:   c                     gr   r3   r@   s    r'   rA   >TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>  s    ar*   ri   r(   r,   rn   r   r   r%   r(   ro   rp   r:   s        r'   test_bad_pdf,TestTransformedDensityRejection.test_bad_pdf  s8    	 		]]3*'- +**s   A
Azdpdf, err, msgc                      " S S5      nS Ul         Xl        [        R                  " X#S9   [	        USS9  S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg);TestTransformedDensityRejection.test_bad_dpdf.<locals>.disti  r3   Nr  r3   r*   r'   r:   r    r  r*   r:   c                     U $ r/   r3   r@   s    r'   rA   ?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>  s    Qr*   ri   rc   rf   r   r  )r%   r,   ro   rp   r:   s        r'   test_bad_dpdf-TestTransformedDensityRejection.test_bad_dpdf  s:    	 		]]3*'W= +**s   A
Arg   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fNri   r   )rn   r   r   r   r%   rk   ro   rp   s       r'   test_inf_nan_domains4TestTransformedDensityRejection.test_inf_nan_domains#  s'    ]]3*'(8H +**   1
?construction_points)rF  r   r   c                     [         R                  " [        SS9   [        [	        5       US9  S S S 5        g ! , (       d  f       g = f)Nz1`construction_points` must be a positive integer.ri   r  rn   r   r   r   r   r%   r  s     r'   #test_bad_construction_points_scalarCTestTransformedDensityRejection.test_bad_construction_points_scalar(  s;    ]]: .D E' 6IE E Es	   6
Ac                    / n[         R                  " [        SS9   [        [	        5       US9  S S S 5        / SQn[         R
                  " [        SS9   [        [	        5       US9  S S S 5        [        R                  [        R                  [        R                  /n[         R                  " [        SS9   [        [	        5       US9  S S S 5        SS/n[         R
                  " [        S	S9   [        [	        5       S
US9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f)NzC`construction_points` must either be a scalar or a non-empty array.ri   r  )rc   rc   rc   rc   rc   rc   z:33 : starting points not strictly monotonically increasingr  rf   z!50 : starting point out of domain)re   )rk   r  )
rn   r   r   r   r   r   r   r    rO   r   r  s     r'   "test_bad_construction_points_arrayBTestTransformedDensityRejection.test_bad_construction_points_array0  s    ]]: .M N ( 6IN 1\\. 1> ? ( 6I?  "vvrvvrvv6]]; /9 :' 6I:  #Bi\\. 1: ;' $7; ;5N N? ?: :; ;s/   DD7D./D?
D
D+.
D<?
Ec      r   r   c                     Sn[         R                  " [        US9   [        [	        5       SS9  S S S 5        g ! , (       d  f       g = f)Nz`c` must either be -0.5 or 0.ri   r  )r  r  )r%   r  rp   s      r'   
test_bad_c*TestTransformedDensityRejection.test_bad_cT  s.    .]]:S1'(8C@ 211	   8
Ar   rc     r   re  r_   r`   r>  re   r   r   c                 2   [        [        5       SS9n[        R                  " 5          Sn[        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        UR                  U5      n[        R                  R                  U5      nS S S 5        [        WWS	S
S9  UR                  UR                  :X  d   eg ! , (       d  f       N7= f)NgH.?)max_squeeze_hat_ratioinvalid value encountered in rx  greatergreater_equalless
less_equalMbP?h㈵>r   )r   r   rz  r{  filterwarningsr   ppf_hatr   r   r   r   r   )r%   r   r   rp   resexpecteds         r'   test_ppf_hat,TestTransformedDensityRejection.test_ppf_hat^  s     *.*:@FH $$&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q++a.Czz~~a(H ' 	XDt<yyHNN*** '&s   B/D
Dc                 ,    " S S5      nSn[         R                  " [        US9   [        U5        S S S 5         " S S5      nSn[         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)Nc                       \ rS rSrSrg);TestTransformedDensityRejection.test_bad_dist.<locals>.distis  r3   Nr  r3   r*   r'   r:   r  s  s    r*   r:   z`pdf` required but not found.ri   c                       \ rS rSrS rSrg)r  i{  c                     SX -  -
  $ r   r3   r@   s    r'   rA   DTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>|  s
    AacEr*   r3   Nr5   r6   r7   r8   r(   r9   r3   r*   r'   r:   r  {  s    !Cr*   z`dpdf` required but not found.)rn   r   r   r   )r%   r:   rp   s      r'   test_bad_dist-TestTransformedDensityRejection.test_bad_distq  so    	 	 /]]:S1'- 2	" 	" 0]]:S1'- 21 21 21s   A4B4
B
Br3   N)'r5   r6   r7   r8   rK  r[  rr  distsmv0mv1r    rK   mv2mv3mvsrn   r1  r2  listzipr3  r~  r   bad_pdfsbad_pdfs_commonr  bad_dpdf_commonr  inf_nan_domainsr  r  r  rO   r  r   r   r  r  r9   r3   r*   r'   r5  r5    sH    , ,+ +, WeguRy%-8E v,Ct*Crvv,C266
CS#
C[[]!#eS/24[[&EF- G4- k+KLMHH[[_h7. 8. [[-?> @> [[/AI BI [[2LA B"H [[S3R"@AA BA
 
Qt	$b2$66'266266	"A663
sC0*	=	?A [[S!$+ %+$.r*   r5  c            	          \ rS rSr1 Skr\R                  R                  S\5      S 5       r	S \
S4S \
S4S \
S	4S
 \S4S \
S4S \S4S \S4/r\R                  R                  S\5      S 5       r\R                  R                  S/ SQ/ SQ/5      S 5       r\R                  R                  S\5      S 5       r\R(                  * \R(                  4\R(                  \R(                  4\R(                  * \R(                  * 4S\R(                  4\R(                  * S4/r\R                  R                  S\5      S 5       rS rS rS rS rg!)"TestDiscreteAliasUrni  >   randintnchypergeom_fishernchypergeom_walleniusdistname, paramsc                    XR                   ;   a  Sn[        R                  " U5        [        U[        5      (       d  UnO[        [        U5      nU" U6 nUR                  5       n[        R                  " US   US   -
  5      (       d  [        R                  " S5        [        R                  " US   US   S-   5      nUR                  U5      nUR                  S5      n[        USS9n	[        XU5        g )NzYDAU fails on these probably because of large domains and small computation errors in PMF.rc   r   z$DAU only works with a finite domain.r   ry  ry   )basic_fail_distsrn   skip
isinstancestrrl   r   r   r    r   r   r   r   r   
r%   distnameparamsrp   r:   rk   kr   r   r   s
             r'   r~  TestDiscreteAliasUrn.test_basic  s    ,,,:CKK(C((D5(+DV}{{6!9vay011 KK>?IIfQi1-XXa[

4 t"5CU+r*   c                 "    [         R                  $ r/   rJ   r@   s    r'   rA   TestDiscreteAliasUrn.<lambda>      266r*   ra   c                 "    [         R                  $ r/   rN   r@   s    r'   rA   r    r  r*   c                     g)Nr^   r3   r@   s    r'   rA   r    s    3r*   rb   c                     [         $ r/   rE   r@   s    r'   rA   r    s    3r*   rH   c                     / $ r/   r3   r@   s    r'   rA   r    s    2r*   z)setting an array element with a sequence.c                     U * $ r/   r3   r@   s    r'   rA   r    s    A2r*   z50 : probability < 0c                      grQ   r3   r3   r*   r'   rA   r    s    r*   rS   zpmf, err, msgc                      " S S5      nXl         [        R                  " X#S9   [        USS9  S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)/TestDiscreteAliasUrn.test_bad_pmf.<locals>.disti  r3   Nr  r3   r*   r'   r:   r    r  r*   r:   ri   r  r   )r   rn   r   r   )r%   r   ro   rp   r:   s        r'   test_bad_pmf!TestDiscreteAliasUrn.test_bad_pmf  s3    	 	]]3*T'2 +**s	   9
Ar   )r<   r;   r=   )r   r   g      @      @r   g      @c                 ^   [         R                  " U[         R                  S9n[        USS9nUR	                  S5        XR                  5       -  n[         R                  " S[        U5      5      n[         R                  " X1S9n[         R                  " X4-
  S-  US9nXE4n[        X!U5        g )N)dtyperv   ry   r   r   )weightsrd   )
r    asarrayfloat64r   rz   r   r   lenaverager   )r%   r   r   variates
m_expected
v_expectedmv_expecteds          r'   test_sampling_with_pv*TestDiscreteAliasUrn.test_sampling_with_pv  s     ZZ"**-r4&&(]99QB(ZZ5
ZZ!61 <bI
 ,C[1r*   pv, msgc                     [         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = fNri   rn   r   r   r   r%   r   rp   s      r'   test_bad_pv TestDiscreteAliasUrn.test_bad_pv  s$    ]]:S1R  211   /
=r   rk   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fNzmust be finiteri   rf   r_   r   )rn   r   r   r   r   r   r%   rk   s     r'   test_inf_domain$TestDiscreteAliasUrn.test_inf_domain  s3    ]]:->?U[[S1&A @??    A
Ac                     [         R                  " [        SS9   [        SS/SS9  S S S 5        g ! , (       d  f       g = f)Nzrelative urn size < 1.ri   re  rF  )
urn_factor)rn   r   r   r   rG  s    r'   test_bad_urn_factor(TestDiscreteAliasUrn.test_bad_urn_factor  s,    \\.0IJc3ZB7 KJJs   0
>c                     Sn " S S5      n[         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = f)NzG`domain` must be provided when the probability vector is not available.c                       \ rS rSrS rSrg)0TestDiscreteAliasUrn.test_bad_args.<locals>.disti  c                     U$ r/   r3   r$   s     r'   r   4TestDiscreteAliasUrn.test_bad_args.<locals>.dist.pmf  s    r*   r3   N)r5   r6   r7   r8   r   r9   r3   r*   r'   r:   r    s    r*   r:   ri   r  )r%   rp   r:   s      r'   test_bad_args"TestDiscreteAliasUrn.test_bad_args  s7    7	 	 ]]:S1T" 211s	   ;
A	c                     [         R                  " [        R                  " S5      5      n[	        USS9n[        X!SSS9  g )N)i  ry  ry   )g     @g    
Ag{Gzt?)r   )r   softmaxr    onesr   r   )r%   r   r   s      r'   test_gh19359!TestDiscreteAliasUrn.test_gh19359  s5    __RWWW-.r3C%C!%	'r*   r3   N)r5   r6   r7   r8   r  rn   r1  r2  r   r~  r   	NameErrorr   	TypeErrorbad_pmfr  r  bad_pv_commonr  r    rK   
inf_domainr  r  r  r  r9   r3   r*   r'   r  r    s    [[/>, ?,2 
:	5	7 
:	5	7 

	4	6 
		%	' 
z	5	7 
{	 	" 
i	8	:)G0 [[_g63 73 [[T$5$B$D E
2E
2 [[Y6! 7! FF7BFF#bffbff%5"&&7Ibff+|-J [[Xz2B 3B8	#'r*   r  c                      \ rS rSr " S S5      r " S S5      r " S S5      r " S S	5      r\" 5       \" 5       \" 5       \" 5       /rS
S/r	S
S/r
S\R                  -  SS\R                  S-  -  -
  /rS\R                  -  SS\R                  S-  -  -
  /r\	\
\\/r\R"                  R%                  SS9\R"                  R'                  S\" \" \\5      5      5      S 5       5       r\R"                  R.                  \R"                  R'                  S\5      S 5       5       r\R"                  R'                  S\5      S 5       r\R"                  R'                  S\5      S 5       r\R"                  R'                  S\5      S 5       r\R@                  " SSS S!9/ / /\RB                  /\RD                  * \RB                  \RD                  /S\RB                  S"S#/S$S%\RD                  // S&Q//r#\R"                  R'                  S'\#5      S( 5       r$\R@                  " S)S*S S!9/ / /\RB                  /\RD                  * \RB                  \RD                  /S\RB                  S"S#/S$S%\RD                  /\RD                  * S+S,///r%\R"                  R'                  S-\%5      S. 5       r&\R"                  RN                  S/ 5       r(SS0S1\RD                  \RB                  /r)S2S#\RD                  \RB                  /r*\R"                  R'                  S3\)5      S4 5       r+\R"                  R'                  S5\*5      S6 5       r,S7 r-S8 r.S9r/g:);TestNumericalInversePolynomiali  c                   &    \ rS rSrS rS rS rSrg)$TestNumericalInversePolynomial.dist0i  c                     SSX-  -
  -  $ r9  r3   r$   s     r'   r(   (TestNumericalInversePolynomial.dist0.pdf  r<  r*   c                 "    SXS-  S-  -
  S-   -  $ rA  r3   r$   s     r'   r1   (TestNumericalInversePolynomial.dist0.cdf  rC  r*   c                     grE  r3   rG  s    r'   r   ,TestNumericalInversePolynomial.dist0.support  rI  r*   r3   Nr5   r6   r7   r8   r(   r1   r   r9   r3   r*   r'   rK  r'    s    	!	,	r*   rK  c                        \ rS rSrS rS rSrg)$TestNumericalInversePolynomial.dist1i  c                 F    [         R                  R                  US-  5      $ rO  rP  r$   s     r'   r(   (TestNumericalInversePolynomial.dist1.pdf  rS  r*   c                 F    [         R                  R                  US-  5      $ rO  rX  r$   s     r'   r1   (TestNumericalInversePolynomial.dist1.cdf	  rS  r*   r3   N)r5   r6   r7   r8   r(   r1   r9   r3   r*   r'   r[  r0    s    	,	,r*   r[  c                   &    \ rS rSrS rS rS rSrg)$TestNumericalInversePolynomial.dist2i  c                 h    SSS[         R                  " S[         R                  -  U-  5      -   -  -   $ )N皙??rc   rd   r    sinr"   r$   s     r'   r(   (TestNumericalInversePolynomial.dist2.pdf  s,    $!bffQruuWQY&7"7888r*   c                     SUS-   -  SSS[         R                  -  SU-   -  -   [         R                  " S[         R                  -  U-  5      -
  -  S[         R                  -  -  -   $ )Nr8  rc   g?r   r   r  r    r"   cosr$   s     r'   r1   (TestNumericalInversePolynomial.dist2.cdf  s_    !a%LbhA..255
1CCDX  r*   c                     grE  r3   rG  s    r'   r   ,TestNumericalInversePolynomial.dist2.support  rI  r*   r3   Nr.  r3   r*   r'   rr  r6    s    	9	 
	r*   rr  c                   &    \ rS rSrS rS rS rSrg)$TestNumericalInversePolynomial.dist3i"  c                 n    SSSS[         R                  " S[         R                  -  U-  5      -   -  -   -  $ )Nr_   r8  r9  rc   rd   r:  r$   s     r'   r(   (TestNumericalInversePolynomial.dist3.pdf#  s1    $RVVAbeeGAI->)>!??@@r*   c                     US-  S-   SS[         R                  -  -  [         R                  " S[         R                  -  5      [         R                  " S[         R                  -  U-  5      -
  -  -   $ )Nr   re  g
ףp=
?rd   rf   r>  r$   s     r'   r1   (TestNumericalInversePolynomial.dist3.cdf&  s^    S53;qw266"RUU(3C3566!BEE'!)3D4E "F F Fr*   c                     g)N)r   r3   rG  s    r'   r   ,TestNumericalInversePolynomial.dist3.support*  rI  r*   r3   Nr.  r3   r*   r'   dist3rD  "  s    	A	F	r*   rL  r^   rt  rU  gܿUUUUUU?gQ?rd   g @rv  r  ru  c                 0    [        USS9n[        X1U5        g )Nry  ry   )r	   r   r}  s       r'   r~  )TestNumericalInversePolynomial.test_basic6  s     )B?3e,r*   r  c                    / SQn/ SQnS/nX;   a  [         R                  " SU 35        X;   a  [         R                  " SU 35        [        U[        5      (       a  [	        [
        U5      OUnU" U6 n[        R                  " 5          [        R                  " S[        5        [        USS9nS S S 5        X;   a  g [        WXfR                  5       UR                  5       /5        g ! , (       d  f       N?= f)	N)anglit
gausshyperkappa4ksonekstwolevy_llevy_stablestudentized_range	trapezoidtriangvonmises)	chi2fatiguelifegibrathalfgennormlognormncfncx2paretotrel_breitwignerzPINV too slow for zPINV fails for rx  ry  ry   )rn   r  r  r  rl   r   rz  r{  r|  r   r	   r   r   r   )r%   r  r  very_slow_dists
fail_distsskip_sample_moment_checkr:   r   s           r'   test_basic_all_scipy_dists9TestNumericalInversePolynomial.test_basic_all_scipy_dists=  s    >-
 %6#6 &KK,XJ78!KK/(45h,, x( 	 V}$$&!!(N;,TCC ' /3yy{DHHJ&?@ '&s   	&C((
C6r  c                      " S S5      nXl         [        R                  " X#S9   [        USS/S9  S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)9TestNumericalInversePolynomial.test_bad_pdf.<locals>.distia  r3   Nr  r3   r*   r'   r:   rm  a  r  r*   r:   ri   r   r   r   )r(   rn   r   r	   r  s        r'   r  +TestNumericalInversePolynomial.test_bad_pdf_  s7    	 	]]3*&tQF; +**	   ;
A	zlogpdf, err, msgc                      " S S5      nXl         [        R                  " X#S9   [        USS/S9  S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)<TestNumericalInversePolynomial.test_bad_logpdf.<locals>.distii  r3   Nr  r3   r*   r'   r:   rr  i  r  r*   r:   ri   r   r   r   )logpdfrn   r   r	   )r%   rs  ro   rp   r:   s        r'   test_bad_logpdf.TestNumericalInversePolynomial.test_bad_logpdfg  s7    	 	]]3*&tQF; +**ro  rg   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rn   r   r	   r   r  s       r'   r  3TestNumericalInversePolynomial.test_inf_nan_domainsq  s'    ]]3*&~'7G +**r  r   rc   '  r   re  r   r_   r`   r  r   c                 6   [        5       n[        USS9n[        R                  " 5          Sn[        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        UR                  U5      n[        R                  R                  U5      nS S S 5        [        WWS	S	S
9  UR                  UR                  :X  d   eg ! , (       d  f       N7= fN+=u_resolutionr  rx  r  r  r  r  gdy=r   )r   r	   rz  r{  r  r   r   r   r   r   r   r%   r   r:   r   rp   r  r  s          r'   test_ppf'TestNumericalInversePolynomial.test_ppf      (EB $$&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q''!*Czz~~a(H ' 	XE>yyHNN*** '&   B/D


Dr  rf   re   r   r&   c                 6   [        5       n[        USS9n[        R                  " 5          Sn[        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        UR                  U5      n[        R                  R                  U5      nS S S 5        [        WWS	S	S
9  UR                  UR                  :X  d   eg ! , (       d  f       N7= frz  )r   r	   rz  r{  r  r   r1   r   r   r   r   )r%   r&   r:   r   rp   r  r  s          r'   test_cdf'TestNumericalInversePolynomial.test_cdf  r  r  c                     [        5       n[        USS9nUR                  5       u  p4US:  d   eXC::  d   e[        USS9nUR                  5       u  p4US:  d   eXC::  d   eg )N绽|=r|  r{  )r   r	   u_errorr%   r:   r   	max_errormaes        r'   test_u_error+TestNumericalInversePolynomial.test_u_error  sp    (EB	5   (EB	5   r*   g      @   g#B;orderc                     [        5       nSn[        R                  " [        US9   [	        X!S9  S S S 5        g ! , (       d  f       g = f)Nz2`order` must be an integer in the range \[3, 17\].ri   r  )r   rn   r   r   r	   )r%   r  r:   rp   s       r'   test_bad_orders.TestNumericalInversePolynomial.test_bad_orders  s1    C]]:S1&t9 211s	   
9
Ar}  c                     Sn[         R                  " [        US9   [        [	        5       US9  S S S 5        g ! , (       d  f       g = f)Nz.`u_resolution` must be between 1e-15 and 1e-5.ri   r|  )rn   r   r   r	   r   )r%   r}  rp   s      r'   test_bad_u_resolution4TestNumericalInversePolynomial.test_bad_u_resolution  s2    ?]]:S1&~'74@B 211r  c                     " S S5      nU" 5       nSn[         R                  " [        US9   [        U5      nS S S 5        [	        5       n[        U5      nSn[         R                  " [        US9   UR                  S5        S S S 5         " S S5      nU" 5       n[        U5      nS	n[         R                  " [        US9   UR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Np= f! , (       d  f       g = f)
Nc                       \ rS rSrS rSrg)=TestNumericalInversePolynomial.test_bad_args.<locals>.BadDisti  c                 @    [         R                  R                  U5      $ r/   rX  r$   s     r'   r1   ATestNumericalInversePolynomial.test_bad_args.<locals>.BadDist.cdf  s    zzq))r*   r3   N)r5   r6   r7   r8   r1   r9   r3   r*   r'   BadDistr        *r*   r  z9Either of the methods `pdf` or `logpdf` must be specifiedri   z4`sample_size` must be greater than or equal to 1000.rf   c                       \ rS rSrS rSrg)BTestNumericalInversePolynomial.test_bad_args.<locals>.Distributioni  c                 :    [         R                  " SU-  U-  5      $ )Nr   r    r#   r$   s     r'   r(   FTestNumericalInversePolynomial.test_bad_args.<locals>.Distribution.pdf  s    vvdQhqj))r*   r3   Nr  r3   r*   r'   r   r    r  r*   r   z!Exact CDF required but not found.)rn   r   r   r	   r   r  )r%   r  r:   rp   r   r   s         r'   r  ,TestNumericalInversePolynomial.test_bad_args  s    	* 	* yJ]]:S1,T2C 2 (.E]]:S1KKO 2	* 	* ~(.2]]:S1KKM 21! 21 21 21s#   C1C-C>
C*-
C;>
Dc                      " S S5      nU" 5       nS Ul         [        U5      nU" 5       nS Ul        [        U5      n[        R                  " SSSS9n[        UR                  U5      UR                  U5      5        g )	Nc                       \ rS rSrSrg)JTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.MyDistr  r3   Nr  r3   r*   r'   MyDistr    r  r*   r  c                 <    [         R                  " U * U -  S-  5      $ Nrd   )mathr#   r@   s    r'   rA   LTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>  s    1"Q$q&!1r*   c                     U * U -  S-  $ r  r3   r@   s    r'   rA   r    s    r!tAvr*   r  gwJ?rx   r   )r(   r	   rs  r    r   r   r   )r%   r  dist_pdfr   dist_logpdfr   qs          r'   test_logpdf_pdf_consistency:TestNumericalInversePolynomial.test_logpdf_pdf_consistency  sm    	 	 81)(3 h-)+6KKf#.TXXa[1r*   r3   N)0r5   r6   r7   r8   rK  r[  rr  rL  r  r  r  r    r"   r  r  r  rn   r1  r3  r2  r  r  r~  xslowr   ri  r  r  bad_logpdfs_commonrt  r  r  r   rO   rK   r   r  r&   r  slowr  
bad_ordersbad_u_resolutionr  r  r  r  r9   r3   r*   r'   r%  r%    sl    , ,
 
"	 	 Weguw0E v,Ct*C;'"%%("22
3C;)GBEE1H,<<
=CS#
C[[&EF[[]!#eS/24-4 G- [[[[/:A ; A@ [[_o>< ?< [[/1CD< E< [[/AH BH 	Aqe$
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$+ %+  
S"%	("rdRVVH66'266266	"A663
sC0BFF7Aq/	B	DA [[S!$+ %+  [[	  	  S"bffbff-JtRVVRVV4[[Wj1: 2: [[^-=>B ?B62r*   r%  c            
       T   \ rS rSr " S S5      r " S S5      r\" 5       \" 5       /rSS\R                  -  -  SS	S
\R                  -  \R                  -  -  -
  /r	SSS	S\R                  -  \R                  -  -  -
  S-
  /r
\	\
/r\R                  R                  S\" \" \\5      5      5      \R                  R                  SSS/5      \R                  R"                  S 5       5       5       r\R                  R                  S\5      S 5       rS r\R                  R-                  S5      \R                  R.                  \R                  R                  S\5      S 5       5       5       r\R                  R5                  S5      \R                  R-                  S5      \R                  R7                  S
5      S 5       5       5       rS rSS\R<                  R?                  S5      /r \ RC                  \R<                  RE                  S5      5        S\#" 5       4SS/r$\R                  R                  S\ 5      \R                  R                  S \$5      \R                  R"                  S! 5       5       5       r%S" r&S# r'\RP                  " S$S%S&S'9/ / /\RR                  /\RT                  * \RR                  \RT                  /S\RR                  S(S)/S*S+\RT                  // S,Q//r+\R                  R                  S-\+5      S. 5       r,\R                  RZ                  S/ 5       r.S0r/g)1TestNumericalInverseHermitei  c                   ,    \ rS rSrS rS rS rS rSrg)!TestNumericalInverseHermite.dist0i  c                 b    SS[         R                  " S[         R                  -  U-  5      -   -  $ )Nre  r   r   r:  r$   s     r'   r(   %TestNumericalInverseHermite.dist0.pdf  s'    RVVBruuHQJ//00r*   c                 x    [         R                  [         R                  " S[         R                  -  U-  5      -  $ )Nr   r>  r$   s     r'   r,   &TestNumericalInverseHermite.dist0.dpdf  s&    55255
+++r*   c                     SS[         R                  -  SU-   -  -   [         R                  " S[         R                  -  U-  5      -
  S[         R                  -  -  $ )Nr   r   rc   r  r>  r$   s     r'   r1   %TestNumericalInverseHermite.dist0.cdf  sE    BEE1q5))BFF2bee8A:,>>2bee8LLr*   c                     grE  r3   rG  s    r'   r   )TestNumericalInverseHermite.dist0.support  rI  r*   r3   NrJ  r3   r*   r'   rK  r    s    	1	,	M	r*   rK  c                   ,    \ rS rSrS rS rS rS rSrg)!TestNumericalInverseHermite.dist1i  c                 "   US::  a>  [         R                  " S[         R                  -  U-  5      S-  [         R                  -  $ US:  a  gUS::  a>  [         R                  " S[         R                  -  U-  5      S-  [         R                  -  $ g )Nr   r   re  r^   r:  r$   s     r'   r(   %TestNumericalInverseHermite.dist1.pdf  ss    T	vvrBEEzQ./#5==BSvvrBEEzQ./#5== r*   c                 Z   US::  aL  [         R                  " S[         R                  -  U-  5      [         R                  -  [         R                  -  $ US:  a  gUS::  aL  [         R                  " S[         R                  -  U-  5      [         R                  -  [         R                  -  $ g )Nr   r   r^   re  r    r?  r"   r$   s     r'   r,   &TestNumericalInverseHermite.dist1.dpdf  s{    T	vvrBEEzQ./"%%7"%%??BSvvrBEEzQ./"%%7"%%?? r*   c                     US::  a0  SS[         R                  " S[         R                  -  U-  5      -
  -  $ US:  a  gUS::  a0  SS[         R                  " S[         R                  -  U-  5      -  -
  $ g )Nr         ?rc   r   r^   re  r:  r  r$   s     r'   r1   %TestNumericalInverseHermite.dist1.cdf   sk    T	q2662:*:#;;<<BSdRVVR"%%Z1,<%==== r*   c                     g)N)rF  re  r3   rG  s    r'   r   )TestNumericalInverseHermite.dist1.support(  s    r*   r3   NrJ  r3   r*   r'   r[  r    s    	>	@	>	r*   r[  rF  rd   rM  rc   r   g      пg      ?g      ?ru  r  re   r   c                 0    [        XSS9n[        XAU5        g )Nry  )r  rw   )r
   r   )r%   r:   r   r  r   s        r'   r~  &TestNumericalInverseHermite.test_basic2  s    
 &dbI3e,r*   rg   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rn   r   r
   r   r  s       r'   r  0TestNumericalInverseHermite.test_inf_nan_domains<  s'    ]]3*#N$4VD +**r  c           	         1 Skn1 SknX;   a  [         R                  " S5        X;   a  [         R                  " S5        [        R                  R                  S5      n[        [        U5      " U6 n[        U5      nUR	                  S5      n[        R                  " [        R                  " UR                  U5      UR                  U5      -
  5      [        R                  " UR                  U5      5      -  5      n	[        R                  " [        R                  " UR                  UR                  U5      5      U-
  5      5      n
U	S:  d   eU
S:  d   eg )	N>   rT  rU  skewnormrW  >   ra  nctbetawaldrS  invgaussr[  rR  geninvgaussnorminvgaussgenhyperbolicrX  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   rf   :0yE>r  )rn   r  r  r    r{   r   rl   r   r
   maxrg  r   r1   )r%   r  shapes
slow_distsrg  r   r:   fnir&   p_tolu_tols              r'   basic_test_all_scipy_dists6TestNumericalInverseHermite.basic_test_all_scipy_distsA  s    B
@
 !KK23! LLDEii##A&uh'0%d+JJrNrvvdhhqk#''!*45bffTXXa[6IIJrvvdhhswwqz2Q678t||u}}r*   zignore::RuntimeWarning)r  r  c                 &    U R                  X5        g r/   r  )r%   r  r  s      r'   ri  6TestNumericalInverseHermite.test_basic_all_scipy_distsZ  s     	''9r*   c                 (    U R                  SS5        g )N	truncnorm)r   rd   r  rG  s    r'   test_basic_truncnorm_gh171558TestNumericalInverseHermite.test_basic_truncnorm_gh17155b  s     	''X>r*   c                    Sn[         R                  " [        US9   [        [	        5       SS9  S S S 5        Sn[         R                  " [        US9   [        S5        S S S 5        Sn[         R                  " [        US9   [        [	        5       SS	9  S S S 5        g ! , (       d  f       Nt= f! , (       d  f       NV= f! , (       d  f       g = f)
Nz"`order` must be either 1, 3, or 5.ri   rd   r  z`cdf` required but not foundr   z!could not convert string to floatekkir|  )rn   r   r   r
   r   )r%   rj   s     r'   r  1TestNumericalInverseHermite.test_input_validationh  s    5]]:U3#N$4A> 4 /]]:U3#F+ 4 4]]:U3#N$4179 43 43 43 43s#   BB.B?
B+.
B<?
CNr   )   )r  )r   r      r  r   r  c                    [        5       n[        U5      n[        U5      nUR                  X!S9nUb  UR                  U:X  d   eUbE  [        U5      nUR                  US9n[        R                  R                  U5      n	[        Xy5        g g )N)r   rw   r   )r   r
   r   rz   r   r   r!  r   r   r   r   )
r%   r   r  r  r:   r  r   rz   r!  r   s
             r'   test_RVS$TestNumericalInverseHermite.test_RVSz  s     %d+}gg7g599(((%d+Dlll0G::>>'*DC&	 r*   c                     SnSn[         R                  " [        US9   [        [        R
                  " U6 5        S S S 5        [        [        R
                  " U6 SS9  g ! , (       d  f       N*= f)N)gdsz@g@e?zg98 : one or more intervals very short; possibly due to numerical problems with a pole or very flat tailri   r  r|  )rn   r   r   r
   r   r  )r%   r  rj   s      r'   test_inaccurate_CDF/TestNumericalInverseHermite.test_inaccurate_CDF  sU     :D \\.6#EJJ$78 7 	 

F 3$G	 76s   A
A-c                     [        5       n[        U5      n[        R                  " 5       n[        U5      n[	        UR                  SS9UR                  SS95        g )Nr   ry   )r   r
   r   r   r   rz   )r%   r[  fni1rr  fni2s        r'   test_custom_distribution4TestNumericalInverseHermite.test_custom_distribution  sI     &u-

&u-a0$(((2JKr*   r^   r   rx  r   re  r   r_   r`   r  r   c                 6   [        5       n[        USS9n[        R                  " 5          Sn[        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        [        R                  " SUS-   [
        5        UR                  U5      n[        R                  R                  U5      nS S S 5        [        WWS	S
S9  UR                  UR                  :X  d   eg ! , (       d  f       N7= f)Nr  r|  r  rx  r  r  r  r  g&.>gLa㧝=r   )r   r
   rz  r{  r  r   r   r   r   r   r   r~  s          r'   r  $TestNumericalInverseHermite.test_ppf  s    %d? $$&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q''!*Czz~~a(H ' 	XDu=yyHNN*** '&r  c                 X   [        5       n[        USS9nUR                  5       u  p4US:  d   eXC::  d   e[        R                  " 5          [        R
                  " S[        5        [        USS9nS S S 5        UR                  5       u  p4US:  d   eXC::  d   eg ! , (       d  f       N0= f)Nr  r|  rx  r{  )r   r
   r  rz  r{  r|  r   r  s        r'   r  (TestNumericalInverseHermite.test_u_error  s    %d?	5   $$&!!(N;)$UCC ' 	5    '&s   &B
B)r3   )0r5   r6   r7   r8   rK  r[  r  r    r"   r  r  r  rn   r1  r2  r  r  r3  r~  r  r  r  r  r  r   ri  	fail_slowparallel_threads_limitr  r  r{   r|   rngsappendr   r.  r/  r  r  r  r   rO   rK   r   r  r  r  r9   r3   r*   r'   r  r    s   
 " 8 WegE qw<q!BEE'"%%-00
1CQ"%%&&-
.C*C[[]!#eS/24[[Wq!f-[[-  .4- [[/AE BE2 [[ 89[[[[3X>: ?  ::
 [[1[[ 89[[''*? + : ?9 !RYY**1-.DKK		%%a()EG_i)?@E[[UD)[[0%8[['  9 *'HL 	B&
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$+ %+  [[   r*   r  c            
          \ rS rSr1 SkrS rS rS r\R                  R                  S\5      S 5       r\R                  " SS	S
S9/ / /\R                  /\R                   * \R                  \R                   /S\R                  SS/SS\R                   // SQ//r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                   * \R                   4\R                   \R                   4\R                   * \R                   * 4S\R                   4\R                   * S4/r\R                  R                  S\5      S 5       rSrg)TestDiscreteGuideTablei  >   r  r  r  c                     / SQn[         R                  R                  5       n[        R                  " [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr   g333333?g333333?   rw   guide_factorr    r{   r   rn   r   r   r   r%   r   r   s      r'   $test_guide_factor_gt3_raises_warning;TestDiscreteGuideTable.test_guide_factor_gt3_raises_warning  ;    yy$$&\\.)r1E *))   A
Ac                     / SQn[         R                  R                  5       n[        R                  " [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr	  r   r  r  r  s      r'   %test_guide_factor_zero_raises_warning<TestDiscreteGuideTable.test_guide_factor_zero_raises_warning  r  r  c                     / SQn[         R                  R                  5       n[        R                  " [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr	  rF  r  r  r  s      r'   )test_negative_guide_factor_raises_warning@TestDiscreteGuideTable.test_negative_guide_factor_raises_warning  s=     yy$$&\\.)r2F *))r  r  c                    XR                   ;   a  Sn[        R                  " U5        [        U[        5      (       d  UnO[        [        U5      nU" U6 nUR                  5       n[        R                  " US   US   -
  5      (       d  [        R                  " S5        [        R                  " US   US   S-   5      nUR                  U5      nUR                  S5      n[        USS9n	[        XU5        g )NzYDGT fails on these probably because of large domains and small computation errors in PMF.rc   r   z$DGT only works with a finite domain.r   ry  ry   )r  rn   r  r  r  rl   r   r   r    r   r   r   r   r   r  s
             r'   r~  !TestDiscreteGuideTable.test_basic  s    ,,,:CKK(C((D5(+DV}{{6!9vay011 KK>?IIfQi1-XXa[

4  B7CU+r*   r   rc   rx  r   re  r   r_   r`   r  r   c                 ^   Su  p#[         R                  " X#5      n[        USS9n[        R                  " 5          Sn[        R
                  " SUS-   [        5        [        R
                  " SUS-   [        5        [        R
                  " SUS-   [        5        [        R
                  " SUS	-   [        5        UR                  U5      n[         R                  R                  XU5      nS S S 5        [        WR                  WR                  5        [        Xx5        g ! , (       d  f       N:= f)
N)r   r   ry  ry   r  rx  r  r  r  r  )
r   r   r   rz  r{  r  r   r   r   r   )	r%   r   npr:   r   rp   r  r  s	            r'   r  TestDiscreteGuideTable.test_ppf  s    {{1  B7 $$&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q''!*C{{qQ/H ' 	SYY/S# '&s   B0D
D,r  c                     [         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = fr  )rn   r   r   r   r  s      r'   r  "TestDiscreteGuideTable.test_bad_pv*  s$    ]]:S1r" 211r  rk   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fr
  )rn   r   r   r   r   r   r  s     r'   r  &TestDiscreteGuideTable.test_inf_domain4  s3    ]]:->?u{{2s3FC @??r  r3   N)r5   r6   r7   r8   r  r  r  r  rn   r1  r2  r   r~  r    r   rO   rK   r   r  r"  r  r#  r  r9   r3   r*   r'   r  r    sl   FFG [[/>, ?,6 	Aqe$
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$$ %$$ [[Y6# 7# FF7BFF#bffbff%5"&&7Ibff+|-J [[Xz2D 3Dr*   r  c            	       b   \ rS rSr " S S5      r\" S5      \" S5      /rS\R                  /rS\R                  /r	\\	/r
\R                  R                  S\" \" \\
5      5      5      \R                  R                   S 5       5       r\R                  R                  S\5      S	 5       rS
 rSrg)TestSimpleRatioUniformsi:  c                   &    \ rS rSrS rS rS rSrg)TestSimpleRatioUniforms.disti>  c                     Xl         Xl        g r/   )r`  r>   ra  s     r'   r   %TestSimpleRatioUniforms.dist.__init__?  s    JIr*   c                 P    XR                   -  nS[        U5      S-   -  nSU-  U-  $ rd  rf  rh  s      r'   r(    TestSimpleRatioUniforms.dist.pdfC  rk  r*   c                 P    XR                   -  nUS::  a  SSU-
  -  $ SSSU-   -  -
  $ ro  r_  r$   s     r'   r1    TestSimpleRatioUniforms.dist.cdfH  rq  r*   )r>   r`  N)r5   r6   r7   r8   r   r(   r1   r9   r3   r*   r'   r:   r&  >  s    		
	+r*   r:   r^   rs  ru  c                     [        XR                  SS9n[        X1U5        [        XR                  UR                  UR                  5      SS9n[        X1U5        g )Nry  )r>   rw   )r>   cdf_at_moderw   )r   r>   r   r1   r}  s       r'   r~  "TestSimpleRatioUniforms.test_basicV  sM     "$YYRH3e,!$YY.2hhtyy.A/13 	3e,r*   rg   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rn   r   r   r   r  s       r'   r  ,TestSimpleRatioUniforms.test_inf_nan_domainsc  s'    ]]3* 0@ +**r  c                     [         R                  " [        SS9   [        [	        5       SSS9  S S S 5        g ! , (       d  f       g = f)Nz`pdf_area` must be > 0ri   r   rF  )r>   pdf_area)rn   r   r   r   r   rG  s    r'   r  %TestSimpleRatioUniforms.test_bad_argsh  s-    ]]:-FG 0q2F HGGs	   7
Ar3   N)r5   r6   r7   r8   r:   r  r    rK   r  r  r  rn   r1  r2  r  r  r3  r~  r  r  r  r9   r3   r*   r'   r$  r$  :  s    + +" "XtF|$E rvv,C266
C*C[[]!#eS/24[[- 4- [[/AA BAGr*   r$  c                   ,    \ rS rSrS rS rS rS rSrg)TestRatioUniformsin  c           	      :   [         R                  R                  n[        R                  " U" [        R                  " S5      5      5      [        R                  " S5      -  n[        R                  " U" S5      5      n[        XU* USS9n[        [         R                  " UR                  S5      S5      S   S:  S	5        [        S
 SSS[        R                  " S5      -  SS9n[        [         R                  " UR                  S5      S5      S   S:  S	5        g )Nrd   r   i90  umaxvminvmaxrw   i	  r   rc   r  Tc                 0    [         R                  " U * 5      $ r/   r  r@   s    r'   rA   6TestRatioUniforms.test_rv_generation.<locals>.<lambda>y  s    bffaRjr*   rF  r  expon)
r   r   r(   r    r!   r   r   kstestrz   r#   )r%   fvr   r  s        r'   test_rv_generation$TestRatioUniforms.test_rv_generationo  s     JJNNGGAbggajM"RWWQZ/GGAaDMAQBQUKU\\#''$-8;dBDI 0q!"266":EKU\\#''$-9!<tCTJr*   c                     [         R                  R                  n[        R                  " U" [        R                  " S5      5      5      [        R                  " S5      -  n[        R                  " U" S5      5      n[        XU* USS9n[        XU* USS9n[        XU* USS9nUR                  S5      UR                  S5      UR                  S5      pn[        Xx5        [        XR                  5       5        [        UR                  S5        [        U	R                  S5        [        XU* USS9n
[        XU* USS9nU
R                  S	S
9UR                  SS
9p[        UR                  5       U5        [        UR                  S	5        [        XU* USS9n[        XU* USS9n[        XU* USS9nUR                  5       UR                  S5      UR                  S5      nnn[        UU5        [        UU5        g )Nrd   r     r8  re   r	  )re   rc   r   )re   re   re   r     rc   r  )
r   r   r(   r    r!   r   rz   r   flattenr   )r%   r@  rA  r   gen1gen2gen3r1r2r3gen4gen5r4r5gen6gen7gen8r6r7r8s                       r'   
test_shapeTestRatioUniforms.test_shape}  s   JJNNGGAbggajM"RWWQZ/GGAaDMQaRadKQaRadKQaRadKXXa[$((4.$((62BRR&RXXt$RXXv&QaRabIQaRabIy)4888+<BRZZ\2&RXXy)QaRadKQaRadKQaRadKXXZ!dhhtnBRRr*   c                    [         R                  R                  n[        R                  " U" [        R                  " S5      5      5      [        R                  " S5      -  n[        R                  " U" S5      5      n[        XU* USS9nUR                  S5      n[        R                  R                  S5      n[        XU* X&S9nUR                  S5      n[        XX5        g )Nrd   r   rE  r8  rf   )
r   r   r(   r    r!   r   rz   r{   r|   r   )	r%   r@  rA  r9  rH  rK  r   rI  rL  s	            r'   r   #TestRatioUniforms.test_random_state  s    JJNNGGAbggajM"RWWQZ/wwqt}QNXXb\ii##D)QMXXb\Rr*   c                    [         R                  R                  n[        [        SS9   [        USSSS9  S S S 5        [        [        SS9   [        USSSS9  S S S 5        [        [        SS9   [        USSSS9  S S S 5        [        [        SS9   [        USSSS9  S S S 5        g ! , (       d  f       Nx= f! , (       d  f       Nf= f! , (       d  f       NT= f! , (       d  f       g = f)	Nzvmin must be smaller than vmaxri   rc   re   )r(   r9  r:  r;  zumax must be positiverF  r   )r   r   r(   assert_raisesr   r   )r%   r@  s     r'   test_exceptions!TestRatioUniforms.test_exceptions  s    JJNN:-MNaaaa8 O:-MNaaaa8 O :-DEabqq9 F:-DEaaaa8 FE ONNN FEEEs/   B(B9/C
C(
B69
C

C
C)r3   N)	r5   r6   r7   r8   rB  rX  r   r^  r9   r3   r*   r'   r6  r6  n  s    K8	9r*   r6  )gHz>r   )r  r   )Lr   r   rn   copyr   r  r  r  rz  numpyr    numpy.testingr   r   scipy.stats.samplingr   r   r   r	   r
   r   r   r   r   r]  scipyr   r   scipy.statsr   r   scipy.stats._distr_paramsr   r   scipy._lib._utilr   scipy._lib._gcutilsr   r   all_methodsfloaterrr   r  r  r  r  rO   rK   r"  r   bad_sized_domainsbad_domainsr  nan_domainsr1  r2  rt   r   r   r   r   r   r   r   r   r   r   r   r   r5  r  r%  r  r  r$  r6  r3   r*   r'   <module>rn     s        
    7	 	 	 +   1 < / 2	 	 #V^-=$>?&"345F$567!FN,<#=>)9 :;^%5qAB , ;'9h'I;<{F+{F+)LM& {F+{F+9h'I;<)LM" 9h'I;<{F+{F+)LM  	-.
Cj\FG	3JK	3JK	3Z<= 
7801	  [*+[*+ {,-ffbff{$45	vvgw&67ffrvvg%56	vvgrvv
$:;ffbffz#9:	 [*45ffbffz#9: +$'88$%& );7( 8&( );7/ 8/8	.#b );7/ 8/  "2 3	+3	+/*
 D  $C D8D8 $=$@$B CY9 Y9CY9x{. {.|r' r'j~2 ~2BW  W tdD dDN1G 1GhA9 A9r*   