
    (ph              	       (   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
Jr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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%\RL                  RN                  S:X  a  \RL                  RP                  S:  a  Sr)O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///S04S1S2\	R^                  S3/S44S1S2\	R`                  S3/S44S/S//S54/r1S6\2S74S8\2S74/r3S9\S:4S;\S:4/r4S<\S:4\	R`                  \	R`                  4\S:4\	R`                  * \	R`                  * 4\S:4\	R`                  \	R`                  * 4\S:4\	R`                  * \	R^                  4\2S=4\	R^                  \	R`                  4\2S=4/r5S \	R^                  4\2S=4\	R^                  \	R^                  4\2S=4/r6\Rn                  Rq                  S>\4\3-   \6-   5      \Rn                  Rq                  S?\%5      S@ 5       5       r9\Rn                  Rq                  S?\%5      SA 5       r:SB r;SC r<\Rn                  Rq                  S?\%5      SD 5       r=\Rn                  Rq                  SE/ SFQ5      SG 5       r>SH r?S_SI jr@S`SJ jrASK rB\Rn                  Rq                  SL/ SMQ5      SN 5       rC\Rn                  Rq                  SLSS/5       " SO SP5      5       rD " SQ SR5      rE " SS ST5      rF " SU SV5      rG " SW SX5      rH " SY SZ5      rI " S[ S\5      rJ " S] S^5      rKg)a    N)deepcopy)assert_allcloseassert_equalsuppress_warnings)TransformedDensityRejectionDiscreteAliasUrnDiscreteGuideTableNumericalInversePolynomialNumericalInverseHermiteRatioUniformsSimpleRatioUniformsUNURANError)raises)stats)special)	chisquarecramervonmises)distdiscretedistcont)check_random_statec                   &    \ 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     R/var/www/html/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:   modepypy)      
   z.unsupported operand type for float\(\): 'list'zmust be real number, not listc                     U * $ r/   r3   r&   s    r'   <lambda>rE   @   s    rr*   z...c                     / $ r/   r3   rD   s    r'   rE   rE   B       rr*   c                     [         $ r/   foorD   s    r'   rE   rE   D       sr*   name 'foo' is not definedc                 "    [         R                  $ r/   r    infrD   s    r'   rE   rE   F       rvvr*   c                 "    [         R                  $ r/   r    nanrD   s    r'   rE   rE   H   rP   r*   c                      gNr   r3   r3   r*   r'   rE   rE   J       Sr*   ,takes 0 positional arguments but 1 was givenc                 "    [         R                  $ r/   rN   rD   s    r'   rE   rE   Q   rP   r*   c                 "    [         R                  $ r/   rR   rD   s    r'   rE   rE   S   rP   r*   c                     / $ r/   r3   rD   s    r'   rE   rE   U   rG   r*   c                     [         $ r/   rI   rD   s    r'   rE   rE   W   rK   r*   c                      grU   r3   r3   r*   r'   rE   rE   Y   rV   r*   c                     / $ r/   r3   rD   s    r'   rE   rE   `   rG   r*   c                     [         $ r/   rI   rD   s    r'   rE   rE   b   rK   r*   c                 "    [         R                  $ r/   rN   rD   s    r'   rE   rE   d   rP   r*   c                 "    [         R                  $ r/   rR   rD   s    r'   rE   rE   f   rP   r*   c                      grU   r3   r3   r*   r'   rE   rE   h   rV   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)      rA   zmust be a length 2 tupler3   )rh   rg   zleft >= right)rg   rg   )rB   rB   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   )rm   errmsgmethodkwargsMethods         r'   test_bad_domainrv      s<    
 U^^V,F	s	&''' 
'	&	&s   A
Ac                 2   [        [        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        U" S0 UD6nUR	                  S5      n[
        R                  R                  S 5        U" S0 UDSS0D6nUR	                  S5      n[        Xg5        [
        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   r3   )rn   r   ro   r   rvsr    randomseedRandomStateMT19937	Generator)
rs   rt   ru   r}   rng1rng2rvs1rvs2seed1seed2s
             r'   test_random_stater      s@   U^^V,F D.F..D.F..D#. IINN3FD88C=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 )Nrx   ry   rz   )r   r   set_random_stater   r{   )r   r   rngr   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Nrg   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)NrJ   rB   rz      rm   ry   順 r   r   r   r{   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   rh   r   r   r   r   r   r   s      r'   func2'test_threading_behaviour.<locals>.func2   sO    E")$y78:	'GGFO 	'VVAYF6N	'r   )targetr   rJ   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 )Nry   rx   rz   r3   )rn   r   ro   pickledumpsloadsr   r{   )rs   rt   ru   r   objr   s         r'   test_pickler      sZ    U^^V,F-F--D
,,t
C<<D#.r*   size)Nr   )r   rg   )rB   rA   )rh   rA         )r   r   )r   rg   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    isscalarr{   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   r   rg   rz   num      $@      @)locscalerB   rc   )r   normr    r|   default_rngr   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r:   urngr   urm   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                 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   rg   rtolatoli  皙?)
r{   meanvarr    isfiniter   	vectorizer1   r   pvalue)r   r:   mv_exr   r   r{   mvpvals           r'   r   r   )  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   )r{   r   r   r   sumr    
zeros_likeuniquer   r   r   )r   r   r   r   r   r{   r   	obs_freqs_freqsr   s              r'   r   r   6  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 distributionrk   r   rA   r   )centerrm   rm   )rp   warnsRuntimeWarningr
   r   )rr   s    r'   !test_warning_center_not_in_domainr   F  s^     ;C	nC	0">#3AfM 
1	nC	0">#3FC 
1	0 
1	0	0	0s   A-A>-
A;>
Brs   )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 domainrk   r   r   )r>   rm   )rn   r   ro   rp   r   r   r   )rs   ru   rr   s      r'   test_error_mode_not_in_domainr   P  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      S 5       5       5       rS rSrg)TestQRVSi^  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...rk   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.rA   rh   dr   )
rp   r   r   rn   r   ro   r   qrvsqmcHalton)r%   rs   rl   ru   gens        r'   test_input_validationTestQRVS.test_input_validationa  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Nrg   r   r}   rA   )rg   rg   )r   r   )r  r  )rh   r   r  )rA   rA   qrngsize_in, size_outzd_in, d_outc                 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   rk   r   rg   r   r   r   -q=r   )sysplatformarchitecturerp   xfailr   rn   r   ro   r   r   r   r   r   r   r|   r    prodr   r   reshaper   )r%   r
  size_insize_outd_ind_outrs   w32r:   ru   r  rl   shape_expectedqrng2r   uniformqrvs2s                    r'   test_QRVS_shape_consistency$TestQRVS.test_QRVS_shape_consistencyw  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)rA   r   r   r   r  r  .r  r  )r   rn   r   ro   r   r  r|   r    r  r   r   r   ranger  r   )r%   rs   r:   ru   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dsrp   markparametrizer!  r(  r9   r3   r*   r'   r   r   ^  s    : 599??11?-uyy/?/?/?/JKEEG_i+-E /Auw<	3B[[VU+[[0%8[[]B/ 5 0 9 , 5D9r*   r   c            
          \ 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      S 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\
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"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      ?rg   r3   r$   s     r'   r(   )TestTransformedDensityRejection.dist0.pdf      !AC%= r*   c                     SSU-  -  $ )Nr7  r3   r$   s     r'   r,   *TestTransformedDensityRejection.dist0.dpdf  s    "Q$<r*   c                 "    SXS-  S-  -
  S-   -  $ Nr7  rA   gUUUUUU?r3   r$   s     r'   r1   )TestTransformedDensityRejection.dist0.cdf      !d1f*s*++r*   c                     gN)rg   r3   r%   s    r'   r   -TestTransformedDensityRejection.dist0.support      r*   r3   N	r5   r6   r7   r8   r(   r,   r1   r   r9   r3   r*   r'   dist0r4    s    	!	 	,	r*   rH  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   rM  r$   s     r'   r,   *TestTransformedDensityRejection.dist1.dpdf  s$    29uzzq3w777r*   c                 F    [         R                  R                  US-  5      $ rL  r   r   _cdfr$   s     r'   r1   )TestTransformedDensityRejection.dist1.cdf  rP  r*   r3   Nr4   r3   r*   r'   dist1rJ    s    	,	8	,r*   rX  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   rb   rc  re  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-   -  -
  $ Nrb   rb  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'   dist2rZ    s    		
	)	+r*   ro  rb        @?rR  dist, mv_exc                     [        5        nUR                  [        5        [        USS9nS S S 5        [	        WX5        g ! , (       d  f       N= fN*   r   )r   filterr   r   r   )r%   r:   r   supr   s        r'   
test_basic*TestTransformedDensityRejection.test_basic  s>      CJJ~&-dDC ! 	3,	 ! s    A  
Ac                     g)Nr   r3   rD   s    r'   rE   (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   rD   s    r'   rE   >TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>	  s    ar*   rk   r(   r,   rp   r   r   r%   r(   rq   rr   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   rD   s    r'   rE   ?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>  s    Qr*   rk   rg   rB   r   r  )r%   r,   rq   rr   r:   s        r'   test_bad_dpdf-TestTransformedDensityRejection.test_bad_dpdf  s:    	 		]]3*'W= +**s   A
Ari   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fNrk   r   )rp   r   r   r   r%   rm   rq   rr   s       r'   test_inf_nan_domains4TestTransformedDensityRejection.test_inf_nan_domains  s'    ]]3*'(8H +**   1
?construction_points)rC  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.rk   r  rp   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.rk   r  )rg   rg   rg   rg   rg   rg   z:33 : starting points not strictly monotonically increasingr|  rB   z!50 : starting point out of domain)rA   )rm   r  )
rp   r   r   r   r   r   r   r    rS   r   r  s     r'   "test_bad_construction_points_arrayBTestTransformedDensityRejection.test_bad_construction_points_array%  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.rk   r  )r  r  )r%   r  rr   s      r'   
test_bad_c*TestTransformedDensityRejection.test_bad_cI  s.    .]]:S1'(8C@ 211	   8
Ar   rg     r   rb  rc   rd   r;  rA   r   r   c                    [        [        5       SS9n[        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        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 greater*invalid value encountered in greater_equal!invalid value encountered in less'invalid value encountered in less_equalMbP?h㈵>r   )r   r   r   rv  r   ppf_hatr   r   r   r   r   )r%   r   r   rw  resexpecteds         r'   test_ppf_hat,TestTransformedDensityRejection.test_ppf_hatS  s     *.*:@FH  CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5++a.Czz~~a(H ! 	XDt<yyHNN*** ! s   B	C
C%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>.distii  r3   Nr  r3   r*   r'   r:   r  i  s    r*   r:   z`pdf` required but not found.rk   c                       \ rS rSrS rSrg)r  iq  c                     SX -  -
  $ r   r3   rD   s    r'   rE   DTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>r  s
    AacEr*   r3   Nr5   r6   r7   r8   r(   r9   r3   r*   r'   r:   r  q  s    !Cr*   z`dpdf` required but not found.)rp   r   r   r   )r%   r:   rr   s      r'   test_bad_dist-TestTransformedDensityRejection.test_bad_distg  so    	 	 /]]:S1'- 2	" 	" 0]]:S1'- 21 21 21s   A4B4
B
Br3   N)%r5   r6   r7   r8   rH  rX  ro  distsmv0mv1r    rO   mv2mv3mvsrp   r/  r0  ziprx  r   bad_pdfsbad_pdfs_commonr  bad_dpdf_commonr  inf_nan_domainsr  r  r  rS   r  r   r   r  r  r9   r3   r*   r'   r2  r2    s'    , ,+ +, WeguRy%-8E v,Ct*Crvv,C266
CS#
C[[] _.-.- 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*   r2  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!)"TestDiscreteAliasUrniy  >   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.rg   r   z$DAU only works with a finite domain.r   ru  r   )basic_fail_distsrp   skip
isinstancestrrn   r   r   r    r   r   r   r   r   
r%   distnameparamsrr   r:   rm   kr   r   r   s
             r'   rx  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/   rN   rD   s    r'   rE   TestDiscreteAliasUrn.<lambda>      266r*   re   c                 "    [         R                  $ r/   rR   rD   s    r'   rE   r    r  r*   c                     g)Nrb   r3   rD   s    r'   rE   r    s    3r*   rf   c                     [         $ r/   rI   rD   s    r'   rE   r    s    3r*   rL   c                     / $ r/   r3   rD   s    r'   rE   r    s    2r*   z)setting an array element with a sequence.c                     U * $ r/   r3   rD   s    r'   rE   r    s    A2r*   z50 : probability < 0c                      grU   r3   r3   r*   r'   rE   r    s    r*   rW   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:   rk   r  r   )r   rp   r   r   )r%   r   rq   rr   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)dtyperx   r   r   r   )weightsrh   )
r    asarrayfloat64r   r{   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Nrk   rp   r   r   r   r%   r   rr   s      r'   test_bad_pv TestDiscreteAliasUrn.test_bad_pv  s$    ]]:S1R  211   /
=r   rm   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fNzmust be finiterk   rB   rc   r   )rp   r   r   r   r   r   r%   rm   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.rk   rb  rC  )
urn_factor)rp   r   r   r   rD  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:   rk   r  )r%   rr   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  ru  r   )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  rp   r/  r0  r   rx  r   	NameErrorr   	TypeErrorbad_pmfr  r  bad_pv_commonr  r    rO   
inf_domainr  r  r  r  r9   r3   r*   r'   r  r  y  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                   F   \ 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\" \\5      5      S 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/ / /\R>                  /\R@                  * \R>                  \R@                  /S\R>                  S S!/S"S#\R@                  // S$Q//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@                  /\R@                  * S)S*///r#\R"                  R%                  S+\#5      S, 5       r$\R"                  RJ                  S- 5       r&SS.S/\R@                  \R>                  /r'S0S!\R@                  \R>                  /r(\R"                  R%                  S1\'5      S2 5       r)\R"                  R%                  S3\(5      S4 5       r*S5 r+S6 r,S7r-g8)9TestNumericalInversePolynomiali  c                   &    \ rS rSrS rS rS rSrg)$TestNumericalInversePolynomial.dist0i  c                     SSX-  -
  -  $ r6  r3   r$   s     r'   r(   (TestNumericalInversePolynomial.dist0.pdf  r9  r*   c                 "    SXS-  S-  -
  S-   -  $ r>  r3   r$   s     r'   r1   (TestNumericalInversePolynomial.dist0.cdf  r@  r*   c                     grB  r3   rD  s    r'   r   ,TestNumericalInversePolynomial.dist0.support  rF  r*   r3   Nr5   r6   r7   r8   r(   r1   r   r9   r3   r*   r'   rH  r    s    	!	,	r*   rH  c                        \ rS rSrS rS rSrg)$TestNumericalInversePolynomial.dist1i  c                 F    [         R                  R                  US-  5      $ rL  rM  r$   s     r'   r(   (TestNumericalInversePolynomial.dist1.pdf  rP  r*   c                 F    [         R                  R                  US-  5      $ rL  rU  r$   s     r'   r1   (TestNumericalInversePolynomial.dist1.cdf  rP  r*   r3   N)r5   r6   r7   r8   r(   r1   r9   r3   r*   r'   rX  r'    s    	,	,r*   rX  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皙??rg   rh   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                  -  -  -   $ )Nr/  rg   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rB  r3   rD  s    r'   r   ,TestNumericalInversePolynomial.dist2.support  rF  r*   r3   Nr%  r3   r*   r'   ro  r-    s    	9	 
	r*   ro  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      -   -  -   -  $ )Nrc   r/  r0  rg   rh   r1  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   rb  g
ףp=
?rh   rB   r5  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   rD  s    r'   r   ,TestNumericalInversePolynomial.dist3.support   rF  r*   r3   Nr%  r3   r*   r'   dist3r;    s    	A	F	r*   rC  rb   rq  rR  gܿUUUUUU?gQ?rh   g @rr  c                 0    [        USS9n[        X1U5        g rt  )r
   r   r%   r:   r   r   s       r'   rx  )TestNumericalInversePolynomial.test_basic,  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[        5        nUR                  [        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 ru  r   )rp   r  r  r  rn   r   r   rv  r   r
   r   r   r   )	r%   r  r  very_slow_dists
fail_distsskip_sample_moment_checkr:   rw  r   s	            r'   test_basic_all_scipy_dists9TestNumericalInversePolynomial.test_basic_all_scipy_dists2  s    >-
 %6#6 &KK,XJ78!KK/(45h,, x( 	 V} CJJ~&,TCC ! /3yy{DHHJ&?@ ! s   > C
C%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>.distiV  r3   Nr  r3   r*   r'   r:   re  V  r  r*   r:   rk   r   r   r   )r(   rp   r   r
   r  s        r'   r  +TestNumericalInversePolynomial.test_bad_pdfT  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>.disti^  r3   Nr  r3   r*   r'   r:   rj  ^  r  r*   r:   rk   r   r   r   )logpdfrp   r   r
   )r%   rk  rq   rr   r:   s        r'   test_bad_logpdf.TestNumericalInversePolynomial.test_bad_logpdf\  s7    	 	]]3*&tQF; +**rg  ri   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rp   r   r
   r   r  s       r'   r  3TestNumericalInversePolynomial.test_inf_nan_domainsf  s'    ]]3*&~'7G +**r  r   rg   '  r   rb  r   rc   rd   r  r   c                    [        5       n[        USS9n[        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        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  r  r  r  gdy=r   )
r   r
   r   rv  r   r   r   r   r   r   r%   r   r:   r   rw  r  r  s          r'   test_ppf'TestNumericalInversePolynomial.test_ppfz      (EB  CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5''!*Czz~~a(H ! 	XE>yyHNN*** !    B	C
C'r  rB   rA   r   r&   c                    [        5       n[        USS9n[        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        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rr  )
r   r
   r   rv  r   r1   r   r   r   r   )r%   r&   r:   r   rw  r  r  s          r'   test_cdf'TestNumericalInversePolynomial.test_cdf  ry  rz  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 Ng|=rt  rs  )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\].rk   r  )r   rp   r   r   r
   )r%   r  r:   rr   s       r'   test_bad_orders.TestNumericalInversePolynomial.test_bad_orders  s1    C]]:S1&t9 211s	   
9
Aru  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.rk   rt  )rp   r   r   r
   r   )r%   ru  rr   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/   rU  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 specifiedrk   z4`sample_size` must be greater than or equal to 1000.rB   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.)rp   r   r   r
   r   r  )r%   r  r:   rr   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>.MyDisti  r3   Nr  r3   r*   r'   MyDistr    r  r*   r  c                 <    [         R                  " U * U -  S-  5      $ Nrh   )mathr#   rD   s    r'   rE   LTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>  s    1"Q$q&!1r*   c                     U * U -  S-  $ r  r3   rD   s    r'   rE   r    s    r!tAvr*   r  gwJ?rz   r   )r(   r
   rk  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).r5   r6   r7   r8   rH  rX  ro  rC  r  r  r  r    r"   r  r  r  rp   r/  r0  r  rx  xslowr   ra  r  r  bad_logpdfs_commonrl  r  r  r   rS   rO   r   rw  r&   r|  slowr  
bad_ordersbad_u_resolutionr  r  r  r  r9   r3   r*   r'   r  r    sK    , ,
 
"	 	 Weguw0E v,Ct*C;'"%%("22
3C;)GBEE1H,<<
=CS#
C[[] _.-.- [[[[/: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            
          \ 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      \R                  R                  SSS/5      S 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                  R1                  S5      \R                  R)                  S5      S 5       5       rS rSS\R6                  R9                  S5      /r\R=                  \R6                  R?                  S5      5        S\ " 5       4SS/r!\R                  R                  S\5      \R                  R                  S \!5      S! 5       5       r"S" r#S# r$\RJ                  " S$S%S&S'9/ / /\RL                  /\RN                  * \RL                  \RN                  /S\RL                  S(S)/S*S+\RN                  // S,Q//r(\R                  R                  S-\(5      S. 5       r)\R                  RT                  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      -   -  $ )Nrb  r   r   r1  r$   s     r'   r(   %TestNumericalInverseHermite.dist0.pdf  s'    RVVBruuHQJ//00r*   c                 x    [         R                  [         R                  " S[         R                  -  U-  5      -  $ )Nr   r5  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   rg   r  r5  r$   s     r'   r1   %TestNumericalInverseHermite.dist0.cdf  sE    BEE1q5))BFF2bee8A:,>>2bee8LLr*   c                     grB  r3   rD  s    r'   r   )TestNumericalInverseHermite.dist0.support  rF  r*   r3   NrG  r3   r*   r'   rH  r    s    	1	,	M	r*   rH  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   rb  rb   r1  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   rb   rb  r    r6  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         ?rg   r   rb   rb  r7  r  r$   s     r'   r1   %TestNumericalInverseHermite.dist1.cdf  sk    T	q2662:*:#;;<<BSdRVVR"%%Z1,<%==== r*   c                     g)N)rC  rb  r3   rD  s    r'   r   )TestNumericalInverseHermite.dist1.support  s    r*   r3   NrG  r3   r*   r'   rX  r    s    	>	@	>	r*   rX  rC  rh   rD  rg   r   g      пg      ?g      ?rr  r  rA   r   c                 0    [        XSS9n[        XAU5        g )Nru  )r  ry   )r   r   )r%   r:   r   r  r   s        r'   rx  &TestNumericalInverseHermite.test_basic)  s     &dbI3e,r*   ri   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rp   r   r   r   r  s       r'   r  0TestNumericalInverseHermite.test_inf_nan_domains2  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        [        [        U5      " U6 n[        U5      n[        R                  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>   rL  rM  skewnormrO  >   rY  nctbetawaldrK  invgaussrS  rJ  geninvgaussnorminvgaussgenhyperbolicrP  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   rB   :0yE>r  )rp   r  r  r    r|   r}   rn   r   r   randmaxrd  r   r1   )
r%   r  shapes
slow_distsr_  r:   fnir&   p_tolu_tols
             r'   basic_test_all_scipy_dists6TestNumericalInverseHermite.basic_test_all_scipy_dists7  s    B
@
 !KK23! LLDE
		quh'0%d+IINN2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'   ra  6TestNumericalInverseHermite.test_basic_all_scipy_distsP  s     	''9r*   c                 (    U R                  SS5        g )N	truncnorm)r   rh   r  rD  s    r'   test_basic_truncnorm_gh171558TestNumericalInverseHermite.test_basic_truncnorm_gh17155X  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.rk   rh   r  z`cdf` required but not foundr   z!could not convert string to floatekkirt  )rp   r   r   r   r   )r%   rl   s     r'   r  1TestNumericalInverseHermite.test_input_validation]  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   ry   r   )r   r   r   r{   r   r   r  r   r   r   r   )
r%   r   r  r  r:   r  r   r{   r  r   s
             r'   test_RVS$TestNumericalInverseHermite.test_RVSo  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 tailrk   r  rt  )rp   r   r   r   r   r  )r%   r  rl   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   r   )r   r   r   r   r   r{   )r%   rX  fni1ro  fni2s        r'   test_custom_distribution4TestNumericalInverseHermite.test_custom_distribution  sI     &u-

&u-a0$(((2JKr*   rb   r   rp  r   rb  r   rc   rd   r  r   c                    [        5       n[        USS9n[        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                  [        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  rt  r  r  r  r  g&.>gLa㧝=r   )
r   r   r   rv  r   r   r   r   r   r   rv  s          r'   rw  $TestNumericalInverseHermite.test_ppf  s    %d?  CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5''!*Czz~~a(H ! 	XDu=yyHNN*** ! rz  c                 6   [        5       n[        USS9nUR                  5       u  p4US:  d   eXC::  d   e[        5        nUR	                  [
        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r  )r   r   r  r   rv  r   )r%   r:   r   r  r  rw  s         r'   r  (TestNumericalInverseHermite.test_u_error  s    %d?	5    CJJ~&)$UCC ! 	5    ! s     B


Br3   )-r5   r6   r7   r8   rH  rX  r  r    r"   r  r  r  rp   r/  r0  r  rx  r  r  r  filterwarningsr  r   ra  	fail_slowr  r  r|   r~   rngsappendr   r,  r-  r  r  r  r   rS   rO   r   rw  r  r  r9   r3   r*   r'   r  r    s   
 " 8 WegE qw<q!BEE'"%%-00
1CQ"%%&&-
.C*C[[] _.[[Wq!f-- ..- [[/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?r@   ry   guide_factorr    r|   r   rp   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  rC  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.rg   r   z$DGT only works with a finite domain.r   ru  r   )r  rp   r  r  r  rn   r   r   r    r   r   r   r	   r   r  s
             r'   rx  !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   rg   rp  r   rb  r   rc   rd   r  r   c                    Su  p#[         R                  " X#5      n[        USS9n[        5        nUR	                  [
        S5        UR	                  [
        S5        UR	                  [
        S5        UR	                  [
        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   ru  r   r  r  r  r  )	r   r   r	   r   rv  r   r   r   r   )	r%   r   npr:   r   rw  r  r  s	            r'   rw  TestDiscreteGuideTable.test_ppf  s    {{1  B7  CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5 ''!*C{{qQ/H ! 	SYY/S# ! s   B
C--
C;r  c                     [         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = fr  )rp   r   r   r	   r  s      r'   r  "TestDiscreteGuideTable.test_bad_pv!  s$    ]]:S1r" 211r  rm   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fr  )rp   r   r   r	   r   r   r  s     r'   r  &TestDiscreteGuideTable.test_inf_domain+  s3    ]]:->?u{{2s3FC @??r  r3   N)r5   r6   r7   r8   r  r  r  r  rp   r/  r0  r   rx  r    r   rS   rO   r   rw  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                   $   \ 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      S 5       r\R                  R                  S\5      S	 5       rS
 rSrg)TestSimpleRatioUniformsi1  c                   &    \ rS rSrS rS rS rSrg)TestSimpleRatioUniforms.disti5  c                     Xl         Xl        g r/   )r]  r>   r^  s     r'   r   %TestSimpleRatioUniforms.dist.__init__6  s    JIr*   c                 P    XR                   -  nS[        U5      S-   -  nSU-  U-  $ ra  rc  re  s      r'   r(    TestSimpleRatioUniforms.dist.pdf:  rh  r*   c                 P    XR                   -  nUS::  a  SSU-
  -  $ SSSU-   -  -
  $ rl  r\  r$   s     r'   r1    TestSimpleRatioUniforms.dist.cdf?  rn  r*   )r>   r]  N)r5   r6   r7   r8   r   r(   r1   r9   r3   r*   r'   r:   r  5  s    		
	+r*   r:   rb   rp  rr  c                     [        XR                  SS9n[        X1U5        [        XR                  UR                  UR                  5      SS9n[        X1U5        g )Nru  )r>   ry   )r>   cdf_at_modery   )r   r>   r   r1   rF  s       r'   rx  "TestSimpleRatioUniforms.test_basicM  sM     "$YYRH3e,!$YY.2hhtyy.A/13 	3e,r*   ri   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )rp   r   r   r   r  s       r'   r  ,TestSimpleRatioUniforms.test_inf_nan_domainsY  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 > 0rk   r   rC  )r>   pdf_area)rp   r   r   r   r   rD  s    r'   r  %TestSimpleRatioUniforms.test_bad_args^  s-    ]]:-FG 0q2F HGGs	   7
Ar3   N)r5   r6   r7   r8   r:   r  r    rO   r  r  r  rp   r/  r0  r  rx  r  r  r  r9   r3   r*   r'   r  r  1  s    + +" "XtF|$E rvv,C266
C*C[[] _.-.- [[/AA BAGr*   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestRatioUniformsid  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 )Nrh   r   i90  umaxvminvmaxry   i	  r   rg   r  Tc                 0    [         R                  " U * 5      $ r/   r  rD   s    r'   rE   6TestRatioUniforms.test_rv_generation.<locals>.<lambda>o  s    bffaRjr*   rC  r  expon)
r   r   r(   r    r!   r   r   kstestr{   r#   )r%   fvr   r  s        r'   test_rv_generation$TestRatioUniforms.test_rv_generatione  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 )Nrh   r     r/  rA   r	  )rA   rg   r   )rA   rA   rA   r     rg   r  )
r   r   r(   r    r!   r   r{   r   flattenr   )r%   r7  r8  r   gen1gen2gen3r1r2r3gen4gen5r4r5gen6gen7gen8r6r7r8s                       r'   
test_shapeTestRatioUniforms.test_shapes  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        [        XU* US9nUR                  S5      n[        XW5        g )Nrh   r   r<  r/  rB   )r0  r1  r2  )
r   r   r(   r    r!   r   r{   r|   r}   r   )r%   r7  r8  r0  r?  rB  r@  rC  s           r'   r   #TestRatioUniforms.test_random_state  s    JJNNGGAbggajM"RWWQZ/wwqt}QNXXb\
		tQ;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 vmaxrk   rg   rA   )r(   r0  r1  r2  zumax must be positiverC  r   )r   r   r(   assert_raisesr   r   )r%   r7  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   r9  rO  r   rU  r9   r3   r*   r'   r-  r-  d  s    K8	9r*   r-  )gHz>r   )r  r   )Lr   r   rp   copyr   r  r  r  numpyr    numpy.testingr   r   r   scipy.stats.samplingr   r   r	   r
   r   r   r   r   r   rT  scipyr   r   scipy.statsr   r   scipy.stats._distr_paramsr   r   scipy._lib._utilr   r   all_methodsimplementationnameversionfloaterrr  r  r  r  r  rS   rO   r  r   bad_sized_domainsbad_domainsr  nan_domainsr/  r0  rv   r   r   r   r   r   r   r   r   r   r   r   r2  r  r  r  r  r  r-  r3   r*   r'   <module>rg     s        
   J J	 	 	 +   1 < /	 	 #V^-=$>?&"345F$567!FN,<#=>)9 :;^%5qAB v%&&3@H/H ;'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X9 X9CX9v{. {.|r' r'j2 2DU  U pfD fDR0G 0GfA9 A9r*   