
    doiZ              	       ,   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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)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     [/var/www/html/land-ocr/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+   r0   __static_attributes__r2   r)   r&   r   r   "   s    9>r)   r   r   distr   ){Gz?
ףp=
?皙?r   r	   r
   r   )r9   modepypy)      
   z.unsupported operand type for float\(\): 'list'zmust be real number, not listc                     U * $ r.   r2   r%   s    r&   <lambda>rD   B   s    rr)   z...c                     / $ r.   r2   rC   s    r&   rD   rD   D       rr)   c                     [         $ r.   foorC   s    r&   rD   rD   F       sr)   name 'foo' is not definedc                 "    [         R                  $ r.   r   infrC   s    r&   rD   rD   H       rvvr)   c                 "    [         R                  $ r.   r   nanrC   s    r&   rD   rD   J   rO   r)   c                      gNr   r2   r2   r)   r&   rD   rD   L       Sr)   ,takes 0 positional arguments but 1 was givenc                 "    [         R                  $ r.   rM   rC   s    r&   rD   rD   S   rO   r)   c                 "    [         R                  $ r.   rQ   rC   s    r&   rD   rD   U   rO   r)   c                     / $ r.   r2   rC   s    r&   rD   rD   W   rF   r)   c                     [         $ r.   rH   rC   s    r&   rD   rD   Y   rJ   r)   c                      grT   r2   r2   r)   r&   rD   rD   [   rU   r)   c                     / $ r.   r2   rC   s    r&   rD   rD   b   rF   r)   c                     [         $ r.   rH   rC   s    r&   rD   rD   d   rJ   r)   c                 "    [         R                  $ r.   rM   rC   s    r&   rD   rD   f   rO   r)   c                 "    [         R                  $ r.   rQ   rC   s    r&   rD   rD   h   rO   r)   c                      grT   r2   r2   r)   r&   rD   rD   j   rU   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)      r@   zmust be a length 2 tupler2   )rg   rf   zleft >= right)rf   rf   )rA   rA   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domainr2   )getattrr   samplingpytestr   )rl   errmsgmethodkwargsMethods         r&   test_bad_domainru      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   rx   r2   )rm   r   rn   r   rvsr   randomRandomStateseedMT19937	Generator)rr   rs   rt   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 )Nrw   rz   ry   )r   r   set_random_stater   r{   )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Nrf   r2   r#   s     r&   r+   3test_threading_behaviour.<locals>.Distribution.dpdf   s    r)   r   N)r4   r5   r6   r7   r   r'   r+   r8   r2   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)NrI   rA   ry      rl   rx   順 r   r   r   r{   r   argsr9   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   rg   r   r   r   r   r   r   s      r&   func2'test_threading_behaviour.<locals>.func2   sO    E")$y78:	'GGFO 	'VVAYF6N	'r   )targetr   rI   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 )Nrx   rw   ry   r2   )rm   r   rn   pickledumpsloadsr   r{   )rr   rs   rt   r   objr   s         r&   test_pickler      sZ    U^^V,F-F--D
,,t
C<<D#.r)   size)Nr   )r   rf   )rA   r@   )rg   r@         )r   r   )r   rf   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   rz   rf   ry   num      $@      @)locscalerA   rb   )r   normr   r|   default_rngr
   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r9   urngr   url   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   rf   rtolatoli  皙?)
