o
    à8Va4  ã                   @   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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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z> d d	l?m@Z@ d d
lAmBZB d dlCmDZDmEZE d dlFmGZG dd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdS )é    )"ÚSÚsymbolsÚ	FiniteSetÚEqÚMatrixÚMatrixSymbolÚFloatÚAndÚImmutableMatrixÚNeÚLtÚLeÚGtÚGeÚexpÚNotÚRationalÚLambdaÚerfÚ	PiecewiseÚ	factorialÚIntervalÚooÚContainsÚsqrtÚpiÚceilingÚgammaÚ
lowergammaÚSumÚRangeÚTupleÚImmutableDenseMatrixÚSymbol)ÚDiscreteMarkovChainÚPÚTransitionMatrixOfÚEÚStochasticStateSpaceOfÚvarianceÚContinuousMarkovChainÚBernoulliProcessÚPoissonProcessÚWienerProcessÚGammaProcessÚsample_stochastic_process)ÚJointDistribution)ÚJointDistributionHandmade)ÚRandomIndexedSymbol)ÚProbabilityÚExpectation)ÚraisesÚskipÚignore_warnings)Úimport_module)ÚBernoulliDistribution)ÚPoissonDistribution)ÚNormalDistributionÚGammaDistribution)ÚStrc            4         s  t dtjtsJ jtjksJ tjtsJ t	ddddt t
s,J td td ks:J ttdd  ttfdd ttfd	d ttfd
d ttfdd tddd} td| | }t| }t d||}tt|d dt|d d|d ksJ ttfdd ttfdd t	ddd\}}}}dtd|t gtdt|tdddtddd|||gg}dd |D }	t|	D ]u\}
tjtsáJ j||
 ksójt||
  ksóJ jd ksúJ tt+ ttd dtd ddd!ttd dtd dks"J W d    n	1 s-w   Y  td td ksAJ ttfd"d qÕttd#d  t dtddjtd d ksiJ t dtg gd$t dtddgddggd$t dttdt g|d| ggd$g}	|	D ]}|j|jj d ks¡J t|jt!sªJ qtg d%¢g d&¢g d'¢g td(d d }t dg d)¢ t dg d*¢| "dd d ¡t#d d d  ksçJ ttfd+d ttd  dtd d $d¡t%d,dks
