+
    ,i              
       @   ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIt	^ RI
HtHtHt ^ RIHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IH t H!t! ^ R
I"H#t#  ! R R4      t$RR]$! 4       /3RR. RVO/3RR. RVO/3RR]$! 4       /3RR]$! 4       /3RR]$! 4       R^ /3.t%]PL                  PN                  R8X  d   ]PL                  PP                  RW8  d   Rt)MRt)R ]R3R ]*])3R ]+R3R ]R3R ]R3R  ]*R!3.t,R" ]R3R# ]R3R$ ]*])3R% ]+R3R& ]*R!3.t-R' ]*])3R( ]+R3R) ]R3R* ]R3R+ ]*R!3.t.. R,3R-R...R/3R0R1]	P^                  R.R23R0R1]	P`                  R.R23R.R..R33.t1RX]2R43RY]2R43.t3RZ]R53R[]R53.t4R\]R53]	P`                  ]	P`                  3]R53]	P`                  ) ]	P`                  ) 3]R53]	P`                  ]	P`                  ) 3]R53]	P`                  ) ]	P^                  3]2R63]	P^                  ]	P`                  3]2R63.t5^ ]	P^                  3]2R63]	P^                  ]	P^                  3]2R63.t6]Pn                  Pq                  R7]4]3,           ]6,           4      ]Pn                  Pq                  R8]%4      R9 4       4       t9]Pn                  Pq                  R8]%4      R: 4       t:R; t;R< t<]Pn                  Pq                  R8]%4      R= 4       t=]Pn                  Pq                  R>. R]O4      R? 4       t>R@ t?R^RA lt@R_RB ltARC tB]Pn                  Pq                  RD. R`O4      RE 4       tC]Pn                  Pq                  RDRR.4       ! RF RG4      4       tD ! RH RI4      tE ! RJ RK4      tF ! RL RM4      tG ! RN RO4      tH ! RP RQ4      tI ! RR RS4      tJ ! RT RU4      tKR# )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                   2   a  ] tR t^ t o R tR tR tRtV tR# )StandardNormalc                    R \         P                  ! R\         P                  ,          4      ,          \         P                  ! RV,          V,          4      ,          #       ?       @      ࿩npsqrtpiexpselfxs   &&A/usr/lib/python3/dist-packages/scipy/stats/tests/test_sampling.pypdfStandardNormal.pdf!   s4    "''"RUU(##bffTAXaZ&888    c                    R \         P                  ! R\         P                  ,          4      ,          V) ,          \         P                  ! RV,          V,          4      ,          # r   r   r#   s   &&r&   dpdfStandardNormal.dpdf%   s;    "''"RUU(##qb(266$(1*+===r)   c                .    \         P                  ! V4      # N)r   ndtrr#   s   &&r&   cdfStandardNormal.cdf(   s    ||Ar)    N	__name__
__module____qualname____firstlineno__r'   r+   r0   __static_attributes____classdictcell____classdict__s   @r&   r   r       s     9> r)   r   r   distr   皙?r	   r
   r   r   modepypyz.unsupported operand type for float\(\): 'list'zmust be real number, not listc                     V ) # r.   r2   r%   s   &r&   <lambda>rB   @   s    rr)   z...c                     . # r.   r2   rA   s   &r&   rB   rB   B       rr)   c                     \         # r.   foorA   s   &r&   rB   rB   D       sr)   name 'foo' is not definedc                 "    \         P                  # r.   r   infrA   s   &r&   rB   rB   F       rvvr)   c                 "    \         P                  # r.   r   nanrA   s   &r&   rB   rB   H   rM   r)   c                      R # r   r2   r2   r)   r&   rB   rB   J       Sr)   ,takes 0 positional arguments but 1 was givenc                 "    \         P                  # r.   rK   rA   s   &r&   rB   rB   Q   rM   r)   c                 "    \         P                  # r.   rO   rA   s   &r&   rB   rB   S   rM   r)   c                     . # r.   r2   rA   s   &r&   rB   rB   U   rD   r)   c                     \         # r.   rF   rA   s   &r&   rB   rB   W   rH   r)   c                      R # rR   r2   r2   r)   r&   rB   rB   Y   rS   r)   c                     . # r.   r2   rA   s   &r&   rB   rB   `   rD   r)   c                     \         # r.   rF   rA   s   &r&   rB   rB   b   rH   r)   c                 "    \         P                  # r.   rK   rA   s   &r&   rB   rB   d   rM   r)   c                 "    \         P                  # r.   rO   rA   s   &r&   rB   rB   f   rM   r)   c                      R # rR   r2   r2   r)   r&   rB   rB   h   rS   r)   z!must contain at least one elementr           z0wrong number of dimensions \(expected 1, got 2\)皙?皙?)must contain only finite / non-nan values(must contain at least one non-zero valuezmust be a length 2 tuplezleft >= rightzonly non-nan valuesdomain, err, msgzmethod, kwargsc                     \        \        P                  V4      p\        P                  ! WR 7      ;_uu_ 4        V! R/ VBRV /B  RRR4       R#   + '       g   i     R# ; i)matchdomainNr2   )getattrr   samplingpytestr   )rh   errmsgmethodkwargsMethods   &&&&& r&   test_bad_domainrq      sB    
 U^^V,F	s	&	&''' 
'	&	&	&s   AA"	c                 8   \        \        P                  V 4      p^{pV! R/ VBRV/B pV! R/ VBRV/B p\        VP	                  ^d4      VP	                  ^d4      4       \
        P                  P                  ^{4      pV! R/ VB pVP	                  ^dVR7      p\
        P                  P                  R4       V! R/ VBR^{/B pVP	                  ^d4      p\        Wx4       \
        P                  P                  \
        P                  P                  ^{4      4      p	\
        P                  P                  \
        P                  P                  ^{4      4      p
V! R/ VBRV	/B pV! R/ VBRV
/B p\        VP	                  ^d4      VP	                  ^d4      4       R# ){   random_statert   Nr2   )ri   r   rj   r   rvsr   randomRandomStateseedMT19937	Generator)rn   ro   rp   ry   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                  r   \        \        4       ^{R7      p \        \        4       4      pVP                  ^{4       \        V P	                  ^d4      VP	                  ^d4      4       \        \        4       ^{R7      pVP	                  ^d4      pVP                  ^{4       VP	                  ^d4      p\        W44       R# )rs   ru   N)r   r   set_random_stater   rv   )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                  b  aa R RRR/o ! R R4      oVV3R lp VV3R lp\         P                  ! V R7      p\         P                  ! VR7      pVP                  4        VP                  4        VP                  4        VP                  4        SR ,          R8X  g   Q hSR,          R	8X  g   Q hR# )
err1Nerr2c                   2   a  ] tR t^t o R tR tR tRtV tR# ).test_threading_behaviour.<locals>.Distributionc                    Wn         R # r.   pdf_msg)r$   r   s   &&r&   __init__7test_threading_behaviour.<locals>.Distribution.__init__   s    "Lr)   c                V    R Tu;8  d   R8  d   M V# \        V P                  4      hV# )g33333H@g      I@)
ValueErrorr   r#   s   &&r&   r'   2test_threading_behaviour.<locals>.Distribution.pdf   s(    a$H !..Hr)   c                    ^#    r2   r#   s   &&r&   r+   3test_threading_behaviour.<locals>.Distribution.dpdf   s    r)   r   N)	r4   r5   r6   r7   r   r'   r+   r8   r9   r:   s   @r&   Distributionr      s     	#	
	 	r)   r   c                     < S! R 4      p \        V R^R7      p VP                  R4       R#   \         d"   pTP                  ^ ,          SR&    Rp?R# Rp?ii ; i)rG   rh   rt   順 r   N
   d   r   rv   r   argsr<   r~   er   errorss      r&   func1'test_threading_behaviour.<locals>.func1   sO    E")$y79;	'GGFO 	'VVAYF6N	'   , AAAc                     < S! R 4      p \        V R^R7      p VP                  R4       R#   \         d"   pTP                  ^ ,          SR&    Rp?R# Rp?ii ; i)barr   r   r   Nr   r   r   s      r&   func2'test_threading_behaviour.<locals>.func2   sO    E")$y78:	'GGFO 	'VVAYF6N	'r   )targetrG   r   )	threadingThreadstartjoin)r   r   t1t2r   r   s       @@r&   test_threading_behaviourr      s     dFD)F
 
'' 
			'B				'BHHJHHJGGIGGI&>U"""&>U"""r)   c                     \        \        P                  V 4      pV! R/ VBR ^{/B p\        P                  ! V4      p\        P
                  ! V4      p\        VP                  ^d4      VP                  ^d4      4       R# )rt   Nr2   )ri   r   rj   pickledumpsloadsr   rv   )rn   ro   rp   r|   objr}   s   &&    r&   test_pickler      sZ    U^^V,F-F--D
,,t
C<<D#.r)   sizec                    \        \        4       4      pV f0   \        P                  ! VP	                  V 4      4      '       g   Q hR # \        P                  ! V 4      '       d   V 3p VP	                  V 4      P
                  V 8X  g   Q hR # r.   )r   r   r   isscalarrv   shape)r   r~   s   & r&   test_rvs_sizer     se    
 &n&6
7C|{{3774=))));;t8Dwwt}""d***r)   c                      \         P                  ! 4       p \        P                  P	                  ^ 4      p\        WR7      p\        P                  ! ^ ^^dR7      p\        W V P                  4       4       \        V P                  V4      VP                  V4      4       \         P                  ! RRR7      p \        WR7      p\        W V P                  4       4       \        V P                  V4      VP                  V4      4       \         P                  ! ^
R4      p \        WR7      pV P                  4       pV P                  \        P                  ! V^ ,          V^,          ^,           4      4      p\        W%V P                  4       4       R# )r   ru   num      $@      @)locscaler`   N)r   normr   rw   default_rngr   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r<   urngr~   urh   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                    V P                  R 4      pVP                  4       VP                  4       3p\        P                  ! V^,          4      '       d   \        WbW4R7       V P                  R4      p\        P                  ! VP                  4      Vn        \        WQP                  4      P                  pVR8  g   Q hR# )r   rtolatoli  皙?N)
rv   meanvarr   isfiniter   	vectorizer0   r   pvalue)r~   r<   mv_exr   r   rv   mvpvals   &&&&&   r&   r   r   )  s    
''&/C	SWWY	B	{{588
''#,C||DHH%DH#xx(//D#::r)   c                    V P                  R 4      pVP                  4       VP                  4       3p\        WbW4R7       WP	                  4       ,          p\
        P                  ! V4      p\
        P                  ! VRR7      w  rWP	                  4       ,          p	WRV	P                  % \        Wq4      P                  p
V
R8  g   Q hR# )r   r   T)return_countsNr   )rv   r   r   r   sumr   
zeros_likeuniquer   r   r   )r~   r   r   r   r   rv   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                  b   R p \         P                  ! \        V R7      ;_uu_ 4        \        \	        4       ^ RR7       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        \	        4       RR7       RRR4       R#   + '       g   i     LT; i  + '       g   i     R# ; i)z.102 : center moved into domain of distributionrf   )centerrh   Nrh         )rk   warnsRuntimeWarningr
   r   )rm   s    r&   !test_warning_center_not_in_domainr   F  sg     ;C	nC	0	0">#3AfM 
1	nC	0	0">#3FC 
1	0 
1	0	0	0	0s   B
*B
B	B.	rn   c                     \        \        P                  V 4      pR p\        P                  ! \
        VR7      ;_uu_ 4        V! \        4       ^ RR7       RRR4       R#   + '       g   i     R# ; i)z17 : mode not in domainrf   )r>   rh   Nr   )ri   r   rj   rk   r   r   r   )rn   rp   rm   s   &  r&   test_error_mode_not_in_domainr   P  sH     U^^V,F
#C	{#	.	.~a7 
/	.	.	.s   AA0	c                     a  ] tR tRt o R tR]P                  P                  ^^ R7      ]P                  P                  ^^ R7      .t	R]
! 4       3RRRR.tR]
! 4       3^]
! 4       3R.t]P                  P                  R]	4      ]P                  P                  R]4      ]P                  P                  R]4      ]P                  P                   R 4       4       4       4       tR	 tR
tV tR# )TestQRVSi^  c                <   R p\         P                  ! \        VR7      ;_uu_ 4        \        \        P
                  V4      pV! \        4       4      pVP                  ^ R7       RRR4       \        \        P
                  V4      pV! \        4       4      pRp\         P                  ! \        VR7      ;_uu_ 4        VP                  ^\        P                  P                  ^4      R7       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z&`qmc_engine` must be an instance of...rf   )
qmc_engineN6`d` must be consistent with dimension of `qmc_engine`.dr   )
rk   r   r   ri   r   rj   r   qrvsqmcHalton)r$   rn   rg   rp   gens   &&   r&   test_input_validationTestQRVS.test_input_validationa  s    8]]:U33U^^V4F)*CHHH" 4 0^%&H]]:U33HHqUYY%5%5a%8H9 43 43 433s   =C7<1D
7D	
D	Nry   qrngsize_in, size_outzd_in, d_outc                   \         P                  R 8H  ;'       d     \        P                  ! 4       ^ ,          R8H  pV'       d   VR8X  d   \        P                  ! R4       \        4       p\        \        P                  V4      p	V	! V4      p
VeZ   VeV   VP                  V8w  dE   Rp\        P                  ! \        VR7      ;_uu_ 4        V
P                  W$VR7       RRR4       R# Vf#   Ve   VP                  ^8w  d   VP                  3pW5,           p\        V4      pV
P                  W$VR7      pVe   VP                  V8X  g   Q hVen   TP                  \         P"                  ! V4      ;'       g    ^4      p\        P$                  P'                  V4      P)                  V4      p\+        VVR	R
7       R# R#   + '       g   i     R# ; i)win3232bitr
   z4NumericalInversePolynomial.qrvs fails for Win 32-bitNr   rf   r   r   r   r   -q=r   )sysplatformarchitecturerk   xfailr   ri   r   rj   r   r   r   r   r   r   rw   r   prodr   r   reshaper   )r$   r  size_insize_outd_ind_outrn   w32r<   rp   r   rg   shape_expectedqrng2r   uniformqrvs2s   &&&&&&&          r&   test_QRVS_shape_consistency$TestQRVS.test_QRVS_shape_consistencyw  sl    llg%OO(*?*?*A!*D*O699LL " # 0Tl  0TVVt^LEz77T: 8 <D,1VVIE!)xxWx>::///ll2777#3#8#8q9GJJNN7+33NCED%e4  87s   F??G	c                    \        4       p\        \        P                  V4      pV! V4      pRp^p\        P                  P                  V^ R7      p\        P                  P                  V^ R7      pVP                  \        P                  ! V4      4      p	VP                  WVVR7      p
\        P                  P                  V	4      p\        V4       F5  pV
RV3,          pVRV3,          P                  V4      p\        WRR7       K7  	  R# )	r   r   r  .:NNNr  r  N)r      )r   ri   r   rj   r   r   rw   r   r  r   r   r   ranger  r   )r$   rn   r<   rp   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   )r   r   )r  r  )r"  r"  )   r  r#  )r   r   )r4   r5   r6   r7   r   r   r   Sobolr   qrngstuplesizesdsrk   markparametrizethread_unsafer  r   r8   r9   r:   s   @r&   r   r   ^  s     : 599??11?-uyy/?/?/?/JKEEG_i+-E /Auw<	3B[[VU+[[0%8[[]B/[[ 5  0 9 , 5D9 9r)   r   c            
       8  a  ] tR tRt o  ! R R4      t ! R R4      t ! R R4      t]! 4       ]! 4       ]! R4      ]! R	4      .tRR&.tRR
.t	R]
P                  .tR	]
P                  .t]]	]].t]P                   P#                  R]! ]]4      4      ]P                   P&                  R 4       4       tR ]R3.t]],          t]P                   P#                  R]4      R 4       t]P                   P#                  R]4      R 4       t]P                   P#                  R]4      R 4       t]P                   P#                  R. R'O4      R 4       tR t]P                   P#                  RR(]
P>                  ]
P                  RR.4      R 4       t ]
PB                  ! ^ ^RR7      . . .]
P>                  .]
P                  ) ]
P>                  ]
P                  .^ ]
P>                  RR.RR ]
P                  .. R)O..t"]P                   P#                  R!]"4      R" 4       t#R# t$R$t%V t&R%# )*TestTransformedDensityRejectioni  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )%TestTransformedDensityRejection.dist0i  c                .    R^W,          ,
          ,          # r         ?r2   r#   s   &&r&   r'   )TestTransformedDensityRejection.dist0.pdf      !AC%= r)   c                "    RRV,          ,          # )r   r4  r2   r#   s   &&r&   r+   *TestTransformedDensityRejection.dist0.dpdf  s    "Q$<r)   c                J    RW^,          ^,          ,
          R,           ,          # r   r4  gUUUUUU?r2   r#   s   &&r&   r0   )TestTransformedDensityRejection.dist0.cdf      !d1f*s*++r)   c                    R# r   )r   r2   r$   s   &r&   r   -TestTransformedDensityRejection.dist0.support      Lr)   r2   N
r4   r5   r6   r7   r'   r+   r0   r   r8   r9   r:   s   @r&   dist0r1    s     	!	 	,	 	r)   rE  c                   2   a  ] tR tRt o R tR tR tRtV tR# )%TestTransformedDensityRejection.dist1i  c                N    \         P                  P                  VR ,          4      # r   r   r   _pdfr#   s   &&r&   r'   )TestTransformedDensityRejection.dist1.pdf      ::??1s7++r)   c                l    V) R ,          \         P                  P                  VR,          4      ,          # ){Gz?r   rJ  r#   s   &&r&   r+   *TestTransformedDensityRejection.dist1.dpdf  s$    29uzzq3w777r)   c                N    \         P                  P                  VR ,          4      # rI  r   r   _cdfr#   s   &&r&   r0   )TestTransformedDensityRejection.dist1.cdf  rM  r)   r2   Nr3   r:   s   @r&   dist1rG    s     	,	8	, 	,r)   rU  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )%TestTransformedDensityRejection.dist2i  c                    Wn         R # r.   shiftr$   rZ  s   &&r&   r   .TestTransformedDensityRejection.dist2.__init__  s    Jr)   c                x    WP                   ,          pR \        V4      R ,           ,          pRV,          V,          # r         ?rZ  absr$   r%   ys   && r&   r'   )TestTransformedDensityRejection.dist2.pdf  -    OAc!frk"A7Q;r)   c                    WP                   ,          pR \        V4      R ,           ,          pW",          V,          pVR8  d   V# V) # )r   r_   r`  rb  s   && r&   r+   *TestTransformedDensityRejection.dist2.dpdf  s=    OAc!frk"A	AR1(qb(r)   c                    WP                   ,          pVR 8:  d   RRV,
          ,          # RRRV,           ,          ,
          # r_   r_  r   rY  r#   s   &&r&   r0   )TestTransformedDensityRejection.dist2.cdf  5    OABwb1f~%C26N**r)   rY  N)
r4   r5   r6   r7   r   r'   r+   r0   r8   r9   r:   s   @r&   dist2rW    s     		
	)	+ 	+r)   rl  r_        @rO  dist, mv_exc                    \        4       ;_uu_ 4       pVP                  \        4       \        V^*R7      pRRR4       \	        XW4       R#   + '       g   i     L; i*   ru   N)r   filterr   r   r   )r$   r<   r   supr~   s   &&&  r&   
test_basic*TestTransformedDensityRejection.test_basic  sA       CJJ~&-dDC ! 	3,	 ! s   #AA	c                    ^ # r   r2   rA   s   &r&   rB   (TestTransformedDensityRejection.<lambda>  s    1r)   50 : bad construction points.pdf, err, msgc                     ! R  R4      pWn         R Vn        \        P                  ! W#R7      ;_uu_ 4        \	        V4       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# ):TestTransformedDensityRejection.test_bad_pdf.<locals>.disti  r2   Nr4   r5   r6   r7   r8   r2   r)   r&   r<   r}        r)   r<   c                     ^# r   r2   rA   s   &r&   rB   >TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>  s    ar)   rf   Nr'   r+   rk   r   r   r$   r'   rl   rm   r<   s   &&&& r&   test_bad_pdf,TestTransformedDensityRejection.test_bad_pdf  s>    	 		]]3**'- +***s   AA	zdpdf, err, msgc                     ! R  R4      pR Vn         Wn        \        P                  ! W#R7      ;_uu_ 4        \	        VRR7       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# );TestTransformedDensityRejection.test_bad_dpdf.<locals>.disti  r2   Nr~  r2   r)   r&   r<   r    r  r)   r<   c                     V # r.   r2   rA   s   &r&   rB   ?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>  s    Qr)   rf   r   Nr   r   r  )r$   r+   rl   rm   r<   s   &&&& r&   test_bad_dpdf-TestTransformedDensityRejection.test_bad_dpdf  s@    	 		]]3**'W= +***s   AA!	rd   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; irf   r   N)rk   r   r   r   r$   rh   rl   rm   s   &&&&r&   test_inf_nan_domains4TestTransformedDensityRejection.test_inf_nan_domains  s-    ]]3**'(8H +***   A  A	construction_pointsr   c                    \         P                  ! \        R R7      ;_uu_ 4        \        \	        4       VR7       RRR4       R#   + '       g   i     R# ; i)z1`construction_points` must be a positive integer.rf   r  Nrk   r   r   r   r   r$   r  s   &&r&   #test_bad_construction_points_scalarCTestTransformedDensityRejection.test_bad_construction_points_scalar  sG    ]]: .D E E' 6IE E E Es   AA	c                &   . p\         P                  ! \        R R7      ;_uu_ 4        \        \	        4       VR7       RRR4       . ROp\         P
                  ! \        RR7      ;_uu_ 4        \        \	        4       VR7       RRR4       \        P                  \        P                  \        P                  .p\         P                  ! \        RR7      ;_uu_ 4        \        \	        4       VR7       RRR4       R	^
.p\         P
                  ! \        RR7      ;_uu_ 4        \        \	        4       R
VR7       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)zC`construction_points` must either be a scalar or a non-empty array.rf   r  Nz:33 : starting points not strictly monotonically increasingry  z!50 : starting point out of domain)rh   r  )r   r   r   r   r   r   )r   )
rk   r   r   r   r   r   r   r   rP   r   r  s   & r&   "test_bad_construction_points_arrayBTestTransformedDensityRejection.test_bad_construction_points_array'  s7    ]]: .M N N ( 6IN 1\\. 1> ? ? ( 6I?  "vvrvvrvv6]]; /9 : :' 6I:  #Bi\\. 1: ; ;' $7; ;5N N N? ?: :; ; ;s/   E-EE,$E?E	E)	,E<	?F	cr   c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        \	        4       RR7       RRR4       R#   + '       g   i     R# ; i)z`c` must either be -0.5 or 0.rf   )r  N      r  )r$   r  rm   s   && r&   
test_bad_c*TestTransformedDensityRejection.test_bad_cK  s4    .]]:S11'(8C@ 2111   AA	  r   r_  r`   ra   r   c                   \        \        4       R R7      p\        4       ;_uu_ 4       pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  V4      p\        P                  P                  V4      pRRR4       \        XXRRR	7       VP                  VP                  8X  g   Q hR#   + '       g   i     L>; i)
g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_equalNMbP?h㈵>r   )r   r   r   rr  r   ppf_hatr   r   r   r   r   )r$   r   r~   rs  resexpecteds   &&    r&   test_ppf_hat,TestTransformedDensityRejection.test_ppf_hatU  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''C7	c                d    ! R  R4      pRp\         P                  ! \        VR7      ;_uu_ 4        \        V4       RRR4        ! R R4      pRp\         P                  ! \        VR7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     LV; i  + '       g   i     R# ; i)c                       ] tR tRtRtR# );TestTransformedDensityRejection.test_bad_dist.<locals>.distik  r2   Nr~  r2   r)   r&   r<   r  k  s    r)   r<   z`pdf` required but not found.rf   Nc                       ] tR tRtR tRtR# )r  is  c                     ^W ,          ,
          # r   r2   rA   s   &r&   rB   DTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>t  s
    AacEr)   r2   N)r4   r5   r6   r7   r'   r8   r2   r)   r&   r<   r  s  s    !Cr)   z`dpdf` required but not found.)rk   r   r   r   )r$   r<   rm   s   &  r&   test_bad_dist-TestTransformedDensityRejection.test_bad_disti  sx    	 	 /]]:S11'- 2	" 	" 0]]:S11'- 21 21 211s   B5BB	B/	r2   N?)r@  r   r   r  r8  r   r  )'r4   r5   r6   r7   rE  rU  rl  distsmv0mv1r   rL   mv2mv3mvsrk   r+  r,  zipr-  rt  r   bad_pdfsbad_pdfs_commonr  bad_dpdf_commonr  inf_nan_domainsr  r  r  rP   r  r   r   r  r  r8   r9   r:   s   @r&   r/  r/    sA     , ,+ +, 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)   r/  c            	         a  ] tR tRt o 0 Rmt]P                  P                  R]4      R 4       t	R ]
R3R ]
R3R ]
R3R	 ]R
3R ]
R3R ]R3R ]R3.t]P                  P                  R]4      R 4       t]P                  P                  R. RO. R O.4      R 4       t]P                  P                  R]4      R 4       t]P(                  ) ]P(                  3]P(                  ]P(                  3]P(                  ) ]P(                  ) 3^ ]P(                  3]P(                  ) ^ 3.t]P                  P                  R]4      R 4       tR tR tR tRtV tR# )!TestDiscreteAliasUrni{  distname, paramsc                0   WP                   9   d   R p\        P                  ! V4       \        V\        4      '       g   TpM\        \        V4      pV! V!  pVP                  4       p\        P                  ! V^,          V^ ,          ,
          4      '       g   \        P                  ! R4       \        P                  ! V^ ,          V^,          ^,           4      pVP                  V4      pVP                  R4      p\        V^*R7      p	\        WV4       R# )zYDAU fails on these probably because of large domains and small computation errors in PMF.z$DAU only works with a finite domain.r   ru   N)basic_fail_distsrk   skip
isinstancestrri   r   r   r   r   r   r   r   r   
r$   distnameparamsrm   r<   rh   kr   r   r~   s
   &&&       r&   rt  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                "    \         P                  # r.   rK   rA   s   &r&   rB   TestDiscreteAliasUrn.<lambda>      266r)   rb   c                "    \         P                  # r.   rO   rA   s   &r&   rB   r    r  r)   c                    R # )r_   r2   rA   s   &r&   rB   r    s    3r)   rc   c                    \         # r.   rF   rA   s   &r&   rB   r    s    3r)   rI   c                    . # r.   r2   rA   s   &r&   rB   r    s    2r)   z)setting an array element with a sequence.c                    V ) # r.   r2   rA   s   &r&   rB   r    s    A2r)   z50 : probability < 0c                     R # rR   r2   r2   r)   r&   rB   r    s    r)   rT   zpmf, err, msgc                     ! R  R4      pWn         \        P                  ! W#R7      ;_uu_ 4        \        VRR7       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# )/TestDiscreteAliasUrn.test_bad_pmf.<locals>.disti  r2   Nr~  r2   r)   r&   r<   r    r  r)   r<   rf   r   Nr  )r   rk   r   r   )r$   r   rl   rm   r<   s   &&&& r&   test_bad_pmf!TestDiscreteAliasUrn.test_bad_pmf  s9    	 	]]3**T'2 +***s   AA	r   c                   \         P                  ! V\         P                  R 7      p\        V^{R7      pVP	                  R4       WP                  4       ,          p\         P                  ! ^ \        V4      4      p\         P                  ! W1R7      p\         P                  ! W4,
          ^,          VR7      pWE3p\        W!V4       R# ))dtyperu   r   )weightsN)
r   asarrayfloat64r   rv   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                    \         P                  ! \        VR 7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; irf   Nrk   r   r   r   r$   r   rm   s   &&&r&   test_bad_pv TestDiscreteAliasUrn.test_bad_pv  s*    ]]:S11R  2111	   ;A	rh   c                    \         P                  ! \        R R7      ;_uu_ 4        \        \        P
                  ! ^
R4      VR7       RRR4       R#   + '       g   i     R# ; izmust be finiterf   r`   r   N)rk   r   r   r   r   r   r$   rh   s   &&r&   test_inf_domain$TestDiscreteAliasUrn.test_inf_domain  s9    ]]:->??U[[S1&A @???   #AA#	c                    \         P                  ! \        R R7      ;_uu_ 4        \        RR.RR7       RRR4       R#   + '       g   i     R# ; i)zrelative urn size < 1.rf   r_  )
urn_factorNr@  )rk   r   r   r   rA  s   &r&   test_bad_urn_factor(TestDiscreteAliasUrn.test_bad_urn_factor  s2    \\.0IJJc3ZB7 KJJJs	   ?A	c                    R p ! R R4      p\         P                  ! \        VR7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)zG`domain` must be provided when the probability vector is not available.c                   &   a  ] tR tRt o R tRtV tR# )0TestDiscreteAliasUrn.test_bad_args.<locals>.disti  c                    V# r.   r2   r#   s   &&r&   r   4TestDiscreteAliasUrn.test_bad_args.<locals>.dist.pmf  s    r)   r2   N)r4   r5   r6   r7   r   r8   r9   r:   s   @r&   r<   r    s      r)   r<   rf   Nr  )r$   rm   r<   s   &  r&   test_bad_args"TestDiscreteAliasUrn.test_bad_args  s=    7	 	 ]]:S11T" 2111s   AA	c                    \         P                  ! \        P                  ! R4      4      p\	        V^*R7      p\        W!RRR7       R# )  ru   g{Gzt?)r   N)r  )g     @g    
A)r   softmaxr   onesr   r   )r$   r   r~   s   &  r&   test_gh19359!TestDiscreteAliasUrn.test_gh19359  s5    __RWWW-.r3C%C!%	'r)   r2   N>   randintnchypergeom_fishernchypergeom_wallenius)
ףp=
?{Gz?r=   )r   r   g      @      @r   g      @)r4   r5   r6   r7   r  rk   r+  r,  r   rt  r   	NameErrorr   	TypeErrorbad_pmfr  r  bad_pv_commonr  r   rL   
inf_domainr  r  r  r  r8   r9   r:   s   @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                     a  ] tR tRt o  ! R R4      t ! R R4      t ! R R4      t ! R R	4      t]! 4       ]! 4       ]! 4       ]! 4       .tR
R+.t	R
R.t
R,]P                  ,          R-R.]P                  ^,          ,          ,
          .tR,]P                  ,          R/R.]P                  ^,          ,          ,
          .t]	]
]].t]P"                  P%                  R]! ]]4      4      R 4       t]P"                  P*                  ]P"                  P%                  R]4      R 4       4       t]P"                  P%                  R]4      R 4       t]P"                  P%                  R]4      R 4       t]P"                  P%                  R]4      R 4       t]P<                  ! ^ ^RR7      . . .]P>                  .]P@                  ) ]P>                  ]P@                  .^ ]P>                  RR.RR]P@                  .. R0O..t!]P"                  P%                  R]!4      R 4       t"]P<                  ! R1^
RR7      . . .]P>                  .]P@                  ) ]P>                  ]P@                  .^ ]P>                  RR.RR]P@                  .]P@                  ) ^^...t#]P"                  P%                  R]#4      R 4       t$]P"                  PJ                  R  4       t&^R!^]P@                  ]P>                  .t'R"R]P@                  ]P>                  .t(]P"                  P%                  R#]'4      R$ 4       t)]P"                  P%                  R%](4      R& 4       t*R' t+R( t,R)t-V t.R*# )2TestNumericalInversePolynomiali  c                   2   a  ] tR tRt o R tR tR tRtV tR# )$TestNumericalInversePolynomial.dist0i  c                .    R^W,          ,
          ,          # r3  r2   r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist0.pdf  r6  r)   c                J    RW^,          ^,          ,
          R,           ,          # r;  r2   r#   s   &&r&   r0   (TestNumericalInversePolynomial.dist0.cdf  r=  r)   c                    R# r?  r2   rA  s   &r&   r   ,TestNumericalInversePolynomial.dist0.support  rC  r)   r2   N	r4   r5   r6   r7   r'   r0   r   r8   r9   r:   s   @r&   rE  r    s     	!	,	 	r)   rE  c                   ,   a  ] tR tRt o R tR tRtV tR# )$TestNumericalInversePolynomial.dist1i  c                N    \         P                  P                  VR ,          4      # rI  rJ  r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist1.pdf  rM  r)   c                N    \         P                  P                  VR ,          4      # rI  rR  r#   s   &&r&   r0   (TestNumericalInversePolynomial.dist1.cdf  rM  r)   r2   N)r4   r5   r6   r7   r'   r0   r8   r9   r:   s   @r&   rU  r'    s     	,	, 	,r)   rU  c                   2   a  ] tR tRt o R tR tR tRtV tR# )$TestNumericalInversePolynomial.dist2i	  c                    R R^\         P                  ! ^\         P                  ,          V,          4      ,           ,          ,           # )皙??r   sinr!   r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist2.pdf
  s,    $!bffQruuWQY&7"7888r)   c                8   R V^,           ,          RRR\         P                  ,          ^V,           ,          ,           \         P                  ! R\         P                  ,          V,          4      ,
          ,          R\         P                  ,          ,          ,           # )r/  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                    R# r?  r2   rA  s   &r&   r   ,TestNumericalInversePolynomial.dist2.support  rC  r)   r2   Nr%  r:   s   @r&   rl  r-  	  s     	9	 
	 	r)   rl  c                   2   a  ] tR tRt o R tR tR tRtV tR# )$TestNumericalInversePolynomial.dist3i  c                    R RR^\         P                  ! ^\         P                  ,          V,          4      ,           ,          ,           ,          # )r`   r/  r0  r1  r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist3.pdf  s1    $RVVAbeeGAI->)>!??@@r)   c                6   VR ,          R,           R^\         P                  ,          ,          \         P                  ! ^
\         P                  ,          4      \         P                  ! ^\         P                  ,          V,          4      ,
          ,          ,           # )r   r_  g
ףp=
?r5  r#   s   &&r&   r0   (TestNumericalInversePolynomial.dist3.cdf  s^    S53;qw266"RUU(3C3566!BEE'!)3D4E "F F Fr)   c                    R# )r   )r   r2   rA  s   &r&   r   ,TestNumericalInversePolynomial.dist3.support"  rC  r)   r2   Nr%  r:   s   @r&   dist3r;    s     	A	F	 	r)   rC  r_   rO  r_  r`   rn  c                8    \        V^*R7      p\        W1V4       R# rp  )r
   r   r$   r<   r   r~   s   &&& r&   rt  )TestNumericalInversePolynomial.test_basic.  s     )B?3e,r)   r  c                   . ROp. ROpR.pW9   d   \         P                  ! RV 24       W9   d   \         P                  ! RV 24       \        V\        4      '       d   \	        \
        V4      MTpV! V!  p\        4       ;_uu_ 4       pVP                  \        4       \        V^*R7      pRRR4       W9   d   R# \        XWfP                  4       VP                  4       .4       R#   + '       g   i     LD; i)anglitrel_breitwignerzPINV too slow for zPINV fails for ru   N)rH  
gausshyperkappa4ksonekstwolevy_llevy_stablestudentized_range	trapezoidtriangvonmises)	chi2fatiguelifegibrathalfgennormlognormncfncx2paretot)rk   r  r  r  ri   r   r   rr  r   r
   r   r   r   )	r$   r  r  very_slow_dists
fail_distsskip_sample_moment_checkr<   rs  r~   s	   &&&      r&   test_basic_all_scipy_dists9TestNumericalInversePolynomial.test_basic_all_scipy_dists4  s    >-
 %6#6 &KK,XJ78!KK/(45h,, x( 	 V}  CJJ~&,TCC ! /3yy{DHHJ&?@ ! s   
#C))C9	rz  c                     ! R  R4      pWn         \        P                  ! W#R7      ;_uu_ 4        \        V^ ^.R7       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# )9TestNumericalInversePolynomial.test_bad_pdf.<locals>.distiX  r2   Nr~  r2   r)   r&   r<   rd  X  r  r)   r<   rf   r   N)r'   rk   r   r
   r  s   &&&& r&   r  +TestNumericalInversePolynomial.test_bad_pdfV  s=    	 	]]3**&tQF; +***   A

A	zlogpdf, err, msgc                     ! R  R4      pWn         \        P                  ! W#R7      ;_uu_ 4        \        V^ ^.R7       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# )<TestNumericalInversePolynomial.test_bad_logpdf.<locals>.disti`  r2   Nr~  r2   r)   r&   r<   ri  `  r  r)   r<   rf   r   N)logpdfrk   r   r
   )r$   rj  rl   rm   r<   s   &&&& r&   test_bad_logpdf.TestNumericalInversePolynomial.test_bad_logpdf^  s=    	 	]]3**&tQF; +***rf  rd   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rk   r   r
   r   r  s   &&&&r&   r  3TestNumericalInversePolynomial.test_inf_nan_domainsh  s-    ]]3**&~'7G +***r  '  r   r   ra   r   c                   \        4       p\        VR R7      p\        4       ;_uu_ 4       pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  V4      p\        P                  P                  V4      pRRR4       \        XXRRR7       VP                  VP                  8X  g   Q hR#   + '       g   i     L>; i	+=u_resolutionr  r  r  r  Ngdy=r   )
r   r
   r   rr  r   r   r   r   r   r   r$   r   r<   r~   rs  r  r  s   &&     r&   test_ppf'TestNumericalInversePolynomial.test_ppf|      (EB   CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5''!*Czz~~a(H ! 	XE>yyHNN*** !    B	C))C9	r%   c                   \        4       p\        VR R7      p\        4       ;_uu_ 4       pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  V4      p\        P                  P                  V4      pRRR4       \        XXRRR7       VP                  VP                  8X  g   Q hR#   + '       g   i     L>; irq  )
r   r
   r   rr  r   r0   r   r   r   r   )r$   r%   r<   r~   rs  r  r  s   &&     r&   test_cdf'TestNumericalInversePolynomial.test_cdf  rx  ry  c                    \        4       p\        VR R7      pVP                  4       w  r4VR 8  g   Q hWC8:  g   Q h\        VRR7      pVP                  4       w  r4VR8  g   Q hWC8:  g   Q hR# g|=rs  rr  N)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                    \        4       pR p\        P                  ! \        VR7      ;_uu_ 4        \	        W!R7       RRR4       R#   + '       g   i     R# ; i)z2`order` must be an integer in the range \[3, 17\].rf   r  N)r   rk   r   r   r
   )r$   r  r<   rm   s   &&  r&   test_bad_orders.TestNumericalInversePolynomial.test_bad_orders  s7    C]]:S11&t9 2111s   AA	rt  c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        \	        4       VR7       RRR4       R#   + '       g   i     R# ; i)z.`u_resolution` must be between 1e-15 and 1e-5.rf   rs  N)rk   r   r   r
   r   )r$   rt  rm   s   && r&   test_bad_u_resolution4TestNumericalInversePolynomial.test_bad_u_resolution  s8    ?]]:S11&~'74@B 2111r  c                p    ! R  R4      pV! 4       pRp\         P                  ! \        VR7      ;_uu_ 4        \        V4      pRRR4       \	        4       p\        V4      pRp\         P                  ! \        VR7      ;_uu_ 4        VP                  ^
4       RRR4        ! R R4      pV! 4       p\        V4      pRp\         P                  ! \        VR7      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)	c                   &   a  ] tR tRt o R tRtV tR# )=TestNumericalInversePolynomial.test_bad_args.<locals>.BadDisti  c                @    \         P                  P                  V4      # r.   rR  r#   s   &&r&   r0   ATestNumericalInversePolynomial.test_bad_args.<locals>.BadDist.cdf  s    zzq))r)   r2   N)r4   r5   r6   r7   r0   r8   r9   r:   s   @r&   BadDistr         * *r)   r  z9Either of the methods `pdf` or `logpdf` must be specifiedrf   Nz4`sample_size` must be greater than or equal to 1000.c                   &   a  ] tR tRt o R tRtV tR# )BTestNumericalInversePolynomial.test_bad_args.<locals>.Distributioni  c                J    \         P                  ! RV,          V,          4      # )r_  r   r   r"   r#   s   &&r&   r'   FTestNumericalInversePolynomial.test_bad_args.<locals>.Distribution.pdf  s    vvdQhqj))r)   r2   N)r4   r5   r6   r7   r'   r8   r9   r:   s   @r&   r   r    r  r)   r   z!Exact CDF required but not found.)rk   r   r   r
   r   r  )r$   r  r<   rm   r~   r   s   &     r&   r  ,TestNumericalInversePolynomial.test_bad_args  s    	* 	* yJ]]:S11,T2C 2 (.E]]:S11KKO 2	* 	* ~(.2]]:S11KKM 21! 21 21 211s#   C>D#D$>D	D!	$D5	c                    ! R  R4      pV! 4       pR Vn         \        V4      pV! 4       pR Vn        \        V4      p\        P                  ! RR^dR7      p\        VP                  V4      VP                  V4      4       R# )c                       ] tR tRtRtR# )JTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.MyDisti  r2   Nr~  r2   r)   r&   MyDistr    r  r)   r  c                 L    \         P                  ! V ) V ,          ^,          4      # r$  )mathr"   rA   s   &r&   rB   LTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>  s    1"Q$q&!1r)   c                 $    V ) V ,          ^,          # r  r2   rA   s   &r&   rB   r    s    r!tAvr)   r  r   NgwJ?)r'   r
   rj  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   Nr  gܿUUUUUU?gQ?g @r  r  )/r4   r5   r6   r7   rE  rU  rl  rC  r  r  r  r   r!   r  r  r  rk   r+  r,  r  rt  xslowr   r`  r  r  bad_logpdfs_commonrk  r  r  r   rP   rL   r   rv  r%   r{  slowr  
bad_ordersbad_u_resolutionr  r  r  r  r8   r9   r:   s   @r&   r  r    sS     , ,
 
"	 	 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2 2r)   r  c            
       v  a  ] tR tRt o  ! R R4      t ! R R4      t]! 4       ]! 4       .tR"^]P                  ,          ,          R#^^]P                  ,          ]P                  ,          ,          ,
          .t	R$R%^^]P                  ,          ]P                  ,          ,          ,
          R&,
          .t
]	]
.t]P                  P                  R]! ]]4      4      ]P                  P                  R^^.4      ]P                  P                   R 4       4       4       t]P                  P                  R	]4      R
 4       tR t]P                  P+                  R4      ]P                  P,                  ]P                  P                  R']4      R 4       4       4       t]P                  P3                  ^4      ]P                  P+                  R4      R 4       4       tR tR^ ]P8                  P;                  ^ 4      .t]P?                  ]P8                  PA                  ^ 4      4       R]!! 4       3R(R).t"]P                  P                  R]4      ]P                  P                  R]"4      ]P                  P                   R 4       4       4       t#R t$R t%]PL                  ! RRRR7      . . .]PN                  .]PP                  ) ]PN                  ]PP                  .^ ]PN                  RR.RR]PP                  .. R*O..t)]P                  P                  R])4      R 4       t*]P                  PV                  R  4       t,R!t-V t.R# )+TestNumericalInverseHermitei  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )!TestNumericalInverseHermite.dist0i  c                    R R\         P                  ! R\         P                  ,          V,          4      ,           ,          # )r_  r   r   r1  r#   s   &&r&   r'   %TestNumericalInverseHermite.dist0.pdf  s'    RVVBruuHQJ//00r)   c                    \         P                  \         P                  ! R \         P                  ,          V,          4      ,          # )r   r5  r#   s   &&r&   r+   &TestNumericalInverseHermite.dist0.dpdf  s&    55255
+++r)   c                    R R\         P                  ,          ^V,           ,          ,           \         P                  ! R\         P                  ,          V,          4      ,
          R\         P                  ,          ,          # )r   r   r  r5  r#   s   &&r&   r0   %TestNumericalInverseHermite.dist0.cdf  sE    BEE1q5))BFF2bee8A:,>>2bee8LLr)   c                    R# r?  r2   rA  s   &r&   r   )TestNumericalInverseHermite.dist0.support  rC  r)   r2   NrD  r:   s   @r&   rE  r    s     	1	,	M	 	r)   rE  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )!TestNumericalInverseHermite.dist1i  c                l   VR8:  dO   \         P                  ! R\         P                  ,          V,          4      R ,          \         P                  ,          # VR8  d   R# VR 8:  dO   \         P                  ! R\         P                  ,          V,          4      R ,          \         P                  ,          # R# r_  r   r_   Nr   r1  r#   s   &&r&   r'   %TestNumericalInverseHermite.dist1.pdf	  ss    T	vvrBEEzQ./#5==BSvvrBEEzQ./#5== r)   c                   VR8:  d]   \         P                  ! R\         P                  ,          V,          4      \         P                  ,          \         P                  ,          # VR8  d   R# VR 8:  d]   \         P                  ! R\         P                  ,          V,          4      \         P                  ,          \         P                  ,          # R# r  r   r6  r!   r#   s   &&r&   r+   &TestNumericalInverseHermite.dist1.dpdf  s{    T	vvrBEEzQ./"%%7"%%??BSvvrBEEzQ./"%%7"%%?? r)   c                4   VR8:  dA   R^\         P                  ! R\         P                  ,          V,          4      ,
          ,          # VR8  d   R # VR 8:  dA   RR\         P                  ! R\         P                  ,          V,          4      ,          ,
          # R# )r_        ?r   r_   r4  Nr   r  r#   s   &&r&   r0   %TestNumericalInverseHermite.dist1.cdf  sk    T	q2662:*:#;;<<BSdRVVR"%%Z1,<%==== r)   c                    R# )r   )r@  r_  r2   rA  s   &r&   r   )TestNumericalInverseHermite.dist1.support!  s    Nr)   r2   NrD  r:   s   @r&   rU  r    s     	>	@	>	 	r)   rU  rn  r  c                8    \        W^*R7      p\        WAV4       R# )rq  )r  rt   N)r   r   )r$   r<   r   r  r~   s   &&&& r&   rt  &TestNumericalInverseHermite.test_basic+  s    
 &dbI3e,r)   rd   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rk   r   r   r   r  s   &&&&r&   r  0TestNumericalInverseHermite.test_inf_nan_domains5  s-    ]]3**#N$4VD +***r  c           	        0 Rmp0 RmpW9   d   \         P                  ! R4       W9   d   \         P                  ! R4       \        P                  P                  ^ 4       \        \        V4      ! V!  p\        V4      p\        P                  P                  ^
4      p\        P                  ! \        P                  ! VP                  V4      VP                  V4      ,
          4      \        P                  ! VP                  V4      4      ,          4      p\        P                  ! \        P                  ! VP                  VP                  V4      4      V,
          4      4      p	VR8  g   Q hV	R8  g   Q hR# )rL  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDF:0yE>r  N>   rL  rM  skewnormrO  >   rY  nctbetawaldrK  invgaussrS  rJ  geninvgaussnorminvgaussgenhyperbolicrP  )rk   r  r  r   rw   ry   ri   r   r   randmaxra  r   r0   )
r$   r  shapes
slow_distsr^  r<   fnir%   p_tolu_tols
   &&&       r&   basic_test_all_scipy_dists6TestNumericalInverseHermite.basic_test_all_scipy_dists:  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::RuntimeWarningc                (    V P                  W4       R # r.   r  )r$   r  r  s   &&&r&   r`  6TestNumericalInverseHermite.test_basic_all_scipy_distsS  s     	''9r)   c                *    V P                  R R4       R# )	truncnormN)r   r$  r  rA  s   &r&   test_basic_truncnorm_gh171558TestNumericalInverseHermite.test_basic_truncnorm_gh17155[  s     	''X>r)   c                   R p\         P                  ! \        VR7      ;_uu_ 4        \        \	        4       ^R7       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        R4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        \	        4       RR7       RRR4       R#   + '       g   i     L; i  + '       g   i     Li; i  + '       g   i     R# ; i)	z"`order` must be either 1, 3, or 5.rf   r  Nz`cdf` required but not foundr   z!could not convert string to floatekkirs  )rk   r   r   r   r   )r$   rg   s   & r&   r   1TestNumericalInverseHermite.test_input_validation`  s    5]]:U33#N$4A> 4 /]]:U33#F+ 4 4]]:U33#N$4179 43 43 43 433s#   C+C%C+C	C(	+C<	Nr~   r  c                2   \        4       p\        V4      p\        V4      pVP                  W!R 7      pVe   VP                  V8X  g   Q hVeJ   \        V4      pVP                  VR7      p\        P                  P                  V4      p	\        Wy4       R# R# ))r   rt   Nr   )r   r   r   rv   r   r   r  r   r   r   r   )
r$   r~   r  r  r<   r  r}   rv   r  r   s
   &&&&      r&   test_RVS$TestNumericalInverseHermite.test_RVSr  s     %d+}gg7g599(((%d+Dlll0G::>>'*DC&	 r)   c                   RpRp\         P                  ! \        VR7      ;_uu_ 4        \        \        P
                  ! V!  4       RRR4       \        \        P
                  ! V!  RR7       R#   + '       g   i     L1; i)獵dsz@zg98 : one or more intervals very short; possibly due to numerical problems with a pole or very flat tailrf   Nr  rs  )r  g@e?)rk   r   r   r   r   r  )r$   r  rg   s   &  r&   test_inaccurate_CDF/TestNumericalInverseHermite.test_inaccurate_CDF  sX     :D \\.66#EJJ$78 7 	 

F 3$G	 76s   A00B 	c                    \        4       p\        V4      p\        P                  ! 4       p\        V4      p\	        VP                  ^ R7      VP                  ^ R7      4       R# )r   ru   N)r   r   r   r   r   rv   )r$   rU  fni1rl  fni2s   &    r&   test_custom_distribution4TestNumericalInverseHermite.test_custom_distribution  sI     &u-

&u-a0$(((2JKr)   r_   r   ro  r   r_  r   r`   ra   r   c                   \        4       p\        VR R7      p\        4       ;_uu_ 4       pVP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  \        R4       VP                  V4      p\        P                  P                  V4      pRRR4       \        XXRRR	7       VP                  VP                  8X  g   Q hR#   + '       g   i     L>; i)
r  rs  r  r  r  r  Ng&.>gLa㧝=r   )
r   r   r   rr  r   r   r   r   r   r   ru  s   &&     r&   rv  $TestNumericalInverseHermite.test_ppf  s    %d?   CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5''!*Czz~~a(H ! 	XDu=yyHNN*** ! ry  c                `   \        4       p\        VR R7      pVP                  4       w  r4VR 8  g   Q hWC8:  g   Q h\        4       ;_uu_ 4       pVP	                  \
        4       \        VRR7      pRRR4       VP                  4       w  r4VR8  g   Q hWC8:  g   Q hR#   + '       g   i     L5; ir~  )r   r   r  r   rr  r   )r$   r<   r~   r  r  rs  s   &     r&   r  (TestNumericalInverseHermite.test_u_error  s    %d?	5     CJJ~&)$UCC ! 	5    ! s   #BB-	r2   r@  r  g      пg      ?g      ?)r  r  )   )r  )r  r      r  r  )/r4   r5   r6   r7   rE  rU  r  r   r!   r  r  r  rk   r+  r,  r  r-  rt  r  r  r  filterwarningsr  r   r`  	fail_slowr  r   rw   rx   rngsappendr   r(  r)  r  r  r  r   rP   rL   r   rv  r  r  r8   r9   r:   s   @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            
         a  ] tR tRt o 0 RmtR tR tR t]P                  P                  R]4      R 4       t]P                  ! ^ ^RR7      . . .]P                  .]P                   ) ]P                  ]P                   .^ ]P                  R	R
.RR]P                   .. RO..t]P                  P                  R]4      R 4       t]P                  P                  R]4      R 4       t]P                   ) ]P                   3]P                   ]P                   3]P                   ) ]P                   ) 3^ ]P                   3]P                   ) ^ 3.t]P                  P                  R]4      R 4       tRtV tR# )TestDiscreteGuideTablei  c                    . ROp\         P                  P                  4       p\        P                  ! \
        4      ;_uu_ 4        \        W^R7       RRR4       R#   + '       g   i     R# ; ir   rt   guide_factorNr   g333333?g333333?r   rw   r   rk   r   r   r	   r$   r   r   s   &  r&   $test_guide_factor_gt3_raises_warning;TestDiscreteGuideTable.test_guide_factor_gt3_raises_warning  A    yy$$&\\.))r1E *)))   AA.	c                    . ROp\         P                  P                  4       p\        P                  ! \
        4      ;_uu_ 4        \        W^ R7       RRR4       R#   + '       g   i     R# ; ir  r  r  s   &  r&   %test_guide_factor_zero_raises_warning<TestDiscreteGuideTable.test_guide_factor_zero_raises_warning  r
  r  c                    . ROp\         P                  P                  4       p\        P                  ! \
        4      ;_uu_ 4        \        WRR7       RRR4       R#   + '       g   i     R# ; i)r   r  Nr  r@  r  r  s   &  r&   )test_negative_guide_factor_raises_warning@TestDiscreteGuideTable.test_negative_guide_factor_raises_warning  sC     yy$$&\\.))r2F *)))r  r  c                0   WP                   9   d   R p\        P                  ! V4       \        V\        4      '       g   TpM\        \        V4      pV! V!  pVP                  4       p\        P                  ! V^,          V^ ,          ,
          4      '       g   \        P                  ! R4       \        P                  ! V^ ,          V^,          ^,           4      pVP                  V4      pVP                  R4      p\        V^*R7      p	\        WV4       R# )zYDGT fails on these probably because of large domains and small computation errors in PMF.z$DGT only works with a finite domain.r   ru   N)r  rk   r  r  r  ri   r   r   r   r   r   r   r	   r   r  s
   &&&       r&   rt  !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)   ro  r   r_  r   r`   ra   r   c                   ^Rr2\         P                  ! W#4      p\        V^*R7      p\        4       ;_uu_ 4       pVP	                  \
        R4       VP	                  \
        R4       VP	                  \
        R4       VP	                  \
        R4       VP                  V4      p\         P                  P                  WV4      pRRR4       \        XP                  XP                  4       \        Wx4       R#   + '       g   i     L=; i)r  r   ru   r  r  r  r  N)	r   r   r	   r   rr  r   r   r   r   )	r$   r   npr<   r~   rs  r  r  s	   &&       r&   rv  TestDiscreteGuideTable.test_ppf  s    #1{{1  B7   CJJ~'MNJJ~ (7 8JJ~'JKJJ~ (4 5 ''!*C{{qQ/H ! 	SYY/S# ! s   B
C88D	r  c                    \         P                  ! \        VR 7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; ir  )rk   r   r   r	   r  s   &&&r&   r  "TestDiscreteGuideTable.test_bad_pv%  s*    ]]:S11r" 2111r  rh   c                    \         P                  ! \        R R7      ;_uu_ 4        \        \        P
                  ! ^
R4      VR7       RRR4       R#   + '       g   i     R# ; ir  )rk   r   r   r	   r   r   r  s   &&r&   r  &TestDiscreteGuideTable.test_inf_domain/  s9    ]]:->??u{{2s3FC @???r  r2   N>   r  r  r  r  )r4   r5   r6   r7   r  r  r  r  rk   r+  r,  r   rt  r   r   rP   rL   r   rv  r  r  r  r  r8   r9   r:   s   @r&   r   r     so    FFG [[/>, ?,6 	Aqe$
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$$ %$( [[Y6# 7# FF7BFF#bffbff%5"&&7Ibff+|-J [[Xz2D 3Dr)   r   c                   b  a  ] tR tRt o  ! R R4      t]! R4      ]! R4      .tR]P                  .tR]P                  .t	]]	.t
]P                  P                  R]! ]]
4      4      ]P                  P                  R 4       4       t]P                  P                  R]4      R	 4       tR
 tRtV tR# )TestSimpleRatioUniformsi5  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestSimpleRatioUniforms.disti9  c                    Wn         Wn        R # r.   )rZ  r>   r[  s   &&r&   r   %TestSimpleRatioUniforms.dist.__init__:  s    JIr)   c                x    WP                   ,          pR \        V4      R ,           ,          pRV,          V,          # r^  r`  rb  s   && r&   r'    TestSimpleRatioUniforms.dist.pdf>  re  r)   c                    WP                   ,          pVR 8:  d   RRV,
          ,          # RRRV,           ,          ,
          # ri  rY  r#   s   &&r&   r0    TestSimpleRatioUniforms.dist.cdfC  rk  r)   )r>   rZ  N)	r4   r5   r6   r7   r   r'   r0   r8   r9   r:   s   @r&   r<   r  9  s     		
	+ 	+r)   r<   r_   rm  rn  c                    \        WP                  ^*R7      p\        W1V4       \        WP                  VP                  VP                  4      ^*R7      p\        W1V4       R# )rq  )r>   rt   )r>   cdf_at_modert   N)r   r>   r   r0   rE  s   &&& r&   rt  "TestSimpleRatioUniforms.test_basicQ  sM     "$YYRH3e,!$YY.2hhtyy.A/13 	3e,r)   rd   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rk   r   r   r   r  s   &&&&r&   r  ,TestSimpleRatioUniforms.test_inf_nan_domains^  s-    ]]3** 0@ +***r  c                    \         P                  ! \        R R7      ;_uu_ 4        \        \	        4       ^ RR7       RRR4       R#   + '       g   i     R# ; i)z`pdf_area` must be > 0rf   )r>   pdf_areaNr@  )rk   r   r   r   r   rA  s   &r&   r  %TestSimpleRatioUniforms.test_bad_argsc  s3    ]]:-FGG 0q2F HGGGs   AA	r2   N)r4   r5   r6   r7   r<   r  r   rL   r  r  r  rk   r+  r,  r  r-  rt  r  r  r  r8   r9   r:   s   @r&   r  r  5  s     + +" "XtF|$E rvv,C266
C*C[[] _.[[- .- [[/AA BAG Gr)   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestRatioUniformsii  c           	     h   \         P                  P                  p\        P                  ! V! \        P                  ! ^4      4      4      \        P                  ! ^4      ,          p\        P                  ! V! ^ 4      4      p\        WV) VRR7      p\        \         P                  ! VP                  R4      R4      ^,          R8  R4       \        R ^^ ^\        P                  ! R4      ,          RR7      p\        \         P                  ! VP                  R4      R	4      ^,          R8  R4       R
# )r$  i90  umaxvminvmaxrt   i	  r   r  Tc                 0    \         P                  ! V ) 4      # r.   r  rA   s   &r&   rB   6TestRatioUniforms.test_rv_generation.<locals>.<lambda>t  s    bffaRjr)   r  exponNr@  )
r   r   r'   r   r    r   r   kstestrv   r"   )r$   fvr   r   s   &    r&   test_rv_generation$TestRatioUniforms.test_rv_generationj  s     JJNNGGAbggajM"RWWQZ/GGAaDMAQBQUKU\\#''$-8;dBDI 0q!"266":EKU\\#''$-9!<tCTJr)   c                F   \         P                  P                  p\        P                  ! V! \        P                  ! ^4      4      4      \        P                  ! ^4      ,          p\        P                  ! V! ^ 4      4      p\        WV) VRR7      p\        WV) VRR7      p\        WV) VRR7      pVP                  ^4      VP                  R4      VP                  R4      rp\        Wx4       \        WP                  4       4       \        VP                  R4       \        V	P                  R4       \        WV) V^R7      p
\        WV) V^R7      pV
P                  RR7      VP                  ^R7      r\        VP                  4       V4       \        VP                  R4       \        WV) VRR7      p\        WV) VRR7      p\        WV) VRR7      pVP                  4       VP                  ^4      VP                  R4      ppp\        VV4       \        VV4       R# )	r$    r1  r  Nr%  )r   r   )r   r   r   r   )
r   r   r'   r   r    r   rv   r   flattenr   )r$   r9  r:  r   gen1gen2gen3r1r2r3gen4gen5r4r5gen6gen7gen8r6r7r8s   &                   r&   
test_shapeTestRatioUniforms.test_shapex  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                   \         P                  P                  p\        P                  ! V! \        P                  ! ^4      4      4      \        P                  ! ^4      ,          p\        P                  ! V! ^ 4      4      p\        WV) VRR7      pVP                  ^
4      p\        P                  P                  R4      p\        WV) W&R7      pVP                  ^
4      p\        WX4       R# )r$  r>  r1  N)
r   r   r'   r   r    r   rv   rw   rx   r   )	r$   r9  r:  r2  r@  rC  r~   rA  rD  s	   &        r&   r   #TestRatioUniforms.test_random_state  s    JJNNGGAbggajM"RWWQZ/wwqt}QNXXb\ii##D)QMXXb\Rr)   c           	     \   \         P                  P                  p\        \        R R7      ;_uu_ 4        \        V^^^R7       RRR4       \        \        R R7      ;_uu_ 4        \        V^^^R7       RRR4       \        \        RR7      ;_uu_ 4        \        VR^^R7       RRR4       \        \        RR7      ;_uu_ 4        \        V^ ^^R7       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Li; i  + '       g   i     R# ; i)zvmin must be smaller than vmaxrf   )r'   r2  r3  r4  Nzumax must be positiver@  )r   r   r'   assert_raisesr   r   )r$   r9  s   & r&   test_exceptions!TestRatioUniforms.test_exceptions  s    JJNN:-MNNaaaa8 O:-MNNaaaa8 O :-DEEabqq9 F:-DEEaaaa8 FE ONNN FEEEEs/   C!%C4DD!C1	4D	D	D+	r2   N)
r4   r5   r6   r7   r;  rP  r   rV  r8   r9   r:   s   @r&   r/  r/  i  s     K8	9 9r)   r/  )r  r  r=   )   r   r   )r   r$  r   r2   )r$  r   )r   r   )r   r   )Nr   rw  r   )r   r   )r$  r   r  r   )r   r   )r   r   )gHz>r   )r  r   )r   r
   r   )Lr   r   rk   copyr   r
  r	  r  numpyr   numpy.testingr   r   r   scipy.stats.samplingr   r   r	   r
   r   r   r   r   r   rU  scipyr   r   scipy.statsr   r   scipy.stats._distr_paramsr   r   scipy._lib._utilr   r   all_methodsimplementationnameversionfloaterrr  r  r  r  r  rP   rL   r  r   bad_sized_domainsbad_domainsr  nan_domainsr+  r,  rq   r   r   r   r   r   r   r   r   r   r   r   r/  r  r  r  r   r  r/  r2   r)   r&   <module>ri     s        
   J J	 	 	 +   1 < /	 	 #V^-=$>?&"345F$567!FN,<#=>)9 :;V^%5vq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 2DW  W tfD fDR1G 1GhA9 A9r)   