o
    GZh+                     @   s8  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lCmDZDmEZEmFZFmGZG d dlHmIZI d dlJmKZK e
dZLdd ZMdd ZNdd ZOeDd d! ZPd"d# ZQd$d% ZReEd&d' ZSd(d) ZTd*d+ ZUd,d- ZVd.d/ ZWd0d1 ZXd2d3 ZYd4d5 ZZd6d7 Z[d8d9 Z\d:d; Z]d<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skip)Expectation)FallingFactorial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expectationr8   )lp rC   Q/var/www/auris/lib/python3.10/site-packages/sympy/stats/tests/test_discrete_rv.pytest_PoissonDistribution"   s   ,rE   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 zdd l	}W n t
yb   td Y nw t d	|d
}t|d
kssJ t d	|d}t|dksJ d}t d|}t||ksJ tt|d|d ksJ t|d ||d  ksJ d S )Nr9   r8   r=   Fevaluater;   r   znumpy not installedygKPh;x=gUPh;x=   z)r)   r   r   r   r&   
isinstancer6   pspaceZcompute_expectationnumpyImportErrorr5   Zfloat64r7   )rA   r8   nprH   l2rJ   rC   rC   rD   test_Poisson+   s.   

 rQ   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arJ   r8   r=   r;   r   )r	   r(   r   r   r   r   r   )rR   rJ   r8   rC   rC   rD   test_FlorySchulzF   s   
,0rS   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 )NrI   r;   r=   i N  r<   g33333@G   )rB      XYr9   r:      Q   i~  )r   Oner'   r@   r8   r>   r#   r?   r*   r   r   r%   r   r   )rB   drT   rW   rX   rC   rC   rD   test_GeometricDistributionO   s   
4,6r]   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+   rC   r^   r`   rC   rD   <lambda>b       ztest_Hermite.<locals>.<lambda>c                      rb   rc   re   rC   rf   rC   rD   rg   f   rh   r8   rd   r;   r=   rI   rU   rf   !   i      i     %   i  )r	   r4   
ValueErrorr+   r!   r   r   r   r   r   r   r$   r   r"   r   )r8   rd   rC   rf   rD   test_Hermite_   s,     ro   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 )
Nr8   r;   r=   r9   rU   rV   FrF   )r   Halfr,   r   r   r   rK   r6   )rB   r8   rC   rC   rD   test_Logarithmicx   s   
&(0rr   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t|  d   krOtddksRJ  J tt|ddts]J d S )	NrI   r9   r8   r;   r=   i9' FrF   )r   r[   r-   r   r   r   rK   r6   )rrB   r8   rC   rC   rD   test_negative_binomial   s   
 Nrt   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mu2rJ   r8   r=   )r	   r.   r   r   r   r   r"   expandr   r   r   r   r!   )ru   rv   rJ   rW   rC   rC   rD   test_skellam   s,   

"
(
 rx   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   r9   r8   r;   r=   FrF   rU   )r   T)sympy.core.singletonr   r/   r   r   r   rK   r6   r#   r   r   r   )r   rhor8   rC   rC   rD   test_yule_simon   s   
,>r{   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 )NrI   r8   r;   r=   )r   r0   r   r   r   r   )sr8   rC   rC   rD   	test_zeta   s   
 
,r}   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 )NrW   r;   rI   rX   rU   er9      }   	      @   =   m       rj   iiG   r=   )r*   r   r)   r8   r   r   r   r   equalsr   Infinityr[   ZZero)rW   rX   rT   rC   rC   rD   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 )Nr;   r=   r8   T)integerr_   )setcheckrT   r9      c                      s   t   ttd ddS )NrU   T)r   )r1   r   rangerC   r8   rC   rD   rg      s    z!test_DiscreteRV.<locals>.<lambda>)r   r	   r1   ZNaturalsr   r*   r   rL   domainr   r4   rn   r   )rB   pdfDrW   rC   r   rD   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tr8   mpmathc                    s   j  fddgddS )Nc                    s
    | S )NrC   r   )fr   rC   rD   rg      s   
 z^test_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>.<locals>.<lambda>r:   )Z	maxdegree)Znsumr   )r   r   support_lower_limitsupport_upper_limitr   rD   rg      s
    zLtest_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>)r=   rI   r      g-q=)	r   r   r   r   r   r   r>   r   r
   )distr   r   r   r   r8   Zcf1Zcf2Z
test_pointZn1Zn2r   )r   r   r   rD   test_cf   s   $z:test_precomputed_characteristic_functions.<locals>.test_cfgr;   r9   rA   rI   nrV   rB   rH   rJ   )	r   r*   r   infr,   r-   r)   r/   r0   )r   rC   r   rD   )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=   rA   r;   r   rI   r9   r:   rB   r|   rH   rJ   rU   Z   )r   r!   r*   rq   diffsubsr,   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_mgfrC   rC   rD    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 )NrW   r9   rU   rj   r   r=   r;   )r*   r   rq   r   r   r   )rW   rC   rC   rD   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 )
NrW   r;   rI   rX   rU   r=   r9   r   r   )r*   r   r)   r    r   r   r   r   rW   rX   rC   rC   rD   
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 )	NrW   r=   r9   rX   r;   r   r   )r*   r   r)   r   r   r   r   rC   rC   rD   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X2r;   r9   z@Sum(Piecewise((1/(4*2**n), n >= -1), (0, True)), (n, -oo, -1))/3zdSum(Piecewise((2**(X2 - n - 2)*(2/3)**(X2 - 1)/6, X2 - n <= 2), (0, True)), (X2, 1, oo), (n, 1, oo))   )	r*   r   rq   r   strr   Zrewriter   r   )r   r   rC   rC   rD   test_product_spaces0  s   $r   N)_Zsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   r   ry   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   r5   Z sympy.stats.symbolic_probabilityr6   Z(sympy.functions.combinatorial.factorialsr7   r8   rE   rQ   rS   r]   ro   rr   rt   rx   r{   r}   r   r   r   r   r   r   r   r   rC   rC   rC   rD   <module>   sZ    48		
	
 	