+
    i;                     :   ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t H!t!H"t"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) . R3Ot*]#PV                  ! ]"4      R 4       t, ! R R]4      t- ! R R]-4      t. ! R R].4      t/ ! R R].4      t0 ! R R].4      t1R t2R  t3R! t4R" t5 ! R# R$]-4      t6 ! R% R&]64      t7 ! R' R(]64      t8 ! R) R*]64      t9R+ t:R, t;R- t<R. t=R/ t>R0 t?R1 t@R2# )4    )Product)Sum)Basic)Lambda)Ipi)S)Dummy)Abs)exp)gamma)Integral)MatrixSymbol)Trace)IndexedBase)_sympify)_symbol_converterDensityRandomMatrixSymbol	is_random)JointDistributionHandmade)RandomMatrixPSpace)ArrayComprehensionc                     R # )T )xs   &^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/stats/random_matrix_models.py_r   #   s        c                   ^   a  ] tR t^(t o RtR	R lt]! R 4      t]! R 4      tR t	R t
RtV tR# )
RandomMatrixEnsembleModelz
Base class for random matrix ensembles.
It acts as an umbrella and contains
the methods common to all the ensembles
defined in sympy.stats.random_matrix_models.
Nc                    \        V4      \        V4      r!VP                  R 8X  d   \        RV,          4      h\        P
                  ! WV4      # )FzGDimension of the random matrices must be integers, received %s instead.)r   r   
is_integer
ValueErrorr   __new__)clssymdims   &&&r   r%   !RandomMatrixEnsembleModel.__new__/   sM    $S)8C=S>>U" ABEG H H}}Ss++r   c                (    V P                   ^ ,          # )r   argsselfs   &r   <lambda>"RandomMatrixEnsembleModel.<lambda>6   s    499Q<r   c                (    V P                   ^,          #    r+   r-   s   &r   r/   r0   7   s    diilr   c                    \        V4      # N)r   r.   exprs   &&r   density!RandomMatrixEnsembleModel.density9   s    t}r   c                $    V P                  V4      # r5   )r8   r6   s   &&r   __call__"RandomMatrixEnsembleModel.__call__<   s    ||D!!r   r   r5   )__name__
__module____qualname____firstlineno____doc__r%   propertysymbol	dimensionr8   r;   __static_attributes____classdictcell____classdict__s   @r   r!   r!   (   s6     , /0F23I" "r   r!   c                   0   a  ] tR t^?t o RtR tR tRtV tR# )GaussianEnsembleModelz
Abstract class for Gaussian ensembles.
Contains the properties common to all the
gaussian ensembles.

References
==========

.. [1] https://en.wikipedia.org/wiki/Random_matrix#Gaussian_ensembles
.. [2] https://arxiv.org/pdf/1712.07903.pdf
c                ^  a \        V4      pV3R lp\        RRRR7      p\        V! V4      V^V34      P                  4       p^SV,          ,          SV,          V^,
          ,          ^,          V^,          ,           ,          p^\        ,          V^,          ,          pWV,          V,          # )z
Helper function for computing normalization
constant for joint probability density of eigen
values of Gaussian ensembles.

References
==========

.. [1] https://en.wikipedia.org/wiki/Selberg_integral#Mehta's_integral
c                    < \        ^S\        V 4      ,          ^,          ,           4      \        \        P                  S\        ^4      ,          ,           4      ,          # r2   )r   r	   One)jbetas   &r   r/   GGaussianEnsembleModel._compute_normalization_constant.<locals>.<lambda>W   s5    eAQqT	!O4U1554!9;L5MMr   rN   Tintegerpositive)r	   r
   r   doitr   )r.   rO   n	prod_termrN   term1term2term3s   &f&     r   _compute_normalization_constant5GaussianEnsembleModel._compute_normalization_constantK   s     aDM	#td3	!q!Qi0557DFtAvq1u~a/!A#5621}u$$r   c           
        V P                   pV P                  W4      p\        R4      p\        RRRR7      p\        RRRR7      p\        RRRR7      p\	        \        V4      ) ^,          \        WG,          ^,          V^V34      P                  4       ,          4      p\        V\        \        WF,          WE,          ,
          4      V,          We^,           V34      4      p	\        V	! V4      P                  4       V^V^,
          34      P                  4       p
