o
    8VaM                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB dd ZCd	d
 ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd  ZOd!d" ZPd#d$ ZQd%d& ZRd'd( ZSd)d* ZTd+d, ZUd-d. ZVd/d0 ZWd1d2 ZXd3d4 ZYd5S )6    )	FiniteSetSSymbolsqrtnanbetaRationalsymbolssimplifyEqcosAndTupleOrDictsympifybinomialcancelexpI	PiecewiseSumDummyharmonicFunction)Matrix)DiscreteUniformDie	BernoulliCoinBinomialBetaBinomialHypergeometric
RademacherIdealSolitonRobustSolitonPEvariance
covarianceskewnessdensitywhereFiniteRVpspacecdfcorrelationmomentcmomentsmomentcharacteristic_functionmoment_generating_functionquantilekurtosismedian
coskewness)DieDistributionBinomialDistributionHypergeometricDistribution)Density)raisesc                 C   sP   t | |t t| |t | ksJ t | |t || t |  t | ks&J d S N)r&   r   )AB rB   B/usr/lib/python3/dist-packages/sympy/stats/tests/test_finite_rv.py	BayesTest   s   $,rD   c                     sh  t d\ } td g}t|   d ksJ tt| d d  d  d  d d  d  d   dksDJ tt| tt|  krett|  kretdkshJ  J tdtdd	}t|td
kszJ t|tdksJ t	|t
ddksJ tdd	D ]/}tt||tdksJ t||kt|d d ksJ t||ktd	| d ksJ qtttdd tttdtdd ksJ t|| tt  |  d tt |  d  tt |  d  ksJ t|| t |  d t|  d  t|  d  ks'J tt fdd d S )Nza b c tX      r   z1/3Y   z-1/2z33/4z1/10   
   DU      c                      s   t d   gS )NZ)r   rB   abcrB   rC   <lambda>1   s    z&test_discreteuniform.<locals>.<lambda>)r	   r   r'   r
   r(   r&   r   r   ranger8   r   dictr+   r   itemsr4   r   r   r5   r>   
ValueError)trE   rH   xrB   rS   rC   test_discreteuniform   s.   6H "NBr^   c                     s|	  t ddt ddt dd } }td\}}}}t dtj ks$J t tddks/J t |  d	ks9J t   d	ksCJ t|  | |t  | ksUJ t |  t t|    krot |  d
ksrJ  J t   dt    krt   d
ksJ  J t ddksJ td  ddt d ksJ t | tj	u sJ t  |  t ksJ t
tt tj dd tjksJ t | dksJ t | t|  ksJ t |  dt |  ksJ t |  dt |  ksJ t ddksJ t dktjksJ td
  dktjks(J t | ktddks6J tt | tt dksGJ t  dkd  kr`t dd dkkscJ  J t | dkt   kr~t dd| dkksJ  J t |  t | td
  ksJ t ddksJ td  d
dt d
 ksJ t |tt|dk|dk B ftj|tddkftd
|tddkftd|tjkftd|td
dkftd|tddkftd|dkfksJ t dk dktju s	J t | kt| dtj	u sJ tt |  dtddks*J tt |  dt dtddks?J t
 |  t
| |   krXt
   ks[J  J t
d
  | |  }|td tddkr|td tddkrtd|vsJ t j t fdddD  ksJ t dkjtdddksJ t |t dt! | d t dt! | d  t dt! | d  t dt! | d  t d
t! | d  t t!| d  ksJ t" |t d| d t d| d  t d| d  t d| d  t d
| d  t |d  ks%J t# tddks1J t dd	}t#|tdksAJ t$ dk |  dk  t$t |  ||| k t$ dk d
k t%t&dd  t%t&dd  t%t&dd  td dd!\}}	t d|}t
|j'}
|
t(t)|ksJ t|
*|d+ , h d"ksJ t|
*|d+ - tddhksJ t.d#dd$}	t|/t0t|	| |	|kfd%|	d|fsJ t|*|d+ tddksJ t.d&}t1||	}|/t0td| |dk||k@ fd%|d|	fsJ |*|d|	d
i+ tddks$J t.d'}t||}|/t0tt |t! | | |dk||k@ fd%|d|fsOJ |*|d+ t dt! | d t d
t! | d  t t!| d  ksvJ t"||}|/t0tt || | |dk||k@ fd%|d|fsJ |*|d+ t d| d t d
| d  t |d  ksJ d S )(NrE   rL   rH   rR   za b t prF   #      rQ   rG      r   rP   @   TrJ      $      l   i     i:  c                       g | ]}t  j|qS rB   r   symbol.0irE   rB   rC   
<listcomp>a       ztest_dice.<locals>.<listcomp>rP   rG   rF   ra   rJ   rL   rN   c                   S   
   t ddS )NrE   rK   r   rB   rB   rB   rC   rW   p      
 ztest_dice.<locals>.<lambda>c                   S   rr   )NrE   r   rs   rB   rB   rB   rC   rW   q   rt   c                   S   rr   )NrE         ?rs   rB   rB   rB   rC   rW   r   rt   zn, kpositive>   rP   rG   rF   ra   kintegerr   Tkir\   )2r   r	   r'   r   Halfr(   r   r2   r)   Zeror+   r   r   ZPir0   r3   r*   r7   r&   r1   r6   r   r   Oner.   domain
as_booleanr   r,   setr   r4   r   r   r5   r8   rD   r>   r[   rY   r=   r:   subsdoitkeysvaluesr   dummy_eqr   r/   )rH   rR   rT   rU   r\   pdrN   nrx   densr|   ZcumufZcfZmgfrB   rn   rC   	test_dice3   s   "$:6 & "8<&"66 "*8B n


&* 
$(
&4
N0
Fr   c                  C   sT   t dd} t| | dktdtjiksJ t| dk| dk t| jdks(J d S )NrE   rL   rJ   rG   )r   r+   r   r   r,   r   r   rj   rn   rB   rB   rC   
test_given   s   
 *r   c               	      s  t ddt dd  jj} }t k}|j| |kks!J tt kdk}| ttt| dt|dtt| dt|dtt| dt|dksSJ t|j	dks\J tt
  jj	dksjJ t ddtt fdd	 t
  jjtd
dddddd ksJ t dkjtdddksJ  j
jjt fddtd
dD  ksJ t kjt fddtd
dD  ksJ d S )Nr]   rL   yrF   rJ   ra   rd   c                         t  kS r?   r&   rB   )rE   rR   rB   rC   rW          ztest_domains.<locals>.<lambda>rP   rG   c                    s   g | ]	}t  j|iqS rB   )r   rj   rk   rn   rB   rC   ro      s    z test_domains.<locals>.<listcomp>rQ   c                    s8   g | ]}t d dD ]}||kr	t j|j|iq	qS )rP   rQ   )rX   r   rj   )rl   rm   j)rE   rH   rB   rC   ro      s
    
)r   rj   r,   Z	conditionr   r   r   r   lenelementsr.   r   r>   r[   r   r   rY   rX   )r]   r   r   rB   )rE   rH   rR   rC   test_domains   s,   &

*

r   c                  C   s.  t d\} }}}td| ||}t|||  ||  d   ks J t|| | ks*J t|| d|  ks6J t||| tt| |  |  d tt| |   ksUJ t||| t||  |  d t||   kspJ td| dd}td}t|| ksJ t	t
|| d|   ksJ t|| | |t| | ksJ t	t
|| | t	|d t
| ksJ t||tt|dk|dk B fd|d|  kfd|dkfksJ tdtdd}t|tddksJ tdtdd	}t|tdksJ ttd
d  ttdd  |jddksJ tdd} tdd| }tddd|  }tddd	|  }t|| || || 	 dksEJ t|d|  | |d|  | |d|  | 	 tdtdd kskJ t|d|  | |d|  | |d|  | |dk 	 td tdd ksJ d S )Nzp a b trA   rP   r   zrG   rH   rR   rF   c                   S   rr   )NrA   ru   r   rB   rB   rB   rC   rW      rt   z test_bernoulli.<locals>.<lambda>c                   S   rr   )NrA   g      r   rB   rB   rB   rC   rW      rt   rJ   rE   rQ   	   i  r`   iA  iqENi
  l   ) )r	   r   r'   r+   r4   r   r   r5   r   r
   r(   r6   r   r   r   r8   r   r>   r[   r.   Zcompute_expectationr    r9   r   )r   rT   rU   r\   rE   r   rH   rR   rB   rB   rC   test_bernoulli   s@   ">6$,@
&2
8r   c               	   C   sR   t dd} tj}t| t|d |d |d d| d d| d |dks'J d S )NrN   rL   rF   rG   rJ   rq   )r   r   r   r/   r   )rN   orB   rB   rC   test_cdf   s   
0r   c                     s  t dt d td\} }tt tjksJ tt | | ftdd| |ftdd|| ftdd||ftddiksBJ t	t 
 | tj|tjiksTJ t dtdd}tt|| tddksjJ t j}| tt j| t j|ksJ tt fdd	 d S )
