+
    nDjz              
          ^ 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	t
^ RI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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'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R/R0]
P\                  R.R13R/R0]
P^                  R.R13R-R-.R23.t0RW]1R33RX]1R33.t2RY]R43RZ]R43.t3R[]R43]
P^                  ]
P^                  3]R43]
P^                  ) ]
P^                  ) 3]R43]
P^                  ]
P^                  ) 3]R43]
P^                  ) ]
P\                  3]1R53]
P\                  ]
P^                  3]1R53.t4^ ]
P\                  3]1R53]
P\                  ]
P\                  3]1R53.t5]Pl                  Po                  R6]3]2,           ]5,           4      ]Pl                  Po                  R7]'4      R8 4       4       t8]Pl                  Po                  R7]'4      R9 4       t9R: t:R; t;]Pl                  Po                  R7]'4      R< 4       t<]Pl                  Po                  R=. R\O4      R> 4       t=R? t>R@ t?R]RA lt@R^RB ltARC tB]Pl                  Po                  RD. R_O4      RE 4       tC]Pl                  Po                  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# )`    N)deepcopy)assert_allcloseassert_equal)TransformedDensityRejectionDiscreteAliasUrnDiscreteGuideTableNumericalInversePolynomialNumericalInverseHermiteRatioUniformsSimpleRatioUniformsUNURANError)raises)stats)special)	chisquarecramervonmises)distdiscretedistcont)check_random_state)assert_deallocatedc                   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   &&Y/data/cameron/venvs/s3viz/lib/python3.14/site-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   modezmust be real number, not listc                     V ) # r.   r2   r%   s   &r&   <lambda>rA   >   s    rr)   z...c                     . # r.   r2   r@   s   &r&   rA   rA   @       rr)   c                     \         # r.   foor@   s   &r&   rA   rA   B       sr)   name 'foo' is not definedc                 "    \         P                  # r.   r   infr@   s   &r&   rA   rA   D       rvvr)   c                 "    \         P                  # r.   r   nanr@   s   &r&   rA   rA   F   rL   r)   c                      R # r   r2   r2   r)   r&   rA   rA   H       Sr)   ,takes 0 positional arguments but 1 was givenc                 "    \         P                  # r.   rJ   r@   s   &r&   rA   rA   O   rL   r)   c                 "    \         P                  # r.   rN   r@   s   &r&   rA   rA   Q   rL   r)   c                     . # r.   r2   r@   s   &r&   rA   rA   S   rC   r)   c                     \         # r.   rE   r@   s   &r&   rA   rA   U   rG   r)   c                      R # rQ   r2   r2   r)   r&   rA   rA   W   rR   r)   c                     . # r.   r2   r@   s   &r&   rA   rA   ^   rC   r)   c                     \         # r.   rE   r@   s   &r&   rA   rA   `   rG   r)   c                 "    \         P                  # r.   rJ   r@   s   &r&   rA   rA   b   rL   r)   c                 "    \         P                  # r.   rN   r@   s   &r&   rA   rA   d   rL   r)   c                      R # rQ   r2   r2   r)   r&   rA   rA   f   rR   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   )rg   errmsgmethodkwargsMethods   &&&&& r&   test_bad_domainrp      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rs   Nr2   )rh   r   ri   r   rvsr   randomRandomStateseedMT19937	Generator)rm   rn   ro   rx   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# )rr   rt   N)r   r   set_random_stater   ru   )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)rF   rg   rs   順 r   N
   d   r   ru   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   )targetrF   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# )rs   Nr2   )rh   r   ri   pickledumpsloadsr   ru   )rm   rn   ro   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   isscalarru   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   rt   num      $@      @)locscaler_   N)r   normr   rv   default_rngr
   linspacecheck_cont_samplesr   ppfbinomr   supportpmfarangecheck_discr_samples)r<   urngr}   urg   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                  ! 4       p \        P                  P	                  ^ 4      p\        \        WR7      ;_uu_ 4       p\        P                  ! ^ ^^dR7      p\        W V P                  4       4       \        V P                  V4      VP                  V4      4       ?RRR4       R#   + '       g   i     R# ; i)r   rt   r   N)r   r   r   rv   r   r   r
   r   r   r   r   )r<   r   r}   r   s       r&   %test_NumericalInverseHermite_refcycler   '  s    ::<D99  #D	3T	M	MQTKK1#&3djjl3SWWQZ0	 
