
    gO                     D   d dl mZ d dlmZmZ d dlmZ d dl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 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- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d ZUd ZVd ZWd ZXd ZYd ZZd Z[d  Z\d! Z]d" Z^d# Z_d$ Z`d% Zad& Zbd' Zcd( Zdd) Zed* Zfd+ Zgd, Zhd- Zid. Zjd/ Zkd0S )1    )Sum)DictTuple)Function)IRationalnan)Eq)S)DummySymbolsymbols)sympify)binomial)harmonic)exp)sqrt)	Piecewise)cos)beta)AndOr)cancel)	FiniteSet)simplify)Matrix)DiscreteUniformDie	BernoulliCoinBinomialBetaBinomialHypergeometric
RademacherIdealSolitonRobustSolitonPEvariance
covarianceskewnessdensitywhereFiniteRVpspacecdfcorrelationmomentcmomentsmomentcharacteristic_functionmoment_generating_functionquantilekurtosismedian
coskewness)DieDistributionBinomialDistributionHypergeometricDistribution)Density)raisesc                    t          | |          t          t          | |                    t          |          z  k    sJ t          | |          t          ||           t          |           z  t          |          z  k    sJ d S N)r'   r   )ABs     \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/stats/tests/test_finite_rv.py	BayesTestrE       sp    Q77aAq		llQqTT)))))Q77a1gg!nqtt+++++++    c                  F   t          d          \  } t          dg          }t          |          z   z   dz  k    sJ t          t	          |          dz  dz  z   dz  z   dz  dz  dz  z   dz  z   dz  z
  z
            dk    sJ t          t          |                    t          t          |                    cxk    r5t          t          |                    cxk    rt          d          k    sn J t          dt          dd	                    }t          |          t          d
          k    sJ t	          |          t          d          k    sJ t          |          t          dd          k    sJ t          dd	          D ]}t          t          ||                    t          d          k    sJ t          ||k              t          |dz             dz  k    sJ t          ||k              t          d	|z
            dz  k    sJ t          t          t          dd                                                              t          t          t          dt          dd                                                                        k    sJ  t          |          |           t!          t"          z  | z            dz  t!          t"          z  | z            dz  z   t!          t"          z  | z            dz  z   k    sJ  t%          |          |           t!          | z            dz  t!          | z            dz  z   t!          | z            dz  z   k    sJ t'          t(          fd           d S )Nza b c tX      r   z1/3Y   z-1/2z33/4z1/10   
   DU      c            	      0    t          d   g          S )NZ)r   )abcs   rD   <lambda>z&test_discreteuniform.<locals>.<lambda>A   s    sQ1aA4FGG rF   )r   r   r(   r   r)   r'   r
   r   ranger9   r   dictr,   r   itemsr5   r   r   r6   r?   
ValueError)trH   rK   xrW   rX   rY   s       @@@rD   test_discreteuniformra   %   s   ##JAq!QaAY''AQ44AEAIq=    HQKK1q!tad*A-1qsQqS10DDF G GJKL L L LR1XX;;!Bq!HH++@@@@2a88@@@@%@@@@@@U2q\\**A Q441V99A;;!F))####!99	"a((((((2q\\ ( (Aq{{aii''''ayyAa!eHHRK''''ayyAa!eHHRK'''''C$$**,,--U1a[[99::@@BBCCD D D D &"1%%a((C!AJJqL3qs1u::a<,G#aPQcRSe**UV,,VVVVV(%a((++s1Q3xxzC!HHQJ/FQqSRS/SSSSS
:GGGGGGHHHHHrF   c                     t          dd          t          dd          t          dd          c} }t          d          \  }}}}t                    dt          j        z   k    sJ t                    t          dd          k    sJ t          | z             d	k    sJ t          z             d	k    sJ t          |z  |z             |t                    z  |z   k    sJ t          | z             t                    t          |           z   cxk    rt          | z   d
          k    sn J t          z             dt                    z  cxk    rt          z   d
          k    sn J t          d          dk    sJ t          dz  d          dt          d          z  k    sJ t          |           t          j	        u sJ t          | z             t                    k    sJ t          t          t          t          j        z            d                    d         t          j        k    sJ t          |           dk    sJ t          |           t          |           k    sJ t          | z   d          t!          | z             k    sJ t          | z   d          t#          | z             k    sJ t          d          dk    sJ t%          dk              t          j        k    sJ t%          d
z  dk              t          j        k    sJ t%          | k              t          dd          k    sJ t%          t          |                     t%          t          d                    k    sJ t          dk              dcxk    rt'          dddk              k    sn J t          | dk              t                    cxk    rt'          dd| dk              k    sn J t          | z   t          |                     t          d
z            k    sJ t'          d          dk    sJ t'          dz  d
          dt'          d
          z  k    sJ  t)                    |          t+          t,          |dk    |dk     z  ft          j        |t          dd          k    ft          d
          |t          dd          k    ft          d          |t          j        k    ft          d          |t          d
