
    sg%>                     D   d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d Zd Zg dZe j"                  j%                  d	e      d
        Ze j"                  j%                  d	e      d        Ze j"                  j*                  e j"                  j-                  d      d               Ze j"                  j%                  d	dg      d        Zd Zd Zd Ze j"                  j%                  ddddej8                   ej8                  ffg      d        Ze j"                  j%                  d	ddg      d        Zd Zd Z d Z!e j"                  j%                  dg d       d!        Z"d" Z#d# Z$d$ Z%e j"                  jM                  d%       G d& d'             Z'd( Z(y))    N)assert_array_equalassert_allclosesuppress_warnings)deepcopy)FastGeneratorInversion)statsc                     t        j                  t        d      5  t        t	        j
                  d             d d d        t        j                  t        d      5  t        t	        j
                  ddg             d d d        t        j                  t        d	      5  t        t	        j
                         d
       d d d        d} t        j                  t        |       5  t        t	        j                  ddg             d d d        t        j                  t        d      5  t        d       d d d        t        j                  t        d      5  t        t	        j                  dd             d d d        y # 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzloc must be scalarmatch)333333??)loczscale must be scalar      ?@)scalez'test' cannot be used to seedtestrandom_statez/Each of the 1 shape parameters must be a scalarr         @z`dist` must be a frozenxyzDistribution 'truncnorm' is not      @)pytestraises
ValueErrorr   r   normgamma	truncnorm)msgs    \/var/www/html/venv/lib/python3.12/site-packages/scipy/stats/tests/test_fast_gen_inversion.pytest_bad_argsr       sU   	z)=	> ;uzzj9:;	z)?	@ =uzzc
;<= 
z)H	I Buzz|&AB <C	z	- 8u{{C:678 
z)B	C %t$% 
z)J	K :usC89: :; ;= =B B8 8% %: :sG    F"F$ F)!F+-F7 GFFF(+F47G Gc                     t        t        j                         d      } | j                  d      }d| _        | j                  d      }t        ||       t        j                  j                  d      }t        t        j                         |      } | j                  d      }t        j                  j                  d      | _        | j                  d      }t        ||       t        j                  j                  d      }t        t        j                         |      } | j                  d      }t        j                  j                  d      | _        | j                  d      }t        ||       t        t        j                         d      } | j                  d      }| j                  d      }| j                  d      }d| _        | j                  d      }t        ||dd         y )	Ni-r   
   sizei16i<	        )r   r   r   rvsr   r   nprandomdefault_rngRandomStateevaluate_error)genx1x2urng_x3s         r   test_random_stater3       s   
 H
EC	b	BC	b	Br2 99  *D
 D
AC	b	Byy,,X6C	b	Br2 99  &D
 D
AC	b	Byy,,T2C	b	Br2 !H
EC	b	B"A	b	BC	b	Br2bc7#    )#)alpha      @)anglit )argusr6   )r:   )gffffff@)beta)r   ?)cosiner9   )	betaprime)r   gffffff
@)bradfordr   )burr)r   333333@)burr12ffffff?r   )cauchyr9   )chi2r6   )chi)r   )crystalballrD   )exponr9   )r   r   )gennorm)g@)gumbel_lr9   )gumbel_rr9   )	hypsecantr9   )invgauss)g@)
invweibullrK   )laplacer9   )logisticr9   )maxwellr9   )moyalr9   r   r9   )pareto)r   )powerlaw)gffffff@)rayleighr9   )semicircularr9   )t)r   )waldr9   )weibull_max)rB   )weibull_minr@   zdistname, argsc                 v   t         j                  j                  d      } t        t        |       | }|j                  d|      }t        ||      }|j                  d      }t	        j                  ||      j                  dkD  sJ g d}t        |j                  |      |j                  |      d	       y )
N   IOi^  r$   r   r   r#   {Gz?gMbP?g?      ?r<   g+?绽|=atol)r(   r)   r*   getattrr   r'   r   cramervonmises_2samppvaluer   ppf)distnameargsr0   rng1rvs1rng2rvs2qs           r   test_rvs_and_ppfrt   j   s     99  !12D#75(#T*D88480D!$T:D888D%%dD1884??? 	&ADHHQK!59r4   c                      t        t        |       | }t               5 }|j                  t               t        |      }d d d        j                  ddd      \  }}|dk  sJ y # 1 sw Y   (xY w)N'  r`   Fr$   r   x_errorrf   )ri   r   r   filterRuntimeWarningr   r,   )rm   rn   distsuprngu_errorrx   s          r   test_u_errorr   y   s~     $75(#T*D		 +