r{   meanvarr   isfiniter   	vectorizer0   r   pvalue)r   r9   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   8  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 distributionrj   r   r@   r   )centerrl   rl   )ro   warnsRuntimeWarningr	   r   )rq   s    r&   !test_warning_center_not_in_domainr   H  s^     ;C	nC	0">#3AfM 
1	nC	0">#3FC 
1	0 
1	0	0	0s   A-A>-
A;>
Brr   )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 domainrj   r   r   )r=   rl   )rm   r   rn   ro   r   r   r   )rr   rt   rq   s      r&   test_error_mode_not_in_domainr   R  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)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...rj   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.r@   rg   dr   )
ro   r   r   rm   r   rn   r   qrvsqmcHalton)r$   rr   rk   rt   gens        r&   test_input_validationTestQRVS.test_input_validationc  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Nrf   r   r~   r@   )rf   rf   )r   r   )r  r  )rg   r   r  )r@   r@   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   rj   r   rf   r   r   r   -q=r   )sysplatformarchitecturero   xfailr   rm   r   rn   r   r   r   r   r   r   r|   r   prodr   r   reshaper   )r$   r	  size_insize_outd_ind_outrr   w32r9   rt   r  rk   shape_expectedqrng2r   uniformqrvs2s                    r&   test_QRVS_shape_consistency$TestQRVS.test_QRVS_shape_consistencyy  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)r@   r   r   r   r  r  .r  r  )r   rm   r   rn   r   r   r|   r   r  r   r   r   ranger  r   )r$   rr   r9   rt   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)   r2   )r4   r5   r6   r7   r  r   r   Sobolr   qrngstuplesizesdsro   markparametrizethread_unsafer"  r)  r8   r2   r)   r&   r   r   `  s    : 599??11?-uyy/?/?/?/JKEEG_i+-E /Auw<	3B[[VU+[[0%8[[]B/[[&9: 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      \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 \
RB                  " 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      ?rf   r2   r#   s     r&   r'   )TestTransformedDensityRejection.dist0.pdf      !AC%= r)   c                     SSU-  -  $ )Nr9  r2   r#   s     r&   r+   *TestTransformedDensityRejection.dist0.dpdf  s    "Q$<r)   c                 "    SXS-  S-  -
  S-   -  $ Nr9  r@   gUUUUUU?r2   r#   s     r&   r0   )TestTransformedDensityRejection.dist0.cdf      !d1f*s*++r)   c                     gN)rf   r2   r$   s    r&   r   -TestTransformedDensityRejection.dist0.support      r)   r2   N	r4   r5   r6   r7   r'   r+   r0   r   r8   r2   r)   r&   dist0r6    s    	!	 	,	r)   rJ  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   rO  r#   s     r&   r+   *TestTransformedDensityRejection.dist1.dpdf  s$    29uzzq3w777r)   c                 F    [         R                  R                  US-  5      $ rN  r   r   _cdfr#   s     r&   r0   )TestTransformedDensityRejection.dist1.cdf  rR  r)   r2   Nr3   r2   r)   r&   dist1rL    s    	,	8	,r)   rZ  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   ra   re  rg  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-   -  -
  $ Nra   rd  r   r^  r#   s     r&   r0   )TestTransformedDensityRejection.dist2.cdf  5    OABwb1f~%C26N**r)   r^  N)	r4   r5   r6   r7   r   r'   r+   r0   r8   r2   r)   r&   dist2r\    s    		
	)	+r)   rq  ra        @?rT  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*   rz   )warningscatch_warningssimplefilterr   r   r   r$   r9   r   r   s       r&   
test_basic*TestTransformedDensityRejection.test_basic  sF     $$&!!(N;-dDC ' 	3,	 '&s   &A
Ac                     g)Nr   r2   rC   s    r&   rD   (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
  r2   Nr4   r5   r6   r7   r8   r2   r)   r&   r9   r  
      r)   r9   c                     gr   r2   rC   s    r&   rD   >TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>  s    ar)   rj   r'   r+   ro   r   r   r$   r'   rp   rq   r9   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  r2   Nr  r2   r)   r&   r9   r    r  r)   r9   c                     U $ r.   r2   rC   s    r&   rD   ?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>  s    Qr)   rj   rf   rA   r   r  )r$   r+   rp   rq   r9   s        r&   test_bad_dpdf-TestTransformedDensityRejection.test_bad_dpdf  s:    	 		]]3*'W= +**s   A