d          k    ft          d          |t          dd          k    ft          d          |dk    f          k    sJ t%          dk    dk              t          j        u sJ t%          | k    t          | d                    t          j	        u sJ t%          t          | z   d                    t          dd          k    sJ t%          t          | z   d          t          d                    t          dd          k    sJ t          | z             t          | |z             cxk    rt          z             k    sn J t          d
z  | |z  z             }|t          d                   t          dd          k    r8|t          d                   t          dd          k    rt          d          |vsJ t1                    j                                        t7          fddD              k    sJ t9          dk              j        t=          ddd          k    sJ  t?                    |          tA          dtB          z  |z            dz  tA          dtB          z  |z            dz  z   tA          dtB          z  |z            dz  z   tA          dtB          z  |z            dz  z   tA          d
tB          z  |z            dz  z   tA          tB          |z            dz  z   k    sJ  tE                    |          tA          d|z            dz  tA          d|z            dz  z   tA          d|z            dz  z   tA          d|z            dz  z   tA          d
|z            dz  z   tA          |          dz  z   k    sJ tG                    t=          dd          k    sJ t          dd	          }tG          |          t=          d          k    sJ tI          dk    | z   dk                tI          t          | z
  |          || k               tI          dk    d
k               tK          tL          d            tK          tL          d            tK          tL          d            t          dd          \  }}	t          d|          }t          |          j'        }
|
tQ          tS          |                    k    sJ t;          |
*                    |d          +                                ,                                          h d k    sJ t;          |
*                    |d          +                                -                                          t          dd          hk    sJ t]          d!d"          }	t          |          /                    ta          t+          |	|z  |	|k    fd#          |	d|f                    sJ t          |          *                    |d          +                                t          dd          k    sJ t]          d$          } tc          |          |	          }|/                    ta          t+          d|z  |dk    ||k    z  fd#          |d|	f                    sJ |*                    |d|	d
i          +                                t          dd          k    sJ t]          d%          } t?          |          |          }|/                    ta          t+          tA          |tB          z  |z            |z  |dk    ||k    z  fd#          |d|f                    sJ |*                    |d          +                                tA          dtB          z  |z            dz  tA          d
tB          z  |z            dz  z   tA          tB          |z            dz  z   k    sJ  tE          |          |          }|/                    ta          t+          tA          ||z            |z  |dk    ||k    z  fd#          |d|f                    sJ |*                    |d          +                                tA          d|z            dz  tA          d
|z            dz  z   tA          |          dz  z   k    sJ d S )&NrH   rO   rK   rV   za b t prI   #      rT   rJ      r   rS   @   TrM      $      l   i     i:  c                 :    g | ]}t          j        |          S  r
   symbol.0irH   s     rD   
<listcomp>ztest_dice.<locals>.<listcomp>q   s#    	6	6	6a"QXq//	6	6	6rF   rS   rJ   rI   re   rM   rO   rQ   c                  "    t          dd          S )NrH   rN   r   rm   rF   rD   rZ   ztest_dice.<locals>.<lambda>   s    s3|| rF   c                  "    t          dd          S )NrH   r   rv   rm   rF   rD   rZ   ztest_dice.<locals>.<lambda>   s    s3{{ rF   c                  "    t          dd          S )NrH         ?rv   rm   rF   rD   rZ   ztest_dice.<locals>.<lambda>   s    s3}} rF   zn, kpositive>   rS   rJ   rI   re   kintegerr   Tkir_   )2r   r   r(   r   Halfr)   r   r3   r*   Zeror,   r
   r   Pir1   r4   r+   r8   r'   r2   r7   r   r	   Oner/   domain
as_booleanr   r-   setr   r5   r   r   r6   r9   rE   r?   r^   r\   r>   r;   subsdoitkeysvaluesr   dummy_eqr   r0   )rK   rV   rW   rX   r_   pdrQ   nr|   densr   cumufcfmgfrH   s                  @rD   	test_dicer   C   sX   #qkk3sA;;CGAq!##JAq!QQ441qv:A;;(2r******QU88q====QU88q====QqS1W::1Q44!####AE??hqkkHQKK7LLLL71q5!;L;LLLLLLLAE??a(1++oBBBBQ1B1BBBBBBB1a==A1Q3??bA.....aqv%%%%aQ8A;;....2c!AD&kk1%%&&t,6666q!!!!!q!Aq 1 111111q5!Q////1q5!Q////1a==AQU88qvQqS1W::QU88x2&&&&R1XX;;!Bq!HH++%%%%QA;;!5555vaAq1u55555555QA;;!A$$8888&Aq!a%"8"8888888QUBq!HH1Q3''''!Q<<1!A#q>>Rq!_,,,,8A;;q>>Ya!eA->'?	
Xa^^#$qttQ(1a..-@&AAaDD!qv+CV	
1qHQNN"#addA!Q,?%@1Q44a.R R R R R R QUAE??ae####QUBq!HH''''RAr]]x2....RAr]]Bq!HH%%!Q77771q5>>WQU^^====wq1u~~======!ad
AQrUU8x3''''AaggJ(1c:J:J,J,JqQUww^_O_O_O_O_!99&&((B	6	6	6	6#5	6	6	6-8 8 8 8 8 Q<<yAq111111%"1%%a((C!AJJqL3qs1u::a<,G#aPQcRSe**UV,,VY\]^_`]`ab]bYcYcdeYe,ehklmnolopqlqhrhrstht,twz{|}~{~ww  AB  xB  -B  B  B  B  B(%a((++s1Q3xxzC!HHQJ/FQqSRS/SVYZ[\]Z]V^V^_`V`/`cfghijgjckcklmcm/mpstupvpvwxpx/xxxxx!99	!Q''''CA!99	!$$$$a!eQUQYbQllAE"""a!eQU :++,,,
:**+++
:,,--- 6D)))DAqCA1::?D7?1--......tyyA##%%**,,--====tyyA##%%,,..//HQNN3CCCCCc4   AQ44==IqsAFmY//!Q;;= = = = =A;;Aq!!&&((HR,<,<<<<<	tBCFF1IIE>>	1Q3qR1W-.	::RAJGGI I I I I::q!Ql##((**hq!nn<<<<c

