o
    g)                     @   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J t|d d dk s$J |tt| ks.J |td t|ttd  | ksBJ d S )N   
      MbP?g$@   )r&   absr#   evalfexpectationr6   )lp rA   Y/var/www/visachat/venv/lib/python3.10/site-packages/sympy/stats/tests/test_discrete_rv.pytest_PoissonDistribution!   s   ,rC   c                  C   s   d} t d| }t|| ksJ td| d|  ksJ t|| ks#J t|t| ks-J tt|ddts8J ttd| ddtsEJ |jddksOJ d S )Nr7   r6   r;   Fevaluater9   )	r)   r   r   r   r&   
isinstancer5   pspacecompute_expectation)r?   r6   rA   rA   rB   test_Poisson*   s   
rI   c                  C   s   t d} t d}td| }t|d|  |  ksJ t|dd|   | d    tdks/J t||| d | d|  |d   ksEJ d S )Nazr6   r;   r9   r   )r	   r(   r   r   r   r   r   )rJ   rK   r6   rA   rA   rB   test_FlorySchulz7   s   
,0rL   c                  C   s0  t jd } t| }|ttd|  ksJ |td t|ttd  d|  | d  ks/J t|d d dk s>J t|d d dk sMJ tdt dd d	}t|t d
d t	|t d
d kksmJ tdt
dd}tdt
dd}t||| |d|   tdt
dd ksJ d S )N   r9   r;   i N  r:   g33333@G   )r@      XYr7   r8      Q   i~  )r   Oner'   r>   r6   r<   r#   r=   r*   r   r   r%   r   r   )r@   drN   rQ   rR   rA   rA   rB   test_GeometricDistribution@   s   
4,6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sXJ t|| t tt|  d  tdt |  d   ksxJ t| d  ksJ td
ddd}t	|ddtd d ksJ t|dksJ t
|dksJ t|tddksJ t|dtd d ksJ d S )Na1T)positivea2)negativec                         t d S NHr+   rA   rX   rZ   rA   rB   <lambda>S       ztest_Hermite.<locals>.<lambda>c                      r\   r]   r_   rA   r`   rA   rB   ra   W   rb   r6   r^   r9   r;   rM   rO   r`   !   i      i     %   i  )r	   r4   
ValueErrorr+   r!   r   r   r   r   r   r   r$   r   r"   r   )r6   r^   rA   r`   rB   test_HermiteP   s,     ri   c                  C   s   t j} td| }t||  d|  td|    ksJ t|dtdd  dtd  ks/J td|d  d|  d ddtd  ksGJ tt|dd	tsRJ d S )
Nr6   r9   r;   r7   rO   rP   FrD   )r   Halfr,   r   r   r   rF   r5   )r@   r6   rA   rA   rB   test_Logarithmici   s   
&(0rl   c                  C   s   d} t jd }td| |}t|||  d|  ksJ t|||  d| d  ks+J t|d d|  d tddks>J tt|dd	tsIJ d S )
NrM   r7   r6   r9   r;   i#  rO   FrD   )r   rU   r-   r   r   r   rF   r5   )rr@   r6   rA   rA   rB   test_negative_binomialr   s   
 &rn   c                  C   sd  t d} t d}t d}td| |}t||| | |d  t|  |  t|dt| |   ks4J t| | | t| |  |t| |    || t| |  |t| |     ks`J t| | | kslJ t	|| | ksvJ t
||t| tt|  |  | |tt |   ksJ t||t| t| |  | |t|   ksJ d S )Nmu1mu2rK   r6   r;   )r	   r.   r   r   r   r   r"   expandr   r   r   r   r!   )ro   rp   rK   rQ   rA   rA   rB   test_skellam~   s,   

"
(
 rr   c                  C   s   ddl m}  | d}td|}tt|||d  ksJ tt||d |d d |d   ks3J tt|ddts>J t||t	t
t|d	 t| d |dkfd
ks[J d S )Nr   r   r7   r6   r9   r;   FrD   rO   )r   T)sympy.core.singletonr   r/   r   r   r   rF   r5   r#   r   r   r   )r   rhor6   rA   rA   rB   test_yule_simon   s   
,>ru   c                  C   sv   t d} td| }t|t| d t|  ksJ tt|t| t| d  t| d d  t| d  ks9J d S )NrM   r6   r9   r;   )r   r0   r   r   r   r   )sr6   rA   rA   rB   	test_zeta   s   
 
,rw   c                  C   s^  t dtdd} tdd}t dt}tt| dtdd	ks J t| dk td
dks-J t| dktdd	ks:J t| dktddksGJ t| dktdd	ksTJ tt| dtdd	ksbJ tt|ddtd d kssJ t|dk dtd ksJ t|dkdtdddtd d   td d sJ t|dkdtdddtd d   td d sJ t|dkdtd d ksJ tt|ddtd dtdddtd d   td d  sJ t| t	j
k t	ju sJ t| t	j
kt	ju sJ t|dk tdt  ksJ tt|dtt d d  ks-J d S )NrQ   r9   rM   rR   rO   er7      }   	      @   =   m       rd   iiG   r;   )r*   r   r)   r6   r   r   r   r   equalsr   InfinityrU   Zero)rQ   rR   rN   rA   rA   rB   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r6dks9J  J t|dkt dd	 ksGJ |jjj	t jksQJ t
t fd
d t d  t j}t|dk dksmJ t|tksuJ d S )Nr9   r;   r6   T)integerrY   )setcheckrN   r7      c                      s   t   ttd ddS )NrO   T)r   )r1   r   rangerA   r6   rA   rB   ra      s    z!test_DiscreteRV.<locals>.<lambda>)r   r	   r1   Naturalsr   r*   r   rG   domainr   r4   rh   r   )r@   pdfDrQ   rA   r   rB   test_DiscreteRV   s   2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 ]&}||}	||}
tt|	t|
 dk sLJ tt|	t|
 dk sZJ q4d S )Ntr6   mpmathc                    s   j  fddgddS )Nc                    s
    | S )NrA   r   )fr   rA   rB   ra      s   
 z^test_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>.<locals>.<lambda>r8   )	maxdegree)nsumr   )r   r   support_lower_limitsupport_upper_limitr   rB   ra      s
    zLtest_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>)r;   rM   r      g-q=)	r   r   r   r   r   r   r<   r   r
   )distr   r   r   r   r6   cf1cf2
test_pointn1n2r   )r   r   r   rB   test_cf   s   $z:test_precomputed_characteristic_functions.<locals>.test_cfgr9   r7   r?   rM   nrP   r@   yrK   )	r   r*   r   infr,   r-   r)   r/   r0   )r   rA   r   rB   )test_precomputed_characteristic_functions   s   r   c                  C   s  t d} ttdt j| }|| | ddksJ ttdt j| }|| | ddtd ks6J ttddt	dd	| }|| | dt	ddksSJ tt
d
d| }|| | ddksiJ ttddd| }|| | dtd td tdtd td  ksJ ttdd	| }t|| | dt	d	dksJ ttdd| }|| | dtd dtd  ksJ d S )Nr   r   r   r;   r?   r9   r   rM   r7   r@   rv   r   rK   rO   Z   )r   r!   r*   rk   diffsubsr,   r   r-   r   r)   r.   r   r/   r   r0   r   r   )r   geometric_mgflogarithmic_mgfnegative_binomial_mgfpoisson_mgfskellam_mgfyule_simon_mgfzeta_mgfrA   rA   rB    test_moment_generating_functions   s.   " 
($.r   c                  C   sx   t dtj} tt| dk | dktddksJ tt| dk| dkt| dkks+J tt| dk| dk dks:J d S )NrQ   r7   rO   rd   ry   r;   r9   )r*   r   rk   r   r   r   )rQ   rA   rA   rB   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J t| d dkjtdtjdks1J t|d dk jtd	ddksBJ t|d dkjtd	ddksSJ d S )
NrQ   r9   rM   rR   rO   r;   r7   r{   r   )r*   r   r)   r    r   r   r   r   rQ   rR   rA   rA   rB   
test_where  s   
$$"&r   c                  C   s   t dtdd} tdd}t| dk| dkdksJ t| dk| dktddks*J t|dk|dk dks7J tt|d|dkdtd d ksKJ tt|dt|ddksZJ t| dk t| ddkshJ t| dkt| ddksvJ d S )	NrQ   r;   r7   rR   r9   r   r{   )r*   r   r)   r   r   r   r   rA   rA   rB   test_conditional  s   
 ( r   c                  C   s   t dtj} t dtdd}tt| | dk tdksJ tt| | dktdks0J tt| | dtddks@J 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   rk   r   strr   rewriter   r   )r   r   rA   rA   rB   test_product_spaces!  s   $r   N)\sympy.concrete.summationsr   sympy.core.numbersr   r   r   r   rs   r   sympy.core.symbolr	   $sympy.functions.elementary.complexesr
   r   &sympy.functions.elementary.exponentialr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   sympy.functions.special.besselr   &sympy.functions.special.beta_functionsr   &sympy.functions.special.zeta_functionsr   sympy.sets.setsr   sympy.simplify.simplifyr   sympy.utilities.lambdifyr   sympy.core.relationalr   r   r   sympy.logic.boolalgr   sympy.sets.fancysetsr   sympy.statsr   r   r   r   r   r    r!   r"   r#   r$   r%   sympy.stats.drv_typesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   sympy.testing.pytestr2   r3   r4    sympy.stats.symbolic_probabilityr5   r6   rC   rI   rL   rW   ri   rl   rn   rr   ru   rw   r   r   r   r   r   r   r   r   rA   rA   rA   rB   <module>   sX    48		
	
 	