
    sg                     $   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZK d dlLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV d dlWmXZXmYZY d d lmZZZ d! Z[d" Z\d# Z]d$ Z^d% Z_d& Z`d' Zad( Zby))*    )Sum)Tuple)Lambda)FloatRationaloopi)EqGeGtLeLtNe)S)Symbolsymbols)	factorial)exp)ceiling)sqrt)	Piecewise)erf)gamma
lowergamma)AndNot)Matrix)MatrixSymbol)ImmutableMatrix)Contains)Range)	FiniteSetInterval)DiscreteMarkovChainPTransitionMatrixOfEStochasticStateSpaceOfvarianceContinuousMarkovChainBernoulliProcessPoissonProcessWienerProcessGammaProcesssample_stochastic_process)JointDistribution)JointDistributionHandmade)RandomIndexedSymbol)ProbabilityExpectation)raisesskipignore_warningswarns_deprecated_sympy)import_module)BernoulliDistribution)PoissonDistribution)NormalDistributionGammaDistribution)Strc                  zE  56789: t        d      7t        7j                  t              sJ 7j                  t
        j                  k(  sJ t        7j                  t              sJ t        ddd      :t        7:   t              sJ t        7d         t        7d         k(  sJ t        t        d        t        t        7:fd       t        t        7fd       t        t        7fd	       t        t        7fd
       t!        dd      } t        d| |       }t        |       }t        d||      }t#        t%        |d   d      t%        |d   d            |d   k(  sJ t        t&        :fd       t        t&        7fd       t        dd      \  }}}}dt)        d      |t        dd      gt+        t        d      t-        |      t)        d      d      t        ddd      |||gg}|D 	cg c]  }	t        d|	       }
}	t/        |
      D ]  \  }8t        8j                  t              sJ 8j                  ||   k(  s8j                  t1        ||    k(  sJ 8j2                  dk(  sJ t5        t6              5  t#        t%        8d   d      t%        8d   d      d      t9        t%        8d   d      t%        8d   d            k(  sJ 	 d d d        t        8d         t        8d         k(  sJ t        t&        8fd        t        t        d         t        dt        d:d            88j2                  t;        :dz
  dz        k(  sJ t        dt=        g g      !      t        dt=        ddgddgg      !      t        dt=        t>        dt>        z
  g|d|z
  gg      !      g}
|
D ]F  }|j2                  |j                  j@                  d   k(  sJ t        |j                  tB              rFJ  t=        g d"g d#g d$g      5t        d%dd      }t        dg d&5      8t        dg d'|      98jE                  d8d   d      tG        8d   8d   8d         k(  sJ t        t&        8fd(       t#        t%        8d   d      t%        8d   d            jI                  d      tK        d)d      k(  sJ t#        t%        9d   d      t%        9d   d            |d*   |d+   z  |d,   |d-   z  z   |d-   |d.   z  z   z
  jM                         dk(  sJ t#        t%        9d   d      t%        9d   d            t9        t%        9d   d            k(  sJ t#        t%        9d   d      t%        9d   d            |d*   |d+   z  |d,   |d-   z  z   |d-   |d.   z  z   k(  sJ t=        g d/g d0g d1g      }t#        t%        8d   d      t%        8d   d      tO        8|      z        jI                  d      tK        d2d      k(  sJ t5        t6              5  t        8d   d      t        8d         k(  sJ t        8d   t%        8d   d            jI                  d      tK        d3d      k(  sJ 	 d d d        t        d%d4d4      6t        t&        69fd5       t        t        d6        t        t&        d7        t        t&        8fd8       t        t&        8fd9       t=        tQ        dd4      tQ        dd4      dgtQ        dd      tQ        dd      tQ        dd      gdtQ        dd4      tQ        dd4      gg      }t#        tS        t%        8d   d      t%        8d   d      t%        8d   d            t%        t9        t%        8d   d            tQ        dd4            tO        8|      z        tQ        dd:      k(  sJ t#        tS        t%        8d   d      t%        8d   d      t%        8d   d            tO        8|            t9        t%        8d   d            d4z  k(  sJ t#        tU        7d   d      tW        7d   d      z  t%        7d   d      tY        7g d&      z  tO        7|      z        tQ        dd4      k(  sJ t#        tU        7d   d      tW        7d   d      z  t%        7d   d      tY        7t        d      d;dg      z  tO        7|      z        tQ        dd4      k(  sJ t#        t[        7d   d      t[        7d   d      z  t%        7d   d      tY        7g d&      z  tO        7|      z        t
        j\                  u sJ t#        t[        7d   d      t[        7d   d      z  t%        7d   d      tY        7t        d      d;dg      z  tO        7|      z        t
        j\                  u sJ t#        tS        t%        8d   d      t%        8d   d      t%        8d   d            t%        8d   d            d<t9        t%        8d   d            z  k(  sJ t=        t
        j^                  ddgtQ        dd      tQ        dd      tQ        dd      gdtQ        dd4      tQ        dd4      gg      }t=        tQ        dd4      tQ        dd4      dgtQ        dd      tQ        dd      tQ        dd      gdtQ        dd4      tQ        dd4      gg      }t        d|!      }t        d|!      }|ja                         tC        g d=g d>g d?g      d@z  k(  sJ |jc                         dk(  sJ |jc                         dk(  sJ |je                         g d&|fk(  sJ |je                         g d&|fk(  sJ |jg                         g d&|ddddf   |ddddf   |ddddf   fk(  sJ |jg                         g d&|t=        ddg       t=        ddg       fk(  sJ t=        tQ        dd      tQ        dd      tQ        dd      gtQ        ddA      t
        jh                  tQ        dd      gtQ        dd      tQ        ddA      tQ        ddA      gg      }t        d|!      }tC        tQ        dBdC      tQ        d:dC      tQ        d4dD      gg      }|jj                  |k(  sJ |jm                         dk(  sJ |jo                         dk(  sJ t        d%dd      }t        d|!      }|jk                  ||      jq                         dk(  sJ |js                  dE      ju                  ||      jw                  |      jq                         t
        jx                  k(  sJ t=        t
        j^                  ddddgt
        jh                  dt
        jh                  ddgdt
        jh                  dt
        jh                  dgddt
        jh                  dt
        jh                  gg dFg      }t        d|!      }|ja                         tC        tQ        dd      t
        j^                  t
        jh                  gt
        j^                  t        d      t
        j^                  gt
        jh                  t
        j^                  tQ        dd      gg      k(  sJ |j{                         tC        tQ        dd4      tQ        dd4      gt
        jh                  t
        jh                  gtQ        dd4      tQ        dd4      gg      k(  sJ t}               5  |j                          d d d        t=        tQ        dd      tQ        dd4      tQ        dd4      gtQ        dd      dtQ        dd      gtQ        dd4      tQ        dd4      tQ        dd      gg      }t        d|!      }|jc                         dk(  sJ |ja                         tC        tQ        dGdH      tQ        ddI      tQ        dJdH      gtQ        ddI      tQ        dKdI      tQ        ddI      gtQ        dJdH      tQ        ddI      tQ        dGdH      gg      k(  sJ t        dt=        g g      !      77j2                  dk(  sJ 7js                         t=        g g      k(  sJ 7j                         g k(  sJ 7je                         g t=        g g      fk(  sJ 7jg                         g t=        g g      t=        g g      t=        g g      fk(  sJ 7jm                         dk(  sJ 7jo                         dk(  sJ t=        g dLg dMg dNg dOg dPg      dAz  }t        d|!      }|j                         }t        t        |       \  }}} |ddgddgd4gfk(  sJ |dQk(  sJ | dRk(  sJ t=        g dSg dTg dUg dVg dWg dXg      dAz  }!t        d|!!      }"|"j                         }t        t        |       \  }}} |ddgg dYfk(  sJ |dZk(  sJ | d.k(  sJ t=        g d[g d\g d]g d^g d_g d`g dag dbg dcg ddg
      dAz  }#t        d|#!      }$|$j                         }t        t        |       \  }}} |g dedgg dfdgd4gfk(  sJ |dgk(  sJ | dhk(  sJ t=        g dit        d      dz  dt        d      dz  ddgdt        d      dz  dt        d      dz  dgddt        d      dz  dt        d      dz  gddddt        d      gg      5t        djg dk5      }%|%jg                         \  }&}'}(})|&g dlk(  sJ |'t=        ddgddgg      k(  sJ |(t=        t        d      dz  dgddgdt        d      dz  gg      k(  sJ |)t=        dt        d      dz  dgt        d      dz  dt        d      dz  gdt        d      dz  dgg      k(  sJ |%je                         \  }&}*|&g dlk(  sJ |*t=        g dig dmt        d      dz  ddt        d      dz  dgddt        d      dz  dt        d      dz  gdt        d      dz  dt        d      dz  dgg      k(  sJ t=        g dng dog dpg dqg drg      d4z  5t        d5!      77jm                         rJ 7jo                         sJ t=        ddgddgg      5t        d5!      77jm                         rJ 7jo                         sJ t=        g dRg dsg dtg      d4z  5t        d5!      77jm                         sJ 7jo                         sJ t=        ddgddgg      dz  5t        d5!      77jm                         sJ 7jo                         sJ t=        g dug dvg dwg      5t        d5!      77jc                         rJ t=        g dxg dyg dzg d{g      dz  5t        d5!      77jc                         sJ t=        g d|g d}g d~g dg dg      dz  5t        d5!      77jc                         sJ t        dg d|      }+|+j                         }t        t        |       \  }}} |dgddgfk(  sJ |dZk(  sJ | d,k(  sJ |+je                         g d|fk(  sJ |+jg                         g d|ddddf   |ddddf   |ddddf   fk(  sJ t=        t
        jh                  tQ        dd4      tQ        dd4      gtQ        dd      dtQ        dd      gt
        jh                  t
        jh                  dgg      5t        dg d&5      7t#        t%        7d   d      t%        7d   d      z  t%        7d   d      z  t%        t#        t%        7d   d            tQ        dd4            t%        t#        t%        7d   d            tQ        dd4            z        tQ        dd      k(  sJ t#        t%        7d   d      t%        7d   d      z  t%        7d   d            tQ        dd      k(  sJ t#        t%        7d   d      t%        7d   d      z  t%        7d   d            t
        j\                  u sJ t#        t[        7d   d      t%        7d   d            tQ        dd      k(  sJ t        7d   dz  t%        7d   d            tQ        dd      k(  sJ t        7d   t%        7d   d            tQ        dd      k(  sJ t        t&        7fd       t        t&        5fd       t        dg d5      7t#        t%        7d   d      t%        7d   d      z  t%        7d   d      z  t%        t#        t%        7d   d            tQ        dd4            t%        t#        t%        7d   d            tQ        dd4            z        tQ        dd      k(  sJ t#        t%        7d   d      t%        7d   d      z  t%        7d   d            tQ        dd      k(  sJ t#        t%        7d   d      t%        7d   d      z  t%        7d   d            t
        j\                  u sJ t#        t[        7d   d      t%        7d   d            tQ        dd      k(  sJ 7j                  j                  d   },7j                  j                  d   }-t        7d   dz  t%        7d   d            |,dz  dz  d|-dz  z  dz  z   z
  jM                         dk(  sJ t        7d   t%        7d   d            d|, dz  |-dz  z   dz  z  dz  d|,z  dz  d|-z  dz  z
  dz  dz  z   z
  jM                         dk(  sJ t        t&        7fd       t=        tQ        ddA      tQ        ddA      tQ        ddA      gtQ        ddA      tQ        ddA      tQ        ddA      gtQ        ddA      tQ        ddA      tQ        d4dA      gg      5t        dg d&5      8t#        t%        8d   8d         t%        8d   d            jI                  d      tK        dd      k(  sJ t#        tW        8d   8d         t%        8d   d            jI                  d      tK        d)d      k(  sJ t#        t        8d   8dA         t%        8d4   d            jI                  d      tK        dd      k(  sJ tK        t#        t%        8dA   8d         t%        8d4   d            d      tK        dt#        t[        8dA   8d         t%        8d4   d            z
  d      k(  sJ tK        t#        tW        8d   8d         t%        8d   d            d      tK        dt#        t        8d   8d         t%        8d   d            z
  d      k(  sJ tK        t#        tU        8d   8d4         t%        8d   d            d      tK        dt#        t        8d   8d4         t%        8d   d            z
  d      k(  sJ t#        t%        8d   8dA         t%        8d   d            t#        t%        8dA   8d         t%        8d   d            k(  sJ t#        tW        8d   8d         t%        8d   d            t#        tU        8d   8d         t%        8d   d            k(  sJ t#        t        8d   8d         t%        8d4   d            t#        t        8d   8d         t%        8d4   d            k(  sJ t        d      \  },}.}-}/t=        tQ        ddA      tQ        d4dA      tQ        ddA      gtQ        ddA      tQ        d4dA      tQ        ddA      gtQ        ddA      tQ        ddA      tQ        ddA      gg      5t        dg d&5      8t#        t%        8|,   |.      t%        8|-   |/            }0|0ju                  |,dA|.d|-d|/di      j                         jI                  d4      t#        t%        8dA   d      t%        8d   d            jI                  d4      k(  sJ |0ju                  |,d|.d|-dA|/di      j                         jI                  d4      t#        t%        8d   d      t%        8dA   d            jI                  d4      k(  sJ t#        tW        8|,   |.      t%        8|-   |/            }1t#        t        8|,   |.      t%        8|-   |/            }2|1ju                  |,d|.d|-d|/di      j                         |2ju                  |,d|.d|-d|/di      j                         z   dk(  sJ t#        t        8|,   |.      t%        8|-   |/            }3t#        tU        8|,   |.      t%        8|-   |/            }4|3ju                  |,d4|.d|-d|/di      j                         |4ju                  |,d4|.d|-d|/di      j                         z   dk(  sJ d8d   z  d8d   z  z   jM                         d8d   z  k(  sJ d8d   z  d8d   z  z
  jM                         8d    k(  sJ dd8d   z  z  jM                         d8d   z  k(  sJ d8d   z  d8d   z  z  jM                         d8d   dz  z  k(  sJ 8d   dz  8d   dz  z   jM                         8d   dz   8d   dz  z  k(  sJ y c c}	w # 1 sw Y   xY w# 1 sw Y   !xY w# 1 sw Y   xY w)NXtTpositiveintegerr   c                      t        d      S )N   r$        \/var/www/html/venv/lib/python3.12/site-packages/sympy/stats/tests/test_stochastic_process.py<lambda>z*test_DiscreteMarkovChain.<locals>.<lambda>1   s    1!4 rI   c                              S NrH   r@   rA   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>2       ! rI   c                  $     j                         S rM   )communication_classesr@   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>3   s    (?(?(A rI   c                  $     j                         S rM   )canonical_formrR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>4   s    (8(8(: rI   c                  $     j                         S rM   )	decomposerR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>5   s     rI   n)rD   MY   rF   )r   rF   c                      t               S rM   )r/   )rA   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>=   s    8; rI   c                  ,    t        t                     S rM   nextr/   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>>   s    t$=a$@A rI   za Rainy Cloudy Sunny)real)rF   rZ      HelloWorldF)sympify   r`   evaluatec                  ,    t        t                     S rM   r]   rY   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>Q   s    4(A!(D#E rI   c                      t        dddi      S )NrY   rF   rG   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>S   s    1#1v> rI   )trans_probs      ?皙?333333?rn   rm   ro   rn   ro   rm   Tr   rF   rZ   )OneTwor`   c                  \     j                   d   j                   d   j                        S NrF   rZ   )joint_distributionsymbolri   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>e   s$    q33AaDKK1M rI   
ףp=
?)r   rZ   )rF   r   )rF   rF   )rF   rZ   )rZ   rZ   )      ?      ?r   )r   r{   r|   )r|   r   r{   g      ?皙?   c            
      |    t        t        t        d   d      t        d   d      t               z              S )Nr`   rZ   rF   )strr%   r
   r&   )TSOYSs   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>q   s6    s1R1q\2beQ<BTUWY\B]3]#^_ rI   c                  2    t        dg dt        d            S )NZrs   rX   )r$   r   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>r   s    1#y'#,O rI   c            	      6    t        dg dt        ddd            S )Nr   rs   rr   r`   r~   )r$   r   rH   rI   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>s   s    23	<PSUVXYCZ[ rI   c                  <    t         d   t         d   d            S )Nr`   rZ      r'   r
   ri   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>t       q1r!A${3 rI   c                  <    t         d   t         d   d            S )NrZ   r`   rF   r   ri   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>u   r   rI      0g?)   Q   i|)$      i)ii   }   
      '      )condition_set)r   r   r   r   rF   V   K      i   )r   re   re   r   r   )r   r   r   r   r   )re   r   re   r   r   )r   r   r   r   r   )r   r`   r   r`   r~   )TFF)rZ   rF   rF   )r   r   r   r   r   r   )re   r   re   r   r   r   )r   r~   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   re   re   r   )rF   rZ   re   r~   )TF)