\        WG,          V^V34      P                  4       p\        \        V4      W,          V,          4      # )zh
Helper function for computing the joint
probability distribution of eigen values
of the random matrix.
liTrQ   rN   k)rD   rZ   r   r
   r   r	   r   rT   r   r   r   r   tuple)r.   rO   rU   Zbnr]   r^   rN   r_   rW   sub_termrX   symss   &&          r   !_compute_joint_eigen_distribution7GaussianEnsembleModel._compute_joint_eigen_distribution^   s    NN224;#td3#td3#td3adU1WAD!GaAY 7 < < >>?!WS%5t%;aQ]KL((*Q1q5M:??A!!$Aq	2779eDkEM3#677r   r   N)	r=   r>   r?   r@   rA   rZ   rd   rE   rF   rG   s   @r   rJ   rJ   ?   s     
%&8 8r   rJ   c                   B   a  ] tR t^pt o ]R 4       tR tR tR tRt	V t
R# )GaussianUnitaryEnsembleModelc                    V P                   p^\        V4      ^,          ,          \        \        V^,          4      ^,          ,          ,          #    )rD   r	   r   )r.   rU   s   & r   normalization_constant3GaussianUnitaryEnsembleModel.normalization_constantq   s2    NN1Q46{R!AqD'!)_,,r   c           
         V P                   V P                  r2\        R V R7      p\        RW"VR7      p\	        V\        \        V4      ) ^,          \        V^,          4      ,          4      V,          4      ! V4      # PmodelHpspacerD   rk   r   r   r   r   r	   r   )r.   r7   rU   ZGUEh_pspacerr   s   &&    r   r8   $GaussianUnitaryEnsembleModel.densityv   `    ..$"="=4%c6sA:aadU1WuQT{23D89$??r   c                6    V P                  \        ^4      4      # ri   rd   r	   r-   s   &r   joint_eigen_distribution5GaussianUnitaryEnsembleModel.joint_eigen_distribution|       55ad;;r   c                    \        R 4      p^ \        ^,          ,          V^,          ,          \        R\        ,          V^,          ,          4      ,          p\        W4      # )sr
   r   r   r   r.   r   fs   &  r   level_spacing_distribution7GaussianUnitaryEnsembleModel.level_spacing_distribution   sA    #JAX1c2b5!Q$,//a|r   r   Nr=   r>   r?   r@   rB   rk   r8   r|   r   rE   rF   rG   s   @r   rg   rg   p   s,     - -@< r   rg   c                   B   a  ] tR t^t o ]R 4       tR tR tR tRt	V t
R# )GaussianOrthogonalEnsembleModelc           	         V P                   p\        R W4      p\        \        \	        V4      ) ^,          \        V^,          4      ,          4      4      # _HrD   r   r   r   r	   r   r.   rU   r   s   &  r   rk   6GaussianOrthogonalEnsembleModel.normalization_constant   s>    NN$%QqTE!GeBEl2344r   c           
         V P                   V P                  r2\        R V R7      p\        RW"VR7      p\	        V\        \        V4      ) ^,          \        V^,          4      ,          4      V,          4      ! V4      # rn   ru   )r.   r7   rU   ZGOErw   rr   s   &&    r   r8   'GaussianOrthogonalEnsembleModel.density   ry   r   c                @    V P                  \        P                  4      # r5   rd   r	   rM   r-   s   &r   r|   8GaussianOrthogonalEnsembleModel.joint_eigen_distribution       55aee<<r   c                    \        R 4      p\        ^,          V,          \        \        ) ^,          V^,          ,          4      ,          p\        W4      # )r   r   r   s   &  r   r   :GaussianOrthogonalEnsembleModel.level_spacing_distribution   s:    #JT1HS2#a%A&&a|r   r   Nr   rG   s   @r   r   r      s,     5 5