N	M	M	Ms   AB77C	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)
ru   meanvarr   isfiniter   	vectorizer0   r   pvalue)r}   r<   mv_exr   r   ru   mvpvals   &&&&&   r&   r   r   2  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   )ru   r   r   r   sumr   
zeros_likeuniquer   r   r   )r}   r   r   r   r   ru   r   	obs_freqs_freqsr   s   &&&&&      r&   r   r   ?  s    
''&/C	SWWY	BBD4	ffhBb!IyyD1HAIIKE"kuzzY#**D#::r)   c                  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 distributionre   )centerrg   Nrg         )rj   warnsRuntimeWarningr	   r   )rl   s    r&   !test_warning_center_not_in_domainr   O  sg     ;C	nC	0	0">#3AfM 
1	nC	0	0">#3FC 
1	0 
1	0	0	0	0s   B
*B
B	B.	rm   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 domainre   )r>   rg   Nr   )rh   r   ri   rj   r   r   r   )rm   ro   rl   s   &  r&   test_error_mode_not_in_domainr   Y  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R	7      R
 4       4       4       4       tR tRtV tR# )TestQRVSig  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...re   )
qmc_engineN6`d` must be consistent with dimension of `qmc_engine`.dr   )
rj   r   r   rh   r   ri   r   qrvsqmcHalton)r$   rm   rf   ro   gens   &&   r&   test_input_validationTestQRVS.test_input_validationj  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rx   qrngsize_in, size_outzd_in, d_outzfails in parallelreasonc                   \         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   re   r   r   r   r   -q=r   )sysplatformarchitecturerj   xfailr   rh   r   ri   r   r   r   r   r   r   rv   r   prodr   r   reshaper   )r$   r  size_insize_outd_ind_outrm   w32r<   ro   r   rf   shape_expectedqrng2r   uniformqrvs2s   &&&&&&&          r&   test_QRVS_shape_consistency$TestQRVS.test_QRVS_shape_consistency  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   rh   r   ri   r   r   rv   r   r  r   r   r   ranger  r   )r$   rm   r<   ro   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dsrj   markparametrizethread_unsafer  r#  r8   r9   r:   s   @r&   r   r   g  s     : 599??11?-uyy/?/?/?/JKEEG_i+-E /Auw<	3B[[VU+[[0%8[[]B/[[&9: 5 ; 0 9 , 5D9 9r)   r   c            
       P  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      4      ]P                   P)                  RR7      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!]
PD                  ! ^ ^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   r7  r2   r#   s   &&r&   r+   *TestTransformedDensityRejection.dist0.dpdf  s    "Q$<r)   c                J    RW^,          ^,          ,
          R,           ,          # r   r7  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&   dist0r4    s     	!	 	,	 	r)   rH  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   rM  r#   s   &&r&   r+   *TestTransformedDensityRejection.dist1.dpdf  s$    29uzzq3w777r)   c                N    \         P                  P                  VR ,          4      # rL  r   r   _cdfr#   s   &&r&   r0   )TestTransformedDensityRejection.dist1.cdf  rP  r)   r2   Nr3   r:   s   @r&   dist1rJ    s     	,	8	, 	,r)   rX  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$   r]  s   &&r&   r   .TestTransformedDensityRejection.dist2.__init__  s    Jr)   c                x    WP                   ,          pR \        V4      R ,           ,          pRV,          V,          # r         ?r]  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^   rc  re  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^   rb  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   r9   r:   s   @r&   dist2rZ    s     		
	)	+ 	+r)   ro  r^        @rR  dist, mv_exdeadlocks for unknown reasonsr  c                    \         P                  ! 4       ;_uu_ 4        \         P                  ! R \        4       \	        V^*R7      pRRR4       \        XW4       R#   + '       g   i     L; i)ignorert   N)warningscatch_warningssimplefilterr   r   r   r$   r<   r   r}   s   &&& r&   