rZ   r   r   r`   r   r   r`   rZ   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   rZ   rZ   r   r   r   r   r   r`   r`   )
r   r   r   r`   r   r   r   rF   r   r   )
r   r   r   r   re   re   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r~   r   r   re   r   r   rF   r   r   r   )
rZ   r   r   r~   r   r   rZ   rZ   r   r   )
r`   r   rF   r   r   r   r   r   r~   rZ   )
r   r   r~   r   r   r   r   r   r`   r`   )r   r`   r      )rZ      	   )TTFTF)rF   rF   rF   rF   rF   )rF   r   r   r   r   DW)r   rF   rZ   r`   r~   )r   r~   rF   rZ   r`   )r   rF   r   r   r   )r   r~   r   r   r   )rF   r   r`   r   r   )r   rZ   r   rZ   r   )r   r   r`   r   rF   )r   r   r   r~   r   )rZ   r   rZ   )rF   rF   rZ   )r   rF   r   )rF   r   r   )r   r   rF   )rF   rF   r   r   )r   rF   rF   r   )rF   r   r   rF   )r   r   r   rZ   )rZ   r   r   r   r   )rF   r   rF   r   r   )r   rF   r   rF   r   )r   r   rF   r   rF   )r   r   r   r   rZ      r   r   c                  <    t         d   t         d   d            S rw   r   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>>  r   rI   c                  "    t        dddg       S )Nr@   r   rF   rG   )rr   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>?  s    23AB rI   )ABCc                  <    t         d   t         d   d            S rw   r   rR   s   rJ   rK   z*test_DiscreteMarkovChain.<locals>.<lambda>L  r   rI   r   gao?r   g4F?   a b c d         ?r{   rm   )Hr$   
isinstancestate_spacer!   	index_setr   	Naturals0transition_probabilitiesr   r   r2   r'   r4   r5   	TypeErrorNotImplementedErrorr   r%   r
   
ValueErrorr>   r   r   	enumerater"   number_of_statesr7   UserWarningr3   r   r   r	   shaper   rx   r0   roundr   simplifyr&   r   r   r   r   r(   r   Zerort   fundamental_matrixis_absorbing_chainrT   rV   Halflimiting_distribution
is_regular
is_ergodicdoitstationary_distributionsubscontainstrueabsorbing_probabilitiesr8   absorbing_probabilitesrQ   listzipr)   argsr   r   evalf);nzTZSZYZsymrainycloudysunnystate_spacesr   chainsir   TSTOTO1TO2TO3Y2Y3TO4Y4wTS1Y5TO6Y6TO7Y7tuplesclasses
recurrenceperiodsTO8Y8TO9Y9r   statesr   r   r   
new_matrixY10acbdqueryquery_gtquery_lequery_gequery_ltrr   r   r@   rY   r   rA   s;                                                        @@@@@@rJ   test_DiscreteMarkovChainr   '   s#    	C AammU+++;;!++%%%a00,???dD1Aad/000QqT7k!A$''''
945
-
 AB
 :;
 56	T	"B	c2r	"B	rB	S"b	)BR1q\2beQ<(BtH444
:;<
:AB !((>T JCGc3FsG3TU!A$C#g,FbRSUVFE*,L HTT!#{3TFT&! 	G1!44lCCC}}Q/1==I|\]D_3___!!Q&&&[) 	hR!a["QqT1+>+bQRSTQUWXk[]^_`a^bde[fBgggg	h1w+ad++++zEF	G 9>?Cq!Q0A!A#q!1111 "#62$<@!#6Aq6Aq6:J3KL!#6B":QsU|:T3UVXF  G!!Q%?%?%E%Ea%HHHH!44oFFFG
 	@AA	c1a	 BCA.A	S"3R	8B1Q4+/@1qtQqT/RRRR
:MNR!a["QqT1+&,,Q/5q>AAAbAlBr!uaL)XbhD"T(!22RXbh5FFHIQWXY Y YR1q\2beQ<(K2a5!,EEEER1q\2beQ<(BtHRX,=4D@Q,QTVW[T\]_`d]eTe,eeee	A	BBR!a["QqT1+(:1b(AABHHKuUZ\]^^^		% >1&+ad*;;;;1r!A${#))!,c1===> sAq
!C
:_`
9OP
:[\
:34
:34 8Aq>8Aq>15x1~xPQST~W_`acdWe6fhikstuwxky  |D  EF  HI  |J  hK  L  MCSAaD!b1qk2adA;7{2adA;'!Q8;MaQT;UUWZbcdfhZij j jSAaD!b1qk2adA;79KAs9ST1Q4$Q&' ' 'R!a[2adA;&1Q4q),)-/A!S/I)J KNVWXZ[n] ] ]R!a[2adA;&1Q4#A!c1~6)79KAs9S)T UX`abdeXfg g gR!a[2adA;&1Q4q),)-/A!S/I)J KNOffU U UR!a[2adA;&1Q4#A!c1~6)79KAs9S)T UXYX^X^_ _ _SAaD!b1qk2adA;7AaD!E[Y[\]^_\`bcYdMeIeeee 155!Q-!Q!Q!Q PRSU]^_abUcemnoqresQtu
vC
8Aq>8Aq>15x1~xPQST~W_`acdWe6fijltuvxylz  }E  FG  IJ  }K  iL  M  NC	Sc	2B	Sc	2B  "oXg6h&ijm&mmmm  "d***  "e+++9c"22229c"2222<<>iQqS!A#XAaC1Hs1Q3PQRSPS8}UUUU<<>ifQ2.>q!R@PQQQQ
8Aq>8Aq>8Aq>BXaQS_VWV\V\^fghjk^lDmpxyz|}p~  AI  JK  MO  AP  RZ  [\  ^`  Ra  pb  c  dC	Sc	2B(2r*HR,<hq"oNOPA##q(((==?d"""==?d"""
sAq
!C	Sc	2B##As+002d:::%%D%9>>sCHQQRSTYY[_`_e_eeee
155!Q1%qvvq!&&!Q&?AFFAqvvWX@Y\]_`bcbhbhjkmnmsms[t  wF  G  HC	Sc	2B  "oAqvv7VYZY^Y^`abc`dfgfkfkXlopououwxw|w|  G  HI  KL  M  oN  7O  'P  P  P  P%%'?Xa^XVWYZ^<\_`_e_eghgmgm^nqyz{}~q  BJ  KL  NO  BP  qQ  <R  ,S  S  S  S		! $
!!#$
8Aq>8Aq>8Aq>BXaQR^UVX`abdeXfDgjrstvwjx  {C  DE  GH  {I  KS  TU  WX  KY  jZ  [  \C	Sc	2B  "e+++  "oR8H(STVX/[cdgik[l7m=Ea_hWY[]N^`hijln`o<p=Ec2=NPXYZ\^P_aijlnpaq<r7t 'u u u u
 	CVRD\:A"""$$&&",666""$***"fbTl!3333;;=Rvrd|VRD\JJJJ<<>U"""<<>U"""
 /"!"!	# $ %'	'C
 
Sc	2B%%'F#'V#5 GZ1v1vs++++----i
%$$%%$& '
 (**C 
Sc	2B%%'F#'V#5 GZ1v|,,,,&&&f
0100010000	2 	3 46	6C 
Sc	2B%%'F#'V#5 GZ|aS)aS1#>>>>9999o%%%
 	11adQh1-AaD1Ha11-AqtaxAaD1H-Aq!QqT"	$ 	%A
 
T?A	6BllnOFAq!_$$$AA'((((1aaVa1a[9::::AaDFA1aAaDF(;a1a^LMMMM**,FJ_$$$!0"#A$q&!Q!Q!:"#Q!Q1Q46!:"#QqT!VQ!Q!:	!< = = = = 		! 	" #$		$A
 	CQ/A||~<<>>AA ACQ/A||~<<>>	 		A 	CQ/A<<>><<>>AA "ACQ/A<<>><<>> 		 	A 	CQ/A##%%% 	  !	!A 	CQ/A!!!	! 	" #$		$A
 	CQ/A!!! c9c
2C&&(F#'V#5 GZsQFm###&&&fIs#3333==?y#ac1Q3h-QqS!A#XAaCQRSTQTHVVVV 	!Q!Q8!QHQN3#% 	&A 	CA.AR!a[2adA;&AaD!4qAaD!~x1~&Ab1qkNHQN)KKMPXYZ\^P_` ` `R!a[2adA;&1Q44AFFFR!a[2adA;&1Q44>>>R!a["QqT1+&(1a.888QqT1Wb1qk"hq!n444AaD"QqT1+&(1a.888
:34
:BC 	C!4AR!a[2adA;&AaD!4qAaD!~x1~&Ab1qkNHQN)KKMPXYZ\^P_` ` `R!a[2adA;&1Q44AFFFR!a[2adA;&1Q44>>>R!a["QqT1+&(1a.888	1A	1AadaiAaD!%Aa!AqD&():;EEG1LLLQqT2adA;'1qbdQqSj1_+<Q+>!A#a%!A#a%-RSASTUAU+UV``bfgggg
:34 	!R(1b/8Ar?ChqRToW_`aceWfhpqrtvhwEx  |D  EF  HJ  |K  MU  VW  Y[  M\  ^f  gh  jl  ^m  {n  o  	pACA.AR!ad^R!a[)//2eGQ6GGGGR!ad^R!a[)//2eD!nDDDR!ae_b1qk*003uXq7IIII2aeQqT?BqtQK0"5q1R"qQRt_VXYZ[\Y]_`VaCb?bdf9gggg2adAaD>2adA;/4a!BqtQqTNTVWXYZW[]^T_B`>`bd8eeee2adAaD>2adA;/4a!BqtQqTNTVWXYZW[]^T_B`>`bd8eeeeR!ae_b1qk*a1R5!A$AaD!.MMMMR!ad^R!a[)Qr!A$!~r!A${-KKKKR!ad^R!a[)Qr!A$!~r!A${-KKKK #JAq!Q!R(1b/8Ar?ChqRToW_`aceWfhpqrtvhwEx  |D  EF  HJ  |K  MU  VW  Y[  M\  ^f  gh  jl  ^m  {n  o  	pACA.Ab1qk2adA;'E::qQq!Aq+,224::1=2aeQ<QSTUVWTXZ[Q\A]AcAcdeAffff::qQq!B!,-335;;A>!BquaLRTUVWYUZ\]R^B_BeBefgBhhhhAaD!b1qk*HAaD!b1qk*H==!AqAa1-.446!QqRSTUWXYZG[9\9b9b9ddhkkkkAaD!b1qk*HAaD!b1qk*H==!AqAa1-.446!QqRSTUWXYZG[9\9b9b9ddhkkkk adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111qtVQqT	",,.#adAg+===aD!GadAg'')adQh!a-????Q	 U	h 	h@> >j$ $s6   8BJABJ'ABJ#BJ0JBJ 	J#BJ-J0BJ:c            	         t        d      st        d       dd l} | j                  d       t        d      }|r|j                  j                  d       t	        g dg dg dg      }t        dg d	|      }t        d
      D ]$  }t        t        |            |j                  v r$J  t        dg d|      }t        d
      D ]$  }t        t        |            |j                  v r$J  t	        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 r$J  t        ddt        t        g|      }t        d
      D ]$  }t        t        |            |j                  v r$J  y )Nscipyz(SciPy Not installed. Skip sampling testsr   numpyrl   rp   rq   rY   rs   r   r   )1rF   r   rF   r~   r`   rZ   r@   W)r9   r6   randomseedr   r$   ranger^   r/   r   r   r   r   r	   r   )r   r   rr   rY   sampsr   r@   r   s           rJ   test_sample_stochastic_processr  p  s   !78
KKN'"E!@AACA.Ar C-a01Q]]BBBCCa0Ar C-a01Q]]BBBC 	!Q!Q8!QHQN3#% 	&A 	CA.Ar C-a01Q]]BBBCC!Ra0Ar C-a01Q]]BBBCrI   c                     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|       }|j                         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      }} j                  |      |      t        t        j                  t        d|z        dz  z   t        j                  t        d|z        dz  z
  dgt        j                  t        d|z        dz  z
  t        j                  t        d|z        dz  z   dgt        j                  t        |       z
  t        d|z        dz  z   t        j                  t        d|z        dz  z
  t        |       gg      k(  sJ t        t              5  t!        t#         d      d      t#         d      d      d      t%        t#         d      d      t#         d      d            k(  sJ 	 d d d        t!        t#         d      d      t#         d      d            t        d      dz  t        j                  z   k(  sJ t!        t#         d      d      t#         d      d      z  t#         d      d      z  t#        t!        t#         d      d            t        j                              t        dd	      t        d      d	z  z
  t        d      dz  t        j                  z   z  k(  sJ t!        t'        t#         d      d      t#         d      d      z  t#         d      d      z        t#         d      d      t#         d      d      z  t#         d      d      z  z  t#        t!        t#         d      d            t        dd	            t#        t!        t#         d      d            t        dd	            z        t        j                  u sJ t)         t        dd            t#         d      d            t        d       dz  dt        t        dd            z  z   t        j                  z   k(  sJ t+         t        dd            t#         d      d            t        j                  t        d      dz  z
  dz  t        d      dz  t        j                  z   z  t        dd      t        d      dz  z
  dz  t        j                  t        d      dz  z
  z  z   k(  sJ t-        t.        fd       t!        t#         d      d      t#        t!        t#         d      d            t        j                              t%        t#         d      d            k(  sJ t1        ddd      }t        dg d|      }|j                  } |j                  |      |      t        ||z        k(  sJ t        dt3        d      t3        d      t3        d      g|      }t!        t#         |d      d      t#         |d      d            t        d      dz  t        j                  z   k(  sJ t!        t#         |d      t3        d            t#         |d      t3        d                  t        d      dz  t        j                  z   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|      }	t!        t#         |	d       |	d            t#         |	d      d            j5                  d      t7        dd      k(  sJ t!        t9         |	d       |	d             t#         |	d!      d            j5                  d      t7        d"d      k(  sJ t!        t;         |	d#       |	d$            t#         |	d	      d            j5                  d%      t7        d&d%      k(  sJ t7        t!        t#         |	d'       |	d(            t#         |	d)      d            d*      t7        dt!        t=         |	d'       |	d(            t#         |	d)      d            z
  d*      k(  sJ t7        t!        t9         |	d+       |	d,            t#         |	d-      d            d*      t7        dt!        t;         |	d+       |	d,            t#         |	d-      d            z
  d*      k(  sJ t7        t!        t?         |	d.       |	d/            t#         |	d0      d            d*      t7        dt!        tA         |	d.       |	d/            t#         |	d0      d            z
  d*      k(  sJ t!        t#         |	d1       |	d2            t#         |	d3      d            t!        t#         |	d2       |	d1            t#         |	d3      d            k(  sJ t!        t9         |	d4       |	d5            t#         |	d6      d            t!        t?         |	d5       |	d4            t#         |	d6      d            k(  sJ t!        tA         |	d7       |	d8            t#         |	d9      d            t!        t;         |	d8       |	d7            t#         |	d9      d            k(  sJ t        d:      \  }
}}}t!        t#         |	|
      |      t#         |	|      |            }|jC                  |
d;|d|d<|di      jE                         j5                  d      t!        t#         |	d;      d      t#         |	d<      d            j5                  d      k(  sJ t!        t9         |	|
      |      t#         |	|      |            }t!        t;         |	|
      |      t#         |	|      |            }|jC                  |
d=|d|d>|di      jE                         |jC                  |
d=|d|d>|di      jE                         z   d?k(  sJ t!        tA         |	|
      |      t#         |	|      |            }t!        t?         |	|
      |      t#         |	|      |            }|jC                  |
d@|d|dA|di      jE                         |jC                  |
d@|d|dA|di      jE                         z   d?k(  sJ d |	d      z  d |	d      z  z   jG                         d |	d      z  k(  sJ d |	d      z  d |	d      z  z
  jG                          |	d       k(  sJ ddB |	d      z  z  jG                         dC |	d      z  k(  sJ d |	d      z  dBz   |	d      z  jG                         dC |	d      dz  z  k(  sJ  |	d      dz   |	d      dz  z   jG                          |	d      dz    |	d      dz  z  k(  sJ y # 1 sw Y   xY w)DNrZ   r`   r   rs      r   r~   rA   TrC   r   rF   Frf   rd   c                      t        t          d      d      t        t        t          d      d            t        j                              S )NrF   r   )r%   r
   r   r   )C2s   rJ   rK   z,test_ContinuousMarkovChain.<locals>.<lambda>  s1    Qr"Q%|R"RUA,-HI rI   re   Gr   r   2r   r   )r   gen_matg