>"$T*+ ))"2E * GW e+ +s   !A&&A/zgeninvgauss CDF is not accurate)reasonc                      t        j                  dd      } t        |       }|j                  dd      }|d   dk  sJ y )N皙	@r   rv   i	 rb   r   rf   )r   geninvgaussr   r,   )r{   r}   errs      r   test_geninvgauss_uerrorr      sE     S#&D
 
&C


&u

=Cq6E>>r4   )r;   ))\(?r   c                     t               5 }|j                  t                t        t        |       | }t        |      }d d d        j                  ddd      \  }}|dk\  r|dk  sJ y y # 1 sw Y   .xY w)Nrv   l   c}u -SRTrw   g&.=g&.>)r   ry   rz   ri   r   r   r,   )rm   rn   r|   r{   r}   r~   rx   s          r   test_error_extreme_paramsr      s     
	 +

>"'wuh'.$T*	+
 ))"7 * GW +~~ + +s   4A,,A5c                  F   t        t        j                               } t        j                  t
        d      5  | j                  d       d d d        t        j                  t
        d      5  | j                  d       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nzsize must be an integerr
   r7   r#   )   r   )r   r   r   r   r   r   r,   )r-   s    r   test_evaluate_error_inputsr      s    
 
.C	z)B	C %$%	z)B	C ('( (% %( (s   B/BBB c                  4   d\  } }t        j                  | |      }t        |d      }|j                  d      }|| z
  |z  }t        j                  |d      j
                  dkD  sJ g d	}t        |j                  |      |j                  |      d
       y )N)r7   ffffff@r   r   i  r     r#   r   rc   rd   rf   rg   )	r   r   r   r'   cramervonmisesrk   r   _ppfrl   )r   r   r{   r}   r
r_rescaledrs   s          r   test_rvs_ppf_loc_scaler      s    JC::#U+D
 D
9CTAc'U"J
F3::TAAA%ACHHQK%8r4   c                     t        t        j                         d      } | j                  d      }d|j	                         cxk  r|j                         cxk  rdk  sJ  J d\  }}t        j                  ||      }t        |d	      } | j                  d      }||d
z  z
  ||dz  z   }}||j	                         cxk  r|j                         cxk  r|k  sJ  J y )N)   domaind   r#   r   r   )r7   r   r   )g         r   r   )r   r   r   r'   minmax)r}   r   r   r   r{   lbubs          r   test_domainr      s     !g
