o
    8Va+                     @   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 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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z; d d	l<m=Z= ed
Z>dd Z?dd Z@dd ZAe8dd ZBdd ZCdd ZDe9dd ZEdd ZFdd ZGdd ZHdd  ZId!d" ZJd#d$ ZKd%d& ZLd'd( ZMd)d* ZNd+d, ZOd-d. ZPd/S )0    )SSymbolSumIlambdifyreimlogsimplifysqrtzetapibesseliDummyoo	PiecewiseRationalbetafloor	FiniteSet)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ignore_warnings)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expectationr7   )lp rB   D/usr/lib/python3/dist-packages/sympy/stats/tests/test_discrete_rv.pytest_PoissonDistribution   s   ,rD   c                  C   s   d} t d| }t|| ksJ t|| ksJ t|t| ks!J tt  tt|ddts1J ttd| ddts>J W d    n1 sHw   Y  |j	
ddksWJ d S )Nr8   r7   FZevaluater<   r:   )r)   r   r   r   r&   r5   UserWarning
isinstancer6   pspaceZcompute_expectation)r@   r7   rB   rB   rC   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zr7   r<   r:   r   )r   r(   r   r   r
   r   r   )rJ   rK   r7   rB   rB   rC   test_FlorySchulz*   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   r:   r<   i N  r;   g33333@G   )rA      XYr8   r9      Q   i~  )r   Oner'   r?   r7   r=   r#   r>   r*   r   r   r%   r
   r   )rA   drN   rQ   rR   rB   rB   rC   test_GeometricDistribution3   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+   rB   rX   rZ   rB   rC   <lambda>F       ztest_Hermite.<locals>.<lambda>c                      r\   r]   r_   rB   r`   rB   rC   ra   J   rb   r7   r^   r:   r<   rM   rO   r`   !   i      i     %   i  )r   r4   
ValueErrorr+   r!   r   r   r   r   r   r   r$   r   r"   r   )r7   r^   rB   r`   rC   test_HermiteC   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 tt|dd	t	sWJ W d    d S 1 sbw   Y  d S )
Nr7   r:   r<   r8   rO   rP   FrE   )
r   Halfr,   r   r	   r   r5   rF   rG   r6   )rA   r7   rB   rB   rC   test_Logarithmic\   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 tt|dd	t	sNJ W d    d S 1 sYw   Y  d S )
NrM   r8   r7   r:   r<   i#  rO   FrE   )
r   rU   r-   r   r   r   r5   rF   rG   r6   )rrA   r7   rB   rB   rC   test_negative_binomialf   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   r7   r<   )r   r.   r   r   r   r   r"   expandr   r   r   r   r!   )ro   rp   rK   rQ   rB   rB   rC   test_skellams   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 tt|ddt	sCJ W d    n1 sMw   Y  t
||ttt|d	 t| d |dkfd
ksoJ d S )Nr   )r   r8   r7   r:   r<   FrE   rO   r   T)sympyr   r/   r
   r   r   r5   rF   rG   r6   r#   r   r   r   )r   Zrhor7   rB   rB   rC   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   r7   r:   r<   )r   r0   r   r   r
   r   )sr7   rB   rB   rC   	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   r:   rM   rR   rO   er8      }   	      @   =   m       rd   iiG   r<   )r*   r   r)   r7   r   r   r   r   Z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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<   r7   T)ZintegerrY   )setcheckrN   r8      c                      s   t   ttd ddS )NrO   T)r   )r1   r   rangerB   r7   rB   rC   ra      s    z!test_DiscreteRV.<locals>.<lambda>)r   r   r1   ZNaturalsr   r*   r   rH   domainr   r4   rh   r   )rA   pdfDrQ   rB   r   rC   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tr7   mpmathc                    s   j  fddgddS )Nc                    s
    | S )NrB   r   )fr   rB   rC   ra      s   
 z^test_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>.<locals>.<lambda>r9   )Z	maxdegree)Znsumr   )r   r   support_lower_limitsupport_upper_limitr   rC   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   )Zdistr   r   r   r   r7   Zcf1Zcf2Z
test_pointZn1Zn2r   )r   r   r   rC   test_cf   s   $z:test_precomputed_characteristic_functions.<locals>.test_cfgr:   r8   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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@   r:   r   rM   r8   rA   rv   r   rK   rO   Z   )r   r!   r*   rk   ZdiffZ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_mgfrB   rB   rC    test_moment_generating_functions   s.   " 
($.r   c                  C   sl   t dtj} tt| dk | dktddk tt| dk| dkt| dkk tt| dk| dk dk d S )NrQ   r8   rO   rd   ry   r<   r:   )r*   r   rk   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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   r:   rM   rR   rO   r<   r8   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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<   r8   rR   r:   r   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d}tt1 t| | dk ddt	
t	td|  d	 |d dkfd
|t dfd s@J W d    n1 sJw   Y  t| | dk
t	td|| d  tdd|d   d | | d dkfd
|dtf|dtfsJ tt| | dtddksJ d S )NX1X2r:   r8   r   FrE   r<   rO   rs   rj         )r*   r   rk   r   r   r5   rF   r   Zrewriter   Zdummy_eqr   r   r   )r   r   r   rB   rB   rC   test_product_spaces  s,   
*

8
$r   N)Qrt   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zsympy.core.relationalr   r   Z&sympy.functions.elementary.exponentialr   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   r7   rD   rI   rL   rW   ri   rl   rn   rr   ru   rw   r   r   r   r   r   r   r   r   rB   rB   rB   rC   <module>   s<   X 48		


 	