ó
¡¼™\c           @   s»  d  d l  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 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 d  d l m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& d  d	 l' m( Z( d  d
 l) m* Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 e* d „  ƒ Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d S(   iÿÿÿÿ(
   t   St   Sumt   It   lambdifyt   ret   imt   logt   simplifyt   zetat   pi(   t   x(   t   Eqt   Ne(   t   exp(   t   Or(   t   Range(   t   Pt   Et   variancet   densityt   characteristic_functiont   wheret   moment_generating_function(   t   PoissonDistributiont   GeometricDistributiont   Poissont	   Geometrict   Logarithmict   NegativeBinomialt	   YuleSimont   Zeta(   t   sample(   t   slowc          C   s•   d }  t  |  ƒ } t | j d ƒ j ƒ  d ƒ d k  s= t ‚ | j t t ƒ |  k s[ t ‚ | j t d t ƒ | j t t ƒ d |  k s‘ t ‚ d  S(   Ni   i
   i   gü©ñÒMbP?i   (   R   t   abst   cdft   evalft   AssertionErrort   expectationR
   (   t   lt   p(    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_PoissonDistribution   s
    +c          C   s­   d }  t  d |  ƒ } t | ƒ |  k s- t ‚ t | ƒ |  k sE t ‚ t | ƒ t |  ƒ k sc t ‚ t t | d t ƒt ƒ s„ t ‚ t t d | d t ƒt ƒ s© t ‚ d  S(   Ni   R
   t   evaluatei   (	   R   R   R$   R   R   R   t
   isinstancet   FalseR   (   R&   R
   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_Poisson   s    !c          C   s¬   t  j d }  t |  ƒ } | j t t ƒ d |  k s; t ‚ | j t d t ƒ | j t t ƒ d d |  |  d k s} t ‚ t | j d ƒ j ƒ  d ƒ d k  s¨ t ‚ d  S(   Ni   i   i   i N  gü©ñÒMbP?(	   R    t   OneR   R%   R
   R$   R!   R"   R#   (   R'   t   d(    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_GeometricDistribution   s
    "Bc          C   sÞ   t  j d }  t d |  ƒ } t | ƒ |  d |  t d |  ƒ k sK t ‚ t | ƒ d t d ƒ d d t d ƒ k s t ‚ t d | d d | d ƒ d d t d ƒ k s¹ t ‚ t t | d t ƒt	 ƒ sÚ t ‚ d  S(	   Ni   R
   i   iÿÿÿÿi   i   i   R)   (
   R    R-   R   R   R   R$   R   R*   R+   R   (   R'   R
   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_Logarithmic%   s    /4:c          C   sË   d }  t  d ƒ d } t d |  | ƒ } t | ƒ | |  d | k sL t ‚ t | ƒ | |  d | d k st t ‚ t | d d | d ƒ t  d ƒ d k s¦ t ‚ t t | d t ƒt ƒ sÇ t ‚ d  S(	   Ni   i   i   R
   i   i÷#  i   R)   (   R    R   R   R$   R   R*   R+   R   (   t   rR'   R
   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_negative_binomial-   s    $(2c          C   sœ   t  d ƒ }  t d |  ƒ } t t | ƒ ƒ |  |  d k sA t ‚ t t | ƒ ƒ |  d |  d d |  d k sw t ‚ t t | d t ƒt ƒ s˜ t ‚ d  S(   Ni   R
   i   i   R)   (	   R    R   R   R   R$   R   R*   R+   R   (   t   rhoR
   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_yule_simon6   s
    &6c          C   s   t  d ƒ }  t d |  ƒ } t | ƒ t |  d ƒ t |  ƒ k sG t ‚ t t | ƒ ƒ t |  ƒ t |  d ƒ t |  d ƒ d t |  ƒ d k s™ t ‚ d  S(   Ni   R
   i   i   (   R    R   R   R   R$   R   R   (   t   sR
   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt	   test_zeta=   s    ,c          C   sÚ   t  d t d ƒ d ƒ t d d ƒ t d d ƒ }  } } t d t d ƒ d	 ƒ } t |  ƒ |  j j j k ss t ‚ t | ƒ | j j j k s” t ‚ t | ƒ | j j j k sµ t ‚ t | ƒ | j j j k sÖ t ‚ d  S(
   Nt   Xi   i   t   Yi   t   Ziè  t   Wid   (   R   R    R   R   t   pspacet   domaint   setR$   (   R7   R8   R9   R:   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_sample_discreteD   s    9!!!c          C   sV  t  d t d ƒ d ƒ }  t d d ƒ } t  d t ƒ } t t |  d ƒ ƒ t d ƒ d	 k sb t ‚ t |  d k  ƒ t d
 ƒ d k sŠ t ‚ t |  d k ƒ t d ƒ d	 k s² t ‚ t |  d k ƒ t d ƒ d k sÚ t ‚ t |  d k ƒ t d ƒ d	 k st ‚ t t |  d ƒ ƒ t d ƒ d	 k s-t ‚ t t | d ƒ ƒ d t d ƒ d k s\t ‚ t | d k  ƒ d t d ƒ k s„t ‚ t | d k ƒ j	 d t d ƒ d d t d ƒ d t d ƒ d ƒ sÔt ‚ t | d k ƒ j	 d t d ƒ d d t d ƒ d t d ƒ d ƒ s$t ‚ t | d k ƒ d t d ƒ d k sPt ‚ t t | d ƒ ƒ j	 d t d ƒ d t d ƒ d d t d ƒ d t d ƒ d ƒ s±t ‚ t |  t j
 k  ƒ t j k sÕt ‚ t |  t j
 k ƒ t j k sùt ‚ t | d k  ƒ t t d t k s$t ‚ t t | d ƒ ƒ t t d d k sRt ‚ d  S(   NR7   i   i   R8   i   t   ei   i   i}   i	   i   i@   i=   im   i    iüÿÿÿi   iG   i'   i   (   R   R    R   R
   R   R   R$   R   R   t   equalst   InfinityR-   t   Zero(   R7   R8   t   G(    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_discrete_probabilityM   s(    +((((+/(PP,L$$+c             sè   d d  l  ‰  ‡  f 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(   Niÿÿÿÿc            s  t  |  ƒ } t d ƒ } t d ƒ } t | g t |  ƒ | ƒ d ƒ } t | | g | | ƒ t t | | ƒ d ƒ ‰  ‡  ‡ ‡ ‡ f d †  } x‚ d d d d g D]n } | | ƒ }	 | | ƒ }
 t t |	 ƒ t |
 ƒ ƒ d	 k  sæ t ‚ t t	 |	 ƒ t	 |
 ƒ ƒ d	 k  s  t ‚ q  Wd  S(
   Nt   tR
   t   mpmathc            s(   ˆ j  ‡ ‡  f d †  ˆ ˆ g d d ƒS(   Nc            s   ˆ  |  ˆ ƒ S(   N(    (   R
   (   t   fRE   (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   <lambda>p   t    t	   maxdegreei
   (   t   nsum(   RE   (   RG   RF   t   support_lower_limitt   support_upper_limit(   RE   sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyRH   p   RI   i   i   i   i   gê-™—q=(
   R   R    R   R   R   R   R!   R   R$   R   (   t   distRL   RM   t   pdfRE   R
   t   cf1t   cf2t
   test_pointt   n1t   n2(   RF   (   RG   RL   RM   sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_cff   s    !0(t   gi   i   R&   i   t   ni   i    R'   t   yt   z(	   RF   R   R    t   infR   R   R   R   R   (   RU   (    (   RF   sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt)   test_precomputed_characteristic_functionsc   s    &&)c          C   só  t  d ƒ }  t t d t  d ƒ d ƒ ƒ |  ƒ } | j |  ƒ j |  d ƒ d k sX t ‚ t t d t  d ƒ d ƒ ƒ |  ƒ } | j |  ƒ j |  d ƒ d t d ƒ k s® t ‚ t t d d t  d ƒ d	 ƒ ƒ |  ƒ } | j |  ƒ j |  d ƒ t  d ƒ d k st ‚ t t	 d
 d ƒ ƒ |  ƒ } | j |  ƒ j |  d ƒ d k sIt ‚ t t
 d d	 ƒ ƒ |  ƒ } t | j |  ƒ j |  d ƒ ƒ t  d	 ƒ d k s›t ‚ t t d d ƒ ƒ |  ƒ } | j |  ƒ j |  d ƒ t d d t d ƒ k sït ‚ d  S(   NRE   RV   i   i   i    R&   RW   i   i   R'   RX   RY   i   iZ   (   R    R   R   t   difft   subsR$   R   R   R   R   R   R   R   R	   R   (   RE   t   geometric_mgft   logarithmic_mgft   negative_binomial_mgft   poisson_mgft   yule_simon_mgft   zeta_mgf(    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt    test_moment_generating_functions   s    %'%1(1'7c          C   s¢   t  d t d ƒ d ƒ }  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(   NR7   i   i   i   i   i   i   (   R   R    R   R   (   R7   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_Or–   s    /1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 s t ‚ t | d d k  ƒ j t d	 d d ƒ k sÁ t ‚ t | d d k ƒ j t d	 d d ƒ k sò t ‚ d  S(
   NR7   i   i   R8   i   i   i   i	   i    (   R   R    R   R   R=   R   RA   R$   (   R7   R8   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt
   test_whereœ   s    441c          C   sd  t  d t d ƒ d ƒ }  t d d ƒ } t |  d k |  d k ƒ d k sO t ‚ t |  d k |  d k ƒ t d ƒ d k s€ t ‚ t | d k | d k  ƒ d k s§ t ‚ t t | d ƒ | d k ƒ d t d ƒ d k sß t ‚ t t | d ƒ t | d ƒ ƒ d k st ‚ t |  d k  t |  d ƒ ƒ d k s6t ‚ t |  d k t |  d ƒ ƒ d k s`t ‚ d  S(	   NR7   i   i   R8   i   i    i	   iýÿÿÿ(   R   R    R   R   R$   R   R   (   R7   R8   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_conditional¤   s    '1'8-*c          C   sÃ   t  d t d ƒ d ƒ }  t  d t d ƒ d ƒ } t t |  | d k  d t ƒƒ d d k sd t ‚ t t |  | d k ƒ ƒ d d	 k s t ‚ t t t |  | d ƒ ƒ ƒ d
 d k s¿ t ‚ d  S(   Nt   X1i   i   t   X2i   R)   s2   Sum(Piecewise((2**(X2 - n - 2)*(2/3)**(X2 - 1)/6, sP   (-X2 + n + 3 >= 1) & (-X2 + n + 3 < oo)), (0, True)), (X2, 1, oo), (n, -oo, -1))sN   (-X2 + n + 3 >= 1) & (-X2 + n + 3 < oo)), (0, True)), (X2, 1, oo), (n, 1, oo))s.   Sum(Piecewise((2**(X2 - 2)*(2/3)**(X2 - 1)/6, s"   X2 <= 2), (0, True)), (X2, 1, oo))(   R   R    t   strR   R+   R$   R   (   Rh   Ri   (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   test_product_spaces¯   s    "N(:   t   sympyR    R   R   R   R   R   R   R   R   R	   t	   sympy.abcR
   t   sympy.core.relationalR   R   t&   sympy.functions.elementary.exponentialR   t   sympy.logic.boolalgR   t   sympy.sets.fancysetsR   t   sympy.statsR   R   R   R   R   R   R   t   sympy.stats.drv_typesR   R   R   R   R   R   R   R   t   sympy.stats.rvR   t   sympy.utilities.pytestR    R(   R,   R/   R0   R2   R4   R6   R>   RD   R[   Rd   Re   Rf   Rg   Rk   (    (    (    sA   lib/python2.7/site-packages/sympy/stats/tests/test_discrete_rv.pyt   <module>   s0   F4:																