J ttd  dtd d|d- |d.  |d/ |d0   |d0 |d1     &¡ dks8J ttd dtd dttd dksSJ ttd  d td d|d- |d.  |d/ |d0   |d0 |d1   ks}J tg d2¢g d3¢g d4¢g}ttd  dtd dt'|@  $d ¡t%d5d ks©J tt0 td  dd!td  ks¿J td  td d $d¡t%d6d ksÖJ W d    n	1 sáw   Y  td(d7d7ttfd8d ttd9d  ttd:d  ttfd;d ttfd<d tt(dd7t(d d7dgt(dd t(dd t(dd gdt(dd7t(d d7gg}tt)td dtd dtd dtttd dt(dd7t'|@ t(dd=ksmJ tt)td dtd dtd dt'|ttd dd7 ksJ tt*d dt+d d@ td dt,g d)¢@ t'|@ t(dd7ksÀJ tt*d dt+d d@ td dt,g d>¢@ t'|@ t(dd7ksêJ tt-d dt-d d@ td dt,g d)¢@ t'|@ tj.u sJ tt-d dt-d d@ td dt,g d>¢@ t'|@ tj.u s:J tt)td dtd dtd dtd dd?ttd d kseJ ttj/ddgt(dd t(dd t(dd gdt(dd7t(d d7gg}tt(dd7t(d d7dgt(dd t(dd t(dd gdt(dd7t(d d7gg}t d|d$}t d|d$}| 0¡ t1g d@¢g dA¢g dB¢gdC ksÌJ | 2¡ dksÕJ | 2¡ dksÞJ | 3¡ g d)¢|fksëJ | 3¡ g d)¢|fksøJ | 4¡ g d)¢|ddddf |dd ddf |dd dd f fksJ | 4¡ g d)¢|tdd g tddg fks6J tt(ddt(ddt(ddgt(ddDtj5t(ddgt(d dt(d dDt(ddDgg}t d|d$}t1t(dEdFt(d=dFt(d7dGgg}|j6|ks~J | 7¡ dksJ | 8¡ dksJ td(d d }t d|d$}| 6||¡ 9¡ dks©J |j:ddH ;||¡ <|¡ 9¡ tj=ksŸJ ttj/ddddgtj5dtj5ddgdtj5dtj5dgddtj5dtj5gg dI¢g}t d|d$}| 0¡ t1t(d dtj/tj5gtj/tdtj/gtj5tj/t(d dggksJ | >¡ t1t(d d7t(dd7gtj5tj5gt(dd7t(d d7ggks1J tt(ddt(dd7t(dd7gt(dddt(ddgt(dd7t(dd7t(ddgg}t d|d$}| 2¡ dkshJ | 0¡ t!t(dJdKt(ddLt(dMdKgt(ddLt(dNdLt(ddLgt(dMdKt(ddLt(dJdKggksJ t dtg gd$jdks«J  :¡ tg gks·J  ?¡ g ksÀJ  3¡ g tg gfksÎJ  4¡ g tg gtg gtg gfksäJ  7¡ dksíJ  8¡ dksöJ tg dO¢g dP¢g dQ¢g dR¢g dS¢gdD }t d|d$}| ?¡ }t@tA| \}}}|dd gddgd7gfks-J |dTks4J |dUks;J tg dV¢g dW¢g dX¢g dY¢g dZ¢g d[¢gdD } t d| d$}!|! ?¡ }t@tA| \}}}|dd gg d\¢fkssJ |d]kszJ |d1ksJ tg d^¢g d_¢g d`¢g da¢g db¢g dc¢g dd¢g de¢g df¢g dg¢g
dD }"t d|"d$}#|# ?¡ }t@tA| \}}}|g dh¢dgg di¢dgd7gfksËJ |djksÒJ |dkksÙJ tg dl¢tdd dtdd ddgdtdd dtdd dgddtdd dtdd gddddtdgg t dmg dn¢ }$|$ 4¡ \}%}&}'}(|%g do¢ks+J |&tddgddggks:J |'ttdd dgddgdtdd ggksTJ |(tdtdd dgtdd dtdd gdtdd dggksyJ |$ 3¡ \}%})|%g do¢ksJ |)tg dl¢g dp¢tdd ddtdd dgddtdd dtdd gdtdd dtdd dggksÁJ tg dq¢g dr¢g ds¢g dt¢g du¢gd7  t d d$ 7¡ rãJ  8¡ sêJ tddgddgg t d d$ 7¡ 	rJ  8¡ 	sJ tg dU¢g dv¢g dw¢gd7  t d d$ 7¡ 	s$J  8¡ 	s+J tddgddggd  t d d$ 7¡ 	sDJ  8¡ 	sKJ tg dx¢g dy¢g dz¢g t d d$ 2¡ 	reJ tg d{¢g d|¢g d}¢g d~¢gd  t d d$ 2¡ 	sJ tg d¢g d¢g d¢g d¢g d¢gd  t d d$ 2¡ 	sŠJ t dg d¢|}*|* ?¡ }t@tA| \}}}|dgdd gfk	sÇJ |d]k	sÎJ |d/k	sÕJ |* 3¡ g d¢|fk	sâJ |* 4¡ g d¢|ddddf |dd ddf |dd dd f fk
s	J ttj5t(dd7t(dd7gt(dd dt(dd gtj5tj5dgg t dg d)¢ ttd dtd d@ td  d@ tttd dt(dd7tttd dt(dd7@ t(ddk
slJ ttd dtd dB td dt(dd k
sJ ttd dtd d@ td dtj.u 
sŠJ tt-d dtd dt(dd k
sœJ td d td dt(dd k
sÓJ tBd td dt(ddk
sçJ ttfdd tt fdd t dg d¢ ttd dtd d@ td  d@ tttd dt(dd7tttd dt(dd7@ t(ddks=J ttd dtd dB td dt(dd ks[J ttd dtd d@ td dtj.u swJ tt-d dtd dt(dd ksJ jjCd }+jjCd },td d td d|+d d  d|,d  d     &¡ dksœJ tBd td dd|+ d  |,d   d  d  d|+ d  d|, d   d d     &¡ dksïJ ttfdd tt(ddDt(d dDt(ddDgt(ddDt(ddDt(ddDgt(d dDt(d dDt(d7dDgg t dg d)¢ ttd d td d $d¡t%ddksGJ tt+d  d td d $d¡t%d,dkscJ ttDd dD td7 d $d¡t%ddksJ t%ttdD d td7 ddt%dtt-dD d td7 d dks¬J t%tt+d d td  ddt%dttDd d td  d dksÙJ t%tt*d d7 td ddt%dttEd d7 td d dksJ ttd dD td dttdD d td dks+J tt+d d td dtt*d d td dksPJ ttEd d td7 dttDd d td7 dksuJ t	d\}+}-},}.tt(ddDt(d7dDt(ddDgt(d dDt(d7dDt(d dDgt(ddDt(ddDt(ddDgg t dg d)¢ tt|+ |-t|, |.}/|/ ;|+dD|-d|,d|.di¡ F¡  $d7¡ttdD dtd d $d7¡ksæJ |/ ;|+d|-d|,dD|.di¡ F¡  $d7¡ttd dtdD d $d7¡ksJ tt+|+ |-t|, |.}0ttD|+ |-t|, |.}1|0 ;|+d|-d|,d|.di¡ F¡ |1 ;|+d|-d|,d|.di¡ F¡  dksNJ ttE|+ |-t|, |.}2tt*|+ |-t|, |.}3|2 ;|+d7|-d|,d|.di¡ F¡ |3 ;|+d7|-d|,d|.di¡ F¡  dksJ dd  d d    &¡ dd  ksŠJ dd  d d    &¡ d  ksŒJ ddd    &¡ dd  ksÏJ dd  dd    &¡ dd d  ksèJ d d d d    &¡ d d d d  ksJ d S )NÚXÚtT©ÚpositiveÚintegerr   c                   S   ó   t dS )Né   ©r$   © rF   rF   úK/usr/lib/python3/dist-packages/sympy/stats/tests/test_stochastic_process.pyÚ<lambda>   ó    z*test_DiscreteMarkovChain.<locals>.<lambda>c                      ó    S ©NrF   rF   ©r>   r?   rF   rG   rH       rI   c                      ó      ¡ S rK   )Úcommunication_classesrF   ©r>   rF   rG   rH   !   rI   c                      rM   rK   )Úcanonical_formrF   rO   rF   rG   rH   "   rI   c                      rM   rK   )Ú	decomposerF   rO   rF   rG   rH   #   rI   Ún)rB   ÚMÚYé   rD   )r   rD   c                      s   t  S rK   )r/   rF   )r?   rF   rG   rH   +   rI   c                      ó   t t S rK   ©Únextr/   rF   rO   rF   rG   rH   ,   ó    za Rainy Cloudy Sunny)Úreal)rD   rU   é   ZHelloZWorldF)Zsympifyéÿÿÿÿé   c                 S   s   g | ]}t d |qS ©rT   rE   )Ú.0Ústate_spacerF   rF   rG   Ú
<listcomp>4   s    z,test_DiscreteMarkovChain.<locals>.<listcomp>r[   ©Zevaluatec                      rV   rK   rW   rF   r^   rF   rG   rH   ?   rY   c                   S   s   t dtdS )NrT   ©rD   rD   )r$   ÚdictrF   rF   rF   rG   rH   A   s    )Ztrans_probs©ç      à?çÉ?ç333333Ó?©rg   rf   rh   ©rg   rh   rf   ÚT©r   rD   rU   )ÚOneZTwor[   c                      s       d j d j¡S ©NrD   rU   )Újoint_distributionÚsymbolrF   r^   rF   rG   rH   S   ó    ç
×£p=
×?)r   rU   )rD   r   rc   )rD   rU   )rU   rU   )ç      Ð?ç      è?r   )r   rs   rt   )rt   r   rs   g      Ø?çñ?é   c                      s,   t ttd dtd dt @ S )Nr[   rU   rD   )Ústrr%   r   r&   rF   )ÚTSOÚYSrF   rG   rH   _   s   , c                   S   s   t dg d¢tdS )NÚZrl   rS   )r$   r   rF   rF   rF   rG   rH   `   s    c                   S   s   t dg d¢tdddS )Nrz   rl   rk   r[   rv   )r$   r   rF   rF   rF   rG   rH   a   rq   c                      ó   t  d t d dS )Nr[   rU   é   ©r'   r   rF   r^   rF   rG   rH   b   rq   c                      r{   )NrU   r[   rD   r}   rF   r^   rF   rG   rH   c   rq   é   )NÚNonerD   g¹?)é°   éQ   i|ÿÿÿ)é$   é   iÌÿÿÿ)iÔÿÿÿiÙÿÿÿéÐ   é}   é
   é   é'   é   )Zcondition_set)r   r   r   r   rD   éV   éK   é   iòÿÿÿé   )r   r]   r]   r   r   )r   r   r   r   r   )r]   r   r]   r   r   )r   r   r   r   r   )r   r[   r   r[   rv   )TFF)rU   rD   rD   )r   r   r   r   r   r   )r]   r   r]   r   r   r   )r   rv   r   r   r   r|   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r]   r]   r   )rD   rU   r]   rv   )TF)
rU   r   r   r[   r   r   r[   rU   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   rU   rU   r   r   r   r   r   r[   r[   )
r   r   r   r[   r   r   r|   rD   r   r   )
r   r   r   r   r]   r]   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
rv   r   r   r]   r   r   rD   r   r   r   )
rU   r   r   rv   r   r   rU   rU   r   r   )
r[   r   rD   r   r   r   r   r   rv   rU   )
r   r   rv   r   r   r   r   r   r[   r[   )r   r[   r|   é   )rU   é   é	   )TTFTF)rD   rD   rD   rD   rD   )rD   r   r   r   r   ÚDW)r   rD   rU   r[   rv   )r   rv   rD   rU   r[   )r   rD   r   r   r   )r   rv   r   r   r   )rD   r   r[   r   r   )r   rU   r   rU   r   )r   r   r[   r   rD   )r   r   r   rv   r   )rU   r   rU   )rD   rD   rU   )r   rD   r   )rD   r   r   )r   r   rD   )rD   rD   r   r   )r   rD   rD   r   )rD   r   r   rD   )r   r   r   rU   )rU   r   r   r   r   )rD   r   rD   r   r   )r   rD   r   rD   r   )r   r   rD   r   rD   )r   r   r   r   rU   é   r   r   c                      ó   t  d t d dS rn   r}   rF   rO   rF   rG   rH   *  rq   c                      s   t dddg S )Nr>   r   rD   rE   rF   )rk   rF   rG   rH   +  ó    )ÚAÚBÚCc                      r   rn   r}   rF   rO   rF   rG   rH   8  rq   r   gaoÜ?r|   g·4Fëšâ?é   úa b c dé   rs   rf   )Gr$   Ú
isinstancer`   r    Ú	index_setr   Ú	Naturals0Útransition_probabilitiesr   r   r2   r'   r4   r5   Ú	TypeErrorÚNotImplementedErrorr#   r%   r   Ú
ValueErrorr=   r!   r   Ú	enumerater   Znumber_of_statesr7   ÚUserWarningr3   r   r   r   Úshaper"   ro   r0   Úroundr   Úsimplifyr&   r   r	   r   r   r(   r   ÚZerorm   Zfundamental_matrixr
   Zis_absorbing_chainrP   rQ   ÚHalfÚlimiting_distributionZ
is_regularZ
is_ergodicÚdoitZstationary_distributionÚsubsÚcontainsÚtrueZabsorbing_probabilitiesrN   ÚlistÚzipr)   Úargsr   r   Úevalf)4ZnzZTZZSZZYZZsymZrainyZcloudyZsunnyZstate_spacesZchainsÚirz   ZTSZTOZTO1ZTO2ZTO3ZY2ZY3ZTO4ZY4ÚwÚTS1ZY5ZTO6ZY6ZTO7ZY7ZtuplesZclassesZ
recurrenceZperiodsZTO8ZY8ZTO9ZY9r   Zstatesr   r   r   Z
new_matrixZY10ÚaÚcÚbÚdÚqueryÚquery_gtÚquery_leÚquery_geÚquery_ltrF   )rk   rx   r>   rT   ry   r?   rG   Útest_DiscreteMarkovChain   s   * þ$
Hÿ"þ04.ÿ
ÿ6T>
"0þJ*&ÿ
ÿ4
ÿ(ÿÿ
ÿ(ÿÿ
ÿ(ÿÿ
ÿ(ÿÿ
ÿV@J,N.R"*LJDP"þ,üüûû÷	÷
&ü4J
üüüþþþýýüüNþ*:ÿ
ÿ<8.,(*:ÿ
ÿ<8.FdV888ZZZJJJVNNFF.,&2>rŸ   c                  C   sh  t dstd dd l} |  d¡ t d}|r|j d¡ tg d¢g d¢g d¢g}tdg d	¢|}td
D ]}tt||j	v sCJ q6tdg d¢|}td
D ]}tt||j	v s]J qPtt
jtddtddgtdddtddgt
jt
jdgg}tdg d	¢|}td
D ]}tt||j	v sJ qtddttg|}td
D ]}tt||j	v s±J q€d S )NZscipyz(SciPy Not installed. Skip sampling testsr   Únumpyre   ri   rj   rT   rl   r   rz   )Ú1rD   r   rD   rv   r[   rU   r>   ÚW)r8   r6   ÚrandomZseedr   r$   ÚrangerX   r/   r`   r   rš   r   r   r   )rÂ   r¿   rk   rT   Zsampsrz   r>   rÁ   rF   rF   rG   Útest_sample_stochastic_process\  s2   
þÿrÄ   c                     s
  t tdtdtjgtjtjtjgtddtddtdgg} tdg d¢| }| ¡ ttddtddtd	dggks?J t tj tjtjgtjtj tjgtjtjtj gg}tdg d¢|  j	t
d
dd}}  |¡|t tjtd| d  tjtd| d  dgtjtd| d  tjtd| d  dgtjt|  td| d  tjtd| d  t| ggksÄJ tt* tt ddt ddddtt ddt ddksëJ W d    n1 sõw   Y  tt ddt ddtdd tj ksJ tt ddt dd@ t dd@ ttt ddtjtdd	tdd	  tdd tj  ksOJ ttt ddt dd@ t dd@ t ddt dd@ t dd@ B ttt ddtdd	ttt ddtdd	@ tju s J t tddt ddtd d dttdd  tj ksÅJ t tddt ddtjtdd  d tdd tj  tddtdd  d tjtdd    ksJ tt fdd tt ddttt ddtjtt ddks+J tddd}tdg d¢|}|j	}| |¡|t|| ksLJ tdtdtdtdg|}tt|ddt|ddtdd tj ksvJ tt|dtdt|dtdtdd tj ksJ t td tddtddgtddtd tddgtddtddtd gg}tdg d¢|d}	tt|	d|	dt|	dd d¡tddksåJ tt|	d |	d!t|	d"d d¡td#dksJ tt|	d$|	d%t|	d	d d&¡td'd&ksJ ttt|	d(|	d)t|	d*dd+tdtt|	d(|	d)t|	d*d d+ksJJ ttt|	d,|	d-t|	d.dd+tdtt|	d,|	d-t|	d.d d+kswJ ttt|	d/|	d0t|	d1dd+tdtt |	d/|	d0t|	d1d d+ks€J tt|	d2|	d3t|	d4dtt|	d3|	d2t|	d4dksÉJ tt|	d5|	d6t|	d7dtt|	d6|	d5t|	d7dksîJ tt |	d8|	d9t|	d:dtt|	d9|	d8t|	d:dksJ t
d;\}
}}}tt|	|
|t|	||}| !|
d<|d|d=|di¡ "¡  d¡tt|	d<dt|	d=d d¡ksQJ tt|	|
|t|	||}tt|	|
|t|	||}| !|
d>|d|d?|di¡ "¡ | !|
d>|d|d?|di¡ "¡  dksJ tt |	|
|t|	||}tt|	|
|t|	||}| !|
d@|d|dA|di¡ "¡ | !|
d@|d|dA|di¡ "¡  dksÓJ d|	d d|	d   #¡ d|	d ksêJ d|	d d|	d   #¡ |	d ks J ddB|	d   #¡ dC|	d ksJ d|	d dB |	d  #¡ dC|	dd  ks,J |	dd |	dd   #¡ |	dd |	dd  ksIJ d S )DNéþÿÿÿrU   r[   éýÿÿÿr   rl   é   r   rv   r?   T©rA   r   rD   Frb   r\   c                      s*   t t ddtt t ddtjS )NrD   r   )r%   r   r   rš   rF   ©ZC2rF   rG   rH     s   * z,test_ContinuousMarkovChain.<locals>.<lambda>r]   ÚGÚ0rÀ   Ú2r   r   )r`   Zgen_matg
×£p=@gëQž	@g/Ý$ë?g¥÷¯=³Ö?gö(\Â­X@g;ßOÎ3@gTã¥Ä &@gw¹ïÄÔ?g@gÓMbX9$@r|   g€ùcZå?gHáz®G@gHáz®G@g
×£p=
@r   gáz®Gá
@gV-²ñ?gé?g@gRžëQ@gÃõ(\Âù?gF¶óýÔø@gmçû©ñÒ%@g1¬Zd@gnÀ@gÍÌÌÌÌÌ#@goÀÊ¡ñ?g{®Gáz@gTã¥Ä ð?g/Ý$Ã?r   g333333@g{®Gázü?gffffff*@gRžëQ
@gžëQž@g333333÷?rs   rf   )$r   r   r§   ZNegativeOnerm   r   r*   r©   r
   Zgenerator_matrixr   r   rš   r   r7   r£   r%   r   r3   r   r'   r)   r5   ÚKeyErrorr   r#   r¥   r   r   r   r   r   r   r«   r±   rŠ   )ZT1ZC1ZT2r   r?   rŽ   ZCS1ZC3rÊ   r   rµ   r·   r¶   rž   r¹   rº   r»   rŒ   rœ   rF   rÉ   rG   Útest_ContinuousMarkovChainw  s   þ.8:,<þ
Fÿ6*ÿ&
ÿ.(ÿ:þ
þJB*ÿB 6>V888ZZZJJJNFF.,&2>rÎ   c                     s$  t ddddd  jtddksJ  jtjksJ  jdks!J  jdks(J t dtdddd	d} | jtdd	ks=J t	d
\}}t
| d | d | d   |d d d| | d  |d  d|d  d  d| d  kssJ t	dddd\}t  tsJ ttdd  tt fdd tt fdd    d  d ¡tt d  d ftdt d dfdt d dfdtdt d dfdt d dfd ksÞJ   d d ¡tt d  d ftdt d dfdt d dfdtdt d dfdt d dfd ksJ  d  d   d  }tt|d d¡tddks:J tt|d d¡tddksLJ tt|d d¡dks[J tt|d d¡tddksmJ tt d dt d d@ t d d@ t d d@  d¡tddksJ t
d d   d   d¡tddks­J t
d d   d  d  d¡tddksÆJ t
 d  d   d   d¡tddksßJ t
 d dkt d dt d d@  d¡tddksÿJ t
 d dks
J t d dk d¡tddksJ t d dk  d¡tddks0J t d dk d dk d¡tddksHJ t d  d  dk d¡td dks_J t d  d  dk d dk  d¡td dks{J tt d d d dkdksJ tt d ddksJ tt d d d dk dks¯J t d dkt d ddksÂJ t d dk t d ddksÕJ t d dk d d!kdksçJ t d dk d tdddksûJ ttd"d  tt fd#d t  ddf}t  ddf}t  d ddf}| ¡  d  d   d   d   d  ksFJ | ¡ |ksOJ | ¡  d d  d d   d d  kshJ  d  j d  hkszJ  d j d hksJ  |  j |  |hksJ d   d     ¡ d   ks±J d   d     ¡    ksÇJ dd$     ¡ d%   ksÚJ d   d$     ¡ d%  d  ksóJ   d   d   ¡   d   d  ksJ d S )&Nr   g333333ã?rD   r   ©ÚpÚsuccessÚfailurer>   r[   ÚHrk   zH,TrU   r   rv   zt, xTr@   c                   S   s   t dddddS )Nr>   ru   rD   r   rÏ   )r+   rF   rF   rF   rG   rH   É  r   z'test_BernoulliProcess.<locals>.<lambda>c                      rJ   rK   rF   rF   ©r   r?   rF   rG   rH   Ê  rI   c                      s    d S )NrÆ   rF   rF   ©r   rF   rG   rH   Ì  rI   gÙ?)r   TgžëQž®?gëQžÛ?gÍÌÌÌÌÌä?gÍÌÌÌÌÌü?r]   g333333@r   gžëQžî?r   rr   r   c                   S   rC   )Nr[   ©r%   rF   rF   rF   rG   rH   ï  rI   c                      s   t  d dkdS )Nr[   r   rÖ   rF   rÕ   rF   rG   rH   ð  s    rs   rf   )r+   r`   r   r   r   r   rÑ   rÒ   r   r   r'   r   r2   r5   r¡   r    Ú
IndexErrorro   r1   r   r   r   r%   r¥   r   r   r9   r   rª   Zfree_symbolsrŠ   )r>   rÓ   rk   ÚxrT   ÚexprZexpr2Zexpr3rF   rÔ   rG   Útest_BernoulliProcess¹  s~   `$&&ÿÿ &&ÿÿ$$$R.22@&&0.8&&&&$(62$&.,&2>rÚ   c            	   
      s*  t dd  jtjksJ  jtdtksJ  jdksJ tddd\} }t	 t
s1J   ¡td ks>J ttdd  tt fd	d tt fd
d    d d¡tt d dfd d d d  td t dt d  ksJ   dd¡tt d dfd d d d  td t dt d  ksºJ t dk td ksÊJ tt dtt dd¡tdksáJ tt dtt dd¡}|dtd ksüJ tt dt d@ t | d@ t |d@ tt dd¡tt dd¡@ t| t dd¡@ t|t dd¡@ |d ksDJ tt dt d@ tt dd¡tt dd¡@ tt dt d@ tt dd¡tt dd¡@ ksJ tt fdd tt dddtd d ksšJ tt dtt dd¡dtd d ksÄJ t dktt dd¡}t dktt dd¡}|dtd ksïJ ||  ¡ dksúJ ttt d dk@ tt dd¡tt dd¡@  ¡ dtd dtd  d ks/J tt dt dB tt dd¡dd td  ksRJ tt fd!d t d ksjJ t d  d   |d  tt dd¡tt dd¡@ t|t dd¡@ d"ksJ t d tt dd¡dks²J t|      d  d   tt dd¡tt dd¡@ t |      d  d   tt dd¡tt dd¡@ ksJ tt fd#d t       tt dd¡tt dd¡@ dks9J t d| t d  d$|  d ksPJ t|  d | d|  | kscJ tt ddt d@ tt dd¡dtd d ksJ t d%d} | j j|j   kr¡dks€J  J tt fd&d  !dd¡\}}|jdksœJ |jdksÅJ ttfd'd tt fd(d tt|d|d}|tt|dttddksøJ t|d|dk}|t|dkttddksJ t|d|dk dks%J t|d|dk}|tt|dttddksDJ t dd) tt tdd dt dd)@ td*t"d+d, ksiJ tt ddt tdd ddksJ tt dd)t tdd dtt tdd dks€J t dd t tdd dk td-ksŒJ t ddk t ddtd.ksÑJ tt ddt ddtd.ksçJ t dd tt ddt dd@ t"ddtd ksJ t ddk ddkdtt dd dtt dd  tt dd ks7J t ddk ddkdtt dd dtt dd  ks]J tt ddt dd@ tt ddtt dd ksJ tt ddt ddtt ddksJ d  d    ¡ d  ksŽJ d  d    ¡   ksÊJ dd/    ¡ d0  ksÝJ d  d/    ¡ d0 d  ksöJ  d  d   ¡  d  d  ksJ d S )1Nr>   r[   r   út d x yTrÈ   c                   S   ó
   t ddS ©Nr>   r\   ©r,   rF   rF   rF   rG   rH     ó   
 z%test_PoissonProcess.<locals>.<lambda>c                      ó     S rK   rF   rF   rL   rF   rG   rH     rI   c                      ó    dS )NéûÿÿÿrF   rF   rO   rF   rG   rH     rI   rU   r|   r   iñÿÿÿrv   r   é   iâÿÿÿrD   rÆ   r]   iúÿÿÿc                	      sB   t t dt d@ tt dd¡tt dt¡@ S )NrU   r[   r   rv   )r%   r   r   r   ÚLopenr   rF   ©r>   rž   r?   rF   rG   rH   '  s    "ÿr   i÷ÿÿÿéá   i³  r   r   iîÿÿÿéê   r   c                      s   t  dk   S )NrU   rÖ   rF   rå   rF   rG   rH   6  s    r   c                      s    t  d tt dt¡S )Nr[   rD   )r'   r   r   rä   r   rF   rL   rF   rG   rH   A  s     r   rT   c                      s    d S )Nr]   rF   rF   rO   rF   rG   rH   L  rI   c                      s      dd¡S )Nr[   rU   )ÚsplitrF   )rz   rF   rG   rH   P  rY   c                      s0   t t dtt dd¡t dd@ S )Nr   rD   r[   )r%   r   r   r   rä   rF   rL   rF   rG   rH   R  s   0 r   éöÿÿÿl    P¬9 iÅJª r\   éüÿÿÿrs   rf   )#r,   r`   r   r   r   r   r   Úlamdar   r   r2   Údistributionr:   r5   r¡   r    r×   ro   r1   r   r   r   r%   r   r   rä   ÚRopenr3   rŠ   r   r   r'   r4   rè   r   )	rØ   ÚyÚresZres1Zres2rT   ÚNrS   Zres3rF   )r>   rz   rž   r?   rG   Útest_PoissonProcess  sÜ   
$6ÿ6ÿ ."Hÿÿþ
þ,ÿ,ÿ
þ(8  .ÿ
ÿF4ÿÿ
ÿ*<ÿ<ÿ
þ0ÿ
ÿ.&F
**(*
@0F
&*,
8^LJ6.,&2>rñ   c               
      s~  t d  jtjksJ  jtdtksJ tddd\} }}t t	s)J   