test_basic*TestTransformedDensityRejection.test_basic  sI     $$&&!!(N;-dDC ' 	3,	 '&s   )AA-	c                    ^ # r   r2   r@   s   &r&   rA   (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   r@   s   &r&   rA   >TestTransformedDensityRejection.test_bad_pdf.<locals>.<lambda>  s    ar)   re   Nr'   r+   rj   r   r   r$   r'   rk   rl   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   r@   s   &r&   rA   ?TestTransformedDensityRejection.test_bad_dpdf.<locals>.<lambda>  s    Qr)   re   r   Nr   r   r  )r$   r+   rk   rl   r<   s   &&&& r&   test_bad_dpdf-TestTransformedDensityRejection.test_bad_dpdf  s@    	 		]]3**'W= +***s   AA!	rc   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ire   r   N)rj   r   r   r   r$   rg   rk   rl   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.re   r  Nrj   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.re   r  Nz:33 : starting points not strictly monotonically increasingr~  z!50 : starting point out of domain)rg   r  )r   r   r   r   r   r   )r   )
rj   r   r   r   r   r   r   r   rO   r   r  s   & r&   "test_bad_construction_points_arrayBTestTransformedDensityRejection.test_bad_construction_points_array0  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.re   )r  N      r  )r$   r  rl   s   && r&   
test_bad_c*TestTransformedDensityRejection.test_bad_cT  s4    .]]:S11'(8C@ 2111   AA	  r   rb  r_   r`   r   c                v   \        \        4       R R7      p\        P                  ! 4       ;_uu_ 4        Rp\        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RV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 rt  greatergreater_equalless
less_equalNMbP?h㈵>r   )r   r   ru  rv  filterwarningsr   ppf_hatr   r   r   r   r   )r$   r   r}   rl   resexpecteds   &&    r&   test_ppf_hat,TestTransformedDensityRejection.test_ppf_hat^  s     *.*:@FH $$&&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q++a.Czz~~a(H ' 	XDt<yyHNN*** '&s   B?D((D8	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>.distis  r2   Nr  r2   r)   r&   r<   r  s  s    r)   r<   z`pdf` required but not found.re   Nc                       ] tR tRtR tRtR# )r  i{  c                     ^W ,          ,
          # r   r2   r@   s   &r&   rA   DTestTransformedDensityRejection.test_bad_dist.<locals>.dist.<lambda>|  s
    AacEr)   r2   N)r4   r5   r6   r7   r'   r8   r2   r)   r&   r<   r  {  s    !Cr)   z`dpdf` required but not found.)rj   r   r   r   )r$   r<   rl   s   &  r&   test_bad_dist-TestTransformedDensityRejection.test_bad_distq  sx    	 	 /]]:S11'- 2	" 	" 0]]:S11'- 21 21 211s   B5BB	B/	r2   N?)rC  r   r   r  r;  r   r  )(r4   r5   r6   r7   rH  rX  ro  distsmv0mv1r   rK   mv2mv3mvsrj   r.  r/  listzipr0  ry  r   bad_pdfsbad_pdfs_commonr  bad_dpdf_commonr  inf_nan_domainsr  r  r  rO   r  r   r   r  r  r8   r9   r:   s   @r&   r2  r2    sP     , ,+ +, WeguRy%-8E v,Ct*Crvv,C266
CS#
C[[]!#eS/24[[&EF- G4- k+KLMHH[[_h7. 8. [[-?> @> [[/AI BI [[2LA B"H [[S3R"@AA BA
 
Qt	$b2$66'266266	"A663
sC0*	=	?A [[S!$+ %+$. .r)   r2  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   rt   N)basic_fail_distsrj   skip
isinstancestrrh   r   r   r   r   r   r   r   r   
r$   distnameparamsrl   r<   rg   kr   r   r}   s
   &&&       r&   ry  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.   rJ   r@   s   &r&   rA   TestDiscreteAliasUrn.<lambda>      266r)   ra   c                "    \         P                  # r.   rN   r@   s   &r&   rA   r    r  r)   c                    R # )r^   r2   r@   s   &r&   rA   r    s    3r)   rb   c                    \         # r.   rE   r@   s   &r&   rA   r    s    3r)   rH   c                    . # r.   r2   r@   s   &r&   rA   r    s    2r)   z)setting an array element with a sequence.c                    V ) # r.   r2   r@   s   &r&   rA   r    s    A2r)   z50 : probability < 0c                     R # rQ   r2   r2   r)   r&   rA   r    s    r)   rS   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<   re   r   Nr  )r   rj   r   r   )r$   r   rk   rl   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# ))dtypert   r   )weightsN)