>CSA'1557'a''''' JC::#U+D
 i
8CSA53;eaiB(1557(b(((((r4   zdistname, args, expected)r;   r7   r   r   r   r   r9   c                      t        t        |       | }t        |      }t        |j	                         |       d|_        d|_        t        |j	                         ddt        j                  |      z  z          y )Nr   r   )	ri   r   r   r   supportr   r   r(   array)rm   rn   expectedr{   r}   s        r   test_supportr      sb     $75(#T*D
 
&Cs{{}h/CGCIs{{}a!BHHX,>*>&>?r4   )r;   r   rV   c                      t        t        |       | }t        |d      }t        |j	                         d       d|_        d|_        t        |j	                         d       y )N)re   rE   r   r   r   )       @rB   )ri   r   r   r   r   r   r   )rm   rn   r{   r}   s       r   test_support_truncationr      sR     $75(#T*D
 j
9Cs{{}j1CGCIs{{}&@Ar4   c                  F   t        j                         5  t        j                  d       t        t	        j
                         d      } d d d         j                  d      }d|j                         cxk  r|j                         cxk  rdk  sJ  J y # 1 sw Y   NxY w)Nerror)r   r   r   r   r#   r   r   )	warningscatch_warningssimplefilterr   r   r   r'   r   r   )r}   r   s     r   test_domain_shift_truncationr      s     
	 	 	" Bg&$UZZ\&AB 	SA&!%%'&Q&&&&&	B Bs   5BB c                     t        t        j                         d      } t        j                  dd      }d}d}t	        | j                  |      |j                  |             t	        | j                  |      |j                  |             d\  }}d| _	        d	| _
        t        j                  dd||
      }t        j                  |      |z  |z   }t	        | j                  |      |j                  |             t	        | j                  |      |j                  |             t        t        j                  dd      d      } d| _	        d| _
        t        | j                         d       t        j                  g d      }| j                  |      }t        |d   |d	   fd       t        j                   |dd	       dkD  sJ t	        | j                  |      d       y )N)r   r   r   r   r   )r   rB         @g333333@rc   re   gGz?)r   r   r   r   r   r   r7   )g333333?rE   )      @      @)gQ@Gz@Q@gGz@r   r   r   )r   r   r   r   )r   r   r   r   r   _cdfcdfr   rl   r   r   r(   r   r;   r   r   r   )r}   
trunc_normxpr   r   y_cdfs          r    test_non_rvs_methods_with_domainr      sv   
 j
ACc*JAACHHQK!23CHHQK!23JCCGCIcs%@J
ec!ACHHQK!23CHHQK!23
 !C!5j
ICCGCIs{{}l3
)*AHHQKEa%(+V466%!*!!!CHHUO%=>r4   c                     t        j                         } t        |       }t        j                  ddd      }d}t        |j                  |      | j                  |             t        |j                  |      | j                  |             d\  }}||_
        ||_        t        j                  ||      } t        |j                  |      | j                  |             t        |j                  |      | j                  |             y )Nr   r"   )numr   )re   r   r   )r   r   r   r(   linspacer   r   r   r   rl   r   r   )	norm_distr}   r   r   r   r   s         r   #test_non_rvs_methods_without_domainr     s    

I
 
+C
Br"AACHHQKq!12CHHQKq!12JCCGCI

s%0ICHHQKq!12CHHQKq!12r4   z	domain, x))Nre   )r   re   )r   r   c                     t        t        j                         |       }t        j                  |j                  |            sJ t        j                  |j                  d            sJ y)z pdf, cdf etc should map scalar values to scalars. check with and
    w/o domain since domain impacts pdf, cdf etc
    Take x inside and outside of domain r   re   N)r   r   r   r(   isscalarr   r   )r   r   r}   s      r   test_scalar_inputsr     sJ     !f
=C;;sxx{###;;sxx}%%%r4   c                     d\  } }}t        t        j                  |       ||f      }d|_        |j	                  d      }||j                         cxk  r|j                         cxk  r|k  sJ  J t        j                  |       j                   |       |      z
  t        j                  |fd      j                  dkD  sJ y )N)g      @g      ?g      ?r   i  ra   r#   c                      |       z  S )Nr9   )r   r   probs    r   <lambda>z-test_domain_argus_large_chi.<locals>.<lambda>3  s    SVd] r4   皙?)
r   r   r:   r   r'   r   r   r   r   rk   )rH   r   r   r}   r   r   r   s        @@r   test_domain_argus_large_chir   (  s     "KCR
 S!12r(
CCCSA(1557(b(((((
++c


Cr7SWD#:;BBTIIIr4   c                     t        t        j                         d      } | j                  d      }d| _        d| _        | j                  d      }t        j                  ||dz
  dz        j                  dkD  sJ d	| _        d
| _        | j                  d      }t        j                  ||      j                  dkD  sJ y )Ni訤-r   r   r#   r   r   r   r   r   r   )r   r   r   r'   r   r   rj   rk   )r}   r1r2s      r   test_setting_loc_scaler   6  s    
 I
FC	d	BCGCI	B%%b26S.9@@4GGGCGCI	B%%b"-44t;;;r4   c                     d} t        j                  t        |       5  t        t	        j
                  d            }d d d        t        t	        j
                  d      d      }|j                  dd      \  }}|d	k\  sJ y # 1 sw Y   GxY w)
Nz0No generator is defined for the shape parametersr
   gQ?T)ignore_shape_ranger      rb   gư>)r   r   r   r   r   r[   r,   )r   r}   u_errr1   s       r   test_ignore_shape_ranger   E  sw    
<C	z	- 4$UWWT]34
 4
HC !!t#!>HE1D==4 4s   BBz4NumericalInversePolynomial.qrvs fails for Win 32-bitc                      e Zd Zd Zdej
                  j                  dd      ej
                  j                  dd      gZd e	       fddd	d
gZ
d e	       fd e	       fdgZej                  j                  de      ej                  j                  de
      ej                  j                  de      d                      Zd Zy)TestQRVSc                    t        t        j                               }d}t        j                  t
        |      5  |j                  d       d d d        d}t        j                  t
        |      5  |j                  dt        j                  j                  d             d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY w)	Nz&`qmc_engine` must be an instance of...r
   r   )
qmc_engine6`d` must be consistent with dimension of `qmc_engine`.r   r   dr   )	r   r   r   r   r   r   qrvsqmcHalton)selfr-   r   s      r   test_input_validationzTestQRVS.test_input_validationS  s    $UZZ\28]]:U3 	#HHH"	# I]]:U3 	:HHqUYY%5%5a%8H9	: 	:		# 	#	: 	:s   B-31B9-B69CNr   r   seedr   )r   )r   )   r   )r   r   )r   r   r   )r   )r   qrngzsize_in, size_outzd_in, d_outc                 n   t        t        j                               }|L|J|j                  |k7  r;d}t	        j
                  t        |      5  |j                  |||       d d d        y |||j                  dk7  r|j                  f}||z   }t        |      }	|j                  |||      }
||
j                  |k(  sJ |	e|	j                  t        j                  |      xs d      }t        j                  j                  |      j                  |      }t        |
|d       y y # 1 sw Y   y xY w)Nr   r
   r   r   r$   r   r   -q=rg   )r   r   r   r   r   r   r   r   r   shaper)   r(   prodrl   reshaper   )r   r   size_insize_outd_ind_outr-   r   shape_expectedqrng2r   uniformqrvs2s                r   test_QRVS_shape_consistencyz$TestQRVS.test_QRVS_shape_consistencyj  s   
 %UZZ\2  0TVVt^LEz7 ;DT:; <D,1VVIE!E)xxWx>::///ll2777#3#8q9GJJNN7+33NCED%e4 ;s   D++D4c                    t        t        j                               }d}d}t        j                  j	                  |d      }t        j                  j	                  |d      }|j                  t        j                  |            }|j                  |||      }t        j                  j                  |      }t        |      D ]/  }	|d|	f   }
|d d |	f   j                  |      }t        |
|d       1 y )	N)r   r   r%   r   r   r   .r   rg   )r   r   r   r   r   r)   r(   r   r   rl   ranger   r   )r   r-   r$   r   r   r   r   r   r   isamplesample2s               r   test_QRVS_size_tuplezTestQRVS.test_QRVS_size_tuple  s     %UZZ\2yy*		   +,,rwwt}-xxTQ4x8

w'q 	9A#q&\FAqDk))$/GFG%8	9r4   )__name__
__module____qualname__r   r   r   Sobolr   qrngstuplesizesdsr   markparametrizer   r   r9   r4   r   r   r   O  s    	: 599??11?-uyy/?/?/?/JKE 
uwE /Auw<	3B[[VU+[[0%8[[]B/5 0 9 ,569r4   r   c                      d} t               5 }|j                  t               t        t	        j
                  |        }d d d        j                  d      \  }}|dk  sJ y # 1 sw Y   &xY w)N)gA;B?gעG-S?i  r   rf   )r   ry   rz   r   r   rA   r,   )rn   r|   r-   r~   r1   s        r   test_burr_overflowr	    sl    
 $D		 8

>"$UZZ%678 ###6JGQe8 8s   1A##A,))r   r   numpyr(   numpy.testingr   r   r   copyr   scipy.stats.samplingr   scipyr   r    r3   dists_with_paramsr  r  rt   r   xslowxfailr   r   r   r   r   infr   r   r   r   r   r   r   r   r   xfail_on_32bitr   r	  r9   r4   r   <module>r     s     . .  7 :* $F$ N *->?: @: *->?
 @
 ;< =  *.D-EF G(9)  46!2'89;<
@<
@ *.=?B?B'?D3 +()&	)&J< :P9 P9P9fr4   