U
    	-e)                     @   s(  d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d dlm%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZDmEZEmFZF d dlGmHZH e
dZIdd ZJdd ZKdd ZLeDdd  ZMd!d" ZNd#d$ ZOeEd%d& ZPd'd( ZQd)d* ZRd+d, ZSd-d. ZTd/d0 ZUd1d2 ZVd3d4 ZWd5d6 ZXd7d8 ZYd9d: ZZd;d< Z[d=S )>    )Sum)IRationaloopiS)Symbol)imre)log)floor)sqrt)	Piecewise)besseli)beta)zeta)	FiniteSet)simplify)lambdify)EqNe)exp)Or)Range)PEvariancedensitycharacteristic_functionwheremoment_generating_functionskewnesscdfkurtosis
coskewness)PoissonDistributionGeometricDistributionFlorySchulzPoisson	GeometricHermiteLogarithmicNegativeBinomialSkellam	YuleSimonZeta
DiscreteRV)slownocache_failraises)Expectationxc                  C   s   d} t | }t|d d dk s*tt|d d dk sHt|tt| ks\t|td t|ttd  | kstd S )N   
      MbP?g$@   )r&   absr#   evalfAssertionErrorexpectationr6   )lp rB   c/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/stats/tests/test_discrete_rv.pytest_PoissonDistribution!   s    rD   c                  C   s   d} t d| }t|| ksttd| d|  ks6tt|| ksFtt|t| ksZttt|ddtsptttd| ddtst|j	ddkstd S )Nr7   r6   r;   Fevaluater9   )
r)   r   r>   r   r   r&   
isinstancer5   pspaceZcompute_expectation)r@   r6   rB   rB   rC   test_Poisson*   s    
rI   c                  C   s   t d} t d}td| }t|d|  |  ks2tt|dd|   | d    tdks^tt||| d | d|  |d   kstd S )Nazr6   r;   r9   r   )r	   r(   r   r>   r   r   r   r   )rJ   rK   r6   rB   rB   rC   test_FlorySchulz7   s    
,rL   c                  C   s2  t jd } t| }|ttd|  ks*t|td t|ttd  d|  | d  ks^tt|d d dk s|tt|d d dk stt	dt dd d	}t|t d
d t
|t d
d kkstt	dtdd}t	dtdd}t||| |d|   tdtdd ks.td S )N   r9   r;   i N  r:   g33333@G   )rA      XYr7   r8      Q   i~  )r   Oner'   r?   r6   r>   r<   r#   r=   r*   r   r   r%   r   r   )rA   drN   rQ   rR   rB   rB   rC   test_GeometricDistribution@   s    
4,rW   c                     s  t ddd t dddtt fdd t ddd t dddtt fdd t ddd t d	} td
 }t|| t t| d  td|  d   kstt|| t tt|  d  tdt |  d   kstt	| d  ks