@= r   r   c                   B   a  ] tR t^t o ]R 4       tR tR tR tRt	V t
R# )GaussianSymplecticEnsembleModelc           	         V P                   p\        R W4      p\        \        \	        V4      ) \        V^,          4      ,          4      4      # r   r   r   s   &  r   rk   6GaussianSymplecticEnsembleModel.normalization_constant   s:    NN$%QqTEE"a%L0122r   c           
         V P                   V P                  r2\        R V R7      p\        RW"VR7      p\	        V\        \        V4      ) \        V^,          4      ,          4      V,          4      ! V4      # rn   ru   )r.   r7   rU   ZGSErw   rr   s   &&    r   r8   'GaussianSymplecticEnsembleModel.density   s\    ..$"="=4%c6sA:aadUU1a4[01$67==r   c                6    V P                  \        ^4      4      #    r{   r-   s   &r   r|   8GaussianSymplecticEnsembleModel.joint_eigen_distribution   r~   r   c                    \        R 4      p\        ^4      ^,          \        ^4      ^,          \        ^,          ,          ,          V^,          ,          \        R^	\        ,          ,          V^,          ,          4      ,          p\	        W4      # )r   i)r
   r	   r   r   r   r   s   &  r   r   :GaussianSymplecticEnsembleModel.level_spacing_distribution   s\    #JdBh!A$'BE*+ad3CadQT8I4JJa|r   r   Nr   rG   s   @r   r   r      s+     3 3
>< r   r   c                 t    \        V 4      \        V4      r\        W4      p\        WR 7      p\	        WWR7      # rp   rs   )r   r   rJ   r   r   r'   r(   rq   rmps   &&  r   GaussianEnsembler      3     %x}!#+E
S
.Cc88r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a  
Represents Gaussian Unitary Ensembles.

Examples
========

>>> from sympy.stats import GaussianUnitaryEnsemble as GUE, density
>>> from sympy import MatrixSymbol
>>> G = GUE('U', 2)
>>> X = MatrixSymbol('X', 2, 2)
>>> density(G)(X)
exp(-Trace(X**2))/(2*pi**2)
rp   rs   )r   r   rg   r   r   r   s   &&  r   GaussianUnitaryEnsembler      s5     !%x}(2E
S
.Cc88r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a&  
Represents Gaussian Orthogonal Ensembles.

Examples
========

>>> from sympy.stats import GaussianOrthogonalEnsemble as GOE, density
>>> from sympy import MatrixSymbol
>>> G = GOE('U', 2)
>>> X = MatrixSymbol('X', 2, 2)
>>> density(G)(X)
exp(-Trace(X**2)/2)/Integral(exp(-Trace(_H**2)/2), _H)
rp   rs   )r   r   r   r   r   r   s   &&  r   GaussianOrthogonalEnsembler      5     !%x}+C5E
S
.Cc88r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a&  
Represents Gaussian Symplectic Ensembles.

Examples
========

>>> from sympy.stats import GaussianSymplecticEnsemble as GSE, density
>>> from sympy import MatrixSymbol
>>> G = GSE('U', 2)
>>> X = MatrixSymbol('X', 2, 2)
>>> density(G)(X)
exp(-2*Trace(X**2))/Integral(exp(-2*Trace(_H**2)), _H)
rp   rs   )r   r   r   r   r   r   s   &&  r   GaussianSymplecticEnsembler      r   r   c                   0   a  ] tR t^t o RtR tR tRtV tR# )CircularEnsembleModelz
Abstract class for Circular ensembles.
Contains the properties and methods
common to all the circular ensembles.

References
==========

.. [1] https://en.wikipedia.org/wiki/Circular_ensemble
c                &    \        R V ,          4      h)zeSupport for Haar measure hasn't been implemented yet, therefore the density of %s cannot be computed.)NotImplementedErrorr6   s   &&r   r8   CircularEnsembleModel.density   s!     " #;<@#B C 	Cr   c                   V P                   p^\        ,          V,          \        W,          ^,          ^,           4      \        \        V^,          ^,           4      4      V,          ,          ,          p\	        R4      p\        RRR7      \        RRR7      \        RRR7      rvp\        WE,          V^V34      P                  4       p\        \        \        \        \        WG,          ,          4      \        \        WF,          ,          4      ,
          4      V,          Wg^,           V34      P                  4       V^V^,
          34      P                  4       p	\        \        V4      W,          4      # )z