NCrN   zH, TrP   ra   FrM   c                      r   r?   r   rB   r   rN   rB   rC   rW      r   ztest_coins.<locals>.<lambda>)r   r	   r&   r   r   r}   r+   r   r   rY   rZ   r.   r   r   r   rj   r>   r[   )HTr   r   rB   r   rC   
test_coins   s   (
$
&r   c                   C   s    t tdd  t tdd  d S )Nc                   S      t dddS )NrU   皙?g      ?r    rB   rB   rB   rC   rW      r   z1test_binomial_verify_parameters.<locals>.<lambda>c                   S   r   )NrU   rF   ru   r   rB   rB   rB   rC   rW      r   )r>   r[   rB   rB   rB   rC   test_binomial_verify_parameters   s   r   c                  C   s>  t d} dtddtjtdddg}| D ]}|D ]}td||}t||| ks*J t||| d|  ks8J |dkrxd|  k rFdk rxn n0t|dd|  t|| d|   ks^J t	|ddd| d|   || d|    ksxJ t |d D ]}t
t||t||||  d| ||   ksJ q~qqd S )	NrJ   r   rP   ra   rF   rE   rG   rL   )rX   r   r   r}   r    r'   r(   r*   r   r7   r&   r   r   )nvalsZpvalsr   r   rE   rx   rB   rB   rC   test_binomial_numeric   s    ,46r   c                  C   s   t ddtj} t| dtdksJ t| tdksJ t ddtj} tddd	}t| |tt|tj	kftj
|td
dkftj	|tddkftd|tjkftd|tddkftd|tddkftd|tj	kfksqJ t| tddks|J d S )NrE   2   gffffff?   rc   rJ   r   Trv   rP       rF      rG      ra   )r    r   r}   r6   r8   r   r   r   r   r   r~   r   )rE   r   rB   rB   rC   test_binomial_quantile  s   *6$
r   c                     s\  d} t ddd}td| |}td}tt|| |   kr(tt|dks+J  J tt|| | d|    krEtt|dksHJ  J tt	|dd|  t
| | d|    dksbJ tt|d	dd
| d|   | | d|     dksJ t|||d tdt |  d| | d  tt|   | d d  ksJ t|||d td|  d| | d  t|  | d d  ksJ t d\}}td| |||d}tt|| || |d|     dksJ t d} td| | tt fdd t jtt| |ddksJ tt j| d  tjtjtdtd	tdhks:J tt j| d  d| d d| d| d	  d
|d  d| d  d|d	  d|  |d hkssJ tddd}t dkt t!|||  d| | |    t"| | |dk|| k@ |dk@ fd|d| fsJ d S )NrG   r   Trv   rE   r\   rP   r   rF   rL   zH TrH   )ZsuccZfailr   rA   c                      s   t  dkS )NrG   r   rB   rA   rB   rC   rW   $  r   z(test_binomial_symbolic.<locals>.<lambda>ra   rx   ry   r{   )#r	   r    r   r
   r'   r1   r(   r2   r   r*   r   r7   r4   r   r   r5   r>   NotImplementedErrorr+   rY   r=   r;   r   r   r   r   r   r~   r   r   r   r   r   r   r   )r   r   rE   r\   r   r   rH   rx   rB   r   rC   test_binomial_symbolic  sF   2:4<TL,"