ttd
ddd}t
|ddtd d ks:tt	|dksLtt|dks^tt|tddksvtt|dtd d kstd S )Na1T)positivea2)negativec                      s   t d S NHr+   rB   rX   rZ   rB   rC   <lambda>S       ztest_Hermite.<locals>.<lambda>c                      s   t d S r\   r^   rB   r_   rB   rC   r`   W   ra   r6   r]   r9   r;   rM   rO   r_   !   i      i     %   i  )r	   r4   
ValueErrorr+   r!   r   r>   r   r   r   r   r   r$   r   r"   r   )r6   r]   rB   r_   rC   test_HermiteP   s,    "rh   c                  C   s   t j} td| }t||  d|  td|    ks6tt|dtdd  dtd  ks^ttd|d  d|  d ddtd  ksttt|dd	tstd S )
Nr6   r9   r;   r7   rO   rP   FrE   )	r   Halfr,   r   r   r>   r   rG   r5   )rA   r6   rB   rB   rC   test_Logarithmici   s    
&(0rk   c                  C   s   d} t jd }td| |}t|||  d|  ks6tt|||  d| d  ksVtt|d d|  d tddks|ttt|dd	tstd S )
NrM   r7   r6   r9   r;   i#  rO   FrE   )	r   rU   r-   r   r>   r   r   rG   r5   )rrA   r6   rB   rB   rC   test_negative_binomialr   s    
 &rm   c                  C   sh  t d} t d}t d}td| |}t||| | |d  t|  |  t|dt| |   kshtt| | | t| |  |t| |    || t| |  |t| |     kstt	| | | kstt
|| | kstt||t| tt|  |  | |tt |   ks,tt||t| t| |  | |t|   ksdtd S )Nmu1mu2rK   r6   r;   )r	   r.   r   r   r   r   r>   r"   expandr   r   r   r   r!   )rn   ro   rK   rQ   rB   rB   rC   test_skellam~   s,    

"
( rq   c                  C   s   ddl m}  | d}td|}tt|||d  ks:ttt||d |d d |d   ksfttt|ddts|tt	||t
tt|d	 t| d |dkfd
kstd S )Nr   r   r7   r6   r9   r;   FrE   rO   )r   T)sympy.core.singletonr   r/   r   r   r>   r   rG   r5   r#   r   r   r   )r   rhor6   rB   rB   rC   test_yule_simon   s    
,rt   c                  C   sv   t d} td| }t|t| d t|  ks2ttt|t| t| d  t| d d  t| d  ksrtd S )NrM   r6   r9   r;   )r   r0   r   r   r>   r   r   )sr6   rB   rB   rC   	test_zeta   s    
 
" 
rv   c                  C   sj  t dtdd} tdd}t dt}tt| dtdd	ks@tt| dk td
dksZtt| dktdd	ksttt| dktddkstt| dktdd	ksttt| dtdd	ksttt|ddtd d kstt|dk dtd kstt|dk	dtdddtd d   td d sBtt|dk	dtdddtd d   td d stt|dkdtd d ksttt|d	dtd dtdddtd d   td d  stt| t
jk t
jkstt| t
jkt
jks"tt|dk tdt  ks@ttt|dtt d d  ksftd S )NrQ   r9   rM   rR   rO   er7      }   	      @   =   m       rc   iiG   r;   )r*   r   r)   r6   r   r   r>   r   r   equalsr   InfinityrU   ZZero)rQ   rR   rN   rB   rB   rC   test_discrete_probability   s*    

">>"4
r   c                     s   t dd } tdddd | d|   d   }t |t jdd}t|ttdt dd   krjdkspn tt|dkt dd	 kst|jj	j
t jksttt fd
d t d  t j}t|dk dkstt|tkstd S )Nr9   r;   r6   T)integerrY   )setcheckrN   r7      c                      s   t   ttd ddS )NrO   T)r   )r1   r   rangerB   r6   rB   rC   r`      ra   z!test_DiscreteRV.<locals>.<lambda>)r   r	   r1   ZNaturalsr   r*   r>   r   rH   domainr   r4   rg   r   )rA   pdfDrQ   rB   r   rC   test_DiscreteRV   s    0r   c                     s   dd l   fdd} | tdtddd j | tdtddd j | td	dtdd
d j | tddd j | tddd j | tddd j d S )Nr   c                    s   t | }td}td}t|gt| |d}t||g||tt| |  d  fdd}dD ]L}||}	||}
tt|	t|
 dk sttt	|	t	|
 dk shtqhd S )Ntr6   mpmathc                    s   j  fddgddS )Nc                    s
    | S )NrB   r   )fr   rB   rC   r`      ra   z^test_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>.<locals>.<lambda>r8   )Z	maxdegree)Znsumr   )r   r   support_lower_limitsupport_upper_limitr   rC   r`      s
    zLtest_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>)r;   rM   r      g-q=)
r   r   r   r   r   r   r<   r   r>   r
   )distr   r   r   r   r6   Zcf1Zcf2Z