r   asarrayfloat64r   ru   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re   Nrj   r   r   r   r$   r   rl   s   &&&r&   test_bad_pv TestDiscreteAliasUrn.test_bad_pv  s*    ]]:S11R  2111	   ;A	rg   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 finitere   r_   r   N)rj   r   r   r   r   r   r$   rg   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.re   rb  )
urn_factorNrC  )rj   r   r   r   rD  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<   re   Nr  )r$   rl   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# )  rt   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  rj   r.  r/  r   ry  r   	NameErrorr   	TypeErrorbad_pmfr  r  bad_pv_commonr  r   rK   
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/R0]P                  ^,          ,          ,
          .tR.]P                  ,          R1R0]P                  ^,          ,          ,
          .t]	]
]].t]P"                  P%                  RR7      ]P"                  P'                  R]! ]! ]]4      4      4      R 4       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      . . .]PB                  .]PD                  ) ]PB                  ]PD                  .^ ]PB                  RR.RR]PD                  .. R2O..t#]P"                  P'                  R]#4      R 4       t$]P@                  ! R3^
RR7      . . .]PB                  .]PD                  ) ]PB                  ]PD                  .^ ]PB                  RR.RR]PD                  .]PD                  ) ^^...t%]P"                  P'                  R ]%4      R! 4       t&]P"                  PN                  R" 4       t(^R#^]PD                  ]PB                  .t)R$R]PD                  ]PB                  .t*]P"                  P'                  R%])4      R& 4       t+]P"                  P'                  R']*4      R( 4       t,R) t-R* t.R+t/V t0R,# )4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,          ,
          ,          # r6  r2   r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist0.pdf  r9  r)   c                J    RW^,          ^,          ,
          R,           ,          # r>  r2   r#   s   &&r&   r0   (TestNumericalInversePolynomial.dist0.cdf  r@  r)   c                    R# rB  r2   rD  s   &r&   r   ,TestNumericalInversePolynomial.dist0.support  rF  r)   r2   N	r4   r5   r6   r7   r'   r0   r   r8   r9   r:   s   @r&   rH  r&    s     	!	,	 	r)   rH  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      # rL  rM  r#   s   &&r&   r'   (TestNumericalInversePolynomial.dist1.pdf  rP  r)   c                N    \         P                  P                  VR ,          4      # rL  rU  r#   s   &&r&   r0   (TestNumericalInversePolynomial.dist1.cdf	  rP  r)   r2   N)r4   r5   r6   r7   r'   r0   r8   r9   r:   s   @r&   rX  r/    s     	,	, 	,r)   rX  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                  ,          ,          ,           # )r7  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# rB  r2   rD  s   &r&   r   ,TestNumericalInversePolynomial.dist2.support  rF  r)   r2   Nr-  r:   s   @r&   ro  r5    s     	9	 
	 	r)   ro  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_   r7  r8  r9  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   rb  g