A	#	 	#	#A	&	&B;;	3r!tAv;;q=27rQw"78)DDr1ajQQS S S S S771a==3qs1u::a<#ac!e**Q,#>QqS!#KKKKK
'
$Q
'
'
*
*C<<	3r!t99Q;qR1W 56	BBRAJOOQ Q Q Q Q88Aq>>  C!HHQJQqS!$;c!ffQh$FFFFFFFrF   c                     t          dd          } t          | | dk              t          d          t          j        ik    sJ t	          | dk    | dk                                              t          | j        d          k    sJ d S )NrH   rO   rM   rJ   )r   r,   r   r   r-   r   r
   ro   rH   s    rD   
test_givenr      sy    CA1a!e1qu----QA))++r!(A>>>>>>rF   c                     t          dd          t          dd          cj        j        }} t          k              }|j        | |k    k    sJ t          t	          k    dk                        }|                                t          t	          t          | d          t          |d                    t	          t          | d          t          |d                    t	          t          | d          t          |d                              k    sJ t          |j	                  dk    sJ t          t          z             j        j	                  dk    sJ t          dd          t          t          fd           t          z             j        j        t          d	d
dddd          d
z  k    sJ t          dk              j        t          ddd          k    sJ j
        j        j        t          fdt#          d	d          D              k    sJ t          k              j        t          fdt#          d	d          D              k    sJ d S )Nr`   rO   yrI   rM   re   rh   c                  *    t           k              S rA   r'   )rH   rV   s   rD   rZ   ztest_domains.<locals>.<lambda>       qQxx rF   rS   rJ   c                 <    g | ]}t          j        |i          S rm   )r   ro   rp   s     rD   rs   z test_domains.<locals>.<listcomp>   s'    	3	3	3!$!}

	3	3	3rF   rT   c           	      |    g | ]8}t          d d          D ]%}||k    t          j        |j        |i          &9S )rS   rT   )r[   r   ro   )rq   rr   jrH   rK   s      rD   rs   z test_domains.<locals>.<listcomp>   s\     ,@ ,@ ,@%1++,@ ,@%&Q -1!(Aqx1K,L,L9>rF   )r   ro   r-   	conditionr   r   r   r
   lenelementsr/   r   r?   r^   r   r   r\   r[   )r`   r   r   rH   rK   rV   s      @@@rD   test_domainsr      s   sA;;CDAq8QXqAa!eA;1q5!!!!c!a%Q  A<<>>RBq!HHbAhh 7 7R1XX
1a: :r!QxxAq**, , , , , ,qz??ava!e}}#,--3333CA
:'''''(((!a%==#yAq!Q'B'BA'EEEEEQ<<yAq1111118?9	3	3	3	3uQ{{	3	3	3$5 5 5 5 5 Q<<	 ,@ ,@ ,@ ,@ ,@1a[[,@ ,@ ,@ !A A A A A A ArF   c                     t          d          \  } }}}t          d| ||          }t          |          || z  ||  dz   z  z   k    sJ t          |          |         | k    sJ t          |          |         d| z
  k    sJ  t	          |          |          | t          t          |z  |z            z  |  dz   t          t          |z  |z            z  z   k    sJ  t          |          |          | t          ||z            z  |  dz   t          ||z            z  z   k    sJ t          d| dd          }t          d          }t          |          | k    sJ t          t          |                    | d| z
  z  k    sJ t          ||z  |z             |t          |          z  |z   k    sJ t          t          ||z  |z                       t          |dz  t          |          z            k    sJ  t          |          |          t          t          |dk    |dk     z  fd|d| z
  k    fd|dk    f          k    sJ t          dt          dd                    }t          |          t!          dd          k    sJ t          dt          dd	                    }t          |          t!          d          k    sJ t#          t$          d
            t#          t$          d            |j                            d          dk    sJ t          dd          } t+          dd|           }t+          ddd| z            }t+          ddd	| z            }t-          ||z   ||z   ||z             	                                dk    sJ t-          |d|z  z   |z   |d|z  z   |z   |d|z  z   |z             	                                t/          d          t          dd          z  k    sJ t-          |d|z  z   |z   |d|z  z   |z   |d|z  z   |z   |dk               	                                t/          d           t          dd          z  k    sJ d S )Nzp a b trC   rS   r   zrJ   rK   rV   rI   c                  "    t          dd          S )NrC   ry   r   rm   rF   rD   rZ   z test_bernoulli.<locals>.<lambda>   s    yc22 rF   c                  "    t          dd          S )NrC   g      r   rm   rF   rD   rZ   z test_bernoulli.<locals>.<lambda>   s    yd33 rF   rM   rH   rT   	   i  rd   iA  iqENi
  l   ) )r   r   r(   r,   r5   r   r   r6   r   r   r)   r7   r   r	   r   r9   r   r?   r^   r/   compute_expectationr!   r:   r   )r   rW   rX   r_   rH   r   rK   rV   s           rD   test_bernoullir      sq   ##JAq!Q#q!QAQ441Q3QBF#####1::a=A1::a=AE!!!!%"1%%a((AAEAI,>1"q&CPQTUPUXYPYNNAZ,ZZZZZ(%a((++q3q1u::~!a3qSTu::@U/UUUUU#q!QAsAQ4419999HQKK  Aq1uI----QqS1W::1Q44!####HQqS1W%%&&(1a4(1++3E*F*FFFFF8A;;q>>Ya!eA->'?!Q!a%ZSTVW[\V\R]^^^^^^#x1~~&&A!99	!Q''''#x1~~&&A!99	!$$$$
:22333
:33444 8''**a////AAaAa1Aa1Aa!eQUAE**3355::::a!A#gk1qs7Q;AaC!<<EEGGT

8B#6#667 7 7 7a!A#gk1qs7Q;AaC!QUCCLLNN OO+HT:,F,FFG G G G G GrF   c            
          t          dd          } t          j        }t          |           t	          |dz  |dz  |dz  d|z  dz  d|z  dz  |d          k    sJ d S )NrQ   rO   rI   rJ   rM   rt   )r   r   r   r0   r   )rQ   os     rD   test_cdfr      s    CA	A	 !A#!A#!A#!A#a%AaCEaHHIIJ J J J J JrF   c                     t          d          t          d          ct          d          \  } }t          t                              t          j        k    sJ t          t                              | | ft          dd          | |ft          dd          || ft          dd          ||ft          dd          ik    sJ t          t                    
                                          | t          j        |t          j        ik    sJ t          dt          dd                    }t          t          ||                     t          dd          k    sJ t                    j        }|                                t          t          j        |           t          j        |                    k    sJ t!          t"          fd           d S )	NCrQ   zH, TrS   re   FrP   c                  *    t           k              S rA   r   )r   rQ   s   rD   rZ   ztest_coins.<locals>.<lambda>   r   rF   )r    r   r'   r
   r   r   r,   r   r   r\   r]   r/   r   r   r   ro   r?   r^   )HTr   r   r   rQ   s       @@rD   
test_coinsr      s   99d3iiDAq6??DAqR1XX;;!&    5A;;QFHQNNQFHQPQNNFHQNNQFHQNN$< < < < <

  ""##161af'=====S(1b//""AR1XX;;(1b//))))q		A<<>>R18QAHaAAAAAA
:'''''(((((rF   c                  ^    t          t          d            t          t          d            d S )Nc                  $    t          ddd          S )NrX   皙?g      ?r!   rm   rF   rD   rZ   z1test_binomial_verify_parameters.<locals>.<lambda>   s    xR44 rF   c                  $    t          ddd          S )NrX   rI   ry   r   rm   rF   rD   rZ   z1test_binomial_verify_parameters.<locals>.<lambda>  s    xQ44 rF   )r?   r^   rm   rF   rD   test_binomial_verify_parametersr      s0    
:44555
:4455555rF   c            	         t          d          } dt          dd          t          j        t          dd          dg}| D ]#}|D ]}t	          d||          }t          |          ||z  k    sJ t          |          ||z  d|z
  z  k    sJ |dk    rtd|cxk     rdk     rgn ndt          |          dd|z  z
  t          ||z  d|z
  z            z  k    sJ t          |          ddd|z  d|z
  z  z
  ||z  d|z
  z  z  z   k    sJ t          |dz             D ]E}t          t          ||                    t          ||          ||z  z  d|z
  ||z
  z  z  k    sJ F%d S )	NrM   r   rS   re   rI   rH   rJ   rO   )r[   r   r   r   r!   r(   r)   r+   r   r8   r'   r
   r   )nvalspvalsr   r   rH   r|   s         rD   test_binomial_numericr     s   !HHEAA:E 	K 	K 	K 	KAa##AQ441Q3;;;;A;;!A#q1u+----1uuQ{{q1Q3wQqS!a%[0A0A&AAAAA{{a1qsAE{?QqS!a%[*I&IIIII1q5\\ K KAq{{hq!nnQT&91q5AE:J&JJJJJJK	K	K 	KrF   c                  p   t          ddt          j                  }  t          |           d          t          d          k    sJ t	          |           t          d          k    sJ t          ddt          j                  } t          dd	          } t          |           |          t          t          |t          j	        k    ft          j
        |t          d
d          k    ft          j	        |t          dd          k    ft          d          |t          j        k    ft          d          |t          dd          k    ft          d          |t          dd          k    ft          d          |t          j	        k    f          k    sJ t	          |           t          dd          k    sJ d S )NrH   2   gffffff?   rg   rM   r   Trz   rS       rI      rJ      re   )r!   r   r   r7   r9   r   r   r   r	   r   r   r   )rH   r   s     rD   test_binomial_quantiler     ss   b!&!!A8A;;t"%%%%!99	"%%%%a  AsT"""A8A;;q>>YQY'7!&!xPQSUBV9W	
Xa__$%!a16k':QqTT1QSUWHXHXCX<Y	
1qHR$$$%!a15j'9; ; ; ; ; ; !99	!Q''''''rF   c                  J	   d} t          dd          }t          d| |          }t          d          }t          t	          |                    | |z  cxk    r!t          t          |d                    k    sn J t          t          |                    | |z  d|z
  z  cxk    r!t          t          |d                    k    sn J t          t          |          dd|z  z
  t          | |z  d|z
  z            z  z
            dk    sJ t          t          |          d	dd
|z  d|z
  z  z
  | |z  d|z
  z  z  z   z
            dk    sJ  t          |          |          |dz  t          dt          z  |z            z  d|z  | dz   z  t          t          |z            z  z   | dz   dz  z   k    sJ  t          |          |          |dz  t          d|z            z  d|z  | dz   z  t          |          z  z   | dz   dz  z   k    sJ t          d          \  }}t          d| |||          }t          t	          |          | ||z  |d|z
  z  z   z  z
            dk    sJ t          d          } t          d| |          t!          t"          fd           t%                    j        t)          t+          | |dd                    k    sJ t-          t%                    j                            | d                                                                                    t4          j        t4          j        t5          d          t5          d	          t5          d          hk    sJ t-          t%                    j                            | d                                                                                    d|z
  dz  d|z  d|z
  d	z  z  d
|dz  z  d|z
  dz  z  d|d	z  z  d|z
  z  |dz  hk    sJ t=          dd          }t	          dk                                  tA          tC          |||z  z  d|z
  | | z   z  z  tE          | |          z  |dk    || k    z  |dk    z  fd          |d| f                    sJ d S )NrJ   r   Trz   rH   r_   rS   r   rI   rO   zH TrK   )succfailr   rC   c                  *    t           dk              S )NrJ   r   )rC   s   rD   rZ   z(test_binomial_symbolic.<locals>.<lambda>4  s    !a% rF   re   r|   r}   r   )#r   r!   r   r   r(   r2   r)   r3   r   r+   r   r8   r5   r   r   r6   r?   NotImplementedErrorr,   r\   r>   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   rH   r_   r   r   rK   r|   rC   s	           @rD   test_binomial_symbolicr     s   	Ad###AaAsAAaDD>>QqS::::HVAq\\$:$:::::::HQKK  AaCQKJJJJ8GAqMM3J3JJJJJJJ(1++QqS$qsAE{*;*; ;;<<AAAA8A;;1AaCQK!A#q1u+'F#FGHHAMMMM%"1%%a((AFSQ^^,Ca!ePQrTUvFVY\]^ab]bYcYcFc,chigilmgmrsfs,sssss(%a((++qAvAE

/BQUqbSTfEUX[\]X^X^E^/^cdbdghbhmnan/nnnnn 5>>DAqa+++AAaDDAqsQAY/011Q6666 	AaA
 0 0 0 01111::?g&:1aA&F&FGGGGGGwqzz##Aq))..00557788VQUAaDD!A$$!%& & & &wqzz##Aq))..007799::!eaZ1a!eaZ1a4Q
!2AadFAENAqDIJ J J Jc4   AQU88IqAvq1uQ//A>a6A!eA (* *,-q!9	6 	67 7 7 7 7 7 7rF   c            	      ^   t          t          d            t          t          d            t          t          d            t          dddd          sJ t          dd          } t	          dd          t
          j        t	          d	d          dd
g}t	          dd          t
          j        t	          d	d          dd
g}| D ]d}|D ]_}|D ]Z}t          d|||          }t          |          t          |d          k    sJ t          |          t          |d          k    sJ [`et          d          \  }}}t          d|||          sJ d}t          dd          \  }}t          d|||          }t          d          }t          |                                          t          |d                                          k    sJ t          |                                          t          |d                                          k    sJ t          |          t          |d	          k    sJ  t!          |          |          t#          dt$          z  |z            t'          |dz   |          z  t'          ||          z  dt#          t$          |z            z  t'          |dz   |dz             z  t'          ||          z  z   t'          ||dz             t'          ||          z  z   k    sJ  t)          |          |          t#          d|z            t'          |dz   |          z  t'          ||          z  dt#          |          z  t'          |dz   |dz             z  t'          ||          z  z   t'          ||dz             t'          ||          z  z   k    sJ d S )Nc                  &    t          dddd          S )NrX   r   rS   rJ   r"   rm   rF   rD   rZ   z$test_beta_binomial.<locals>.<lambda>A  s    |CQ:: rF   c                  &    t          dddd          S )NrX   rJ   rN   r   rm   rF   rD   rZ   z$test_beta_binomial.<locals>.<lambda>B  s    |CB:: rF   c                  &    t          dddd          S )NrX   rJ   rS   r   rm   rF   rD   rZ   z$test_beta_binomial.<locals>.<lambda>C  s    |CAr:: rF   rX   rJ   rS   rM   re   rI   rP   rH   za b nr`   za bTrz   r_   )r?   r^   r"   r[   r   r   r   r(   r2   r)   r3   r   r   expandr+   r4   r5   r   r   r   r6   )r   	alphavalsbetavalsr   rW   rX   rH   r_   s           rD   test_beta_binomialr   ?  s   
:::;;;
:::;;;
:::;;;Q1%%%%% !AJJE!Q!QB?IAA2>H 4 4 	4 	4A 4 4 aA..ttva||++++{{gamm333334	4 gGAq!Q1%%%%%	A54(((DAqS!Q""AsAQ44;;==F1aLL//111111A;;71a==#7#7#9#99999A;;'!Q--''''%"1%%a((C!AJJtAE1~~,Ed1ajj,P	
3qs88DQA&&	&tAqzz	1-248AENN41::4M-N N N N N(%a((++s1Q3xxQUA/FtAqzz/Q	
3q66$q1ua!e$$	$T!QZZ	/0026q!a%..a2K0L L L L L L LrF   c                      t          dd          D ]k} t          d| dz             D ]S}t          d| dz             D ];}t          d| ||          }t          t          | ||f          \  } }}t	          t          |                                                    dk    sJ t          |          ||z  | z  k    sJ | dk    r0t          |          ||| z  z  | |z
  z  | z  | |z
  z  | dz
  z  k    sJ | dk    rd|cxk     r| k     rrn || k     rit          |          t          | d|z  z
  t          | dz
            z  | d|z  z
  z  t          ||z  | |z
  z  | |z
  z            | dz
  z  z            k    sJ =Umd S )NrS   rM   r   rH   rJ   )r[   r#   mapr   sumr,   r   r(   r)   r+   r   r   )Nmr   rH   s       rD   test_hypergeometric_numericr   b  s   1a[[ ? ?q!a% 	? 	?A1a!e__ 
? 
?"31a00g1ay111a71::,,..//14444ttq1uqy((((q55#A;;!QqS'1q5/!*;QU*CQU*KKKKKq55QYYYYQYYYYY1q55#A;;(A!GT!a%[[3H!aPQc'3R!QUQU 344a!e<4> +? +? ? ? ? ?
?	?? ?rF   c                  8   t          d          \  } }}t          d| ||          }t          |          j        }t	          |dk              }|t          t          | ||                    k    sJ |                    | d                                          t          t          d||                    k    sJ t          |                    | d|d|di                                          
                                          t          j        t          j        hk    sJ t          |                    | d|d|di                                                                                    t          dd          t          dd          hk    sJ t!          dd	          }|                    t%          t'          |t)          ||          z  t)          | |z
  | |z             z  t)          | |          z  |dk    fd
          |d|f                    sJ d S )NzN, m, nr   rJ   rM   rI   rS   r|   Tr}   r   r   )r   r#   r,   r\   r(   r>   r=   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   expecr|   s          rD   test_hypergeometric_symbolicr   q  s   i  GAq!sAq!$$A1::?Da!eHHE75aA>>??????99Q??!!W-G1a-P-P%Q%QQQQQtyy!Q1a+,,113388::;;NNNNtyy!Q1a+,,1133::<<==(1a..RZ[\^_R`R`Aaaaaac4   A>>Iq!Q'QQ(?(??	!QQ !*, ,./AY	8 	89 9 9 9 9 9 9rF   c                  R   t          d          } t          d          }t          |           dk    sJ t          |           dk    sJ t	          |           d         t
          j        k    sJ t	          |           d         t
          j        k    sJ  t          |           |          t          t          |z            dz  t          t           |z            dz  z   k    sJ  t          |           |          t          |          dz  t          |           dz  z   k    sJ d S )NrH   r_   r   rS   rN   rJ   )r$   r   r(   r)   r,   r   r   r5   r   r   r6   )rH   r_   s     rD   test_rademacherr     s   3AsAQ4419999A;;!1::b>QV####1::a=AF""""%"1%%a((C!HHQJaRT1,DDDDD(%a((++s1vvzCGGaK/GGGGGGGrF   c                  b   t          t          d            t          t          d            t          t          d            t          d          t          t          fd           t          ddd          } t          d	dd          }t          d
          }t	          d|           }t          |          j        t          j        k    sJ t          |          j	        | k    sJ t          |          j
        t          t          |                    k    sJ t          |                              |          t          d| z  t          |d          fd||dz
  z  z  | |k    fd          k    sJ g d}|D ]t}t          |                    | |                    t#          |          cxk    r(t%          |                    | |          d          k    sn J t'          |                    | |                    |dz
  t#          |          z   t#          |          dz  z
  cxk    r(t)          |                    | |          d          k    sn J t+          |                    | |                    t-          |                    | |          d          k    sJ t/          |                    | |                    t-          |                    | |          d          k    sJ vt1          t2          |z            dz  t5          t1          t2          |z  |z            ||z  |z
  z  |d| f                              | d                                          z    t9          |                    | d                    |          k    sJ t1          |          dz  t5          t1          ||z            ||z  |z
  z  |d| f                              | d                                          z    t;          |                    | d                    |          k    sJ d S )Nc                  "    t          dd          S )Nsolr%   rm   rF   rD   rZ   z$test_ideal_soliton.<locals>.<lambda>  s    UC 8 8 rF   c                  "    t          dd          S )Nr   gffffff*@r   rm   rF   rD   rZ   z$test_ideal_soliton.<locals>.<lambda>  s    UD 9 9 rF   c                  "    t          dd          S )Nr   r   r   rm   rF   rD   rZ   z$test_ideal_soliton.<locals>.<lambda>  s    UA 6 6 rF   fc                  d    t          t          dd                                                   S )Nr   rP   )r,   r%   pmfr   s   rD   rZ   z$test_ideal_soliton.<locals>.<lambda>  s'    UB(?(? @ @ D DQ G G rF   r|   Tr~   r{   r`   r_   r   rS   r   )rM      r   d   i  rJ   rI   re   rP   )r?   r^   r   r   r%   r,   lowr   r   highr\   r>   r   r   r
   r(   r   r   r2   r)   r3   r+   r4   r8   r   r   r   r   r5   r6   )r|   r`   r_   r   k_valsrr   r   s         @rD   test_ideal_solitonr     s   
:88999
:99:::
:66777A
:GGGGHHHsD4000AsD4000AsA
ua
 
 C3<<qu$$$$3<<!!!!3<< 5 555553<<A)QqS"Q((OaAEmQRSV=TV_"`"`````###F F F!Q  HQKKLLLL6#((1a..!3L3LLLLLLLA''AEXa[[+@8A;;PQ>+QnnnnU\]`]e]efgij]k]klmUnUnnnnnnnA''7388Aq>>1+E+EEEEEA''7388Aq>>1+E+EEEEEEqs88B;S1QZZ1q1Aq!9==BB1bIINNPPPT|Tkloltltuvxzl{l{T|T|}~TTq66"9s3qs88QqS1W-1ay99>>q"EEJJLLLP{PjknkskstuwykzkzP{P{|}P~P~~~~~~~rF   c                    
 t          t          d            t          t          d            t          t          d            t          d          