L
0r   c                  C   sh  t tdd  t tdd  t tdd  tddddsJ tdd} tdd	tjtd
d	ddg}tdd	tjtd
d	ddg}| D ])}|D ]$}|D ]}td|||}t|t|dks]J t	|t
|dkshJ qIqEqAtd\}}}td|||s{J d}tddd\}}td|||}td}t| t|d ksJ t	| t
|d ksJ t|t|d
ksJ t||tdt | t|d | t|| dtt|  t|d |d  t||  t||d t||  ksJ t||td| t|d | t|| dt| t|d |d  t||  t||d t||  ks2J d S )Nc                   S      t ddddS )NrU   r   rP   rG   r!   rB   rB   rB   rC   rW   1      z$test_beta_binomial.<locals>.<lambda>c                   S   s   t ddddS )NrU   rG   rK   r   rB   rB   rB   rC   rW   2  r   c                   S   r   )NrU   rG   rP   r   rB   rB   rB   rC   rW   3  r   rU   rG   rP   rJ   ra   rF   rM   rE   za b nr]   za bTrv   r\   )r>   r[   r!   rX   r   r   r}   r'   r1   r(   r2   r	   r   expandr*   r3   r4   r   r   r   r5   )r   Z	alphavalsZbetavalsr   rT   rU   rE   r\   rB   rB   rC   test_beta_binomial/  sD   
0*
,&r   c               
   C   sL  t ddD ]} t d| d D ]}t d| d D ]}td| ||}tt| ||f\} }}tt| dks7J t||| |  ksCJ | dkrat||||   | |  |  | |  | d  ksaJ | dkrd|  k ro| k rn q|| k rt	|t