¡tdtks7J ttdd  tt fdd tt fd	d    d
 d¡tt d
 dftdt d
d
  d  t dd
  d  dt  ksJ   dd¡tt d dftdt dd
  d  t dd
  d  dt  ks·J t dk  ¡ tdtd
 d
t  d
 tdd
  ksÙJ t d
ktt dd¡ ¡ tdd
 ttd
d
 d
  ksýJ t dk | dk@  |d
k@  |dk@ tt dd¡t| t dd
¡@ t|t d
d¡@ t|t dd¡@  ¡ dttd
d
  dttd
  dtdtd
 d
   dtd
td
   d ksiJ t d
k  | dk@ tt dd
¡t| t d
d¡@ t | dk d
k @ t| t d
d¡tt dd
¡@ ksªJ ttt dk  | dk@ tt d
d¡t| t dd¡@  ¡ dksÔJ t dksßJ t|  |    d
  | d
   tt dd¡t| t dd
¡@ t | |     | d
  d
   t| t dd
¡tt dd¡@ ks4J t |t d  dksGJ d
  d    ¡ d  ks^J d
  d    ¡   kstJ d
d    ¡ d  ksJ d
  d    ¡ d d
  ks J  d
  d   ¡  d  d
  ksœJ d S )Nr>   r   rÛ   TrÈ   c                   S   rÜ   rÝ   rÞ   rF   rF   rF   rG   rH     rß   z$test_WienerProcess.<locals>.<lambda>c                      rà   rK   rF   rF   rL   rF   rG   rH     rI   c                      rá   )NrÅ   rF   rF   rO   rF   rG   rH     rI   rU   r[   r|   rv   r   r   é   rD   r   r~   r]   z--(1 - erf(3*sqrt(2)/2))*(2 - erfc(5/2))/4 + 1rs   rf   )!r-   r`   r   ZRealsr   r   r   r   r   r2   rì   r;   r   r5   r¡   r    r×   ro   r1   r   r   r   r%   rŠ   r   r   rä   rí   r3   rw   r   r'   r4   )rž   rØ   rî   rF   rL   rG   Útest_WienerProcessw  sr   L
ÿL
ÿD,
ÿ0"ÿÿÿR
ý(ÿ"ÿ
ÿ.ÿÿ
þ<ÿ,"ÿ
ÿ&.,&2>ró   c               	      sD  t ddd\} }}}}td|| tt fdd tt fdd t ts.J  jtdt	ks8J   
¡t| d	| ksHJ   d
 d¡tt d
 df|d|  t|  d  t|  d
   dd| d	    d
d
| d	   td| td
|   ksJ t | | ks£J t  ¡ | |d  ksµJ t d  | d   |d  tt dd	¡t| t d	d¡@ t|t dd¡@ d| | |d | |d   |d d|d   d|  |d   ksJ t dktt dd¡ ¡ d	t|d| t|  ks*J d  d    ¡ d
  ksAJ d  d    ¡   ksWJ dd    ¡ d  ksjJ d  d    ¡ d d  ksJ  d  d   ¡  d	  d  ks J d S )Nzt d x y g lTrÈ   r>   c                      rà   rK   rF   rF   rL   rF   rG   rH   ­  rI   z,test_GammaProcess_symbolic.<locals>.<lambda>c                      rá   )Nr\   rF   rF   rO   rF   rG   rH   ®  rI   r   rD   r]   r[   r   rU   rv   rs   rf   )r   r.   r5   r    r×   r   r2   r`   r   r   rì   r<   ro   r1   r   r   r   r'   r)   rŠ   r   rä   rí   r%   r   )rž   rØ   rî   ÚgÚlrF   rL   rG   Útest_GammaProcess_symbolic©  s>    \ÿÿÿ$4ÿÿB