t          t          
fd           t          ddd          } t          d	d
          }t          dd
          }t	          d| ||          }t          |          j        dk    sJ t          |          j        | k    sJ g d}g d}g d}|D ]e}|D ]^}|D ]W}	t          |	                    | |||||	i                    t          |	                    | |||||	i          d          k    sJ t          |	                    | |||||	i                    t          |	                    | |||||	i          d          k    sJ t          |	                    | |||||	i                    t          |	                    | |||||	i          d          k    sJ t          |	                    | |||||	i                    t          |	                    | |||||	i          d          k    sJ Y`gd S )Nc                  &    t          dddd          S )NrobSolr   皙?g{Gz?r&   rm   rF   rD   rZ   z%test_robust_soliton.<locals>.<lambda>  s    hS$ G G rF   c                  &    t          dddd          S )Nr   r   g=
ףp=?r   r   rm   rF   rD   rZ   z%test_robust_soliton.<locals>.<lambda>  s    hD# F F rF   c                  &    t          dddd          S )Nr      333333?g{Gzr   rm   rF   rD   rZ   z%test_robust_soliton.<locals>.<lambda>  s    hC G G rF   r   c                  h    t          t          dddd                                                   S )Nr   r   r   r   )r,   r&   r   r   s   rD   rZ   z%test_robust_soliton.<locals>.<lambda>  s,    hC(M(M N N R RST U U rF   r|   Tr   deltarz   rY   r   rS   )rP   r   r   )r   g?r   )g{Gz?gQ?g?rJ   rI   re   )r?   r^   r   r   r&   r,   r   r   r(   r   r2   r)   r3   r+   r4   r8   )r|   r   rY   r   r   
delta_valsc_valsr`   r   r   r   s             @rD   test_robust_solitonr    s   
:GGHHH
:FFGGG
:GGHHHA
:UUUUVVVsD4000A7T***EsT"""A8Qq11F6??!####6??1$$$$\\F JF x x 	x 	xA x xaE1a%;<<==UVXY[`bcefhiTjHkHkmnAoAoooooQ5!Q,B C CDDPVP[P[]^`achjkmnpq\rPsPsuvHwHwwwwwQ5!Q,B C CDDPVP[P[]^`achjkmnpq\rPsPsuvHwHwwwwwQ5!Q,B C CDDPVP[P[]^`achjkmnpq\rPsPsuvHwHwwwwww	x	xx xrF   c                     t          dt          j        t          dd          t          dd          dd          t	          dd          } t          t                                                              t          j        t          j        t          d	          t          dd          t          d
          t          dd          ik    sJ t          d	k              t          j        k    sJ  t                    |           t          t          | t          j        k    ft          j        | t          j        k    ft          d	          | t          d
d          k    ft          d
          df          k    sJ t                    j                                        t!          fddD              k    sJ j        j        j        t%          dd	d
          k    sJ t'          t(          d            t'          t(          d            t'          t(          d            t          ddd	d          }t+          |          dk    sJ t          |d	k              t          |d	k              z   dk    sJ d S )Nr   rS   re   rS   rJ   rI   Tcheckr   rz   rJ   rI   c                 :    g | ]}t          j        |          S rm   rn   )rq   rr   r   s     rD   rs   z!test_FiniteRV.<locals>.<listcomp>  s#    	-	-	-a"QXq//	-	-	-rF   c                  j    t          dt          j        t          j        t          j        dd          S )Nr   r  Tr  )r.   r   r   rm   rF   rD   rZ   ztest_FiniteRV.<locals>.<lambda>  s&    xAFqv-N-NVZ[[[ rF   c                  r    t          dt          j        t          dd          t          j        dd          S )Nr   rN   rJ   r  Tr  )r.   r   r   r   r   rm   rF   rD   rZ   ztest_FiniteRV.<locals>.<lambda>  s.    xHROOPQPU-V-V^bccc rF   c                      t          dt          j        t          dd          t          j        t          dd          t          dd          t          dd          dd	          S )
Nr   rI   rJ   rN   re   rt   Tr  )r.   r   r   r   r   rm   rF   rD   rZ   ztest_FiniteRV.<locals>.<lambda>  sZ    x8Aq>>afB??xA8B??.D .DKO Q  Q  Q rF   rH   )rS   rJ   rM   )r.   r   r   r   r   r\   r,   r]   r   r'   r7   r   r	   r/   r   r   r   r   r   r?   r^   r(   )r   rH   r   s     @rD   test_FiniteRVr    sJ   !&Xa^^AGGtTTTAsT"""A

  ""##qvqttXa^^QqTTS[\]_`SaSa'bbbbbQ!V998A;;q>>YQY'7!%af9M	