Arh   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fNrj   r   )ro   r   r   r   r$   rl   rp   rq   s       r&   test_inf_nan_domains4TestTransformedDensityRejection.test_inf_nan_domains  s'    ]]3*'(8H +**   1
?construction_points)rE  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.rj   r  ro   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.rj   r  )rf   rf   rf   rf   rf   rf   z:33 : starting points not strictly monotonically increasingr  rA   z!50 : starting point out of domain)r@   )rl   r  )
ro   r   r   r   r   r   r   r   rR   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.rj   r  )r  r  )r$   r  rq   s      r&   
test_bad_c*TestTransformedDensityRejection.test_bad_cM  s.    .]]:S1'(8C@ 211	   8
Ar   rf     r   rd  rb   rc   r=  r@   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 rw  greatergreater_equalless
less_equalMbP?h㈵>r   )r   r   ry  rz  filterwarningsr   ppf_hatr   r   r   r   r   )r$   r   r   rq   resexpecteds         r&   test_ppf_hat,TestTransformedDensityRejection.test_ppf_hatW  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>.distil  r2   Nr  r2   r)   r&   r9   r  l  s    r)   r9   z`pdf` required but not found.rj   c                       \ rS rSrS rSrg)r  it  c                     SX -  -
  $ r   r2   rC   s    r&   rD   DTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>u  s
    AacEr)   r2   Nr4   r5   r6   r7   r'   r8   r2   r)   r&   r9   r  t  s    !Cr)   z`dpdf` required but not found.)ro   r   r   r   )r$   r9   rq   s      r&   test_bad_dist-TestTransformedDensityRejection.test_bad_distj  so    	 	 /]]:S1'- 2	" 	" 0]]:S1'- 21 21 21s   A4B4