þ"
ÿ.,&2>rö   c               	   C   s(  t ddd\} }}}tddd}|jtdtksJ |jtdtks$J |jdks+J |jdks2J tt	dd	  tt	d
d	  tt	dd	  t
|| dk||dk@ ||dk@ ||dk@ t| t dd¡t|t dd¡@ t|t dd¡@ t|t dd¡@  ¡ dtd ksJ t
t|| dk ||dk@ t| t dd¡t|t dd¡@  ¡ dtd dtd d  d ksÃJ t
|| dk|| dk B t| t dd¡ ¡ dtd d dtd d  d ksïJ t|| d|  ksûJ t|d|t|d  d| d ksJ d S )NrÛ   TrÈ   r>   rD   rU   r   c                   S   ó   t dddS )Nr>   r\   rU   ©r.   rF   rF   rF   rG   rH   Ð  rY   z+test_GammaProcess_numeric.<locals>.<lambda>c                   S   r÷   )Nr>   r   rÅ   rø   rF   rF   rF   rG   rH   Ñ  rY   c                   S   r÷   )Nr>   r\   rÅ   rø   rF   rF   rF   rG   rH   Ò  rY   rv   r[   éx   ré   r]   r   r   rê   rÆ   iØ  iøÿÿÿi}ýÿÿr   ém   rÅ   r   )r   r.   r`   r   r   r   rë   r   r5   r¡   r%   r   rä   rŠ   r   r   rí   r'   )r?   rž   rØ   rî   r>   rF   rF   rG   Útest_GammaProcess_numericÈ  sB   4
ÿÿ
ÿÿþ
ý,ÿ"ÿ."ÿ2rû   N)PZsympyr   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   r   r    r!   r"   r#   Zsympy.statsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Zsympy.stats.joint_rvr0   Zsympy.stats.joint_rv_typesr1   Zsympy.stats.rvr2   Z sympy.stats.symbolic_probabilityr3   r4   Zsympy.testing.pytestr5   r6   r7   Zsympy.externalr8   Zsympy.stats.frv_typesr9   Zsympy.stats.drv_typesr:   Zsympy.stats.crv_typesr;   r<   Zsympy.core.symbolr=   rŸ   rÄ   rÎ   rÚ   rñ   ró   rö   rû   rF   rF   rF   rG   Ú<module>   s,    8  IBKs2