test_pointZn1Zn2r   )r   r   r   rC   test_cf   s    $z:test_precomputed_characteristic_functions.<locals>.test_cfgr9   r7   r@   rM   nrP   rA   yrK   )	r   r*   r   infr,   r-   r)   r/   r0   )r   rB   r   rC   )test_precomputed_characteristic_functions   s    r   c                  C   s  t d} ttdt j| }|| | ddks6tttdt j| }|| | ddtd kslttt	ddt
dd	| }|| | dt
ddkstttd
d| }|| | ddkstttddd| }|| | dtd td tdtd td  ks(tttdd	| }t|| | dt
d	dks`tttdd| }|| | dtd dtd  kstd S )Nr   r   r   r;   r@   r9   r   rM   r7   rA   ru   r   rK   rO   Z   )r   r!   r*   rj   diffsubsr>   r,   r   r-   r   r)   r.   r   r/   r   r0   r   r   )r   Zgeometric_mgfZlogarithmic_mgfZnegative_binomial_mgfZpoisson_mgfZskellam_mgfZyule_simon_mgfZzeta_mgfrB   rB   rC    test_moment_generating_functions   s0    " 
 (
&r   c                  C   sx   t dtj} tt| dk | dktddks0ttt| dk| dkt| dkksVttt| dk| dk dksttd S )NrQ   r7   rO   rc   rx   r;   r9   )r*   r   rj   r   r   r   r>   )rQ   rB   rB   rC   test_Or  s    $&r   c                  C   s   t dtdd} tdd}t| d dkjtdtjdks>tt| d dkjtdtjdksbtt|d dk jtd	ddkstt|d dkjtd	ddkstd S )
NrQ   r9   rM   rR   rO   r;   r7   rz   r   )	r*   r   r)   r    r   r   r   r   r>   rQ   rR   rB   rB   rC   
test_where  s    
$$"r   c                  C   s   t dtdd} tdd}t| dk| dkdks4tt| dk| dktddksTtt|dk|dk dksnttt|d|dkdtd d ksttt|dt|ddkstt| dk t| ddkstt| dkt| ddkstd S )	NrQ   r;   r7   rR   r9   r   rz   )r*   r   r)   r   r>   r   r   r   rB   rB   rC   test_conditional  s    
 (r   c                  C   s   t dtj} t dtdd}tt| | dk tdks>ttt| | dktdks`ttt	| | dtddkstd S )NX1X2r9   r7   z@Sum(Piecewise((1/(4*2**n), n >= -1), (0, True)), (n, -oo, -1))/3zdSum(Piecewise((2**(X2 - n - 2)*(3/2)**(1 - X2)/6, X2 - n <= 2), (0, True)), (X2, 1, oo), (n, 1, oo))   )
r*   r   rj   r   strr   Zrewriter   r>   r   )r   r   rB   rB   rC   test_product_spaces!  s    r   N)\Zsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   r   rr   r   Zsympy.core.symbolr	   Z$sympy.functions.elementary.complexesr
   r   Z&sympy.functions.elementary.exponentialr   Z#sympy.functions.elementary.integersr   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Zsympy.functions.special.besselr   Z&sympy.functions.special.beta_functionsr   Z&sympy.functions.special.zeta_functionsr   Zsympy.sets.setsr   Zsympy.simplify.simplifyr   Zsympy.utilities.lambdifyr   Zsympy.core.relationalr   r   r   Zsympy.logic.boolalgr   Zsympy.sets.fancysetsr   Zsympy.statsr   r   r   r   r   r    r!   r"   r#   r$   r%   Zsympy.stats.drv_typesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Zsympy.testing.pytestr2   r3   r4   Z sympy.stats.symbolic_probabilityr5   r6   rD   rI   rL   rW   rh   rk   rm   rq   rt   rv   r   r   r   r   r   r   r   r   rB   rB   rB   rC   <module>   sV   48		
	
 	