1qHQNN"#QqTT4L2 2 2 2 2 2 !99&&((B	-	-	-	-9	-	-	--/ / / / / 8?)Aq!"4"44444
:[[\\\
:ccddd
: Q Q R R R
 	!ll##AQ4419999Q!V99qQxx1$$$$$$rF   c                  D   ddl m}  t          d|           }t          |          } |d          d| z
  k    sJ  |t          j                  d| z
  k    sJ  |d          dk    sJ d|v sJ d|vsJ  |t          j                  |t          j                 k    sJ d S )Nr   )r   r`   rS   rM   )	sympy.abcr   r   r,   r   r   )r   r`   r   s      rD   test_density_callr    s    #qA

A1Q441q5====1QV99A1Q44199996666A::::1QV99!&	!!!!!!rF   c                  8    ddl m t          d                                t          j                  t          j        u sJ                                                    di                                          t          dd          k    sJ                                                    di                                          dk    sJ                                                    di                                          dk    sJ                                                    t          dd          i                                          dk    sJ t          t           fd           t          t           fd	           d S )
Nr   )r`   rO   rS   rT   rN   rI   c                  L                          t          ddg                    S )Nr   )r   r   r   s   rD   rZ   z&test_DieDistribution.<locals>.<lambda>  s    quuVQF^^44 rF   c                  :                          dz  dz
            S )NrJ   rS   )r   rH   r`   s   rD   rZ   z&test_DieDistribution.<locals>.<lambda>  s    quuQTAX rF   )r  r`   r;   r   r   r   r   r   r   r   r?   r^   r  s   @@rD   test_DieDistributionr    sl   A55==AF""""5588==!Q  %%''8Aq>>99995588==!Q  %%''1,,,,5588==!R!!&&((A----5588==!Xa^^,--22449999
:4444555
:...../////rF   c                  x    t          dd          } t          |           }|j        t          d          k    sJ d S )NrH   rO   )r   r/   r,   r;   )rH   spaces     rD   test_FinitePSpacer    s;    CA1IIE=OA........rF   c            	         t          dt          dd                    } t          dd          }t          d          \  }}t	          t          | |                    }t          ||k              }|t          t          dd          t          |d          fd          t          t          dd          t          |d          fd          z   k    sJ |t          t          dd          |dk     fd          t          t          j	        |d	k     fd          z   t          t          dd          |dk     fd          z   t          t          j
        |dk     fd          z   k    sJ d S )
NrC   rS   re   rQ   zb, nr   rI   r   rJ   )r   r   r   r   r'   r
   r(   r   r   r   r   )rC   rQ   rX   r   rK   rV   s         rD   test_symbolic_conditionsr    sW   #x1~~&&ACA6??DAq	"Q((A	!a%Ax1~~r!Qxx()44x1~~r!Qxx()4455 5 5 5 x1~~q1u%y11Iqvq1uoy4Y4YYx1~~q1u%y1124=qua!eni4X4XYY Y Y Y Y YrF   N)lsympy.concrete.summationsr   sympy.core.containersr   r   sympy.core.functionr   sympy.core.numbersr   r   r	   sympy.core.relationalr
   sympy.core.singletonr   sympy.core.symbolr   r   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr   %sympy.functions.combinatorial.numbersr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   &sympy.functions.special.beta_functionsr   sympy.logic.boolalgr   r   sympy.polys.polytoolsr   sympy.sets.setsr   sympy.simplify.simplifyr   sympy.matricesr   sympy.statsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   sympy.stats.frv_typesr;   r<   r=   sympy.stats.rvr>   sympy.testing.pytestr?   rE   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  rm   rF   rD   <module>r1     s   ) ) ) ) ) ) / / / / / / / / ( ( ( ( ( ( 1 1 1 1 1 1 1 1 1 1 $ $ $ $ $ $ " " " " " " 6 6 6 6 6 6 6 6 6 6 & & & & & & = = = = = = : : : : : : 6 6 6 6 6 6 9 9 9 9 9 9 : : : : : : 8 8 8 8 8 8 7 7 7 7 7 7 ) ) ) ) ) ) ) ) ( ( ( ( ( ( % % % % % % , , , , , , ! ! ! ! ! !^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
          " " " " " " ' ' ' ' ' ', , ,
I I I<[G [G [Gz? ? ?A A A4$G $G $GLJ J J) ) )"6 6 6K K K
( 
( 
(7 7 7@!L !L !LF? ? ?9 9 9	H 	H 	H  4x x x2% % %0
" 
" 
"	0 	0 	0/ / /
Y Y Y Y YrF   