ףp=
?r=  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   rD  s   &r&   r   ,TestNumericalInversePolynomial.dist3.support*  rF  r)   r2   Nr-  r:   s   @r&   dist3rC  "  s     	A	F	 	r)   rK  r^   rR  rb  r_   rr  r  rq  c                8    \        V^*R7      p\        W1V4       R# )*   rt   N)r	   r   rx  s   &&& r&   ry  )TestNumericalInversePolynomial.test_basic6  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\        P                  ! 4       ;_uu_ 4        \        P                  ! R\        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 rt  rt   N)rP  
gausshyperkappa4ksonekstwolevy_llevy_stablestudentized_range	trapezoidtriangvonmises)	chi2fatiguelifegibrathalfgennormlognormncfncx2paretot)rj   r  r  r  rh   r   ru  rv  rw  r   r	   r   r   r   )r$   r  r  very_slow_dists
fail_distsskip_sample_moment_checkr<   r}   s   &&&     r&   test_basic_all_scipy_dists9TestNumericalInversePolynomial.test_basic_all_scipy_dists=  s    >-
 %6#6 &KK,XJ78!KK/(45h,, x( 	 V}$$&&!!(N;,TCC ' /3yy{DHHJ&?@ '&s   )C::D
	r  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>.distia  r2   Nr  r2   r)   r&   r<   rl  a  r  r)   r<   re   r   N)r'   rj   r   r	   r  s   &&&& r&   r  +TestNumericalInversePolynomial.test_bad_pdf_  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>.distii  r2   Nr  r2   r)   r&   r<   rq  i  r  r)   r<   re   r   N)logpdfrj   r   r	   )r$   rr  rk   rl   r<   s   &&&& r&   test_bad_logpdf.TestNumericalInversePolynomial.test_bad_logpdfg  s=    	 	]]3**&tQF; +***rn  rc   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rj   r   r	   r   r  s   &&&&r&   r  3TestNumericalInversePolynomial.test_inf_nan_domainsq  s-    ]]3**&~'7G +***r  '  r   r   r`   r   c                z   \        4       p\        VR R7      p\        P                  ! 4       ;_uu_ 4        Rp\        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RV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  rt  r  r  r  r  Ngdy=r   )r   r	   ru  rv  r  r   r   r   r   r   r   r$   r   r<   r}   rl   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%   c                z   \        4       p\        VR R7      p\        P                  ! 4       ;_uu_ 4        Rp\        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RV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ry  )r   r	   ru  rv  r  r   r0   r   r   r   r   )r$   r%   r<   r}   rl   r  r  s   &&     r&   test_cdf'TestNumericalInversePolynomial.test_cdf  r  r  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# )绽|=r{  rz  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\].re   r  N)r   rj   r   r   r	   )r$   r  r<   rl   s   &&  r&   test_bad_orders.TestNumericalInversePolynomial.test_bad_orders  s7    C]]:S11&t9 2111s   AA	r|  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.re   r{  N)rj   r   r   r	   r   )r$   r|  rl   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.   rU  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 specifiedre   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      # )rb  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.)rj   r   r   r	   r   r  )r$   r  r<   rl   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>.MyDistr  r2   Nr  r2   r)   r&   MyDistr    r  r)   r  c                 L    \         P                  ! V ) V ,          ^,          4      # r'  )mathr"   r@   s   &r&   rA   LTestNumericalInversePolynomial.test_logpdf_pdf_consistency.<locals>.<lambda>  s    1"Q$q&!1r)   c                 $    V ) V ,          ^,          # r  r2   r@   s   &r&   rA   r    s    r!tAvr)   r  r   NgwJ?)r'   r	   rr  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  )1r4   r5   r6   r7   rH  rX  ro  rK  r  r  r  r   r!   r  r  r  rj   r.  r0  r/  r  r  ry  xslowr   rh  r  r  bad_logpdfs_commonrs  r  r  r   rO   rK   r   r~  r%   r  slowr  
bad_ordersbad_u_resolutionr  r  r  r  r8   r9   r:   s   @r&   r$  r$    st     , ,
 
