+
    ‹°³jà;  ã                   ó:  € ^ 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   &Úa/home/luca/screen-checking/.venv/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Ó)¬8°C«=ˆSØ�>‰>˜UÔ"Üð AØBEõGó Hð Hä�}Š}˜S sÓ+Ð+r   c                ó(   € V P                   ^ ,          # )r   ©Úargs©Úselfs   &r   Ú<lambda>Ú"RandomMatrixEnsembleModel.<lambda>6   s   €  4§9¡9¨Q¦<r   c                ó(   € V P                   ^,          # ©é   r+   r-   s   &r   r/   r0   7   s   €  d§i¡i°¦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   ø‡ € ñô,ñ Ñ/Ó0€FÙÑ2Ó3€Iò÷"ð "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   ø€ œe A¨¬Q¨q«T­	°!­¥OÓ4´U¼1¿5¹5À4ÌÈ!ËÅ9Õ;LÓ5MÖMr   rN   T©ÚintegerÚpositive)r	   r
   r   Údoitr   )r.   rO   ÚnÚ	prod_termrN   Úterm1Úterm2Úterm3s   &f&     r   Ú_compute_normalization_constantÚ5GaussianEnsembleModel._compute_normalization_constantK   sŠ   ø€ ô ˆa‹DˆÜMˆ	Ü�#˜t¨dÔ3ˆÜ™	 !› q¨!¨Q iÓ0×5Ñ5Ó7ˆØ�D˜•F•˜t A�v q¨1¥u�~¨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_distributionÚ7GaussianEnsembleModel._compute_joint_eigen_distribution^   s  € ð �N‰NˆØ×2Ñ2°4Ó;ˆÜ˜ÓˆÜ�#˜t¨dÔ3ˆÜ�#˜t¨dÔ3ˆÜ�#˜t¨dÔ3ˆÜ”a˜“d�U˜1•W¤ A¥D¨!¥G¨a°°A¨YÓ 7× <Ñ <Ó >Õ>Ó?ˆÜ˜!œW¤S¨­°µ­Ó%5°tÕ%;¸aÀQÅÈ¸]ÓKÓLˆÜ™ ›×(Ñ(Ó*¨Q°°1°qµ5¨MÓ:×?Ñ?ÓAˆÜ! !¥$¨¨A¨q¨	Ó2×7Ñ7Ó9ˆÜ”e˜D“k E¥M°3Õ#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_constantÚ3GaussianUnitaryEnsembleModel.normalization_constantq   s2   € à�N‰NˆØ”1�Q“4˜•6�{œR¤! A q¥D£'¨!¥)�_Õ,Ð,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ˆÜ˜s A°Ô:ˆÜ�aœœa ›d˜U 1�W¤u¨Q°­T£{Õ2Ó3°DÕ8Ô9¸$Ó?Ð?r   c                ó6   € V P                  \        ^4      4      # ri   ©rd   r	   r-   s   &r   Újoint_eigen_distributionÚ5GaussianUnitaryEnsembleModel.joint_eigen_distribution|   ó   € Ø×5Ñ5´a¸³dÓ;Ð;r   c                óÄ   € \        R 4      p^ \        ^,          ,          V^,          ,          \        R\        ,          V^,          ,          4      ,          p\        W4      # )Úséüÿÿÿ©r
   r   r   r   ©r.   r€   Úfs   &  r   Úlevel_spacing_distributionÚ7GaussianUnitaryEnsembleModel.level_spacing_distribution   sA   € Ü�#‹JˆØ”�A•�X˜˜1�Õœc 2¤b¥5¨!¨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>   € à�N‰NˆÜ˜$ Ó%ˆÜœœQ˜q›T˜E !�G¤e¨B°­E£lÕ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Ñ5´a·e±eÓ<Ð<r   c                óª   € \        R 4      p\        ^,          V,          \        \        ) ^,          V^,          ,          4      ,          p\        W4      # )r€   r‚   rƒ   s   &  r   r…   Ú:GaussianOrthogonalEnsembleModel.level_spacing_distribution”   s:   € Ü�#‹JˆÜ��T�1�H”Sœ2˜#˜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:   € à�N‰NˆÜ˜$ Ó%ˆÜœœQ˜q›T˜E¤E¨"¨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ˆÜ˜s A°Ô:ˆÜ�aœœa ›d˜U¤U¨1¨a­4£[Õ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ˆÜ�‹d�B�hœ!˜A›$ �'¤B¨¥EÕ*Õ+¨a°­dÕ3´C¸¸aÄ½d½ÀQÈÅTÕ8IÓ4JÕ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°£}ˆÜ(¨Ó2€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 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Ó5€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 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  € ð �N‰NˆØ”"•�q�yœ5 ¥¨¥¨A¥Ó.¬q´°t¸AµvÀµzÓ1BÓ/CÀQÕ/FÕFÕGˆÜ˜ÓˆÜ˜ dÔ+¬U°3ÀÔ-EÜ˜ dÔ+ð ˆä! !¥$¨¨A¨q¨	Ó2×7Ñ7Ó9ˆÜ”GœC¤¤A a¥d¥F£¬c´!°AµDµ&«kÕ 9Ó:¸DÕ@À1È!ÅeÈQÀ-ÓP×UÑUÓWØ˜˜1˜q�5�Mó#ß#'¡4£6ð 	
ä”e˜D“k 1¥5Ó)Ð)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°£}ˆÜ(¨Ó2€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 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Ó5€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 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Ô-×.Ò.ÜÐAÀ3Õ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±> xŒy˜×"Ð"³>ù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ÑB´3°y´>ÓB�3�3Š3ÑB´3°y´>Ó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ô /8ôbÐ#8ô ô(Ð&;ô ô*Ð&;ô ò*9ò9ò&9ò&9ô& *Ð5ô  *ôD<Ð#8ô <ô=Ð&;ô =ô<Ð&;ô <ò9ò9ò29ò29ò27ò: 1ôD9r   