B
Br2   N)&r4   r5   r6   r7   rJ  rZ  rq  distsmv0mv1r   rN   mv2mv3mvsro   r0  r1  zipr2  r}  r   bad_pdfsbad_pdfs_commonr  bad_dpdf_commonr  inf_nan_domainsr  r  r  rR   r  r   r   r  r  r8   r2   r)   r&   r4  r4    sC    , ,+ +, WeguRy%-8E v,Ct*Crvv,C266
CS#
C[[] _.[[&EF- G.- 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)   r4  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.rf   r   z$DAU only works with a finite domain.r   rx  rz   )basic_fail_distsro   skip
isinstancestrrm   r   r   r   r   r   r   r   r   
r$   distnameparamsrq   r9   rl   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.   rM   rC   s    r&   rD   TestDiscreteAliasUrn.<lambda>      266r)   rd   c                 "    [         R                  $ r.   rQ   rC   s    r&   rD   r    r  r)   c                     g)Nra   r2   rC   s    r&   rD   r    s    3r)   re   c                     [         $ r.   rH   rC   s    r&   rD   r    s    3r)   rK   c                     / $ r.   r2   rC   s    r&   rD   r    s    2r)   z)setting an array element with a sequence.c                     U * $ r.   r2   rC   s    r&   rD   r    s    A2r)   z50 : probability < 0c                      grT   r2   r2   r)   r&   rD   r    s    r)   rV   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  r2   Nr  r2   r)   r&   r9   r    r  r)   r9   rj   r  r   )r   ro   r   r   )r$   r   rp   rq   r9   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)dtyperw   rz   r   r   )weightsrg   )
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Nrj   ro   r   r   r   r$   r   rq   s      r&   test_bad_pv TestDiscreteAliasUrn.test_bad_pv  s$    ]]:S1R  211   /
=r   rl   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fNzmust be finiterj   rA   rb   r   )ro   r   r   r   r   r   r$   rl   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.rj   rd  rE  )
urn_factor)ro   r   r   r   rF  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.   r2   r#   s     r&   r   4TestDiscreteAliasUrn.test_bad_args.<locals>.dist.pmf  s    r)   r2   N)r4   r5   r6   r7   r   r8   r2   r)   r&   r9   r    s    r)   r9   rj   r  )r$   rq   r9   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  rx  rz   )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)   r2   N)r4   r5   r6   r7   r  ro   r0  r1  r   r}  r   	NameErrorr   	TypeErrorbad_pmfr  r  bad_pv_commonr  r   rN   
inf_domainr
  r  r  r  r8   r2   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      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/ / /\R@                  /\RB                  * \R@                  \RB                  /S\R@                  S"S#/S$S%\RB                  // S&Q//r"\R"                  R'                  S'\"5      S( 5       r#\R>                  " S)S*S S!9/ / /\R@                  /\RB                  * \R@                  \RB                  /S\R@                  S"S#/S$S%\RB                  /\RB                  * S+S,///r$\R"                  R'                  S-\$5      S. 5       r%\R"                  RL                  S/ 5       r'SS0S1\RB                  \R@                  /r(S2S#\RB                  \R@                  /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-  -
  -  $ r8  r2   r#   s     r&   r'   (TestNumericalInversePolynomial.dist0.pdf  r;  r)   c                 "    SXS-  S-  -
  S-   -  $ r@  r2   r#   s     r&   r0   (TestNumericalInversePolynomial.dist0.cdf  rB  r)   c                     grD  r2   rF  s    r&   r   ,TestNumericalInversePolynomial.dist0.support  rH  r)   r2   Nr4   r5   r6   r7   r'   r0   r   r8   r2   r)   r&   rJ  r%    s    	!	,	r)   rJ  c                        \ rS rSrS rS rSrg)$TestNumericalInversePolynomial.dist1i  c                 F    [         R                  R                  US-  5      $ rN  rO  r#   s     r&   r'   (TestNumericalInversePolynomial.dist1.pdf  rR  r)   c                 F    [         R                  R                  US-  5      $ rN  rW  r#   s     r&   r0   (TestNumericalInversePolynomial.dist1.cdf  rR  r)   r2   N)r4   r5   r6   r7   r'   r0   r8   r2   r)   r&   rZ  r.    s    	,	,r)   rZ  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皙??rf   rg   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                  -  -  -   $ )Nr6  rf   g?r   r   r  r   r!   cosr#   s     r&   r0   (TestNumericalInversePolynomial.dist2.cdf  s_    !a%LbhA..255
1CCDX  r)   c                     grD  r2   rF  s    r&   r   ,TestNumericalInversePolynomial.dist2.support  rH  r)   r2   Nr,  r2   r)   r&   rq  r4  
  s    	9	 
	r)   rq  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      -   -  -   -  $ )Nrb   r6  r7  rf   rg   r8  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   rd  g