"	 	 Weguw0E v,Ct*C;'"%%("22
3C;)GBEE1H,<<
=CS#
C[[&EF[[]!#eS/24-4 G- [[[[/:A ; A@ [[_o>< ?< [[/1CD< E< [[/AH BH 	Aqe$
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$+ %+  
S"%	("rdRVVH66'266266	"A663
sC0BFF7Aq/	B	DA [[S!$+ %+  [[	  	  S"bffbff-JtRVVRVV4[[Wj1: 2: [[^-=>B ?B62 2r)   r$  c            
         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      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                  P5                  ^4      ]P                  P-                  R4      ]P                  P7                  ^4      R 4       4       4       tR tR^ ]P<                  P?                  ^ 4      .t ] PC                  ]P<                  PE                  ^ 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']PP                  ! RRRR7      . . .]PR                  .]PT                  ) ]PR                  ]PT                  .^ ]PR                  RR.RR]PT                  .. R*O..t+]P                  P                  R]+4      R 4       t,]P                  PZ                  R  4       t.R!t/V t0R# )+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      ,           ,          # )rb  r   r   r9  r#   s   &&r&   r'   %TestNumericalInverseHermite.dist0.pdf  s'    RVVBruuHQJ//00r)   c                    \         P                  \         P                  ! R \         P                  ,          V,          4      ,          # )r   r=  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  r=  r#   s   &&r&   r0   %TestNumericalInverseHermite.dist0.cdf  sE    BEE1q5))BFF2bee8A:,>>2bee8LLr)   c                    R# rB  r2   rD  s   &r&   r   )TestNumericalInverseHermite.dist0.support  rF  r)   r2   NrG  r:   s   @r&   rH  r    s     	1	,	M	 	r)   rH  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# rb  r   r^   Nr   r9  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   r>  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# )rb        ?r   r^   r7  Nr   r  r#   s   &&r&   r0   %TestNumericalInverseHermite.dist1.cdf   sk    T	q2662:*:#;;<<BSdRVVR"%%Z1,<%==== r)   c                    R# )r   )rC  rb  r2   rD  s   &r&   r   )TestNumericalInverseHermite.dist1.support(  s    Nr)   r2   NrG  r:   s   @r&   rX  r    s     	>	@	>	 	r)   rX  rq  r  c                8    \        W^*R7      p\        WAV4       R# )rM  )r  rs   N)r
   r   )r$   r<   r   r  r}   s   &&&& r&   ry  &TestNumericalInverseHermite.test_basic2  s    
 &dbI3e,r)   rc   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rj   r   r
   r   r  s   &&&&r&   r  0TestNumericalInverseHermite.test_inf_nan_domains<  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      p\        \        V4      ! V!  p\        V4      pV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# )rT  zDistribution is too slowz)Fails - usually due to inaccurate CDF/PDF:0yE>r
  N>   rT  rU  skewnormrW  >   ra  nctbetawaldrS  invgaussr[  rR  geninvgaussnorminvgaussgenhyperbolicrX  )rj   r  r  r   rv   r   rh   r   r
   maxrd  r   r0   )r$   r  shapes
slow_distsrf  r}   r<   fnir%   p_tolu_tols   &&&        r&   basic_test_all_scipy_dists6TestNumericalInverseHermite.basic_test_all_scipy_distsA  s    B
@
 !KK23! LLDEii##A&uh'0%d+JJrNrvvdhhqk#''!*45bffTXXa[6IIJrvvdhhswwqz2Q678t||u}}r)   zignore::RuntimeWarningc                (    V P                  W4       R # r.   r  )r$   r  r  s   &&&r&   rh  6TestNumericalInverseHermite.test_basic_all_scipy_distsZ  s     	''9r)   c                *    V P                  R R4       R# )	truncnormN)r   r'  r  rD  s   &r&   test_basic_truncnorm_gh171558TestNumericalInverseHermite.test_basic_truncnorm_gh17155b  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.re   r  Nz`cdf` required but not foundr   z!could not convert string to floatekkir{  )rj   r   r   r
   r   )r$   rf   s   & r&   r   1TestNumericalInverseHermite.test_input_validationh  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   rs   Nr   )r   r
   r   ru   r   r   r  r   r   r   r   )
r$   r}   r  r  r<   r  r|   ru   r  r   s
   &&&&      r&   test_RVS$TestNumericalInverseHermite.test_RVSz  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 tailre   Nr  r{  )r  g@e?)rj   r   r   r
   r   r  )r$   r  rf   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   rt   N)r   r
   r   r   r   ru   )r$   rX  fni1ro  fni2s   &    r&   test_custom_distribution4TestNumericalInverseHermite.test_custom_distribution  sI     &u-

