a
    lh+                     @   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 sHJ |tt| ks\J |td t|ttd  | ksJ d S )N   
      MbP?g$@   )r&   absr#   evalfexpectationr8   )lp rC   P/var/www/auris/lib/python3.9/site-packages/sympy/stats/tests/test_discrete_rv.pytest_PoissonDistribution"   s    rE   c                  C   sf  d} t d| }t|| ksJ td| d|  ks6J t|| ksFJ t|t| ksZJ tt|ddtspJ ttd| ddtsJ |jddksJ zdd l	}W n t
y   td Y n0 t d	|d
}t|d
ksJ t d	|d}t|dksJ d}t d|}t||ks(J tt|d|d ksDJ t|d ||d  ksbJ 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   float64r7   )rA   r8   nprH   l2rJ   rC   rC   rD   test_Poisson+   s,    

rR   c                  C   s   t d} t d}td| }t|d|  |  ks2J t|dd|   | d    tdks^J t||| d | d|  |d   ksJ d S )NarJ   r8   r=   r;   r   )r	   r(   r   r   r   r   r   )rS   rJ   r8   rC   rC   rD   test_FlorySchulzF   s    
,rT   c                  C   s2  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 sJ tdt dd d	}t|t d
d t	|t d
d kksJ tdt
dd}tdt
dd}t||| |d|   tdt
dd ks.J 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   drU   rX   rY   rC   rC   rD   test_GeometricDistributionO   s    
4,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sJ t|| t tt|  d  tdt |  d   ksJ t| d  ks
J td
ddd}t	|ddtd d ks:J t|dksLJ t
|dks^J t|tddksvJ t|dtd d ksJ d S )Na1T)positivea2)negativec                      s   t d S NHr+   rC   r_   ra   rC   rD   <lambda>b       ztest_Hermite.<locals>.<lambda>c                      s   t d S rc   re   rC   rf   rC   rD   rg   f   rh   r8   rd   r;   r=   rI   rV   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s6J t|dtdd  dtd  ks^J td|d  d|  d ddtd  ksJ tt|dd	tsJ d S )
Nr8   r;   r=   r9   rV   rW   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s6J t|| d|  |d  ksVJ t|d d|  d t|d dt|  d   krtddksn J tt|ddtsJ 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    
 Lrt   c                  C   sh  t d} t d}t d}td| |}t||| | |d  t|  |  t|dt| |   kshJ t| | | t| |  |t| |    || t| |  |t| |     ksJ t| | | ksJ t	|| | ksJ t
||t| tt|  |  | |tt |   ks,J t||t| t| |  | |t|   ksdJ d S )Nmu1mu2rJ   r8   r=   )r	   r.   r   r   r   r   r"   expandr   r   r   r   r!   )ru   rv   rJ   rX   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sfJ tt|ddts|J t||t	t
t|d	 t| d |dkfd
ksJ d S )Nr   r   r9   r8   r;   r=   FrF   rV   )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s2J tt|t| t| d  t| d d  t| d  ksrJ d S )NrI   r8   r;   r=   )r   r0   r   r   r   r   )sr8   rC   rC   rD   	test_zeta   s    
 
,r}   c                  C   sj  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sZJ t| dktdd	kstJ t| dktddksJ t| dktdd	ksJ tt| dtdd	ksJ tt|ddtd d ksJ t|dk dtd ksJ t|dkdtdddtd d   td d sBJ 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 sJ 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sfJ d S )NrX   r;   rI   rY   rV   er9      }   	      @   =   m       rj   iiG   r=   )r*   r   r)   r8   r   r   r   r   equalsr   Infinityr\   ZZero)rX   rY   rU   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rjdkspn J t|dkt dd	 ksJ |jjj	t jksJ t
t fd
d t d  t j}t|dk dksJ t|tksJ d S )Nr;   r=   r8   T)integerr`   )setcheckrU   r9      c                      s   t   ttd ddS )NrV   T)r   )r1   r   rangerC   r8   rC   rD   rg      rh   z!test_DiscreteRV.<locals>.<lambda>)r   r	   r1   ZNaturalsr   r*   r   rL   domainr   r4   rn   r   )rB   pdfDrX   rC   r   rD   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 sJ tt|	t|
 dk shJ qhd S )Ntr8   mpmathc                    s   j  fddgddS )Nc                    s
    | S )NrC   r   )fr   rC   rD   rg      rh   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   nrW   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s6J ttdt j| }|| | ddtd kslJ ttddt	dd	| }|| | dt	d
dksJ tt
dd| }|| | ddksJ ttddd| }|| | dtd td tdtd td  ks(J ttdd	| }t|| | dt	d	dks`J 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   rV   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s0J tt| dk| dkt| dkksVJ tt| dk| dk dkstJ d S )NrX   r9   rV   rj   r   r=   r;   )r*   r   rq   r   r   r   )rX   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sbJ t|d dk jtd	ddksJ t|d dkjtd	ddksJ d S )
NrX   r;   rI   rY   rV   r=   r9   r   r   )r*   r   r)   r    r   r   r   r   rX   rY   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s4J t| dk| dktddksTJ t|dk|dk dksnJ tt|d|dkdtd d ksJ tt|dt|ddksJ t| dk t| ddksJ t| dkt| ddksJ d S )	NrX   r=   r9   rY   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s`J tt| | dtddksJ 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   rR   rT   r^   ro   rr   rt   rx   r{   r}   r   r   r   r   r   r   r   r   rC   rC   rC   rD   <module>   sX   48		
	
 	