ףp=
?rg   rA   r<  r#   s     r&   r0   (TestNumericalInversePolynomial.dist3.cdf  s^    S53;qw266"RUU(3C3566!BEE'!)3D4E "F F Fr)   c                     g)N)r   r2   rF  s    r&   r   ,TestNumericalInversePolynomial.dist3.support#  rH  r)   r2   Nr,  r2   r)   r&   dist3rB    s    	A	F	r)   rJ  ra   rs  rT  gܿUUUUUU?gQ?rg   g @ru  r  rt  c                 0    [        USS9n[        X1U5        g )Nrx  rz   )r	   r   r|  s       r&   r}  )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[        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 rw  rx  rz   )ro   r  r  r  rm   r   ry  rz  r{  r   r	   r   r   r   )r$   r  r  very_slow_dists
fail_distsskip_sample_moment_checkr9   r   s           r&   test_basic_all_scipy_dists9TestNumericalInversePolynomial.test_basic_all_scipy_dists6  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>.distiZ  r2   Nr  r2   r)   r&   r9   rk  Z  r  r)   r9   rj   r   r   r   )r'   ro   r   r	   r  s        r&   r  +TestNumericalInversePolynomial.test_bad_pdfX  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>.distib  r2   Nr  r2   r)   r&   r9   rp  b  r  r)   r9   rj   r   r   r   )logpdfro   r   r	   )r$   rq  rp   rq   r9   s        r&   test_bad_logpdf.TestNumericalInversePolynomial.test_bad_logpdf`  s7    	 	]]3*&tQF; +**rm  rh   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )ro   r   r	   r   r  s       r&   r  3TestNumericalInversePolynomial.test_inf_nan_domainsj  s'    ]]3*&~'7G +**r  r   rf   '  r   rd  r   rb   rc   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  rw  r  r  r  r  gdy=r   )r   r	   ry  rz  r  r   r   r   r   r   r   r$   r   r9   r   rq   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  rA   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rx  )r   r	   ry  rz  r  r   r0   r   r   r   r   )r$   r%   r9   r   rq   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绽|=rz  ry  )r   r	   u_errorr$   r9   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\].rj   r  )r   ro   r   r   r	   )r$   r  r9   rq   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.rj   rz  )ro   r   r   r	   r   )r$   r{  rq   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.   rW  r#   s     r&   r0   ATestNumericalInversePolynomial.test_bad_args.<locals>.BadDist.cdf  s    zzq))r)   r2   N)r4   r5   r6   r7   r0   r8   r2   r)   r&   BadDistr        *r)   r  z9Either of the methods `pdf` or `logpdf` must be specifiedrj   z4`sample_size` must be greater than or equal to 1000.rA   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)   r2   Nr  r2   r)   r&   r   r    r  r)   r   z!Exact CDF required but not found.)ro   r   r   r	   r   r  )r$   r  r9   rq   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  r2   Nr  r2   r)   r&   MyDistr    r  r)   r  c                 <    [         R                  " U * U -  S-  5      $ Nrg   )mathr"   rC   s    r&   rD   LTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>  s    1"Q$q&!1r)   c                     U * U -  S-  $ r  r2   rC   s    r&   rD   r    s    r!tAvr)   r  gwJ?ry   r   )r'   r	   rq  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)   r2   N)/r4   r5   r6   r7   rJ  rZ  rq  rJ  r  r  r  r   r!   r  r  r  ro   r0  r2  r1  r  r}  xslowr   rg  r  r  bad_logpdfs_commonrr  r  r  r   rR   rN   r   r}  r%   r  slowr  
bad_ordersbad_u_resolutionr  r  r  r  r8   r2   r)   r&   r#  r#    sg    , ,
 
"	 	 Weguw0E v,Ct*C;'"%%("22
3C;)GBEE1H,<<
=CS#
C[[&EF[[] _.-. 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            
       H   \ 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      \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                  R3                  S5      \R                  R+                  S5      \R                  R5                  S
5      S 5       5       5       rS rSS\R:                  R=                  S5      /r\RA                  \R:                  RC                  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&\RN                  " S$S%S&S'9/ / /\RP                  /\RR                  * \RP                  \RR                  /S\RP                  S(S)/S*S+\RR                  // S,Q//r*\R                  R                  S-\*5      S. 5       r+\R                  RX                  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      -   -  $ )Nrd  r   r   r8  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   rf   r  r<  r#   s     r&   r0   %TestNumericalInverseHermite.dist0.cdf  sE    BEE1q5))BFF2bee8A:,>>2bee8LLr)   c                     grD  r2   rF  s    r&   r   )TestNumericalInverseHermite.dist0.support  rH  r)   r2   NrI  r2   r)   r&   rJ  r    s    	1	,	M	r)   rJ  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   rd  ra   r8  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   ra   rd  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         ?rf   r   ra   rd  r9  r  r#   s     r&   r0   %TestNumericalInverseHermite.dist1.cdf  sk    T	q2662:*:#;;<<BSdRVVR"%%Z1,<%==== r)   c                     g)N)rE  rd  r2   rF  s    r&   r   )TestNumericalInverseHermite.dist1.support!  s    r)   r2   NrI  r2   r)   r&   rZ  r    s    	>	@	>	r)   rZ  rE  rg   rK  rf   r   g      пg      ?g      ?rt  r  r@   r   c                 0    [        XSS9n[        XAU5        g )Nrx  )r  rx   )r
   r   )r$   r9   r   r  r   s        r&   r}  &TestNumericalInverseHermite.test_basic+  s    
 &dbI3e,r)   rh   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )ro   r   r
   r   r  s       r&   r  0TestNumericalInverseHermite.test_inf_nan_domains5  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>   rR  rS  skewnormrU  >   r_  nctbetawaldrQ  invgaussrY  rP  geninvgaussnorminvgaussgenhyperbolicrV  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   rA   :0yE>r  )ro   r  r  r   r|   r   rm   r   r
   maxrf  r   r0   )r$   r  shapes