&u-a0$(((2JKr)   r^   r   rw  r   rb  r   r_   r`   r   c                z   \        4       p\        VR R7      p\        P                  ! 4       ;_uu_ 4        Rp\        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RVR,           \
        4       \        P                  ! RV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
  r{  r  rt  r  r  r  r  Ng&.>gLa㧝=r   )r   r
   ru  rv  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                   \        4       p\        VR R7      pVP                  4       w  r4VR 8  g   Q hWC8:  g   Q h\        P                  ! 4       ;_uu_ 4        \        P
                  ! R\        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{  rt  rz  N)r   r
   r  ru  rv  rw  r   r  s   &    r&   r  (TestNumericalInverseHermite.test_u_error  s    %d?	5   $$&&!!(N;)$UCC ' 	5    '&s   )B..B>	r2   rC  r  g      пg      ?g      ?)r  r  )   )r   )r  r      r  r  )1r4   r5   r6   r7   rH  rX  r  r   r!   r  r  r  rj   r.  r/  r  r  r0  ry  r  r  r  r  r  r   rh  	fail_slowparallel_threads_limitr  r   rv   rw   rngsappendr   r+  r,  r  r  r  r   rO   rK   r   r~  r  r  r8   r9   r:   s   @r&   r  r    s    
 " 8 WegE qw<q!BEE'"%%-00
1CQ"%%&&-
.C*C[[]!#eS/24[[Wq!f-[[-  .4- [[/AE BE2 [[ 89[[[[3X>: ?  ::
 [[1[[ 89[[''*? + : ?9 !RYY**1-.DKK		%%a()EG_i)?@E[[UD)[[0%8[['  9 *'HL 	B&
RD	BFF7BFFBFF+	 &&#s	c3/<	A [[S!$+ %+  [[   r)   r  c            
         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   rs   guide_factorNr   g333333?g333333?r   rv   r   rj   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  rC  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   rt   N)r  rj   r  r  r  rh   r   r   r   r   r   r   r   r   r  s
   &&&       r&   ry  !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)   rw  r   rb  r   r_   r`   r   c                   ^Rr2\         P                  ! W#4      p\        V^*R7      p\        P                  ! 4       ;_uu_ 4        Rp\        P
                  ! RVR,           \        4       \        P
                  ! RVR,           \        4       \        P
                  ! RVR,           \        4       \        P
                  ! RV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   rt   r  rt  r  r  r  r  N)
r   r   r   ru  rv  r  r   r   r   r   )	r$   r   npr<   r}   rl   r  r  s	   &&       r&   r~  TestDiscreteGuideTable.test_ppf  s    #1{{1  B7 $$&&1C##HcIo~N##HcO.C^T##HcFlNK##HcL.@.Q''!*C{{qQ/H ' 	SYY/S# '&s   C D99E		r  c                    \         P                  ! \        VR 7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; ir  )rj   r   r   r   r  s   &&&r&   r  "TestDiscreteGuideTable.test_bad_pv*  s*    ]]:S11r" 2111r   rg   c                    \         P                  ! \        R R7      ;_uu_ 4        \        \        P
                  ! ^
R4      VR7       RRR4       R#   + '       g   i     R# ; ir  )rj   r   r   r   r   r   r  s   &&r&   r  &TestDiscreteGuideTable.test_inf_domain4  s9    ]]:->??u{{2s3FC @???r  r2   N>   r  r  r  r  )r4   r5   r6   r7   r  r  r  r  rj   r.  r/  r   ry  r   r   rO   rK   r   r~  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            	       n  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      4      ]P                  P                   R 4       4       t]P                  P                  R]4      R	 4       tR
 tRtV tR# )TestSimpleRatioUniformsi:  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestSimpleRatioUniforms.disti>  c                    Wn         Wn        R # r.   )r]  r>   r^  s   &&r&   r   %TestSimpleRatioUniforms.dist.__init__?  s    JIr)   c                x    WP                   ,          pR \        V4      R ,           ,          pRV,          V,          # ra  rc  re  s   && r&   r'    TestSimpleRatioUniforms.dist.pdfC  rh  r)   c                    WP                   ,          pVR 8:  d   RRV,
          ,          # RRRV,           ,          ,
          # rl  r\  r#   s   &&r&   r0    TestSimpleRatioUniforms.dist.cdfH  rn  r)   )r>   r]  N)	r4   r5   r6   r7   r   r'   r0   r8   r9   r:   s   @r&   r<   r'  >  s     		
	+ 	+r)   r<   r^   rp  rq  c                    \        WP                  ^*R7      p\        W1V4       \        WP                  VP                  VP                  4      ^*R7      p\        W1V4       R# )rM  )r>   rs   )r>   cdf_at_moders   N)r   r>   r   r0   rx  s   &&& r&   ry  "TestSimpleRatioUniforms.test_basicV  sM     "$YYRH3e,!$YY.2hhtyy.A/13 	3e,r)   rc   c                    \         P                  ! W#R 7      ;_uu_ 4        \        \        4       VR7       RRR4       R#   + '       g   i     R# ; ir  )rj   r   r   r   r  s   &&&&r&   r  ,TestSimpleRatioUniforms.test_inf_nan_domainsc  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 > 0re   )r>   pdf_areaNrC  )rj   r   r   r   r   rD  s   &r&   r  %TestSimpleRatioUniforms.test_bad_argsh  s3    ]]:-FGG 0q2F HGGGs   AA	r2   N)r4   r5   r6   r7   r<   r  r   rK   r  r  r  rj   r.  r/  r  r  r0  ry  r  r  r  r8   r9   r:   s   @r&   r%  r%  :  s     + +" "XtF|$E rvv,C266