Helper function to compute the joint distribution of phases
of the complex eigen values of matrices belonging to any
circular ensembles.
tr^   T)rR   rN   r_   )rD   r   r   r	   r   r
   r   rT   r   r   r   r   r   r`   )
r.   rO   rU   ra   r   r^   rN   r_   rc   r   s
   &&        r   rd   7CircularEnsembleModel._compute_joint_eigen_distribution   s    NN"qy5A.qtAvz1B/CQ/FFGd+U3-Ed+ !!$Aq	2779GCAadFc!AD&k 9:D@1!eQ-PUUW1q5M##'46 	
eDk15))r   r   N)	r=   r>   r?   r@   rA   r8   rd   rE   rF   rG   s   @r   r   r      s     	C* *r   r   c                   &   a  ] tR tRt o R tRtV tR# )CircularUnitaryEnsembleModeli  c                6    V P                  \        ^4      4      # ri   r{   r-   s   &r   r|   5CircularUnitaryEnsembleModel.joint_eigen_distribution  r~   r   r   Nr=   r>   r?   r@   r|   rE   rF   rG   s   @r   r   r          < <r   r   c                   &   a  ] tR tRt o R tRtV tR# )CircularOrthogonalEnsembleModeli  c                @    V P                  \        P                  4      # r5   r   r-   s   &r   r|   8CircularOrthogonalEnsembleModel.joint_eigen_distribution  r   r   r   Nr   rG   s   @r   r   r     s     = =r   r   c                   &   a  ] tR tRt o R tRtV tR# )CircularSymplecticEnsembleModeli  c                6    V P                  \        ^4      4      # r   r{   r-   s   &r   r|   8CircularSymplecticEnsembleModel.joint_eigen_distribution  r~   r   r   Nr   rG   s   @r   r   r     r   r   r   c                 t    \        V 4      \        V4      r\        W4      p\        WR 7      p\	        WWR7      # r   )r   r   r   r   r   r   s   &&  r   CircularEnsembler     r   r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a   
Represents Circular Unitary Ensembles.

Examples
========

>>> from sympy.stats import CircularUnitaryEnsemble as CUE
>>> from sympy.stats import joint_eigen_distribution
>>> C = CUE('U', 1)
>>> joint_eigen_distribution(C)
Lambda(t[1], Product(Abs(exp(I*t[_j]) - exp(I*t[_k]))**2, (_j, _k + 1, 1), (_k, 1, 0))/(2*pi))

Note
====

As can be seen above in the example, density of CiruclarUnitaryEnsemble
is not evaluated because the exact definition is based on haar measure of
unitary group which is not unique.
rp   rs   )r   r   r   r   r   r   s   &&  r   CircularUnitaryEnsembler   !  s5    ( !%x}(2E
S
.Cc88r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a  
Represents Circular Orthogonal Ensembles.

Examples
========

>>> from sympy.stats import CircularOrthogonalEnsemble as COE
>>> from sympy.stats import joint_eigen_distribution
>>> C = COE('O', 1)
>>> joint_eigen_distribution(C)
Lambda(t[1], Product(Abs(exp(I*t[_j]) - exp(I*t[_k])), (_j, _k + 1, 1), (_k, 1, 0))/(2*pi))

Note
====

As can be seen above in the example, density of CiruclarOrthogonalEnsemble
is not evaluated because the exact definition is based on haar measure of
unitary group which is not unique.
rp   rs   )r   r   r   r   r   r   s   &&  r   CircularOrthogonalEnsembler   :  5    ( !%x}+C5E
S
.Cc88r   c                t    \        V 4      \        V4      r\        W4      p\        WR7      p\	        WWR7      # )a	  
Represents Circular Symplectic Ensembles.

Examples
========

>>> from sympy.stats import CircularSymplecticEnsemble as CSE
>>> from sympy.stats import joint_eigen_distribution
>>> C = CSE('S', 1)
>>> joint_eigen_distribution(C)
Lambda(t[1], Product(Abs(exp(I*t[_j]) - exp(I*t[_k]))**4, (_j, _k + 1, 1), (_k, 1, 0))/(2*pi))

Note
====

As can be seen above in the example, density of CiruclarSymplecticEnsemble
is not evaluated because the exact definition is based on haar measure of
unitary group which is not unique.
rp   rs   )r   r   r   r   r   r   s   &&  r   CircularSymplecticEnsembler   S  r   r   c                    \        V \        4      '       g   \        RV ,          4      hV P                  P                  P                  4       # )a  
For obtaining joint probability distribution
of eigen values of random matrix.

Parameters
==========

mat: RandomMatrixSymbol
    The matrix symbol whose eigen values are to be considered.

Returns
=======

Lambda

Examples
========

>>> from sympy.stats import GaussianUnitaryEnsemble as GUE
>>> from sympy.stats import joint_eigen_distribution
>>> U = GUE('U', 2)
>>> joint_eigen_distribution(U)
Lambda((l[1], l[2]), exp(-l[1]**2 - l[2]**2)*Product(Abs(l[_i] - l[_j])**2, (_j, _i + 1, 2), (_i, 1, 1))/pi)
z&%s is not of type, RandomMatrixSymbol.)
isinstancer   r$   rt   rq   r|   mats   &r   r|   r|   l  s<    2 c-..A3GHH::4466r   c                    V P                  RR7      p\        ;QJ d%    R \        V4       4       F  '       d   K   RM	  RM! R \        V4       4       4      '       g   \        R4      h\	        V!  # )aZ  
Creates joint distribution of eigen values of matrices with random
expressions.

Parameters
==========

mat: Matrix
    The matrix under consideration.

Returns
=======

JointDistributionHandmade

Examples
========

>>> from sympy.stats import Normal, JointEigenDistribution
>>> from sympy import Matrix
>>> A = [[Normal('A00', 0, 1), Normal('A01', 0, 1)],
... [Normal('A10', 0, 1), Normal('A11', 0, 1)]]
>>> JointEigenDistribution(Matrix(A))
JointDistributionHandmade(-sqrt(A00**2 - 2*A00*A11 + 4*A01*A10 + A11**2)/2
+ A00/2 + A11/2, sqrt(A00**2 - 2*A00*A11 + 4*A01*A10 + A11**2)/2 + A00/2 + A11/2)

T)multiplec              3   8   "   T F  p\        V4      x  K  	  R # 5ir5   )r   ).0eigenvals   & r   	<genexpr>)JointEigenDistribution.<locals>.<genexpr>  s     B>xy"">s   FzWEigen values do not have any random expression, joint distribution cannot be generated.)	eigenvalsallsetr$   r   )r   r   s   & r   JointEigenDistributionr     s]    8 t,I3B3y>B333B3y>BBB C D 	D$i00r   c                J    V P                   P                  P                  4       # )a3  
For obtaining distribution of level spacings.

Parameters
==========

mat: RandomMatrixSymbol
    The random matrix symbol whose eigen values are
    to be considered for finding the level spacings.

Returns
=======

Lambda

Examples
========

>>> from sympy.stats import GaussianUnitaryEnsemble as GUE
>>> from sympy.stats import level_spacing_distribution
>>> U = GUE('U', 2)
>>> level_spacing_distribution(U)
Lambda(_s, 32*_s**2*exp(-4*_s**2/pi)/pi**2)

References
==========

.. [1] https://en.wikipedia.org/wiki/Random_matrix#Distribution_of_level_spacings
)rt   rq   r   r   s   &r   r   r     s    < ::6688r   N)r   r   r   r   r   r   r   r   r|   r   r   )Asympy.concrete.productsr   sympy.concrete.summationsr   sympy.core.basicr   sympy.core.functionr   sympy.core.numbersr   r   sympy.core.singletonr	   sympy.core.symbolr
   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   'sympy.functions.special.gamma_functionsr   sympy.integrals.integralsr   "sympy.matrices.expressions.matexprr    sympy.matrices.expressions.tracer   sympy.tensor.indexedr   sympy.core.sympifyr   sympy.stats.rvr   r   r   r   sympy.stats.joint_rv_typesr   sympy.stats.random_matrixr   sympy.tensor.arrayr   __all__registerr   r!   rJ   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r   r   <module>r      s   + ) " & & " # 4 6 9 . ; 2 , ' T T @ 8 1 &' (" "./85 /8b#8 (&; *&; *99&9&9& *5  *D<#8 <=&; =<&; <99292927: 1D9r   