| d|  t| d  | d|   t|| | |  | |  | d   ksJ qqqd S )NrP   rJ   r   rE   rG   )rX   r"   mapr   sumr+   r   r'   r(   r*   r
   r   )Nmr   rE   rB   rB   rC   test_hypergeometric_numericR  s"   4(*"r   c               	   C   s:  t d\} }}td| ||}t|j}t|dk}|tt| ||ks%J || d ttd||ks7J t	|| d|d|di 
 tjtjhksPJ t	|| d|d|di  tddtddhksmJ tddd	}|tt|t|| t| | | |  t| | |dkfd
|d|fsJ d S )NzN, m, nr   rG   rJ   rF   rP   rx   Try   r{   r   )r	   r"   r+   rY   r'   r=   r<   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   )r   r   r   r   r   Zexpecrx   rB   rB   rC   test_hypergeometric_symbolica  s(   
$2:$r   c                  C   s   t d} td}t| dksJ t| dksJ t| d tjks#J t| d tjks.J t| |tt	| d tt	 | d  ksGJ t
| |t|d t| d  ks\J d S )NrE   r\   r   rP   rK   rG   )r#   r   r'   r(   r+   r   r}   r4   r   r   r5   )rE   r\   rB   rB   rC   test_rademachero  s   2.r   c                     s  t tdd  t tdd  t tdd  td t t fdd tdddd	} td
ddd	}td}td| }t|jtjksCJ t|j	| ksLJ t|j
tt|ksYJ t||td|  t|dfd||d   | |kfdksyJ g d}|D ]l}t|| |t|  krt|| |dksJ  J t|| ||d t| t|d    krt|| |dksJ  J t|| |t|| |dksJ t|| |t|| |dksJ qtt| d ttt| | || |  |d| f| d  t|| d|ksJ t|d tt|| || |  |d| f| d  t|| d|ksFJ d S )Nc                   S   rr   )Nsolr$   rB   rB   rB   rC   rW   {  rt   z$test_ideal_soliton.<locals>.<lambda>c                   S   rr   )Nr   gffffff*@r   rB   rB   rB   rC   rW   |  rt   c                   S   rr   )Nr   r   r   rB   rB   rB   rC   rW   }  rt   fc                      s   t tdd S )Nr   rM   )r+   r$   pmfrB   r   rB   rC   rW     s    rx   Trz   rw   r]   r\   r   rP   r{   )rJ      r   d   i  rG   rF   ra   rM   )r>   r[   r   r   r$   r+   lowr   r   highrY   r=   r   r   r   r'   r   r   r1   r(   r2   r*   r3   r7   r   r   r   r   r4   r5   )rx   r]   r\   r   k_valsrm   rB   r   rC   test_ideal_solitonz  s*   
@:N&(^Zr   c            
         s  t tdd  t tdd  t tdd  td t t fdd tdddd	} td
dd}tddd}td| ||}t|jdksEJ t|j| ksNJ g d}g d}g d}|D ]}|D ]{}|D ]v}	t|	| |||||	it
|	| |||||	idksJ t|	| |||||	it|	| |||||	idksJ t|	| |||||	it|	| |||||	idksJ t|	| |||||	it|	| |||||	idksJ qdq`q\d S )Nc                   S   r   )NrobSolr   皙?g{Gz?r%   rB   rB   rB   rC   rW     r   z%test_robust_soliton.<locals>.<lambda>c                   S   r   )Nr   r   g=
ףp=?r   r   rB   rB   rB   rC   rW     r   c                   S   r   )Nr      333333?g{Gzr   rB   rB   rB   rC   rW     r   r   c                      s   t tdddd S )Nr   r   r   r   )r+   r%   r   rB   r   rB   rC   rW     rp   rx   Tr   deltarv   rV   r   rP   )rM   r   r   )r   g?r   )g{Gz?gQ?g?rG   rF   ra   )r>   r[   r   r   r%   r+   r   r   r'   r   r1   r(   r2   r*   r3   r7   )
rx   r   rV   r   r   Z
delta_valsZc_valsr]   r   r   rB   r   rC   test_robust_soliton  s0   :::<r   c               	      s  t dtjtddtddddd tddd} tt  tjtjtd	tddtd
tddiks6J t	 d	ktjksAJ t
 | tt| tjkftj| tjkftd	| td
dkftd
dfkshJ t j t fdddD  ks|J  jjjtdd	d
ksJ ttdd  ttdd  ttdd  t ddd	d}t|dksJ t	|d	kt	|d	k dksJ d S )Nr   rP   ra   rP   rG   rF   Tcheckr   rv   rG   rF   c                    rh   rB   ri   rk   r   rB   rC   ro     rp   z!test_FiniteRV.<locals>.<listcomp>c                   S   s   t dtjtjtjdddS )Nr   r   Tr   )r-   r   r}   rB   rB   rB   rC   rW     s    ztest_FiniteRV.<locals>.<lambda>c                   S   s    t dtjtddtjdddS )Nr   rK   rG   r   Tr   )r-   r   r}   r   r   rB   rB   rB   rC   rW     s     c                
   S   s8   t dtjtddtjtddtddtddddd	S )
Nr   rF   rG   rK   ra   rq   Tr   )r-   r   r   r   r~   rB   rB   rB   rC   rW     s
    rE   )rP   rG   rJ   )r-   r   r}   r   r   rY   r+   rZ   r   r&   r6   r   r   r.   r   r   r   r   r   r>   r[   r'   )r   rE   rB   r   rC   test_FiniteRV  s"   $<&

$r   c                  C   s   ddl m}  td| }t|}|dd|  ksJ |tjd|  ks$J |ddks,J d|v s2J d|vs8J |tj|tj ksDJ d S )Nr   )r   r]   rP   rJ   )	sympy.abcr   r   r+   r   r~   )r   r]   r   rB   rB   rC   test_density_call  s   
r   c                      s   ddl m td  tjtju sJ  di t	ddks(J  di dks8J  di dksHJ  t	ddi dks[J t
t fdd	 t
t fd
d	 d S )Nr   )r]   rL   rP   rQ   rK   rF   c                      s     tddgS )Nr   )r   r   rB   rn   rB   rC   rW         z&test_DieDistribution.<locals>.<lambda>c                      s     d d S )NrG   rP   )r   rB   rE   r]   rB   rC   rW     r   )r   r]   r:   r   r   r}   r~   r   r   r   r>   r[   rB   rB   r   rC   test_DieDistribution  s   &  &r   c                  C   s(   t dd} t| }|jtdksJ d S )NrE   rL   )r   r.   r+   r:   )rE   ZspacerB   rB   rC   test_FinitePSpace  s   
r   c                  C   s   t dtdd} tdd}td\}}tt| |}t||k}|ttddt|dfdttddt|dfd ks>J |ttdd|dk fdttj	|d	k fd ttdd|dk fd ttj
|dk fd ksnJ d S )
NrA   rP   ra   rN   zb, nr{   rF   r   rG   )r   r   r   r	   r&   r   r'   r   r   r}   r   )rA   rN   rU   r   rH   rR   rB   rB   rC   test_symbolic_conditions  s"   
*r   N)ZZsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.matricesr   Zsympy.statsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Zsympy.stats.frv_typesr:   r;   r<   Zsympy.stats.rvr=   Zsympy.testing.pytestr>   rD   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   rB   rB   rC   <module>   s:   l ]& #