ó
¡¼™\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
 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  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* m+ Z+ m, Z, m- Z- m. Z. d  d l/ m0 Z0 d  d l1 m2 Z2 e j3 Z4 d „  Z5 d „  Z6 d	 „  Z7 d
 „  Z8 d „  Z9 d „  Z: d „  Z; d „  Z< d „  Z= d „  Z> d „  Z? d „  Z@ d „  ZA d „  ZB d „  ZC d „  ZD d „  ZE d „  ZF d „  ZG d S(   iÿÿÿÿ(   t	   FiniteSett   St   Symbolt   sqrtt   symbolst   simplifyt   Eqt   cost   Andt   Tuplet   Ort   Dictt   sympifyt   binomialt   cancelt   expt   I(   t   range(   t   Matrix(   t   DiscreteUniformt   Diet	   Bernoullit   Coint   Binomialt   Hypergeometrict
   Rademachert   Pt   Et   variancet
   covariancet   skewnesst   samplet   densityt   wheret   FiniteRVt   pspacet   cdft   correlationt   momentt   cmomentt   smomentt   characteristic_functiont   moment_generating_function(   t   DieDistribution(   t   raisesc         C   sp   t  |  | ƒ t  t |  | ƒ ƒ t  | ƒ k s4 t ‚ t  |  | ƒ t  | |  ƒ t  |  ƒ t  | ƒ k sl t ‚ d  S(   N(   R   R   t   AssertionError(   t   At   B(    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt	   BayesTest   s    4c          C   sø  t  d ƒ \ }  } } } t d |  | | g ƒ } t | ƒ |  | | d k sT t ‚ t t | ƒ |  d | d | d d |  d | d | d d ƒ d k sª t ‚ t t | |  ƒ ƒ t t | | ƒ ƒ k oÿ t t | | ƒ ƒ k oÿ t d ƒ k n s
t ‚ t d t	 d d	 ƒ ƒ } t | ƒ t d
 ƒ k s@t ‚ t | ƒ t d ƒ k s^t ‚ x– t	 d d	 ƒ D]… } t t | | ƒ ƒ t d ƒ k s›t ‚ t | | k ƒ t | d ƒ d k sÇt ‚ t | | k ƒ t d	 | ƒ d k snt ‚ qnWt
 t t d d ƒ ƒ j ƒ  ƒ t
 t t d t	 d d ƒ ƒ ƒ j ƒ  ƒ k sHt ‚ t | ƒ | ƒ t t |  | ƒ d t t | | ƒ d t t | | ƒ d k s¤t ‚ t | ƒ | ƒ t |  | ƒ d t | | ƒ d t | | ƒ d k sôt ‚ d  S(   Ns   a b c tt   Xi   i   i    s   1/3t   Yiûÿÿÿi   s   -1/2s   33/4s   1/10i   i
   t   Dt   Ui   i   (   R   R   R   R-   R   R   R   R   R   R   t   dictR    R   t   itemsR)   R   R   R*   (   t   at   bt   ct   tR1   R2   t   x(    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_discreteuniform   s"    $J`',03\c       	   C   sl  t  d d ƒ t  d d ƒ t  d d ƒ }  } } t d ƒ \ } } } t |  ƒ d t j k sc t ‚ t |  ƒ t d ƒ d k s… t ‚ t |  | ƒ d	 k s¡ t ‚ t |  |  ƒ d	 k s½ t ‚ t | |  | ƒ | t |  ƒ | k së t ‚ t |  | ƒ t |  ƒ t | ƒ k o)t |  | d
 ƒ k n s4t ‚ t |  |  ƒ d t |  ƒ k olt |  |  d
 ƒ k n swt ‚ t |  d ƒ d k s’t ‚ t d |  d ƒ d t |  d ƒ k s¾t ‚ t |  | ƒ t j	 k sÜt ‚ t |  |  | ƒ t |  ƒ k st ‚ t
 t t |  t j ƒ d ƒ ƒ t t j k s6t ‚ t |  | ƒ d k sQt ‚ t |  | ƒ t | |  ƒ k sut ‚ t |  | d ƒ t |  | ƒ k sžt ‚ t |  d ƒ d k s¹t ‚ t |  d k ƒ t j k sÚt ‚ t d
 |  d k ƒ t j k sÿt ‚ t |  | k ƒ t d ƒ d k s't ‚ t t |  | ƒ ƒ t t |  d ƒ ƒ k sWt ‚ t |  |  d k ƒ d k o’t |  d d |  d k ƒ k n st ‚ t |  | d k ƒ t |  ƒ k oÞt |  d d | d k ƒ k n sét ‚ t |  | t |  | ƒ ƒ t d
 |  ƒ k st ‚ t |  d ƒ d k s6t ‚ t d |  d
 ƒ d t |  d
 ƒ k sbt ‚ t |  d k |  d k ƒ t j k sŒt ‚ t |  | k t | d ƒ ƒ t j	 k s¹t ‚ t t |  | d ƒ ƒ t j d k såt ‚ t t |  | d ƒ t |  d ƒ ƒ t j d k st ‚ t
 |  | ƒ t
 | | ƒ k oRt
 |  |  ƒ k n s]t ‚ t
 d
 |  | | ƒ } | t d ƒ t j d k rÁ| t d ƒ t j d k rÁt d ƒ | k sÇt ‚ t |  ƒ j j ƒ  t g  d d
 d d d d g D] } t |  j | ƒ ^ qõŒ  k st ‚ t |  d k ƒ j t d d d ƒ k sLt ‚ t |  ƒ | ƒ t d t | ƒ d t d t | ƒ d t d t | ƒ d t d t | ƒ d t d
 t | ƒ d t t | ƒ d k sæt ‚ t  |  ƒ | ƒ t d | ƒ d t d | ƒ d t d | ƒ d t d | ƒ d t d
 | ƒ d t | ƒ d k sht ‚ d  S(   NR1   i   R2   t   Zs   a b ti   i#   i   i   i   i   i    i   i@   i   i   i$   i   il   i  iØ   i:  (!   R   R   R   R   t   HalfR-   R   R'   R   t   ZeroR    R   R   t   Pit   TrueR%   R(   R   R   R&   t   OneR#   t   domaint
   as_booleanR
   t   symbolR!   t   setR    R)   R   R   R*   (   R1   R2   R=   R7   R8   R:   t   dt   i(    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt	   test_dice0   sN    /".IC,%5$)!%(0FL2,*-,8@RC-šc          C   s¡   t  d d ƒ }  t |  |  d k ƒ i t d ƒ t d ƒ 6k sC t ‚ t |  d k |  d k ƒ j ƒ  t |  j d ƒ k s| t ‚ t |  |  d k ƒ d k s t ‚ d  S(   NR1   i   i   i   i   (	   R   R    R   R-   R!   RD   R   RE   R   (   R1   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt
   test_givenb   s    49c       	      s˜  t  d d ƒ t  d d ƒ ‰  }  ˆ  j |  j } } t ˆ  |  k ƒ } | j | | k k s_ t ‚ t t ˆ  |  k |  d k ƒ ƒ } | j ƒ  t t t | d ƒ t | d ƒ ƒ t t | d ƒ t | d ƒ ƒ t t | d ƒ t | d ƒ ƒ ƒ k sõ t ‚ t	 | j
 ƒ d k st ‚ t	 t ˆ  |  ƒ j j
 ƒ d k s8t ‚ t  d d ƒ ‰ t t ‡  ‡ f d †  ƒ t ˆ  |  ƒ j j t d	 d
 d d d d ƒ d
 k s›t ‚ t ˆ  d k ƒ j t d d d ƒ k sÈt ‚ ˆ  j j j t g  t d	 d ƒ D] } t i | ˆ  j 6ƒ ^ qçŒ  k st ‚ t ˆ  |  k ƒ j t g  t d	 d ƒ D]H } t d	 d ƒ D]2 } | | k rMt i | ˆ  j 6| |  j 6ƒ ^ qMq:Œ  k s”t ‚ d  S(   NR;   i   t   yi   i   i   i$   c              s   t  ˆ  ˆ k ƒ S(   N(   R   (    (   R1   R=   (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   <lambda>x   t    i   i   i   (   R   RE   R!   t	   conditionR-   R   RD   R
   R   t   lent   elementsR#   RC   R,   t
   ValueErrorRF   R    R5   R   R   (   R2   R;   RK   RG   RH   t   j(    (   R1   R=   s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_domainsi   s"    !9<(;->c          C   s‰   t  d d ƒ t  d d ƒ t  d d ƒ }  } } t |  d k |  | d k  ƒ t t |  | | ƒ | | k ƒ t |  d k |  d k ƒ d  S(   NR1   i   R2   R=   i   i   i   (   R   R0   R   (   R1   R2   R=   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_dice_bayes„   s    / c             se   t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t d ƒ }  t d |  ƒ ‰  t  t ‡  f d †  ƒ d  S(   Nc           S   s   t  d d ƒ S(   NR1   iÿÿÿÿ(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL      RM   c           S   s   t  d d ƒ S(   NR1   i    (   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   Ž   RM   c           S   s   t  d d ƒ S(   NR1   g      ø?(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL      RM   t   kR1   c              s   t  ˆ  ƒ j S(   N(   R    R5   (    (   t   sym_die(    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   “   RM   (   R,   RQ   R   R   (   RU   (    (   RV   s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_die_argsŒ   s    c          C   sÿ  t  d ƒ \ }  } } } t d |  | | ƒ } t | ƒ | |  | |  d k sV t ‚ t | ƒ | |  k sr t ‚ t | ƒ | d |  k s’ t ‚ t | ƒ | ƒ |  t t | | ƒ |  d t t | | ƒ k sÝ t ‚ t | ƒ | ƒ |  t | | ƒ |  d t | | ƒ k s t ‚ t d |  d d ƒ } t | ƒ |  k sMt ‚ t	 t
 | ƒ ƒ |  d |  k sst ‚ t | | | ƒ | t | ƒ | k s¡t ‚ t	 t
 | | | ƒ ƒ t	 | d t
 | ƒ ƒ k sÛt ‚ t t d „  ƒ t t d „  ƒ d  S(   Ns   p a b tR/   i   i    i   c           S   s   t  d d ƒ S(   NR/   g      ø?(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   §   RM   c           S   s   t  d d ƒ S(   NR/   g      à¿(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   ¨   RM   (   R   R   R   R-   R    R)   R   R   R*   R   R   R,   RQ   (   t   pR7   R8   R:   R1   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_bernoulli–   s    ) KC&.:c          C   s€   t  d d ƒ }  t j } t |  ƒ t i | d d 6| d d 6| d d 6d | d d 6d | d d 6| d 6ƒ k s| t ‚ d  S(   NR3   i   i   i   i   i   i   (   R   R   RB   R$   R   R-   (   R3   t   o(    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_cdfª   s    	c             sž  t  d ƒ t  d ƒ ‰  ‰ t d ƒ \ }  } t t ˆ  ˆ ƒ ƒ t j k sO t ‚ t t ˆ  ˆ ƒ ƒ i t j	 d |  |  f 6t j	 d |  | f 6t j	 d | |  f 6t j	 d | | f 6k sÀ t ‚ t
 t ˆ  ƒ j ƒ  ƒ i t j |  6t j | 6k sø t ‚ t  d t j	 d ƒ } t t | |  ƒ ƒ t d ƒ d k s9t ‚ t ˆ  ƒ j } | j ƒ  t t ˆ  j |  ƒ t ˆ  j | ƒ ƒ k st ‚ t t ‡  ‡ f d †  ƒ d  S(	   Nt   CR3   s   H, Ti   t   Fi
   i   c              s   t  ˆ  ˆ k ƒ S(   N(   R   (    (   R\   R3   (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   Á   RM   (   R   R   R   R   R   R>   R-   R    R	   RB   R5   R6   R#   RC   RD   R
   RE   R,   RQ   (   t   Ht   TR]   RG   (    (   R\   R3   s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt
   test_coins²   s    $=48+9c           C   s$   t  t d „  ƒ t  t d „  ƒ d  S(   Nc           S   s   t  d d d ƒ S(   NR8   gš™™™™™É?g      à?(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   Ä   RM   c           S   s   t  d d d ƒ S(   NR8   i   g      ø?(   R   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   Å   RM   (   R,   RQ   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_binomial_verify_parametersÃ   s    c          C   sn  t  d ƒ }  d t d ƒ d t j t d ƒ d d g } x/|  D]'} x| D]} t d | | ƒ } t | ƒ | | k s€ t ‚ t | ƒ | | d | k s¤ t ‚ | d k rd | k  oÇ d k  n rt | ƒ d d | t | | d | ƒ k st ‚ n  xZ t  | d ƒ D]H } t	 t
 | | ƒ ƒ t | | ƒ | | d | | | k st ‚ qWqL Wq? Wd  S(   Ni   i    i   i   i   R1   i   (   R   R   R>   R   R   R-   R   R   R   R   R   R   (   t   nvalst   pvalst   nRX   R1   RU   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_binomial_numericÇ   s    ,$(9c          C   s"  d }  t  d d t ƒ} t d |  | ƒ } t d ƒ } t t | ƒ ƒ |  | k ol t t | d ƒ ƒ k n sw t ‚ t t | ƒ ƒ |  | d | k oµ t t	 | d ƒ ƒ k n sÀ t ‚ t
 t | ƒ d d | t |  | d | ƒ ƒ d k s t ‚ t | ƒ | ƒ | d t d t | ƒ d | | d t t | ƒ | d d k s`t ‚ t | ƒ | ƒ | d t d | ƒ d | | d t | ƒ | d d k s¸t ‚ t  d ƒ \ } } t d	 |  | d
 | d | ƒ} t t | ƒ |  | | | d | ƒ d k st ‚ d  S(   Ni   RX   t   positiveR1   R:   i   i    s   H TR2   t   succt   fail(   R   RA   R   R   R   R   R&   R-   R   R'   R   R   R   R)   R   R   R*   (   Rd   RX   R1   R:   R^   R_   R2   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_binomial_symbolicÖ   s    AI@`Xc       
   C   s¼  xµt  d d ƒ D]¤}  x›t  d |  d ƒ D]†} x}t  d |  d ƒ D]h} t d |  | | ƒ } t t |  | | f ƒ \ }  } } t t | ƒ j ƒ  ƒ d k s¤ t ‚ t | ƒ | | |  k sÄ t ‚ |  d k rt	 | ƒ | | |  |  | |  |  | |  d k st ‚ n  |  d k rD d | k  o2|  k  n rD | |  k  rD t
 | ƒ t |  d | t |  d ƒ |  d | t | | |  | |  | ƒ |  d ƒ k s¬t ‚ qD qD Wq* Wq Wd  S(   Ni   i   i    R1   i   (   R   R   t   mapR   t   sumR    t   valuesR-   R   R   R   R   R   (   t   Nt   mRd   R1   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_hypergeometric_numericè   s    !$ ?4c          C   s   t  d ƒ }  t d ƒ } t |  ƒ d k s0 t ‚ t |  ƒ d k sH t ‚ t |  ƒ d t j k sg t ‚ t |  ƒ d t j k s† t ‚ t |  ƒ | ƒ t	 t
 | ƒ d t	 t
 | ƒ d k sÅ t ‚ t |  ƒ | ƒ t	 | ƒ d t	 | ƒ d k sü t ‚ d  S(   NR1   R:   i    i   iÿÿÿÿi   (   R   R   R   R-   R   R    R   R>   R)   R   R   R*   (   R1   R:   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_rademacherø   s    ?c          C   s5  t  d i t j d 6t j d d 6t j d d 6ƒ }  t t |  ƒ j ƒ  ƒ i t j t d ƒ 6t j d t d ƒ 6t j d t d ƒ 6k s‘ t ‚ t |  d k ƒ t j k s² t ‚ t	 |  ƒ j
 j ƒ  t g  d d d g D] } t |  j | ƒ ^ q× Œ  k st ‚ t t d „  ƒ t t d „  ƒ t t d „  ƒ d  S(	   NR]   i   i   i   i   c           S   s+   t  d i t j d 6t j d 6t j d 6ƒ S(   NR]   i   i   i   (   R"   R   R>   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL     RM   c           S   s2   t  d i t j d 6t d ƒ d d 6t j d 6ƒ S(   NR]   i   iÿÿÿÿi   i   (   R"   R   R>   RB   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL     RM   c           S   se   t  d i t j d 6t d ƒ d d 6t j d 6t d ƒ d d 6t d ƒ d d 6t d ƒ d d	 6ƒ S(
   NR]   i   i   i   iÿÿÿÿi   iýÿÿÿi   i   (   R"   R   RB   R?   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL     RM   (   R"   R   R>   RB   R5   R    R6   R-   R   R#   RC   RD   R
   R   RE   R,   RQ   (   R]   RH   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_FiniteRV  s    5\!:c          C   sÎ   d d l  m }  t d |  ƒ } t | ƒ } | d ƒ d |  k sG t ‚ | t j ƒ d |  k sf t ‚ | d ƒ d k s~ t ‚ d | k s t ‚ d | k s¢ t ‚ | t d ƒ ƒ | t d ƒ k sÊ t ‚ d  S(   Niÿÿÿÿ(   RX   R;   i    i   i   (   t	   sympy.abcRX   R   R    R-   R   R?   (   RX   R;   RG   (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_density_call  s    c              sR  d d l  m ‰ t d ƒ ‰  ˆ  j t d ƒ d ƒ t j k sD t ‚ ˆ  j ˆ ƒ j i d ˆ 6ƒ j ƒ  t d ƒ d k s t ‚ ˆ  j ˆ ƒ j i d ˆ 6ƒ j ƒ  d k s° t ‚ ˆ  j ˆ ƒ j i d ˆ 6ƒ j ƒ  d k sá t ‚ ˆ  j ˆ ƒ j i t d ƒ d ˆ 6ƒ j ƒ  d k st ‚ t	 t
 ‡  ‡ f d	 †  ƒ t	 t ‡  ‡ f d
 †  ƒ d  S(   Niÿÿÿÿ(   R;   i   i   i   i   i    i   c              s)   ˆ  j  ˆ ƒ j i t d d g ƒ ˆ 6ƒ S(   Ni    (   t   pdft   subsR   (    (   R1   R;   (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   &  RM   c              s   ˆ  j  ˆ d d ƒ S(   Ni   i   (   Rt   (    (   R1   R;   (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyRL   '  RM   (   Rr   R;   R+   Rt   R   R?   R-   Ru   t   doitR,   t	   TypeErrorRQ   (    (    (   R1   R;   s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_DieDistribution  s    (;11;c          C   s:   t  d d ƒ }  t |  ƒ } | j t d ƒ k s6 t ‚ d  S(   NR1   i   (   R   R#   R    R+   R-   (   R1   t   space(    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   test_FinitePSpace)  s    N(H   t   sympyR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   R   t   sympy.core.compatibilityR   t   sympy.matricesR   t   sympy.statsR   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   t   sympy.stats.frv_typesR+   t   sympy.utilities.pytestR,   t   Infinityt   ooR0   R<   RI   RJ   RS   RT   RW   RY   R[   R`   Ra   Re   Ri   Ro   Rp   Rq   Rs   Rx   Rz   (    (    (    s?   lib/python2.7/site-packages/sympy/stats/tests/test_finite_rv.pyt   <module>   s2   pš				2				
											