slow_distsre  r   r9   fnir%   p_tolu_tols              r&   basic_test_all_scipy_dists6TestNumericalInverseHermite.basic_test_all_scipy_dists:  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&   rg  6TestNumericalInverseHermite.test_basic_all_scipy_distsS  s     	''9r)   c                 (    U R                  SS5        g )N	truncnorm)r   rg   r  rF  s    r&   test_basic_truncnorm_gh171558TestNumericalInverseHermite.test_basic_truncnorm_gh17155[  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.rj   rg   r  z`cdf` required but not foundr   z!could not convert string to floatekkirz  )ro   r   r   r
   r   )r$   rk   s     r&   r  1TestNumericalInverseHermite.test_input_validationa  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   rx   r   )r   r
   r   r{   r   r   r   r   r   r   r   )
r$   r   r  r  r9   r  r   r{   r   r   s
             r&   test_RVS$TestNumericalInverseHermite.test_RVSs  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 tailrj   r  rz  )ro   r   r   r
   r   r  )r$   r  rk   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   rz   )r   r
   r   r   r   r{   )r$   rZ  fni1rq  fni2s        r&   test_custom_distribution4TestNumericalInverseHermite.test_custom_distribution  sI     &u-

&u-a0$(((2JKr)   ra   r   rv  r   rd  r   rb   rc   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  rz  r  rw  r  r  r  r  g&.>gLa㧝=r   )r   r
   ry  rz  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  rz  rw  ry  )r   r
   r  ry  rz  r{  r   r  s        r&   r  (TestNumericalInverseHermite.test_u_error  s    %d?	5   $$&!!(N;)$UCC ' 	5    '&s   &B
B)r2   )/r4   r5   r6   r7   rJ  rZ  r  r   r!   r  r  r  ro   r0  r1  r  r2  r}  r  r  r  r  r  r   rg  	fail_slowparallel_threads_limitr  r  r|   r}   rngsappendr   r-  r.  r  r  r  r   rR   rN   r   r}  r  r  r8   r2   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?   rx   guide_factorr   r|   r   ro   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  rE  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.rf   r   z$DGT only works with a finite domain.r   rx  rz   )r  ro   r  r  r  rm   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   rf   rv  r   rd  r   rb   rc   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   rx  rz   r  rw  r  r  r  r  )
r   r   r   ry  rz  r  r   r   r   r   )	r$   r   npr9   r   rq   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  )ro   r   r   r   r  s      r&   r  "TestDiscreteGuideTable.test_bad_pv#  s$    ]]:S1r" 211r  rl   c                     [         R                  " [        SS9   [        [        R
                  " SS5      US9  S S S 5        g ! , (       d  f       g = fr  )ro   r   r   r   r   r   r	  s     r&   r
  &TestDiscreteGuideTable.test_inf_domain-  s3    ]]:->?u{{2s3FC @??r  r2   N)r4   r5   r6   r7   r  r  r  r  ro   r0  r1  r   r}  r   r   rR   rN   r   r}  r   r  r!  r
  r8   r2   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                   V   \ 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      \R                  R                  S 5       5       r\R                  R                  S\5      S	 5       rS
 rSrg)TestSimpleRatioUniformsi3  c                   &    \ rS rSrS rS rS rSrg)TestSimpleRatioUniforms.disti7  c                     Xl         Xl        g r.   )r_  r=   r`  s     r&   r   %TestSimpleRatioUniforms.dist.__init__8  s    JIr)   c                 P    XR                   -  nS[        U5      S-   -  nSU-  U-  $ rc  re  rg  s      r&   r'    TestSimpleRatioUniforms.dist.pdf<  rj  r)   c                 P    XR                   -  nUS::  a  SSU-
  -  $ SSSU-   -  -
  $ rn  r^  r#   s     r&   r0    TestSimpleRatioUniforms.dist.cdfA  rp  r)   )r=   r_  N)r4   r5   r6   r7   r   r'   r0   r8   r2   r)   r&   r9   r#  7  s    		
	+r)   r9   ra   rr  rt  c                     [        XR                  SS9n[        X1U5        [        XR                  UR                  UR                  5      SS9n[        X1U5        g )Nrx  )r=   rx   )r=   cdf_at_moderx   )r   r=   r   r0   r|  s       r&   r}  "TestSimpleRatioUniforms.test_basicO  sM     "$YYRH3e,!$YY.2hhtyy.A/13 	3e,r)   rh   c                     [         R                  " X#S9   [        [        5       US9  S S S 5        g ! , (       d  f       g = fr  )ro   r   r   r   r  s       r&   r  ,TestSimpleRatioUniforms.test_inf_nan_domains\  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 > 0rj   r   rE  )r=   pdf_area)ro   r   r   r   r   rF  s    r&   r  %TestSimpleRatioUniforms.test_bad_argsa  s-    ]]:-FG 0q2F HGGs	   7
Ar2   N)r4   r5   r6   r7   r9   r  r   rN   r  r  r  ro   r0  r1  r  r2  r}  r  r  r  r8   r2   r)   r&   r!  r!  3  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)TestRatioUniformsig  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 )Nrg   r   i90  umaxvminvmaxrx   i	  r   rf   r  Tc                 0    [         R                  " U * 5      $ r.   r  rC   s    r&   rD   6TestRatioUniforms.test_rv_generation.<locals>.<lambda>r  s    bffaRjr)   rE  r  expon)
r   r   r'   r   r    r   r   kstestr{   r"   )r$   fvr   r  s        r&   test_rv_generation$TestRatioUniforms.test_rv_generationh  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 )Nrg   r     r5  r@   r  )r@   rf   r   )r@   r@   r@   r     rf   r  )
r   r   r'   r   r    r   r{   r   flattenr   )r$   r=  r>  r   gen1gen2gen3r1r2r3gen4gen5r4r5gen6gen7gen8r6r7r8s                       r&   
test_shapeTestRatioUniforms.test_shapev  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 )Nrg   r   rB  r5  rA   )
r   r   r'   r   r    r   r{   r|   r}   r   )	r$   r=  r>  r6  rE  rH  r   rF  rI  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 vmaxrj   rf   r@   )r'   r6  r7  r8  zumax must be positiverE  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)r2   N)	r4   r5   r6   r7   r?  rU  r   r[  r8   r2   r)   r&   r3  r3  g  s    K8	9r)   r3  )gHz>r   )r  r   )Lr   r   ro   copyr   r  r  r  ry  numpyr   numpy.testingr   r   scipy.stats.samplingr   r   r   r	   r
   r   r   r   r   rZ  scipyr   r   scipy.statsr   r   scipy.stats._distr_paramsr   r   scipy._lib._utilr   r   all_methodsimplementationnameversionfloaterrr  r  r  r  r  rR   rN   r   r   bad_sized_domainsbad_domainsr  nan_domainsr0  r1  ru   r   r   r   r   r   r   r   r   r   r   r   r4  r  r#  r  r  r!  r3  r2   r)   r&   <module>rm     s        
    7	 	 	 +   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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)   