C*C[[]!#eS/24[[- 4- [[/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# )TestRatioUniformsin  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vmaxrs   i	  r   r  Tc                 0    \         P                  ! V ) 4      # r.   r  r@   s   &r&   rA   6TestRatioUniforms.test_rv_generation.<locals>.<lambda>y  s    bffaRjr)   r  exponNrC  )
r   r   r'   r   r    r   r   kstestru   r"   )r$   fvr   r   s   &    r&   test_rv_generation$TestRatioUniforms.test_rv_generationo  s     JJNNGGAbggajM"RWWQZ/GGAaDMAQBQUKU\\#''$-8;dBDI 0q!"266":EKU\\#''$-9!<tCTJr)   c                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'    r9  r  Nr(  )r   r   )r   r   r   r   )
r   r   r'   r   r    r   ru   r   flattenr   )r$   rA  rB  r   gen1gen2gen3r1r2r3gen4gen5r4r5gen6gen7gen8r6r7r8s   &                   r&   
test_shapeTestRatioUniforms.test_shape}  s   JJNNGGAbggajM"RWWQZ/GGAaDMQaRadKQaRadKQaRadKXXa[$((4.$((62BRR&RXXt$RXXv&QaRabIQaRabIy)4888+<BRZZ\2&RXXy)QaRadKQaRadKQaRadKXXZ!dhhtnBRRr)   c                   \         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'  rF  r9  N)
r   r   r'   r   r    r   ru   rv   rw   r   )	r$   rA  rB  r:  rH  rK  r}   rI  rL  s	   &        r&   r   #TestRatioUniforms.test_random_state  s    JJNNGGAbggajM"RWWQZ/wwqt}QNXXb\ii##D)QMXXb\Rr)   c           	     \   \         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 vmaxre   )r'   r:  r;  r<  Nzumax must be positiverC  )r   r   r'   assert_raisesr   r   )r$   rA  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   rC  rX  r   r^  r8   r9   r:   s   @r&   r7  r7  n  s     K8	9 9r)   r7  )r  r  r=   )r   r'  r   r2   )r'  r   )r   r   )r   r   )Nr   r|  r   )r   r   )r'  r   r  r   )r   r   )r   r   )gHz>r   )r  r   )r   r	   r   )Lr   r   rj   copyr   r  r  r  ru  numpyr   numpy.testingr   r   scipy.stats.samplingr   r   r   r	   r
   r   r   r   r   r]  scipyr   r   scipy.statsr   r   scipy.stats._distr_paramsr   r   scipy._lib._utilr   scipy._lib._gcutilsr   r   all_methodsfloaterrr  r  r  r  r  rO   rK   r!  r   bad_sized_domainsbad_domainsr  nan_domainsr.  r/  rp   r   r   r   r   r   r   r   r   r   r   r   r   r2  r  r$  r  r  r%  r7  r2   r)   r&   <module>rn     s        
    7	 	 	 +   1 < / 2	 	 #V^-=$>?&"345F$567!FN,<#=>)9 :;V^%5vqAB , ;'9h'I;<{F+{F+)LM& {F+{F+9h'I;<)LM" 9h'I;<{F+{F+)LM  	-.
Cj\FG	3JK	3JK	3Z<= 
7801	  [*+[*+ {,-ffbff{$45	vvgw&67ffrvvg%56	vvgrvv
$:;ffbffz#9:	 [*45ffbffz#9: +$'88$%& );7( 8&( );7/ 8/8	.#b );7/ 8/  "2 3	+3	+/*
 D  $C D8D8 $=$@$B CY9 Y9CY9x{. {.|r' r'j~2 ~2BW  W tdD dDN1G 1GhA9 A9r)   