ףp=@gQ	@g/$?g=?g(\­X@g;O3@gT㥛Ġ&@gw?g@gMbX9$@r   gcZ?gHzG@gHzG@g
ףp=
@r   gzG
@gV-?g?g@gRQ@g(\?gF@gm%@g1Zd@gn@g#@goʡ?g{Gz@gT㥛 ?g/$?r   g333333@g{Gz?gffffff*@gRQ
@r   gQ@g333333?r{   rm   )$r   r   r   NegativeOnert   r   r*   r   r   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   )T1C1T2r   rA   r   CS1C3r  r   r   r   r   r   r   r   r   r   r   r  s                      @rJ   test_ContinuousMarkovChainr    s   	!B%1qvv&&&!--/1a.(1a.!B%8: 
;B 
sIr	2B##%8Ar?HUWY[L\^fghjl^m:n9o)pppp	155&!%%(155155&!&&*AAFFAEETUTYTYSYCZ[	\B	sIr	2Bd ;qA)2&&q)!,#bd)A+9MqvvX[\^_`\`XabcXcOcef8g89RT18LaffWZ[]^_[_W`abWbNbde7f89aR8H3rRSt9UV;8VXYX^X^adeghieiajklalXlnqstrtnu7v8x 1y y y y 
	% hBqE1r"Q%|e<BrRSuVWLZ\]_`a]bdeZf@gggghR1q\2beQ<(CGAI,>>>>R1q\Br!uaL(2beQ<71R1q\?AFF+-19!Q#b'!)1KcRTgVWiZ[Z`Z`N`0ab b bSBqE12a5!,r"Q%|;<BqE12a5!,r"Q%|;=1R1q\?HQN3b2beQ<(STVW.6YY[^_^c^cd d d RABqE1.3r7(1*qXbRS_AU?U2UXYX^X^2^^^^Bx1~&2a5!5166CGAI;MPQ:QSVWYSZ[\S\_`_e_eSe:f7?ARQR7RUV6VXYX^X^adegahijajXj6k;l m m m
8IJR1q\2a2a5!oqvv67;r"Q%QR|;TTTT
sAq
!C
Y
4CA*3''*1-QqS999	sVC[&+vc{$KR	PBR1q\2beQ<(CGAI,>>>>R1vc{#R1vc{%;<B	AFF@RRRR 	!A$B!R9HQNQqTES[\]_`Sa;bemnoqresu}~  BC  vD  GH  IJ  GK  FK  eL  M  	NAcy!DAR%!D'"BqxO4::1=wPQARRRRR&	1V9%r!F)Q'78>>qAU7TUEVVVVR#&	"BqtQK066q9U8Q=OOOO2agqw'AdGQ8"=q1RPQRVPWYZ[_Y`MacefghlfmopcqKrGrtvAwwww2agqx("QsVQ-8"=q1RPQRVPWYZ[`YaMbdfghilgmopdqKrGrtvAwwww2afag&1T7A7<a!BqQTvWXY]W^L_acdefjdkmnaoJpFprt@uuuuR%!F)$b51o6!Bqy!E(<SUWXYZ_X`bcUd:eeeeR%!C&!2ah?3qAcFAeH9MrRSTYRZ\]7____R$5"BqxO4"QuXqw:OQSTUV[T\^_Q`8aaaa #JAq!Qb1qk2adA;'E::qqAdAa01779??CqAdGUVY[\]^b\cefYgGhGnGnoqGrrrrAaD!b1qk*HAaD!b1qk*H==!D!Aqq34::<x}}aPTVWXY[\]acdefMg?h?n?n?pptwwwwAaD!b1qk*HAaD!b1qk*H==!D!Aqq34::<x}}aPTVWXY[\]acdefMg?h?n?n?pptwwww adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111adFTM!A$((*c!A$'k999aD!GadAg'')adQh!a-????gh hs   &A{**{4c                  @  	 t        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	      } | j                  t        dd	      k(  sJ t        d
      \  }}t        | d   | d   | d   z  z         |dz  dz  d|z  |z  dz  z   |dz  z   d|dz  z  dz  z   d|z  dz  z   k(  sJ t        ddd      \  	}t        	   t              sJ t        t        d        t        t        	fd       t        t         fd       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      z              k(  sJ 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      z              k(  sJ d   d   z   d   z   }t-        t+        |d            j/                  d      t1        dd      k(  sJ t-        t+        |d            j/                  d      t1        dd      k(  sJ t-        t+        |d            j/                  d      dk(  sJ t-        t3        |d            j/                  d      t1        dd      k(  sJ t-        t+        d   d      t+        d   d      z  t+        d   d      z  t+        d   d      z        j/                  d      t1        dd      k(  sJ t        dd   z  d   z         j/                  d      t1        dd      k(  sJ t        dd   z  d   z   dz         j/                  d      t1        dd      k(  sJ t        d   d   z  d   z         j/                  d      t1        dd      k(  sJ t        d   dkD  t+        d   d      t+        d   d      z        j/                  d      t1        dd      k(  sJ t        d         dk(  sJ t-        d   dkD        j/                  d      t1        dd      k(  sJ t-        d   dk        j/                  d      t1        dd      k(  sJ t-        d   dkD  d   dk        j/                  d      t1        dd      k(  sJ t-        d   d   z  dkD        j/                  d      t1        dd      k(  sJ t-        d   d   z  dkD  d   dk        j/                  d      t1        dd      k(  sJ t-        t+        d   d      d   dkD        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kD  t+        d   d            dk(  sJ t-        d   dk  t+        d   d            dk(  sJ t-        d   dkD  d   d!k(        dk(  sJ t-        d   dkD  d         t5        ddd      k(  sJ t        t        d"        t        t        fd#       t7        	   	ddf      }t7        	   	ddf      }t7        	   dz  	ddf      }|j9                         d   d   z   d   z   d   z   d   z   k(  sJ |j9                         |k(  sJ |j9                         d   dz  d   dz  z   d   dz  z   k(  sJ d	z     j:                  d	z     	hk(  sJ d   j:                  d   hk(  sJ |	z     j:                  |	z     |	hk(  sJ d	   z  d	   z  z   j=                         d	   z  k(  sJ d	   z  d	   z  z
  j=                         	    k(  sJ dd$	   z  z  j=                         d%	   z  k(  sJ d	   z  d$z  	   z  j=                         d%	   dz  z  k(  sJ 	   dz  	   dz  z   j=                         	   dz   	   dz  z  k(  sJ y )&Nr   g333333?rF   r   psuccessfailurer@   r`   Hrr   zH,TrZ   r   r~   zt, xTrB   c                       t        dddd      S )Nr@   r}   rF   r   r  )r+   rH   rI   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    /sAqQ rI   c                              S rM   rH   )r   rA   s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  rO   rI   c                       d   S )Nr  rH   r   s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    qu rI   g?)r   TgQ?gQ?g?g?re   g333333@r   gQ?r   rz   r   r   c                      t        d      S )Nr`   r%   rH   rI   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s
    qt rI   c                  (    t         d   dkD  d      S )Nr`   r   r#  r!  s   rJ   rK   z'test_BernoulliProcess.<locals>.<lambda>  s    q11~ rI   r{   rm   )r+   r   r"   r   r   r   r  r  r   r   r'   r   r2   r5   r   r   
IndexErrorrx   r1   r   r   r
   r%   r   r   r   r:   r   r   free_symbolsr   )
r@   r  rr   xrY   exprexpr2expr3r   rA   s
           @@rJ   test_BernoulliProcessr+    s	   Q:A==IaO+++;;!++%%%99>>99>>1sCHA==Ic3////5>DAqQqT!A$qt)^1Q1Qq 01Q3 61a4 AAaCE IIII6D$7DAqad/000
:QR
-
:}%!ad+/HQRSTQUWXYZW[P\31Q4,sBqtQK.@)LCAaD!-R!a[/A9MNJO 0P P P P 1Q4(,EfaPQdTUVWTX\31Q4,sBqtQK.@)LCAaD!-R!a[/A9MNGO -P P P P
 	
!qtadAR1X;Q5q>111R1X;Q5q>111R1X;Q1$$$R1X;Q5q>111R!a[2adA;&AaD!4r!A${BCII!LPUVZ\]P^^^^Q1X!_##A&%a.888Q1X!_q !''*eD!n<<<QqTAaD[1R5 !''*eD!n<<<QqTAXr!A$qzBqtAJ./55a8E$qMIIIQqT7c>>QqTAX;Q5q>111QqTAX;Q5q>111QqTAXqtqy!''*eD!n<<<QrUQqT\A$$Q'5q>999QrUQqT\Aqtax(..q1U4^CCCR!a[!A$(#s***R!a[>QR!a[!A$(#q(((QqTAXr!A${#q(((QqTAXr!A${#q(((QqTAXqtQw1$$$QqTAXqt 5c1a @@@@
:|$
:-. qtaAYD!q!Qi E!a!Q#E99;!A$1+!,qt3ad::::::<1::<1Q47QqT1W,qtQw6666QqS61QqS61+---Q41&&&QqS61QqS61a.000 adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111adFTM!A$((*c!A$'k999aD!GadAg'')adQh!a-????rI   c                  H   	
 t        dd      		j                  t        j                  k(  sJ 	j                  t        dt              k(  sJ 	j                  dk(  sJ t        dd      \  } }t         	      t              sJ 	j                        t        dz        k(  sJ t               5  	j                   	             d d d        t        t        d        t        t         	fd       t        t"        	fd	       	j%                   	d
       	d            t'        t)         	d
       	d      fd 	d
      z  d 	d      z  z  t+        d      z  t-         	d
            t-         	d            z  z              k(  sJ 	j%                  dd      t'        t)         	d       	d      fd 	d      z  d 	d      z  z  t+        d      z  t-         	d            t-         	d            z  z              k(  sJ t/         	      dk        t+        dz        k(  sJ t/        t1         	      d      t3        t        j4                  dd                  t+        d      k(  sJ t/        t1         	      d      t3        t        j4                  dd                  }|dt+        d      z  k(  sJ t/        t1         	      d      t1         	      d      z  t1         	|       d      z  t1         	|      d      z  t3        t        j4                  dd            t3        t        j4                  dd
            z  t3        | t        j4                  d
d            z  t3        |t        j4                  dd            z        |dz  k(  sJ t/        t1         	      d
      t1         	      d      z  t3        t        j4                  dd
            t3        t        j6                  d
d            z        t9        t1         	      d      t1         	      d
      z  t3        t        j4                  dd
            t3        t        j6                  d
d            z        k(  sJ t        t        	fd       t/        t1         	d      d
            dt+        d      z  d
z  k(  sJ t/        t1         	      d
      t3        t        j4                  dd                  dt+        d      z  d
z  k(  sJ t/         	      dk  t3        t        j4                  dd                  }t/         	      dkD  t3        t        j4                  dd                  }|dt+        d      z  k(  sJ ||z   j;                         dk(  sJ t/        t=        t1         	      d
       	      dkD  z        t3        t        j6                  d
d            t3        t        j4                  dd            z        j;                         dt+        d      z  dt+        d      z  z   dz   k(  sJ t/        t1         	      d
      t?         	      d      z  t3        t        j6                  d
d                  ddt+        d      z  z
  k(  sJ t        t        	fd        tA         	            dz  k(  sJ tA         	      d
z   	      d
z  z    	|      dz  z   t3        t        j4                  dd            t3        t        j4                  dd
            z  t3        |t        j6                  dd            z        d!k(  sJ tA         	      d
z  t3        t        j4                  dd                  dk(  sJ tA        |  	       	      z   z   	      d
z   	      d
z  z   z  t3        t        j4                  dd            t3        t        j6                  dd
            z        tC        |  	       	      z   z   	      d
z   	      d
z  z   z  t3        t        j4                  dd            t3        t        j6                  dd
            z        k(  sJ t        t        	fd"       tA         	       	      z    	       	      z
  z  t3        t        j4                  dd            t3        t        j4                  dd
            z        dk(  sJ tA         	d
      | tA         	d            z  z         d#| z  dz   k(  sJ tA        |  	d      z  |z         d| z  |z   k(  sJ t/        t1         	d      d
      t1         	      d      z  t3        t        j4                  dd
                  dt+        d      z  dz  k(  sJ t        d$d      }	|z   

j                  	j                  |j                  z   cxk(  rdk(  sJ  J t        t        	fd%       
jE                  dd      \  }}|j                  dk(  sJ |j                  dk(  sJ t        t        
fd&       t        t        	fd'       t/        t1         |d       |d                  }|t/        t1         |      d      t3        t        dd                  k(  sJ t/         |d       |d      kD        }|t/         |      dkD  t3        t        dd                  k(  sJ t/         |d       |d      k        dk(  sJ t/         |d       |d      k        }|t/        t1         |      d      t3        t        dd                  k(  sJ t        dd(      	t/        t1         	t        d      dz        d      t1         	d      d(      z        t+        d)      tG        d*d+      z  k(  sJ t/        t1         	d      d      t1         	t        d      dz        d            dk(  sJ t/        t1         	d      d(      t1         	t        d      dz        d            t/        t1         	t        d
      dz        d            k(  sJ t        dd
      	t/         	t        d      d
z        dk        t+        d,      k(  sJ t/         	d      dk  t1         	d      d            t+        d-      k(  sJ t/        t1         	d      d      t1         	d
      d            t+        d-      k(  sJ t        dd      	t/        t1         	d
      d      t1         	d      d
      z        tG        dd      t+        d      z  k(  sJ t/         	d
      dk   	d      dk\        dt/        t1         	d      d            z  d
t/        t1         	d      d            z  z   t/        t1         	d      d
            z   k(  sJ t/         	d
      dk   	d      dkD        d
t/        t1         	d      d            z  dt/        t1         	d      d            z  z   k(  sJ t/        t1         	d
      d      t1         	d      d
      z        t/        t1         	d      d            t/        t1         	d      d
            z  k(  sJ t/        t1         	d      d      t1         	d      d            t/        t1         	d
      d            k(  sJ d
 	      z  d 	      z  z   j;                         d 	      z  k(  sJ d
 	      z  d 	      z  z
  j;                          	       k(  sJ d
d. 	      z  z  j;                         d/ 	      z  k(  sJ d
 	      z  d.z   	      z  j;                         d/ 	      d
z  z  k(  sJ  	      d
z   	      dz  z   j;                          	      dz    	      d
z  z  k(  sJ y # 1 sw Y   KxY w)0Nr@   r`   r   t d x yTr	  c                      t        dd      S Nr@   rd   r,   rH   rI   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>#      ~c26 rI   c                          S rM   rH   rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>$      ! rI   c                        d      S )NrH   rR   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>%      qu rI   rZ   r   r   ir~   r      irF   r  re   ic                      t        t                d      t                d      z  t        t        j                  dd            t        t        j                  dt
                    z        S )NrZ   r`   r   r~   )r%   r
   r    r#   Lopenr   r@   r   rA   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>=  sT    qAaD!r!A${!:Qq!$%HNN1b4I(JJ L rI   r   i   i  r   r   i   r   c                  L    t                dkD                  z         S )NrZ   r#  r:  s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>L  s"    q11Q4!A$;7 rI   r   c            
      r    t                dz  t        t        j                  dt                          S )Nr`   rF   )r'   r    r#   r9  r   rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>W  s(    q1q(1hnnQ6K*LM rI   r   rY   c                       dz   S )Nre   rH   rR   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>b  s    q1u rI   c                  (     j                  dd      S )Nr`   rZ   )split)r   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>f  s    qwwq!} rI   c            
          t        t                d      t        t        j                  dd            t          d      d      z        S )Nr   rF   r`   )r%   r
   r    r#   r9  rN   s   rJ   rK   z%test_PoissonProcess.<locals>.<lambda>h  s?    qAaD!hq(..A:N.ORTUVWXUY[\R].]^ rI   r   l    P9 iJ rd   r{   rm   )$r,   r   r   r   r   r#   r   lamdar   r   r2   distributionr;   r8   r5   r   r   r%  rx   r1   r   r   r   r%   r
   r    r9  Ropenr3   r   r   r   r'   r4   rA  r   )r'  yresres1res2rY   NrX   res3r@   r   r   rA   s            @@@@rJ   test_PoissonProcessrN    s   sAA==AKK''';;(1b/)))77a<<T2JAq!Qad/000>>! 3AaC 8888		! 	qt
:67
-
:}%!ad+/HQRSTQUWXYZW[P\1Q41Q4C()AaD/)AaD/*IJJL 0M M M M 1%)B61Q4QRSTQU,AaDQqT!#c(*IadOIadO,KLDN *O O O O QqTAX;#bd)###R!a[(1hnnQ&:;<BGGG
BqtQK!X^^Aq%9:
;C!CG) R!a[2adA;&AaD!4r!A${BHQPXP^P^_`bcPdDeq(..A&'E(*21hnnQ6J*KELq(..A&'E( ),/F3 3 3
 R!a[2adA;&HNN1a4H(Iq(..A&')( )BqtQK"QqT1+5x8>>RSUVCW7X1hnnQ2384 55 5 5
 : L MR!a[>RBZ\)))R!a[(1hnnQ&:;<CHQNNN QqTQYHNN1a$89:DQqTAXx8>>!Q#789D3s3x<4K!!#q((( SAaD!!q)*HQq!8L,MQq!,--. //7xzSR[3sSUw;=VYZ=Z[ [ [R!a[2adA;&HNN1a4H(IJaRTUXY[U\R\n\\\
:78QqT7ac>>QqT1WqtAv!a'!X^^Aq5I)J
1hnnQ*
+*,.6q(..A:N.O*P QTVW W WQqT1Whq(..A"678B>>>Q!qt_adAgadAgo.HNN1a<P0Qq(..A&'1( )1Q4!A$;1q1Q47):;XaXY[\I]=^q(..A./>0 11 1 1 :MN adQqTkAaD1Q4K((1hnnQ6J*K
1hnnQ*
++, -012 2 2QqTAa!gI"Q$(***QqtVaZ=AaC!G###R!a[2adA;&HNN1a4H(IJbQTUWQXjYZlZZZsAA	AA77agg',1,,,,,
:}%771a=DAq77a<<77a<<
:,-
:^_R!ad^D1R!a[(1hq!n"=>>>>QqTAaD[>D1adQh!Xa^!<====QqTAaD[>QQqTQqT\?D1R!a[(1hq!n"=>>>> 	sBAR!A$q&	11Q4,-S(:x:X1XXXXR!a["QqtAvY*+q000R!b\2a!Qi+,"QqtAvY2B0CCCCsAAQqtAvY]s2w&&&QqTAXr!A${#s2w...R!a["QqT1+&#b'111sAAR!a[2adA;&'8B?3r7+BBBB QqTQY!a Aa1Q4n$4q2adA;7G$G!BqQRtUVK.$XXXXQqTQY!q!QqAaD!~%5!BqtQK.8H%HHHHR!a[2adA;&'1R!a[>!BqtQK.+HHHHR!a["QqT1+&!BqtQK.888 adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111adFTM!A$((*c!A$'k999aD!GadAg'')adQh!a-????U s   6A@@A@!c                  "   t        d      j                  t        j                  k(  sJ j                  t        dt              k(  sJ t        dd      \  } }}t               t              sJ j                        t        dt                    k(  sJ t               5  j                                d d d        t        t        d        t        t         fd       t        t"        fd       j%                   d	       d
            t'        t)         d	       d
      ft        d      t+         d	      d	z   dz        z  t+         d
      d	z   dz        z  dt,        z  z              k(  sJ j%                  dd      t'        t)         d       d      ft        d      t+         d      d	z   dz        z  t+         d      d	z   dz        z  dt,        z  z              k(  sJ t/               d
k        j1                         t3        d
t        d	      z  d	t              z  z        d	z  t        d      d	z  z   k(  sJ t/               d	kD  t5        t        j6                  d
d                  j1                         t        d      d	z  t3        t        d	      d	z        d	z  z
  k(  sJ t/               dkD   |       d
kD  z   |      d	kD  z   |      dkD  z  t5        t        j6                  dd            t5        | t        j6                  dd	            z  t5        |t        j6                  d	d
            z  t5        |t        j6                  d
d            z        j1                         dt3        t        d	      d	z        z
  dt3        t        d	            z
  z  dt3        d
t        d	      z  d	z        z
  z  dt3        d	t        d	      z        z
  z  dz  k(  sJ t/               d	k   |       d
kD  z  t5        t        j6                  dd	            t5        | t        j8                  d	d            z        t;         |       d
kD         d	k  z  t5        | t        j8                  d	d            t5        t        j6                  dd	            z        k(  sJ t=        t/        t?               dk   |       d
kD  z        t5        t        j8                  d	d            t5        | t        j6                  dd            z        j1                               dk(  sJ tA                     dk(  sJ tA        |        |       z   z         d	z   |       d	z  z   z  t5        t        j6                  dd            t5        | t        j8                  dd	            z        tC        | |              z   z   |       d	z         d	z  z   z  t5        | t        j8                  dd	            t5        t        j6                  dd            z        k(  sJ tA               |tA         d
            z  z         dk(  sJ d	       z  d
       z  z   j1                         d       z  k(  sJ d	       z  d
       z  z
  j1                                 k(  sJ d	d       z  z  j1                         d       z  k(  sJ d	       z  dz         z  j1                         d       d	z  z  k(  sJ        d	z         d
z  z   j1                                dz          d	z  z  k(  sJ y # 1 sw Y   xY w)Nr@   r   r-  Tr	  c                      t        dd      S r/  r0  rH   rI   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r1  rI   c                          S rM   rH   rN   s   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r3  rI   c                        d      S )Nr  rH   rR   s   rJ   rK   z$test_WienerProcess.<locals>.<lambda>  r6  rI   rZ   r`   r   r~   r   r      rF   r   r   re   z--(1 - erf(3*sqrt(2)/2))*(2 - erfc(5/2))/4 + 1r{   rm   )"r-   r   r   Realsr   r#   r   r   r   r2   rF  r<   r   r8   r5   r   r   r%  rx   r1   r   r   r	   r%   r   r   r    r9  rG  r3   r   r   r'   r4   )r   r'  rH  r@   rA   s      @@rJ   test_WienerProcessrU    s   cA==AGG###;;(1b/)))T2JAq!Qad/000>>! 21d1g >>>>		! 	qt
:67
-
:}%!ad+/H!ad|T!WS!A$'!_4S!A$'!_DbeLM0O O O O1%)B!ad|T!WS!A$'!_4S!A$'"5EEr"uMN*P P P P QqTAX;!S47Ad1gI)>%?%AAaDF%JJJJQqTAXx8>>!Q#789BBD!QDGAIq I! ! ! ! adQh1Q4!8$!q1QqTAX>HNN1a()HQq!8L,MM
1hnnQ*
+	,.6q(..A:N.O	PQQYQYQ[	
Sa^	a#d1g,./S4715E1EFCPQRVWXRYPYNHZ[\^^_ _ _ adAg!A$'"HQq!0D$E
1hnnQ*
+%, -0;QqTAX!A$QR(<SHNN1a()HQq!8L,MM1OO O O qadQh1Q4!8,-x8>>!Q;O/PHNN1a()0* ++38:7?@ @ @ QqT7a<<Q!qt_adAgadAgo.HNN1a<P0Qq(..A&'1( ),71Q4!A$;1qSTUVSWYZSZIZ8[Qq!$%HNN1a4H(II-KK K K QqTAa!gI!### adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111adFTM!A$((*c!A$'k999aD!GadAg'')adQh!a-????S s   )^^c                     t        dd      \  } }}}}t        d||      t        t        fd       t        t        fd       t               t              sJ j                  t        dt              k(  sJ j                        t        |z  d|z        k(  sJ t               5  j                                d d d        j                  d	 d
            t        t         d	       d
      f|d|z  z  t!        |  d
      z        z  t!        |  d	      z        z   d
      d
|z  dz
  z  z   d	      d	|z  dz
  z  z  t#        d
|z        t#        d	|z        z  z              k(  sJ t%                     |z  |z  k(  sJ t'                     j)                         |z  |dz  z  k(  sJ t%               dz   |       dz  z    |      d
z  z   t+        t        j,                  dd            t+        | t        j,                  dd            z  t+        |t        j.                  d
d            z        d|z  |z  |dz  |z   |dz  z  z   |d
z  d
|dz  z  z   d|z  z   |d
z  z  z   k(  sJ t1               d
kD  t+        t        j,                  d
d                  j)                         dt3        |d
|z        t#        |      z  z
  k(  sJ d       z  d
       z  z   j)                         d	       z  k(  sJ d       z  d
       z  z
  j)                                 k(  sJ dd       z  z  j)                         d       z  k(  sJ d       z  dz         z  j)                         d       dz  z  k(  sJ        dz         d
z  z   j)                                dz          dz  z  k(  sJ y # 1 sw Y   -xY w)Nzt d x y g lTr	  r@   c                          S rM   rH   rN   s   rJ   rK   z,test_GammaProcess_symbolic.<locals>.<lambda>  r3  rI   c                        d      S )Nrd   rH   rR   s   rJ   rK   z,test_GammaProcess_symbolic.<locals>.<lambda>  r6  rI   r   rF   re   r`   r   rZ   r~   r{   rm   )r   r.   r5   r   r%  r   r2   r   r#   r   rF  r=   r8   rx   r1   r   r   r   r'   r)   r   r    r9  rG  r%   r   )r   r'  rH  glr@   rA   s        @@rJ   test_GammaProcess_symbolicr[    s   }t<Aq!Q1S!QA
-
:}%ad/000==HQO+++>>! 1!A#qs ;;;;		! 	qt1Q4(,Ef	
1qta!A#hsA2ad7|+C1Q4L81!aH1PQRSPS
Q J AaCjqs#%G& -' ' ' ' QqT7ac!eAaD>""$!AqD000 QqT1WqtAv!a'!X^^Aq5I)J
1hnnQ*
+*,.6q(..A:N.O*P QaCEQTAXq!tO#q!ta1f}qs':AqD&@@A A A QqTAXx8>>!Q#789BBD !Jq!A#$6uQx$? ?@ @ @
 adFQqtVO%%'1QqT6111adFQqtVO%%'AaD5000tAaDyM##%QqT111adFTM!A$((*c!A$'k999aD!GadAg'')adQh!a-????/ s   2O55O?c                     t        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(  sJ t        t        d        t        t        d	        t        t        d
        t         ||       dkD   ||      dkD  z   ||      dkD  z   ||      dkD  z  t        | t        j                  dd            t        |t        j                  dd            z  t        |t        j                  dd            z  t        |t        j                  dd            z        j                         dt        d      z  k(  sJ t        t         ||       dk   ||      dkD  z        t        | t        j                   dd            t        |t        j                  dd            z        j                         dt        d      z  dt        d      z  dz  z   dz   k(  sJ t         ||       dkD   ||       dk  z  t        | t        j                   dd                  j                         dt        d      z  dz  dt        d      z  dz  z   dz   k(  sJ t#         ||             d| z  k(  sJ t#         |d      |t#         |d            z  z         d|z  dz   k(  sJ y )Nr-  Tr	  r@   rF   rZ   r   c                      t        ddd      S )Nr@   rd   rZ   r.   rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CQ7 rI   c                      t        ddd      S )Nr@   r   r  r^  rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CB7 rI   c                      t        ddd      S )Nr@   rd   r  r^  rH   rI   rJ   rK   z+test_GammaProcess_numeric.<locals>.<lambda>  s    |CR8 rI   r~   r`   x   rC  re   r   r   rD  r  i  ii}r   m   r  r   )r   r.   r   r#   r   r   rE  r   r5   r   r%   r    r9  r   r   r   rG  r'   )rA   r   r'  rH  r@   s        rJ   test_GammaProcess_numericrc    s   T2JAq!QS!QA==HQO+++;;(1b/)))77a<<77a<<
:78
:78
:89 adQh1Q4!8$!q1QqTAX>q!A (HNN1a,@ AABDLQq!EA (HNN1a,@ AAB CCK8:<?CLI I I S!A$(qtax()8Ax~~a7K+LHNN1a(),* ++38:CGc#b'kRSm9SVW9WX X XadQh1Q4!8$hq(..A2F&GHQQS,0RLOc#b'k"n,Lq,PQ Q Q QqT7ac>>QqTAa!gI"Q$(***rI   N)csympy.concrete.summationsr   sympy.core.containersr   sympy.core.functionr   sympy.core.numbersr   r   r   r	   sympy.core.relationalr
   r   r   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   &sympy.functions.elementary.exponentialr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   'sympy.functions.special.error_functionsr   'sympy.functions.special.gamma_functionsr   r   sympy.logic.boolalgr   r   sympy.matrices.denser   "sympy.matrices.expressions.matexprr   sympy.matrices.immutabler   sympy.sets.containsr    sympy.sets.fancysetsr!   sympy.sets.setsr"   r#   sympy.statsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   sympy.stats.joint_rvr0   sympy.stats.joint_rv_typesr1   sympy.stats.rvr2    sympy.stats.symbolic_probabilityr3   r4   sympy.testing.pytestr5   r6   r7   r8   sympy.externalr9   sympy.stats.frv_typesr:   sympy.stats.drv_typesr;   sympy.stats.crv_typesr<   r=   r>   r   r  r  r+  rN  rU  r[  rc  rH   rI   rJ   <module>r     s    ) ' & 8 8 : : " / > 6 7 9 : 7 G * ' ; 4 ( & 1B B B B 3 @ . E: : ( 7 5 G !G@R
C6@@DI@Vs@j1@h @B+rI   