Ë
    qwjé ã                   óÂ  — d Z ddlZddlmZ ddlmZmZmZmZm	Z	m
Z
 ddlZddlmZ ddlmZ ddlZddlZddlmZmZmZ dd	lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 dd
lm6Z6m7Z7 ddl8m9Z: ddlm;Z; ddl<m=Z=m>Z>m?Z? ddl<m@Z@mAZAmBZBmCZC ddlDmEZE ddlDmFZF ddlGmHZH ddlImJZJ ddlKmLZL d„ ZM G d„ d«      ZNdHd„ZOd„ ZPd„ ZQe G d„ d«      «       ZRe G d„ d«      «       ZS G d„ d«      ZT G d„ d «      ZU G d!„ d"«      ZV G d#„ d$«      ZW G d%„ d&«      ZXd'„ ZY G d(„ d)«      ZZ G d*„ d+«      Z[ G d,„ d-«      Z\ G d.„ d/«      Z] G d0„ d1«      Z^ G d2„ d3«      Z_ G d4„ d5«      Z` G d6„ d7«      Za G d8„ d9«      Zb G d:„ d;«      Zc G d<„ d=«      Zdd>„ ZeejÌ                  jÏ                  d?¬@«      dA„ «       Zh G dB„ dC«      Zi G dD„ dE«      Zj G dF„ dG«      Zky)IzH
Test functions for multivariate normal, t, and related distributions.

é    N)Ú	dataclass)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_equalÚassert_array_lessÚassert_)Úraisesé   )Úcheck_distribution_rvs)Ú_PSDÚ_lnBÚmultivariate_normal_frozen)Úmultivariate_normalÚmultivariate_hypergeomÚmatrix_normalÚspecial_ortho_groupÚortho_groupÚrandom_correlationÚunitary_groupÚ	dirichletÚbetaÚwishartÚmultinomialÚ
invwishartÚchi2ÚinvgammaÚnormÚuniformÚks_2sampÚkstestÚbinomÚ	hypergeomÚmultivariate_tÚcauchyÚ
normaltestÚrandom_tableÚuniform_directionÚvonmises_fisherÚdirichlet_multinomialÚvonmisesÚmatrix_t)Ú_covarianceÚ
Covariance)Ú	_norm_pdf)Ústats)ÚtanhsinhÚcubatureÚquad)ÚrombÚqmc_quadÚdblquadÚtplquad)Úmultigammaln)Úcheck_random_state_property)Ú_qsimvtv)Úpatchc                 ó¸   — t        j                  | «      t        j                  |«      }} t        | |g|¢­i |¤Ž t        | j                  |j                  «       y ©N)ÚnpÚasarrayr   r   Úshape)ÚresÚrefÚargsÚkwargss       úh/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/stats/tests/test_multivariate.pyÚassert_closerF   /   sA   € Ü�z‰z˜#‹¤§
¡
¨3£ˆ€CÜ�C˜Ð.˜tÒ. vÒ.Ü�—‘˜CŸI™IÕ&ó    c                   ó  — e Zd Zd„ Zej
                  ej                  j                  ej                  j                  ej                  j                  d„ dœZ
 ej                   ee
«      «      Z ej
                  g d¢«      g d¢g d¢g d¢g ej
                  g d¢«      g d	¢g d
¢g d¢gdœZeedd eg d¢   edd dœZej"                  j%                  dedd «      d„ «       Zej"                  j%                  d ee«      «      ej"                  j%                  de«      d„ «       «       Zej"                  j%                  dd e«       ddg«      ej"                  j%                  d ee«      «      ej"                  j%                  de«      d„ «       «       «       Zej"                  j%                  d e«       dg«      ej"                  j%                  de«      d„ «       «       Zd„ Zej"                  j3                  d«      d„ «       Zd„ Zy)ÚTestCovariancec                 ó  — d}t        j                  t        |¬«      5  t        j                  t        j                  d«      «       d d d «       d}t        j                  t        |¬«      5  t        j                  t        j                  d«      t        j                  d«      ¬«       d d d «       d}t        j                  t        |¬«      5  t        j                  d«       d d d «       d	}t        j                  t        |¬«      5  t        j                  t        j                  d«      «       d d d «       d
}t        j                  t        |¬«      5  t        j                  dt        j                  d«      f«       d d d «       d}t        j                  t        |¬«      5  t        j                  t        j                  d«      df«       d d d «       d}t        j                  t        |¬«      5  t        j                  g d¢t        j                  d«      f«       d d d «       y # 1 sw Y   �ŒéxY w# 1 sw Y   �Œ“xY w# 1 sw Y   �ŒexY w# 1 sw Y   �Œ$xY w# 1 sw Y   ŒàxY w# 1 sw Y   ŒœxY w# 1 sw Y   y xY w)Nz:The input `precision` must be a square, two-dimensional...©Úmatché   z0`precision.shape` must equal `covariance.shape`.é   )Ú
covariancez7The input `diagonal` must be a one-dimensional array...Úalpacaz9The input `cholesky` must be a square, two-dimensional...z4The input `eigenvalues` must be a one-dimensional...z,The input `eigenvectors` must be a square...z9The shapes of `eigenvalues` and `eigenvectors` must be...©r   rM   rN   )Úpytestr
   Ú
ValueErrorr-   ÚCovViaPrecisionr>   ÚonesÚeyeÚCovViaDiagonalÚCovViaCholeskyÚCovViaEigendecomposition©ÚselfÚmessages     rE   Útest_input_validationz$TestCovariance.test_input_validation7   s©  € àNˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¬¯©°«
Ô3÷ 6ð EˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¬¯©¨q«	¼b¿f¹fÀQ»iÕH÷ 6ð LˆÜ�]‰]œ:¨WÖ5Ü×&Ñ& xÔ0÷ 6ð NˆÜ�]‰]œ:¨WÖ5Ü×&Ñ&¤r§w¡w¨q£zÔ2÷ 6ð IˆÜ�]‰]œ:¨WÖ5Ü×0Ñ0°(¼B¿F¹FÀ1»IÐ1FÔG÷ 6ð AˆÜ�]‰]œ:¨WÖ5Ü×0Ñ0´"·'±'¸!³*¸hÐ1GÔH÷ 6ð NˆÜ�]‰]œ:¨WÖ5Ü×0Ñ0²)¼R¿V¹VÀA»YÐ1GÔH÷ 6Ð5÷1 6Ñ5ú÷ 6Ñ5ú÷ 6Ñ5ú÷ 6Ñ5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5úsS   ž)H.Á,>H;ÃIÄ
)IÅ+I"Æ(+I.Ç8-I:È.H8È;IÉIÉIÉ"I+É.I7É:Jc                 ó   — t        | d¬«      S )NT©Úallow_singular)r   )Úxs    rE   Ú<lambda>zTestCovariance.<lambda>Y   s   € Ü%)¨!¸DÕ%ArG   )ÚDiagonalÚ	PrecisionÚCholeskyÚEigendecompositionÚPSDrQ   )é   r   rN   )r   é   é   )rN   rj   é   )r   r   rN   )rh   éÿÿÿÿr   )rl   rh   r   ©r   r   r   )údiagonal full rankzgeneral full rankzdiagonal singularzgeneral singularr   N)r   éþÿÿÿrl   ro   Úcov_type_namerl   c                 ó|  — t        j                  g d¢«      }g d¢}t        t        d|› �«      }| j                  |   }t        t
        d|j                  «       › �«      } | ||«      «      } | ||«      «      }t        |«      t        |«      u sJ ‚t        |j                  |«      |j                  |«      «       y )NrQ   )éüÿÿÿrM   rh   ÚCovViaÚfrom_)
r>   ÚdiagÚgetattrr-   Ú_covariance_preprocessingr.   ÚlowerÚtyper   Úwhiten)	r[   rp   ÚAra   Úcov_typeÚpreprocessingÚfactoryrA   rB   s	            rE   Útest_factorieszTestCovariance.test_factoriese   s£   € ä�G‰G’IÓˆÚˆäœ;¨&°°Ð(@ÓAˆØ×6Ñ6°}ÑEˆÜœ*¨¨m×.AÑ.AÓ.CÐ-DÐ&EÓFˆá‘m AÓ&Ó'ˆÙ‘} QÓ'Ó(ˆÜ�C‹yœD ›IÑ%Ð%Ð%Ü˜Ÿ
™
 1› s§z¡z°!£}Õ5rG   Úmatrix_typec                 ó  — d|› d|› d�}|| j                   |   vrt        j                  |«       | j                  |   }t	        t
        d|› �«      }| j                  |   }t        |d¬«      } | ||«      «      }t        |j                  |j                  «       t        |j                  |j                  «       t        |j                  t        j                  |«      j                  «       t        |j                  t        j                  |«      «       t        j                   j#                  d«      }	|	j!                  d¬«      }
|j%                  |
«      }|
|j&                  z  }t        ||z  ||z  «       t)        |d	«      rd
|vrt        |j+                  |«      |
«       |	j!                  d¬«      }
|j%                  |
«      }|
|j&                  z  }t        |dz  j-                  d¬«      |dz  j-                  d¬«      «       t)        |d	«      rd
|vrt        |j+                  |«      |
«       t)        |d	«      rG|j+                  t        j.                  t1        |«      «      «      }t        |j2                  |z  |«       y y )Nrs   ú does not support ú	 matricesTr_   ì   ÐVGi’VžK rN   ©ÚsizeÚ	_colorizeÚsingular©rM   rj   rN   rM   rl   ©Úaxis)Ú
_cov_typesrR   ÚskipÚ	_matricesrv   r-   rw   r   rF   Úlog_pdetr   Úrankr@   r>   r?   rO   ÚrandomÚdefault_rngrz   ÚUÚhasattrÚcolorizeÚsumrV   ÚlenÚT)r[   r€   rp   r\   r{   r|   r}   ÚpsdÚ
cov_objectÚrngra   rA   rB   s                rE   Útest_covariancezTestCovariance.test_covariances   s  € ð ˜M˜?Ð*<¸[¸Mð Jð ˆà §¡°Ñ <Ñ<Ü�K‰K˜Ô à�N‰N˜;Ñ'ˆÜœ;¨&°°Ð(@ÓAˆØ×6Ñ6°}ÑEˆä�1 TÔ*ˆñ ™m¨AÓ.Ó/ˆ
Ü�Z×(Ñ(¨#¯,©,Ô7Ü�Z—_‘_ c§h¡hÔ/Ü�Z×%Ñ%¤r§z¡z°!£}×':Ñ':Ô;Ü�Z×*Ñ*¬B¯J©J°q«MÔ:ô �i‰i×#Ñ#Ð$7Ó8ˆØ�J‰J˜AˆJÓˆØ×Ñ Ó"ˆØ�#—%‘%‰iˆä�S˜3‘Y  c¡	Ô*Ü�:˜{Ô+°
À+Ñ0Mä˜×,Ñ,¨SÓ1°1Ô5ð �J‰J˜IˆJÓ&ˆØ×Ñ Ó"ˆØ�#—%‘%‰iˆÜ�c˜1‘f—\‘\ r�\Ó*¨S°!©V¯L©L¸b¨LÓ,AÔBÜ�:˜{Ô+°
À+Ñ0MÜ˜×,Ñ,¨SÓ1°1Ô5ô �:˜{Ô+Ø×%Ñ%¤b§f¡f¬S°«V£nÓ5ˆCÜ˜Ÿ™ ™ aÕ(ð ,rG   r†   r‰   c                 ó´  — d|› d|› d�}|| j                   |   vrt        j                  |«       | j                  |   }t	        t
        d|› �«      }| j                  |   }g d¢} | ||«      «      }	t        }
t        ||d¬«      }t        ||	d¬«      }t        j                  j                  d«      }|j                  |||¬«      }t        j                  j                  d«      }|
j                  ||	||¬	«      }t        j                  j                  d«      } |
||	|¬
«      j                  |¬«      }t        |	t
        j                  «      r?t        |t        j                  |«      «       t        |t        j                  |«      «       nLt!        |j"                  |j"                  «       t!        |j"                  |j"                  «       t        ||«       t        |
j%                  |||	«      |j%                  |«      «       t        |j%                  |«      |j%                  |«      «       t        |
j'                  |||	«      |j'                  |«      «       t        |j'                  |«      |j'                  |«      «       t        |
j)                  ||	«      |j)                  «       «       t        |j)                  «       |j)                  «       «       y )Nrs   r‚   rƒ   ©çš™™™™™¹?çš™™™™™É?ç333333Ó?Tr_   r„   r…   ©r†   Úrandom_state©Úseed)rŒ   rR   r�   rŽ   rv   r-   rw   r   r>   r‘   r’   ÚrvsÚ
isinstanceÚ	CovViaPSDrF   Úsqueezer   r@   ÚpdfÚlogpdfÚentropy)r[   r†   r€   rp   r\   r{   r|   r}   Úmeanrš   ÚmvnÚdist0Údist1r›   ra   Úx1Úx2s                    rE   Útest_mvn_with_covariancez'TestCovariance.test_mvn_with_covariance¤   s/  € ð ˜M˜?Ð*<¸[¸Mð Jð ˆà §¡°Ñ <Ñ<Ü�K‰K˜Ô à�N‰N˜;Ñ'ˆÜœ;¨&°°Ð(@ÓAˆØ×6Ñ6°}ÑEˆâˆÙ™m¨AÓ.Ó/ˆ
Ü!ˆÜ# D¨!¸DÔAˆÜ# D¨*ÀTÔJˆä�i‰i×#Ñ#Ð$7Ó8ˆØ×#Ñ# D¨!°$Ð#Ó7ˆÜ�i‰i×#Ñ#Ð$7Ó8ˆØ�W‰W�T˜:¨D¸sˆWÓCˆÜ�i‰i×#Ñ#Ð$7Ó8ˆÙ��z¨Ô,×0Ñ0°dÐ0Ó;ˆÜ�j¤+×"7Ñ"7Ô8Ü˜œRŸZ™Z¨›]Ô+Ü˜œRŸZ™Z¨›]Õ+ä˜Ÿ™ 1§7¡7Ô+Ü˜Ÿ™ 1§7¡7Ô+Ü˜˜RÔ ä�S—W‘W˜Q  jÓ1°5·9±9¸Q³<Ô@Ü�U—Y‘Y˜q“\ 5§9¡9¨Q£<Ô0Ü�S—Z‘Z  4¨Ó4°e·l±lÀ1³oÔFÜ�U—\‘\ !“_ e§l¡l°1£oÔ6Ü�S—[‘[  zÓ2°E·M±M³OÔDÜ�U—]‘]“_ e§m¡m£oÕ6rG   c                 ó�  — d}| j                   |   }t        t        d|› �«      }| j                  |   }g d¢} | ||«      «      }t        }	t	        ||d¬«      }
t	        ||d¬«      }t
        j                  j                  d«      }|j	                  |||¬«      }t        |	j                  |||«      |
j                  |«      «       t        |j                  |«      |
j                  |«      «       t        |	j                  |||«      |
j                  |«      «       t        |j                  |«      |
j                  |«      «       y )Nrn   rs   rž   Tr_   r„   r…   )rŽ   rv   r-   rw   r   r>   r‘   r’   rF   ÚcdfÚlogcdf)r[   r†   rp   r€   r{   r|   r}   r­   rš   r®   r¯   r°   r›   ra   s                 rE   Útest_mvn_with_covariance_cdfz+TestCovariance.test_mvn_with_covariance_cdfÌ   s  € ð +ˆØ�N‰N˜;Ñ'ˆÜœ;¨&°°Ð(@ÓAˆØ×6Ñ6°}ÑEˆâˆÙ™m¨AÓ.Ó/ˆ
Ü!ˆÜ# D¨!¸DÔAˆÜ# D¨*ÀTÔJˆä�i‰i×#Ñ#Ð$7Ó8ˆØ×#Ñ# D¨!°$Ð#Ó7ˆä�S—W‘W˜Q  jÓ1°5·9±9¸Q³<Ô@Ü�U—Y‘Y˜q“\ 5§9¡9¨Q£<Ô0Ü�S—Z‘Z  4¨Ó4°e·l±lÀ1³oÔFÜ�U—\‘\ !“_ e§l¡l°1£oÕ6rG   c                 ó|   — d}t        j                  t        |¬«      5  t        «        d d d «       y # 1 sw Y   y xY w)Nz7The `Covariance` class cannot be instantiated directly.rK   )rR   r
   ÚNotImplementedErrorr.   rZ   s     rE   Útest_covariance_instantiationz,TestCovariance.test_covariance_instantiationæ   s'   € ØKˆÜ�]‰]Ô.°gÖ>ÜŒL÷ ?×>Ñ>ús   ž2²;zignore::RuntimeWarningc                 óv  — t        j                  g d¢«      }|j                  d   }t        j                  |«      }t	        j
                  t        d¬«      5  t        ||«      j                  «        d d d «       d}t         j                  j                  |«      }t         j                  j                  |«      }t        j                  t         j                  j                  |«      «      }t        ||«      }|j                  |¬«      }	t        j                  |||¬«      }
t        |	|
«       y # 1 sw Y   Œ¾xY w)N)r   rM   g:Œ0âŽyE¾r   zThe input matrix must be...rK   l   .ypGw ©r£   )r>   ru   r@   ÚzerosrR   r
   rS   r   r¦   r‘   r’   r.   Úfrom_eigendecompositionÚlinalgÚeighr   )r[   r{   Únr­   r¥   Úrng1Úrng2ÚcovÚrvrA   rB   s              rE   Útest_gh9942zTestCovariance.test_gh9942ë   sæ   € ô
 �G‰G’MÓ"ˆØ�G‰G�A‰JˆÜ�x‰x˜‹{ˆô �]‰]œ:Ð-JÖKÜ  aÓ(×,Ñ,Ô.÷ Lð #ˆÜ�y‰y×$Ñ$ TÓ*ˆÜ�y‰y×$Ñ$ TÓ*ˆÜ×0Ñ0´·±·±ÀÓ1BÓCˆÜ   sÓ+ˆØ�f‰f $ˆfÓ'ˆÜ!×%Ñ% d¨C¸dÔCˆÜ�S˜#Õ÷ LÐKús   ÁD/Ä/D8c                 ór  — t        j                  d«      }t        j                  t        j                  d«      t        j
                  d«      f«      }t        j                  j                  ||¬«      }|j                  d ¬«      }t        ||«       t        j                  j                  j                  t        j                  ddg«      t        j                  ddgddgg«      f«      }t        j                  j                  ||¬«      }|j                  d ¬«      }|d   |d   k7  sJ ‚|d   |d   k(  sJ ‚y )	NrM   ©r­   rÄ   r…   ç      ð?ç        g      y@r   r   )r>   rU   r.   r¾   r½   rV   Úscipyr0   r   r¦   r   Úarray)r[   r­   rÄ   Údistr¦   s        rE   Útest_gh19197zTestCovariance.test_gh19197  s  € ô
 �w‰w�q‹zˆÜ×0Ñ0´"·(±(¸1³+¼r¿v¹vÀa»yÐ1IÓJˆÜ�{‰{×.Ñ.°D¸cÐ.ÓBˆØ�h‰h˜DˆhÓ!ˆÜ�S˜$Ôä�k‰k×$Ñ$×<Ñ<Ü�X‰X�r˜2�hÓ¤§¡¨B°¨8°b¸$°ZÐ*@Ó!AÐBóDˆä�{‰{×.Ñ.°D¸cÐ.ÓBˆØ�h‰h˜DˆhÓ!ˆØ�1‰v˜˜a™Ò Ð Ð Ø�1‰v˜˜a™Ò Ð Ñ rG   )Ú__name__Ú
__module__Ú__qualname__r]   r>   ru   r¿   ÚinvÚcholeskyrÀ   rw   rÌ   ÚlistÚ_all_covariance_typesrŽ   rŒ   rR   ÚmarkÚparametrizer   rœ   Útupler³   r·   rº   ÚfilterwarningsrÆ   rÎ   © rG   rE   rI   rI   5   s  „ òIð< .0¯W©WØ.0¯i©i¯m©mØ-/¯Y©Y×-?Ñ-?Ø79·y±y·~±~ñ)Bñ	!CÐð %˜BŸH™H¡TÐ*CÓ%DÓEÐØ'. r§w¡wªyÓ'9Ú'0²)ºYÐ&GØ&- b§g¡gªiÓ&8Ú&0²*ºiÐ%HñJ€Ið )>Ø'<¸Q¸RÐ'@Ø'<º[Ñ'IØ&;¸B¸CÐ&@ñB€Jð
 ‡[�[×Ñ˜_Ð.CÀCÀRÐ.HÓIñ6ó Jð6ð ‡[�[×Ñ˜]©D°«OÓ<Ø‡[�[×Ñ˜_Ð.CÓDñ-)ó Eó =ð-)ð^ ‡[�[×Ñ˜V d©E«G°Q¸	Ð%BÓCØ‡[�[×Ñ˜]©D°«OÓ<Ø‡[�[×Ñ˜_Ð.CÓDñ#7ó Eó =ó Dð#7ðJ ‡[�[×Ñ˜V¡e£g¨yÐ%9Ó:Ø‡[�[×Ñ˜_Ð.CÓDñ7ó Eó ;ð7ò0ð
 ‡[�[×ÑÐ 8Ó9ñó :ðó,!rG   rI   c                 ó  — |j                  | | f«      }||j                  z  }t        j                  j	                  |«      \  }}|r|j                  | ¬«      dkD  }d||<   |t        j                  |«      z  |j                  z  }|S )Nr…   r   )r‘   r˜   r>   r¿   rÀ   Únormalru   )	ÚdimÚevalsr›   rˆ   r{   Ú_ÚvÚ	zero_eigsrÄ   s	            rE   Ú_random_covariancerâ     s{   € ð 	�
‰
�C˜�:Ó€AØ	ˆA�C‰C‰€AÜ�9‰9�>‰>˜!Ó�D€A€qÙØ—J‘J C�JÓ(¨1Ñ,ˆ	ØˆˆiÑØ
Œb�g‰g�e‹nÑ
˜qŸs™sÑ
"€CØ€JrG   c                 ó°   — t         j                  j                  d«      }|j                  | | f«      }t        j
                  j                  |«      \  }}}|S )Nl   Û:; )r>   r‘   r’   Ústandard_normalrË   r¿   Úsvd)rÁ   r›   ÚMÚuÚsrà   s         rE   Ú_sample_orthonormal_matrixré   #  sI   € Ü
�)‰)×
Ñ
 
Ó
+€CØ×Ñ˜Q ˜FÓ#€AÜ�l‰l×Ñ˜qÓ!�G€A€qˆ!Ø€HrG   c                 óf  ‡ ‡‡‡— t        j                  |«      }||dk  xx   ‰z  cc<   |j                  «       }‰dd…|f   Št        j                  ‰t        ¬«      Šd‰|<   ˆ ˆˆˆfd„}t        j
                  ‰t        |«      z
  t         j                  «      }t        || |«      j                  S )zƒIntegrate marginalized dimensions of multivariate
    probability distribution to calculate the marginalized
    distribution.
    r   N©ÚdtypeFc                 óØ   •— t        j                  | j                  d   ‰j                  d   ‰f«      }| d d …t         j                  d d …f   |d‰f<   ‰|d‰ f<   ‰j	                  |«      S )Nr   .)r>   Úemptyr@   Únewaxisrª   )ÚzÚyÚXÚX_ndimÚi_marginalizera   s     €€€€rE   Úgzmarginal_pdf.<locals>.g7  se   ø€ Ü�H‰H�a—g‘g˜a‘j !§'¡'¨!¡*¨fÐ5Ó6ˆØ !¢!¤R§Z¡Z²Ð"2Ñ 3ˆˆ#ˆ}Ð
ÑØ!"ˆˆ#�ˆ~Ð
ÑØ�u‰u�Q‹xˆrG   )
r>   r?   ÚargsortrU   ÚboolÚfullr—   Úinfr2   Úestimate)rò   ró   Ú
dimensionsra   Údim_sort_idxrõ   rù   rô   s   `` `   @rE   Úmarginal_pdfrý   )  s˜   û€ ô —‘˜JÓ'€JØˆz˜A‰~Ó &Ñ(ÓØ×%Ñ%Ó'€LØ	Š!ˆ\ˆ/Ñ€Aä—G‘G˜F¬$Ô/€MØ %€M�*Ñ÷ô �'‰'�&œ3˜z›?Ñ*¬B¯F©FÓ
3€CÜ�A˜�t˜SÓ!×*Ñ*Ð*rG   c                   ó  ‡ — e Zd ZU dZeed<   ej                  ed<   ej                  ed<   ej                  ed<   ej                  ed<   eed<   eed<   d	Z	ed	z  ed
<   ˆ fd„Z
edd„«       Zedd„«       Zedd„«       Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú
MVNProblemaP  Instantiate a multivariate normal integration problem with special structure.

    When covariance matrix is a correlation matrix where the off-diagonal entries
    ``covar[i, j] == lambdas[i]*lambdas[j]`` for ``i != j``, then the multidimensional
    integral reduces to a simpler univariate integral that can be numerically integrated
    easily.

    The ``generate_*()`` classmethods provide a few options for creating variations
    of this problem.

    References
    ----------
    .. [1] Tong, Y.L. "The Multivariate Normal Distribution".
           Springer-Verlag. p192. 1990.
    ÚndimÚlowÚhighÚlambdasÚcovarÚ
target_valÚ
target_errNÚtrue_valc                 ó  •— t         ‰| �  «        || _        || _        || _        || _        t        j                  | j
                  | j
                  «      | _        t        j                  | j                  d«       | j                  «        y ©NrÉ   )ÚsuperÚ__init__r   r  r  r  r>   Úouterr  Úfill_diagonalÚfind_target)r[   r   r  r  r  Ú	__class__s        €rE   r  zMVNProblem.__init__]  sd   ø€ Ü‰ÑÔØˆŒ	ØˆŒØˆŒ	ØˆŒä—X‘X˜dŸl™l¨D¯L©LÓ9ˆŒ
Ü
×Ñ˜Ÿ™ SÔ)Ø×ÑÕrG   c                 ó  — t         j                  j                  |«      }t        j                  |t         j                   «      }|j                  dt        j                  |«      |¬«      }|j                  dd|¬«      } | ||||¬«      }|S )zDRandom lambdas, random upper bounds, infinite lower bounds.
        rÊ   r…   ç      ð¿rÉ   ©r   r  r  r  ©r>   r‘   r’   rø   rù   r   Úsqrt©Úclsr   r›   r  r  r  r[   s          rE   Úgenerate_semigeneralzMVNProblem.generate_semigeneralh  s{   € ô �i‰i×#Ñ# CÓ(ˆÜ�g‰g�dœRŸV™V˜GÓ$ˆØ�{‰{˜3¤§¡¨£°Dˆ{Ó9ˆØ—+‘+˜d C¨d�+Ó3ˆáØØØØô	
ˆð ˆrG   c                 ój  — t         j                  j                  |«      }t        j                  |t         j                   «      }|j                  dt        j                  |«      |¬«      }t        j                  |j                  dd«      «      }t        j                  ||«      } | ||||¬«      }|S )zVConstant off-diagonal covariance, random upper bounds, infinite lower bounds.
        rÊ   r…   rÉ   r  r  )r  r   r›   r  r  Úsigmar  r[   s           rE   Úgenerate_constantzMVNProblem.generate_constanty  s�   € ô �i‰i×#Ñ# CÓ(ˆÜ�g‰g�dœRŸV™V˜GÓ$ˆØ�{‰{˜3¤§¡¨£°Dˆ{Ó9ˆÜ—‘˜Ÿ™ C¨Ó-Ó.ˆÜ—'‘'˜$ Ó&ˆáØØØØô	
ˆð ˆrG   c                 óÖ   — t        j                  |t         j                   «      }t        j                  |«      }t        j                  d«      } | ||||¬«      }d|dz   z  |_        |S )zzOff-diagonal covariance of 0.5, negative orthant bounds.

        True analytically-derived answer is 1/(ndim+1).
        ç      à?r  r   )r>   rø   rù   r½   r  r  r  s          rE   Úgenerate_halveszMVNProblem.generate_halves‹  s`   € ô �g‰g�dœRŸV™V˜GÓ$ˆÜ�x‰x˜‹~ˆÜ—'‘'˜#“,ˆáØØØØô	
ˆð ˜T !™V™ˆŒØˆrG   c                 ó†   — t        dd¬«      }|j                  |«       t        | j                  fi |¤Ž\  | _        | _        y)z?Perform the simplified integral and store the results.
        ç      "Àç      "@©ÚaÚbN©ÚdictÚupdater3   Úunivariate_funcr  r  ©r[   ÚkwdsÚds      rE   r  zMVNProblem.find_targetž  s?   € ô ØØô
ˆð 	
�‰�ŒÜ+/°×0DÑ0DÑ+JÈÑ+JÑ(ˆŒ˜�rG   c           
      ó”  — t        j                  d| j                  dz  z
  «      }t        j                  t	        j
                  | j                  | j                  |dd…t         j                  f   z  z   |z  «      t	        j
                  | j                  | j                  |dd…t         j                  f   z  z   |z  «      z
  d¬«      S )z`The parameter-specific term of the univariate integrand,
        for separate plotting.
        r   rM   NrŠ   )	r>   r  r  ÚprodÚspecialÚndtrr  rï   r  )r[   ÚtÚdenoms      rE   Ú_univariate_termzMVNProblem._univariate_term¨  s™   € ô —‘˜˜DŸL™L¨!™OÑ+Ó,ˆÜ�w‰wÜ�L‰L˜$Ÿ)™) d§l¡l°1²Q¼¿
¹
°]Ñ3CÑ&CÑCÀuÑLÓMÜ�L‰L˜$Ÿ(™( T§\¡\°!²A´r·z±z°MÑ2BÑ%BÑBÀeÑKÓLñMàô
ð 	
rG   c                 óŒ   — t        j                  |«      }t        j                  t        |«      | j	                  |«      z  «      S )zUnivariate integrand.
        )r>   Ú
atleast_1dr©   Únorm_pdfr1  ©r[   r/  s     rE   r'  zMVNProblem.univariate_func³  s5   € ô �M‰M˜!ÓˆÜ�z‰zœ( 1›+¨×(=Ñ(=¸aÓ(@Ñ@ÓAÐArG   c                 ó$  — ddl m} t        j                  ddd«      }|j	                  |t        |«      d¬«       |j	                  || j                  |«      d¬«       |j	                  || j                  |«      d	¬«       |j                  «        y
)úQPlot the univariate integrand and its component terms for understanding.
        r   ©Úpyplotr  r   éé  ú	$\phi(t)$©Úlabelú$f(t)$ú$f(t)*phi(t)$N)	Ú
matplotlibr9  r>   ÚlinspaceÚplotr4  r1  r'  Úlegend©r[   Úpltr/  s      rE   Úplot_integrandzMVNProblem.plot_integrand¹  ss   € õ 	-ä�K‰K˜˜c 4Ó(ˆØ�‰�”H˜Q“K |ˆÔ4Ø�‰��D×)Ñ)¨!Ó,°IˆÔ>Ø�‰��D×(Ñ(¨Ó+Ð3CˆÔDØ�
‰
�rG   r=   )rÏ   rÐ   rÑ   Ú__doc__ÚintÚ__annotations__r>   ÚndarrayÚfloatr  r  Úclassmethodr  r  r  r  r1  r'  rF  Ú__classcell__)r  s   @rE   rÿ   rÿ   @  sª   ø… ñð ƒJØ
�*‰*ÓØ�:‰:ÓØ�j‰jÓØ�J‰JÓØÓØÓð #€Hˆu�t‰|Ó"ô	ð òó ðð  òó ðð" òó ðò$Kò	
òBö	rG   rÿ   c                   óØ   — e Zd ZU dZeed<   ej                  ed<   ej                  ed<   ej                  ed<   ej                  ed<   eed<   eed<   d	„ Z	e
dd„«       Zd„ Zd„ Zd„ Zd„ Zy
)ÚSingularMVNProblema;  Instantiate a multivariate normal integration problem with a special singular
    covariance structure.

    When covariance matrix is a correlation matrix where the off-diagonal entries
    ``covar[i, j] == -lambdas[i]*lambdas[j]`` for ``i != j``, and
    ``sum(lambdas**2 / (1+lambdas**2)) == 1``, then the matrix is singular, and
    the multidimensional integral reduces to a simpler univariate integral that
    can be numerically integrated fairly easily.

    The lower bound must be infinite, though the upper bounds can be general.

    References
    ----------
    .. [1] Kwong, K.-S. (1995). "Evaluation of the one-sided percentage points of the
           singular multivariate normal distribution." Journal of Statistical
           Computation and Simulation, 51(2-4), 121-135. doi:10.1080/00949659508811627
    r   r  r  r  r  r  r  c                 óB  — || _         || _        || _        t        j                  |t        j
                   «      | _        t        j                  | j                  | j                  «       | _        t        j                  | j                  d«       | j                  «        y r	  )r   r  r  r>   rø   rù   r  r  r  r  r  )r[   r   r  r  s       rE   r  zSingularMVNProblem.__init__à  sl   € ØˆŒ	ØˆŒ	ØˆŒä—7‘7˜4¤"§&¡& Ó)ˆŒÜ—h‘h˜tŸ|™|¨T¯\©\Ó:Ð:ˆŒ
Ü
×Ñ˜Ÿ™ SÔ)Ø×ÑÕrG   Nc                 óT  — t         j                  j                  |«      }|j                  dt        j                  |«      |¬«      }|j                  t        j                  |d«      «      }t        j                  |d|z
  z  «      |j                  ddg|¬«      z  } | |||¬«      }|S )z/Singular lambdas, random upper bounds.
        rÊ   r…   rÉ   r   r  )r   r  r  )r>   r‘   r’   r   r  r   rø   Úchoice)r  r   r›   r  Úpr  r[   s          rE   Úgenerate_semiinfinitez(SingularMVNProblem.generate_semiinfiniteê  s“   € ô �i‰i×#Ñ# CÓ(ˆØ�{‰{˜3¤§¡¨£°Dˆ{Ó9ˆØ�M‰Mœ"Ÿ'™' $¨Ó,Ó-ˆÜ—'‘'˜!˜q ™s™)Ó$ s§z¡z°4¸°+ÀD zÓ'IÑIˆáØØØô
ˆð
 ˆrG   c                 ó†   — t        dd¬«      }|j                  |«       t        | j                  fi |¤Ž\  | _        | _        y )Nr  r   r!  r$  r(  s      rE   r  zSingularMVNProblem.find_targetú  s=   € ÜØØô
ˆð 	
�‰�ŒÜ+/°×0DÑ0DÑ+JÈÑ+JÑ(ˆŒ˜�rG   c           	      ó  — t        j                  d| j                  dz  z   «      }t        j                  t	        j
                  | j                  d| j                  z  |d d …t         j                  f   z  z
  |z  «      d¬«      }t        j                  t	        j
                  | j                   d| j                  z  |d d …t         j                  f   z  z   |z  «      d¬«      }|d| j                  z  |z  z
  j                  S )Nr   rM   y              ð?rŠ   rl   )
r>   r  r  r,  r-  r.  r  rï   r   Úreal)r[   r/  r0  Úi1Úi2s        rE   r1  z#SingularMVNProblem._univariate_term  sË   € Ü—‘˜˜DŸL™L¨!™OÑ+Ó,ˆÜ�W‰WÜ�L‰L˜$Ÿ)™) b¨¯©¡o°aº¼2¿:¹:¸Ñ6FÑ&FÑFÈ%ÑOÓPØô
ˆô �W‰WÜ�L‰L˜4Ÿ9™9˜* r¨$¯,©,¡°qº¼B¿J¹J¸Ñ7GÑ'GÑGÈ5ÑPÓQØô
ˆð �b˜4Ÿ9™9‘_ rÑ)Ñ)×/Ñ/Ð/rG   c                 ó‚   — t        j                  |«      }t        |«      | j                  |«      z  j	                  «       S r=   )r>   r3  r4  r1  r©   r5  s     rE   r'  z"SingularMVNProblem.univariate_func  s3   € Ü�M‰M˜!ÓˆÜ˜“˜d×3Ñ3°AÓ6Ñ6×?Ñ?ÓAÐArG   c                 óH  — ddl m} t        j                  ddd«      }|j	                  |t        |«      d¬«       |j	                  || j                  |«      d¬«       |j	                  || j                  |«      d	¬«       |j                  d
d«       |j                  «        y)r7  r   r8  r  r   r:  r;  r<  r>  r?  çš™™™™™¹¿çš™™™™™ñ?N)
r@  r9  r>   rA  rB  r4  r1  r'  ÚylimrC  rD  s      rE   rF  z!SingularMVNProblem.plot_integrand  s�   € õ 	-ä�K‰K˜˜c 4Ó(ˆØ�‰�”H˜Q“K |ˆÔ4Ø�‰��D×)Ñ)¨!Ó,°IˆÔ>Ø�‰��D×(Ñ(¨Ó+Ð3CˆÔDØ�‰��sÔØ�
‰
�rG   r=   )rÏ   rÐ   rÑ   rG  rH  rI  r>   rJ  rK  r  rL  rT  r  r1  r'  rF  rÚ   rG   rE   rO  rO  Å  sq   … ñð" ƒJØ
�*‰*ÓØ�:‰:ÓØ�j‰jÓØ�J‰JÓØÓØÓòð òó ðòKò0òBó
rG   rO  c                   ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zej$                  j'                  d ej*                  d«       ej.                  ddg«      g«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&ej$                  jN                  ej$                  j'                  d!dd"g«      d#„ «       «       Z(d$„ Z)ej$                  j'                  d! e*dd%«      «      ej$                  j'                  d&d'd(g«      d)„ «       «       Z+ej$                  j'                  d! e*dd*«      «      ej$                  j'                  d&d'd(g«      d+„ «       «       Z,ej$                  j'                  d! e*d,d*«      «      ej$                  j'                  d&d'd-g«      d.„ «       «       Z-d/„ Z.d0„ Z/ej$                  j'                  d1d2«      d3„ «       Z0d4„ Z1ej$                  j'                  d5 ejd                  d6«       ejd                  d7«      g«      d8„ «       Z3ej$                  j'                  d9 ejd                  d:«       ejd                  d;«       ejd                  d<«      g«      d=„ «       Z4d>„ Z5d?„ Z6d@„ Z7yA)BÚTestMultivariateNormalc                 ó`  — t        j                  d«      }t        j                  d«      }t        t        t
        j                  d||«       t        t        t
        j                  d||«       t        t        t
        j                  d||«       t        t        t
        j                  d||«       y )NrN   rM   ©r   r   ©r   r   rM   )r>   ÚarangeÚidentityÚassert_raisesrS   r   rª   rµ   )r[   ÚmurÄ   s      rE   Útest_input_shapez'TestMultivariateNormal.test_input_shape"  sx   € Ü�Y‰Y�q‹\ˆÜ�k‰k˜!‹nˆÜ”jÔ"5×"9Ñ"9¸6À2ÀsÔKÜ”jÔ"5×"9Ñ"9¸9ÀbÈ#ÔNÜ”jÔ"5×"9Ñ"9¸6À2ÀsÔKÜ”jÔ"5×"9Ñ"9¸9ÀbÈ#ÕNrG   c                 óÚ  — t         j                  j                  d«      }d\  }}}t        j                  |||«      }t        |j                  d«       |j                  d«      }|j                  d«      }t        j                  |j                  d«      «      }t        j                  |||«      }t        |j                  d«       d\  }}}t        j                  |||«      }t        |j                  d«       |j                  d«      }|j                  d«      }t        j                  |j                  d«      «      }t        j                  |||«      }t        |j                  d«       y )NéÒ  )ç      ø?g333333û?ç      @r   rh   )
r>   r‘   r’   r   rª   r   r   rä   Úabsrµ   )r[   r›   ra   r­   rÄ   rª   rµ   s          rE   Útest_scalar_valuesz)TestMultivariateNormal.test_scalar_values*  s.  € Ü�i‰i×#Ñ# DÓ)ˆð %‰ˆˆ4�Ü!×%Ñ% a¨¨sÓ3ˆÜ�S—X‘X˜qÔ!ð ×Ñ Ó"ˆØ×"Ñ" 1Ó%ˆÜ�f‰f�S×(Ñ(¨Ó+Ó,ˆÜ!×%Ñ% a¨¨sÓ3ˆÜ�S—X‘X˜qÔ!ð %‰ˆˆ4�Ü!×%Ñ% a¨¨sÓ3ˆÜ�S—X‘X˜qÔ!ð ×Ñ Ó"ˆØ×"Ñ" 1Ó%ˆÜ�f‰f�S×(Ñ(¨Ó+Ó,ˆÜ!×%Ñ% a¨¨sÓ3ˆÜ�S—X‘X˜qÕ!rG   c                 óh  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |j                  d«      «      }t        j                  |||«      }t        j                  |||«      }t        |t        j                  |«      «       y ©Nrj  rh   )
r>   r‘   r’   rä   rm  r   r«   rª   r   Úlog©r[   r›   ra   r­   rÄ   Úd1Úd2s          rE   Útest_logpdfz"TestMultivariateNormal.test_logpdfE  ó‰   € ä�i‰i×#Ñ# DÓ)ˆØ×Ñ Ó"ˆØ×"Ñ" 1Ó%ˆÜ�f‰f�S×(Ñ(¨Ó+Ó,ˆÜ ×'Ñ'¨¨4°Ó5ˆÜ ×$Ñ$ Q¨¨cÓ2ˆÜ˜œBŸF™F 2›JÕ'rG   c                 ó�  — t         j                  j                  d«      }|j                  d«      }t	        j
                  |«      }t	        j                  |«      }t	        j
                  |d d«      }t	        j                  |d d«      }t        |t        j                  |«      «       t        |t        j                  |«      «       y ©Nrj  rh   r   )	r>   r‘   r’   rä   r   r«   rª   r   rq  ©r[   r›   ra   rs  rt  Úd3Úd4s          rE   Útest_logpdf_default_valuesz1TestMultivariateNormal.test_logpdf_default_valuesO  ó”   € ô �i‰i×#Ñ# DÓ)ˆØ×Ñ Ó"ˆÜ ×'Ñ'¨Ó*ˆÜ ×$Ñ$ QÓ'ˆä ×'Ñ'¨¨4°Ó3ˆÜ ×$Ñ$ Q¨¨aÓ0ˆÜ˜œBŸF™F 2›JÔ'Ü˜œBŸF™F 2›JÕ'rG   c                 óh  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |j                  d«      «      }t        j                  |||«      }t        j                  |||«      }t        |t        j                  |«      «       y rp  )
r>   r‘   r’   rä   rm  r   r¶   rµ   r   rq  rr  s          rE   Útest_logcdfz"TestMultivariateNormal.test_logcdf\  rv  rG   c                 ó�  — t         j                  j                  d«      }|j                  d«      }t	        j
                  |«      }t	        j                  |«      }t	        j
                  |d d«      }t	        j                  |d d«      }t        |t        j                  |«      «       t        |t        j                  |«      «       y rx  )	r>   r‘   r’   rä   r   r¶   rµ   r   rq  ry  s          rE   Útest_logcdf_default_valuesz1TestMultivariateNormal.test_logcdf_default_valuesf  r}  rG   c                 óR  — t         j                  j                  d«      }d}|j                  |«      }t	        d|dz   «      D ]c  }|j                  ||f«      }t        j
                  ||j                  «      }t        ||d¬«      }t        |j                  j                  |«       Œe y )Nrj  rj   r   Tr_   )r>   r‘   r’   rä   ÚrangeÚdotr˜   r   r   rš   r�   )r[   r›   rÁ   r­   Úexpected_rankrè   rÄ   Údistns           rE   Ú	test_rankz TestMultivariateNormal.test_ranks  s‹   € ä�i‰i×#Ñ# DÓ)ˆØˆØ×"Ñ" 1Ó%ˆÜ" 1 a¨!¡ež_ˆMØ×#Ñ# Q¨Ð$6Ó7ˆAÜ—&‘&˜˜AŸC™C“.ˆCÜ'¨¨cÀ$ÔGˆEÜ˜×)Ñ)×.Ñ.°Õ>ñ	 -rG   c           	      ó¦  — t         j                  j                  d«      }t        dd«      D �]¢  }|j	                  |«      }t        d|«      D �]~  }|j	                  ||f«      }t        j
                  ||j                  «      }t        j                  ||f«      }||d |…d |…f<   t        j                  |«      }|d | |d | t        |«      }	t        j
                  |	t        j
                  ||	j                  «      «      }
t        j
                  |	|«      }t        t        j                  |«      |d¬«      }t        t        j                  |«      |d¬«      }t        t        j                  |«      |
d¬«      }t        |j                  j                  |«       t        |j                  j                  |«       t        |j                  j                  |«       |j                  |d | «      }|j                  |«      }|j                  |«      }t        ||«       t        ||«       |j                  |d | «      }|j                  |«      }|j                  |«      }t        ||«       t        ||«       ||	d d …df   z   }|j                  |«      }|j                  |«      }t        |d«       t        |t         j                    «       �Œ� �Œ¥ y )Nrj  r   rh   Tr_   rl   rÊ   )r>   r‘   r’   rƒ  rä   r„  r˜   r½   ré   r   r   rš   r�   rª   r   r«   rù   )r[   r›   rÁ   rð   Úkrè   Úcov_kkÚcov_nnra   rç   Úcov_rrrñ   Údistn_kkÚdistn_nnÚdistn_rrÚpdf_kkÚpdf_nnÚpdf_rrÚ	logpdf_kkÚ	logpdf_nnÚ	logpdf_rrÚy_orthÚpdf_rr_orthÚlogpdf_rr_orths                           rE   Útest_degenerate_distributionsz4TestMultivariateNormal.test_degenerate_distributions~  sT  € Ü�i‰i×#Ñ# DÓ)ˆÜ�q˜!—ˆAØ×#Ñ# AÓ&ˆAÜ˜1˜a—[�à×'Ñ'¨¨A¨Ó/�ÜŸ™  1§3¡3›�ô Ÿ™ 1 a &Ó)�Ø!'��r˜�r˜2˜A˜2�v‘ô —H‘H˜Q“K�Ø˜"˜1˜��"�1�ô /¨qÓ1�ÜŸ™ ¤2§6¡6¨&°!·#±#Ó#6Ó7�Ü—F‘F˜1˜a“L�ô /¬r¯x©x¸«{¸FØ>BôD�ä.¬r¯x©x¸«{¸FØ>BôD�ä.¬r¯x©x¸«{¸FØ>BôD�ä˜X×0Ñ0×5Ñ5°qÔ9Ü˜X×0Ñ0×5Ñ5°qÔ9Ü˜X×0Ñ0×5Ñ5°qÔ9Ø!Ÿ™ a¨¨ eÓ,�Ø!Ÿ™ a›�Ø!Ÿ™ a›�Ü ¨Ô/Ü ¨Ô/Ø$ŸO™O¨A¨b¨q¨EÓ2�	Ø$ŸO™O¨AÓ.�	Ø$ŸO™O¨AÓ.�	Ü 	¨9Ô5Ü 	¨9Ô5ð ˜Qšq "˜u™X™�Ø&Ÿl™l¨6Ó2�Ø!)§¡°Ó!8�ô ˜[¨#Ô.Ü˜^¬b¯f©f¨WÖ5ò] !ñ rG   c                 óX  — d}t        dd«      D �]  }t        d|«      D �]  }t        j                  |«      }t        |«      d d …d |…f   }t        j                  ||j
                  «      }t        j                  |||¬«      }t        j                  |||d¬«      }t        |j                  |«       t        j                  |dkD  «      sJ ‚t        j                  |||d¬«      }	t        |	j                  |«       t        j                  |	t        j                   kD  «      r�ŒJ ‚ �Œ y )	Né
   rM   ri   r   ©r­   rÄ   r†   T)r­   rÄ   r`   rÊ   )rƒ  r>   r½   ré   r„  r˜   r   r¦   rª   r   r†   Úallr«   rù   )
r[   r‰  rÁ   ÚrÚmnrç   Úvrrò   rª   r«   s
             rE   Útest_degenerate_arrayz,TestMultivariateNormal.test_degenerate_array²  s÷   € ð ˆÜ�q˜!—ˆAÜ˜1˜a—[�Ü—X‘X˜a“[�Ü.¨qÓ1²!°R°a°R°%Ñ8�Ü—V‘V˜A˜qŸs™s“^�Ü'×+Ñ+°¸À!ÔD�ä)×-Ñ-¨a°b¸bØ=AôC�ä˜SŸX™X qÔ)Ü—v‘v˜c C™iÔ(Ð(Ð(ä,×3Ñ3°A¸BÀBØCGôI�ä˜VŸ[™[¨!Ô,Ü—v‘v˜f¬¯© wÑ.Ö/Ð/Ð/ò !ñ rG   c                 óF  — d}d}d}t        j                  ||z  «      }||z   }t        j                  ||ft        ¬«      }t        j                  ||«       d|| d …| d …f<   t        t        j                  j                  |«      d«       t        t        j                  j                  |d |…d |…f   «      t         j                  «       t        t         j                  j                  |d |…d |…f   «      d|f«       t        |«      }t        |j                  |«       y )Ng     @�@éd   rM   rë   r   r   )r>   Úexpr½   rK  r  r   rË   r¿   Údetrù   r   Úslogdetr   r�   )r[   Úlarge_total_logÚnposÚnzeroÚlarge_entryrÁ   rÄ   r™   s           rE   Útest_large_pseudo_determinantz4TestMultivariateNormal.test_large_pseudo_determinantÈ  sþ   € ð
 !ˆØˆØˆÜ—f‘f˜_¨tÑ3Ó4ˆØ�5‰LˆÜ�h‰h˜˜1�v¤UÔ+ˆÜ
×Ñ˜˜kÔ*Ø !ˆˆUˆF‰G�e�V‘WÐÑô 	”U—\‘\×%Ñ% cÓ*¨AÔ.Ü”U—\‘\×%Ñ% c¨%¨4¨%°°$°¨,Ñ&7Ó8¼"¿&¹&ÔAÜœŸ	™	×)Ñ)¨#¨e¨t¨e°U°d°U¨lÑ*;Ó<Ø˜OÐ,ô	.ô �3‹iˆÜ˜Ÿ™ oÕ6rG   c                 óF  — t         j                  j                  d«      }d}|j                  ||«      }t        j                  ||j
                  «      }|j                  |«      }|j                  dd|«      }t        j                  |||«      }t        j                  |||«      }t        d«      D ]n  }	t        d«      D ]^  }
t        j                  ||	|
f   ||«      }t        |||	|
f   «       t        j                  ||	|
f   ||«      }t        |||	|
f   d¬«       Œ` Œp y )Nrj  rj   rM   rN   çü©ñÒMbP?©Úrtol)r>   r‘   ÚRandomStateÚrandnr„  r˜   r   rª   rµ   rƒ  r   )r[   r›   rÁ   ÚdatarÄ   r­   rò   Údesired_pdfÚdesired_cdfÚiÚjÚactuals               rE   Útest_broadcastingz(TestMultivariateNormal.test_broadcastingà  s  € Ü�i‰i×#Ñ# DÓ)ˆØˆð �y‰y˜˜A‹ˆÜ�f‰f�T˜4Ÿ6™6Ó"ˆØ�y‰y˜‹|ˆð �I‰I�a˜˜AÓˆô *×-Ñ-¨a°°sÓ;ˆÜ)×-Ñ-¨a°°sÓ;ˆÜ�q–ˆAÜ˜1–X�Ü,×0Ñ0°°1°a°4±¸$ÀÓD�Ü ¨°A°a°CÑ(8Ô9ä,×0Ñ0°°1°a°4±¸$ÀÓD�Ü ¨°A°a°CÑ(8¸tÖDñ ñ rG   c                 ó.  — t        j                  ddd«      }d\  }}|dz  }t        j                  |||«      }t	        j                  |||«      }t        ||«       t        j                  |||«      }t	        j                  |||«      }t        ||«       y )Nr   rM   r›  )ç333333ó?çÍÌÌÌÌÌì?r  )r>   rA  r   rª   r   r   rµ   )r[   ra   r­   rÄ   Úscalers  rt  s          rE   Útest_normal_1Dz%TestMultivariateNormal.test_normal_1Dø  sˆ   € ô �K‰K˜˜1˜bÓ!ˆØ‰	ˆˆcØ�S‘ˆÜ�X‰X�a˜˜uÓ%ˆÜ ×$Ñ$ Q¨¨cÓ2ˆÜ˜˜BÔä�X‰X�a˜˜uÓ%ˆÜ ×$Ñ$ Q¨¨cÓ2ˆÜ˜˜BÕrG   c                 ób  — t        j                  ddg«      }t        j                  ddgddgg«      }d}d|dz
  z  }t        j                  d	d|«      }t        j                  ||«      \  }}t        j                  ||d
f«      }||d d …d d …d	f<   ||d d …d d …df<   t        j                  |||«      }	t        |	|d	¬«      }
t        |	|d¬«      }t        j                  ||d	   |d   dz  ¬«      }t        j                  ||d   |d   dz  ¬«      }t        |
|dd¬«       t        ||dd¬«       y )Nrl  g      @r  r    ç333333ã?i  ri   r   r   rM   rŠ   ©r   r   ©Úlocr¼  )r   r   ç{®Gáz„?©r¯  Úatol)
r>   rÌ   rA  Úmeshgridrî   r   rª   r4   r   r   )r[   r­   rÄ   rÁ   Údeltarà   ÚxvÚyvÚposrª   Úmargin_xÚmargin_yÚgauss_xÚgauss_ys                 rE   Útest_marginalizationz+TestMultivariateNormal.test_marginalization  s)  € ô �x‰x˜˜c˜
Ó#ˆÜ�h‰h˜˜S˜	 C¨ 9Ð-Ó.ˆØˆØ�Q˜‘U‘ˆä�K‰K˜˜1˜aÓ ˆÜ—‘˜Q Ó"‰ˆˆBÜ�h‰h˜˜1˜a�yÓ!ˆØˆŠAŠq�!ˆG‰ØˆŠAŠq�!ˆG‰Ü!×%Ñ% c¨4°Ó5ˆô ˜˜U¨Ô+ˆÜ˜˜U¨Ô+ˆô —(‘(˜1 $ q¡'°°T±¸cÑ1AÔBˆÜ—(‘(˜1 $ q¡'°°T±¸cÑ1AÔBˆÜ˜ '°¸4Õ@Ü˜ '°¸4Ö@rG   c                 óf  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |j                  d«      «      }t        ||«      }t        |j                  |«      t        j                  |||«      «       t        |j                  |«      t        j                  |||«      «       t        |j                  |«      t        j                  |||«      «       t        |j                  |«      t        j                  |||«      «       y rp  )r>   r‘   r’   rä   rm  r   r   rª   r«   rµ   r¶   )r[   r›   ra   r­   rÄ   Únorm_frozens         rE   Útest_frozenz"TestMultivariateNormal.test_frozen  sñ   € ä�i‰i×#Ñ# DÓ)ˆØ×Ñ Ó"ˆØ×"Ñ" 1Ó%ˆÜ�f‰f�S×(Ñ(¨Ó+Ó,ˆÜ)¨$°Ó4ˆÜ˜Ÿ™¨Ó*Ô,?×,CÑ,CÀAÀtÈSÓ,QÔRÜ˜×*Ñ*¨1Ó-Ü+×2Ñ2°1°d¸CÓ@ô	Bä˜Ÿ™¨Ó*Ô,?×,CÑ,CÀAÀtÈSÓ,QÔRÜ˜×*Ñ*¨1Ó-Ü+×2Ñ2°1°d¸CÓ@õ	BrG   rO   rM   r   c                 óø   — t        j                  d«      }t        j                  d«      }t        ||«      }t        j                  |j
                  |«      sJ ‚t        j                  |j                  |«      sJ ‚y )N©rM   rM   )r>   rU   rV   r   Úallcloser­   rÄ   )r[   rO   r­   Úcov_should_berÑ  s        rE   Ú2test_frozen_multivariate_normal_exposes_attributeszITestMultivariateNormal.test_frozen_multivariate_normal_exposes_attributes-  s\   € ô �w‰w�t‹}ˆÜŸ™˜q›	ˆÜ)¨$°
Ó;ˆÜ�{‰{˜;×+Ñ+¨TÔ2Ð2Ð2Ü�{‰{˜;Ÿ?™?¨MÔ:Ð:Ñ:rG   c           
      óÊ  — t         j                  j                  d«      }d}|j                  ||f«      }t        j                  ||j
                  «      }t        j                  j                  |«      \  }}t        j                  |d«      }d|d<   d|d<   t        j                  |t        j                  t        j                  |«      |j
                  «      «      }d}t        ||¬	«      }t        |j                  |¬	«      }	t        |j                  t        j                  t        j                   |d d «      «      «       t        |j                   |	j                  «       y )
Nrj  rk   r  rÉ   r   çH¯¼šò×z>rl   çñhãˆµøä>)Úcond)r>   r‘   r’   rä   r„  r˜   rË   r¿   rÀ   rø   ru   r   Úpinvr   r�   r–   rq  )
r[   r›   rÁ   ra   rÄ   rè   rç   rÛ  r™   Úpsd_pinvs
             rE   Útest_pseudodet_pinvz*TestMultivariateNormal.test_pseudodet_pinv;  s  € ô �i‰i×#Ñ# DÓ)ˆØˆØ×Ñ  A Ó'ˆÜ�f‰f�Q˜Ÿ™‹nˆÜ�|‰|× Ñ  Ó%‰ˆˆ1Ü�G‰G�A�s‹OˆØˆˆ!‰Øˆˆ"‰Ü�f‰f�QœŸ™œrŸw™w q›z¨1¯3©3Ó/Ó0ˆð ˆÜ�3˜TÔ"ˆÜ˜Ÿ™ tÔ,ˆô 	˜Ÿ™¤b§f¡f¬R¯V©V°A°c°r°F«^Ó&<Ô=ô 	˜Ÿ™˜ x×'8Ñ'8Õ9rG   c                 ó>   — g d¢g d¢g}t        t        t        |«       y )NrQ   ©rj   rh   ri   ©rf  rS   r   ©r[   rÄ   s     rE   Útest_exception_nonsquare_covz3TestMultivariateNormal.test_exception_nonsquare_covU  s   € Úš)Ð$ˆÜ”j¤$¨Õ,rG   c                 ó°   — ddgdt         j                  gg}t        t        t        |«       ddgdt         j
                  gg}t        t        t        |«       y )Nr   r   )r>   Únanrf  rS   r   rù   )r[   Úcov_nanÚcov_infs      rE   Útest_exception_nonfinite_covz3TestMultivariateNormal.test_exception_nonfinite_covY  sF   € Ø�q�6˜AœrŸv™v˜;Ð'ˆÜ”j¤$¨Ô0Ø�q�6˜AœrŸv™v˜;Ð'ˆÜ”j¤$¨Õ0rG   c                 ó>   — ddgddgg}t        t        t        |«       y )Nr   r   rl   rá  râ  s     rE   Útest_exception_non_psd_covz1TestMultivariateNormal.test_exception_non_psd_cov_  s    € Ø�1ˆv˜˜2�wÐˆÜ”j¤$¨Õ,rG   c                 ó¤  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  d«      }t         j
                  j                  }t        |t        ||«       t        |t        j                  |||«       t        |t        j                  |||«       t        |t        j                  |||«       t        |t        j                  |||«       ddgddgg}d}t        j                  t         j
                  j                  |¬«      5  t        |¬«       d d d «       y # 1 sw Y   y xY w)	Nrj  rh   )rh   rh   rÉ   rÊ   z0When `allow_singular is False`, the input matrixrK   ©rÄ   )r>   r‘   r’   rä   rU   r¿   ÚLinAlgErrorrf  r   rª   r«   rµ   r¶   rR   r
   )r[   r›   ra   r­   rÄ   ÚeÚmsgs          rE   Útest_exception_singular_covz2TestMultivariateNormal.test_exception_singular_covc  s  € Ü�i‰i×#Ñ# DÓ)ˆØ×Ñ Ó"ˆØ×"Ñ" 1Ó%ˆÜ�g‰g�f‹oˆÜ�I‰I×!Ñ!ˆÜ�aÔ,¨d°CÔ8Ü�aÔ,×0Ñ0°!°T¸3Ô?Ü�aÔ,×3Ñ3°Q¸¸cÔBÜ�aÔ,×0Ñ0°!°T¸3Ô?Ü�aÔ,×3Ñ3°Q¸¸cÔBð �Bˆx˜"˜b˜Ð"ˆØ@ˆÜ�]‰]œ2Ÿ9™9×0Ñ0¸Ö<Ü CÕ(÷ =×<Ñ<ús   Ä0EÅEc                 ó6  — t        j                  g d¢«      }t        j                  ddd«      }d|z  dz
  }|t        j                  |«      z   }t        j                  |||g«      j                  }t        j                  g d¢d«      }t        j                  g d¢g d	¢g d
¢gd«      }t        j                  |||«      }t        ||d¬«       t        j                  g d¢«      }	t        j                  |||«      }
t        |
|	d¬«       t        j                  g d¢«      }t        j                  ||g«      j                  }t        j                  ddgd«      }t        j                  ddgddggd«      }t        j                  |||«      }t        ||d¬«       y )N)g¥0Ò÷Q-?gox'‚¤V?g[S,¸� t?gäúóDB…?g³èc_.¹Œ?r   rM   rh   rN   )r   rN   rM   r*  ©r   rM   r   )rM   rh   r  )r   r  rN   ç»½×Ùß|Û=©rÅ  )gwÐk:¢E]?gë®Ì™ýZ›?g¶0Ëñµ?gLÿß8»?gA¿G*ÀÐ?gñhãˆµøô>)gòIÙ‰?gˆï—Gå­?gÆ�)å‰Ç?gÄ—h»Ú?g•™óEEå?r   rÚ  )	r>   rÌ   rA  Úcosr˜   r   rª   r   rµ   )r[   Úr_pdfra   rñ   rð   rž  r­   rÄ   rª   Úr_cdfrµ   Úr_cdf2Úr2Úmean2Úcov2Úcdf2s                   rE   Útest_R_valuesz$TestMultivariateNormal.test_R_valuesv  sa  € ô —‘ò 6ó 7ˆô �K‰K˜˜1˜aÓ ˆØ�‰E�A‰IˆØ”—‘�q“	‰MˆÜ�H‰H�a˜˜A�YÓ×!Ñ!ˆä�x‰xš	 3Ó'ˆÜ�h‰hš	¢:ªzÐ:¸CÓ@ˆä!×%Ñ% a¨¨sÓ3ˆÜ˜˜U¨Õ/ô —‘ò 6ó 7ˆô "×%Ñ% a¨¨sÓ3ˆÜ˜˜U¨Õ.ô —‘ò 3ó 4ˆô �X‰X�q˜!�fÓ×Ñˆä—‘˜!˜Q˜ Ó%ˆÜ�x‰x˜!˜Q˜ ! Q Ð(¨#Ó.ˆä"×&Ñ& r¨5°$Ó7ˆÜ˜˜f¨4Ö0rG   c                 ó°   — t        j                  d«      }t        j                  d«      }t        ||d¬«      }|j                  «       }t	        |ddg«       y )NrM   ©rM   rM   Tr_   r   )r>   r½   r   r¦   r   )r[   r­   rO   ÚmodelÚsamples        rE   Ú,test_multivariate_normal_rvs_zero_covariancezCTestMultivariateNormal.test_multivariate_normal_rvs_zero_covariance¶  sD   € Ü�x‰x˜‹{ˆÜ—X‘X˜fÓ%ˆ
Ü# D¨*ÀTÔJˆØ—‘“ˆÜ�V˜a ˜VÕ$rG   c                 óŽ  — d}d}t        j                  t        j                  |«      d|¬«      }t	        |j
                  ||f«       t        j                  d t        j                  ddgddgg«      |¬«      }t	        |j
                  |df«       t        dd¬«      }|j                  |«      }t	        |j
                  |f«       y )	Ni,  rj   r   rœ  rM   rŸ   r   rÈ   )r   r¦   r>   r½   r   r@   rÌ   )r[   ÚNr*  r  rç   s        rE   Útest_rvs_shapez%TestMultivariateNormal.test_rvs_shape½  s§   € ð ˆØˆÜ$×(Ñ(¬b¯h©h°q«k¸qÀqÔIˆÜ�V—\‘\ A q 6Ô*ä$×(Ñ(¨dÜ-/¯X©X¸¸2°wÀÀQÀÐ6HÓ-IØ./ô1ˆô 	�V—\‘\ A q 6Ô*ä Q¨AÔ.ˆØ—‘�q“ˆÜ�V—\‘\ A 5Õ)rG   c                 ó’  — t         j                  j                  d«      }d}|j                  |«      }|j                  ||«      }t        j                  ||j
                  «      }d}t        j                  ||||¬«      }t        t        j                  |j
                  «      |d¬«       t        |j                  d«      |d¬«       y )Né  rN   éˆ  r¼   rŸ   r®  r   )r>   r‘   r°  r±  r„  r˜   r   r¦   r   rÄ   r­   )r[   r›   rÁ   r­   ræ   rÄ   r†   r  s           rE   Útest_large_samplez(TestMultivariateNormal.test_large_sampleÎ  s”   € ô �i‰i×#Ñ# DÓ)ˆàˆØ�y‰y˜‹|ˆØ�I‰I�a˜‹OˆÜ�f‰f�Q˜Ÿ™‹nˆØˆä$×(Ñ(¨¨s°DÀsÔKˆäœŸ™˜vŸx™xÓ(¨#°DÕ9Ü˜Ÿ™ A›¨°4Ö8rG   c                 óh  — t         j                  j                  d«      }d}|j                  |«      }|j                  ||«      }t        j                  ||j
                  «      }t        ||«      }t        |j                  «       t        j                  ||«      «       t         j                  j                  |«      d   }d|t        j                  dt         j                  z  «      dz   z  t        j                  t        j                  |«      «      z   z  }t        ||j                  «       «       y )Nr  rN   r   r  rM   r   )r>   r‘   r°  r±  r„  r˜   r   r   r¬   r¿   Úeigrq  Úpir–   )	r[   r›   rÁ   r­   ræ   rÄ   rÅ   ÚeigsÚdesireds	            rE   Útest_entropyz#TestMultivariateNormal.test_entropyß  sÚ   € Ü�i‰i×#Ñ# DÓ)ˆàˆØ�y‰y˜‹|ˆØ�I‰I�a˜‹OˆÜ�f‰f�Q˜Ÿ™‹nˆä   sÓ+ˆô 	˜BŸJ™J›LÔ*=×*EÑ*EÀdÈCÓ*PÔQô �y‰y�}‰}˜SÓ! !Ñ$ˆØ˜1¤§¡ q¬2¯5©5¡yÓ 1°AÑ 5Ñ6¼¿¹ÄÇÁÀtÃÓ9MÑMÑNˆÜ˜G R§Z¡Z£\Õ2rG   c                 ó†   — t        j                  g d¢«      }d}t        t        j                  t	        |«      «      |«       y )N©r   r   r   r  )r>   rÌ   r   r¤  r   )r[   Úalphar  s      rE   Útest_lnBzTestMultivariateNormal.test_lnBñ  s,   € Ü—‘šÓ#ˆØˆäœBŸF™F¤4¨£;Ó/°Õ9rG   c                 ó„  — t         j                  j                  d«      }ddg}t        j                  d«      }|j                  d«      dz  dz
  }|j                  d«      dz  dz
  }t	        j
                  ||||¬«      }t	        j
                  |||«      }t	        j
                  |||«      }t        j                  |ddd	…f   |dd	d…f   fd
¬«      }	t        j                  |dd	d…f   |ddd	…f   fd
¬«      }
t	        j
                  |	||«      }t	        j
                  |
||«      }||z   |z
  |z
  }t        ||«       y )Nì   FòYc@Y r   rM   )rj   rN   rM   ri   rN   ©Úlower_limit.r   rl   rŠ   )r>   r‘   r’   rV   r   rµ   Úconcatenater   )r[   r›   r­   rÄ   r"  r#  Úcdf1Úcdf2aÚcdf2bÚab1Úab2Úcdf2ab1Úcdf2ab2rü  s                 rE   Ú test_cdf_with_lower_limit_arraysz7TestMultivariateNormal.test_cdf_with_lower_limit_arrays÷  s:  € ä�i‰i×#Ñ#Ð$7Ó8ˆØ�1ˆvˆÜ�f‰f�Q‹iˆØ�J‰J�yÓ! !Ñ# aÑ'ˆØ�J‰J�yÓ! !Ñ# aÑ'ˆä"×&Ñ& q¨$°ÀÔCˆä#×'Ñ'¨¨4°Ó5ˆÜ#×'Ñ'¨¨4°Ó5ˆÜ�n‰n˜a  Q q S ™k¨1¨S°!°A°#¨X©;Ð7¸bÔAˆÜ�n‰n˜a  Q q S ™k¨1¨S°!°A°#¨X©;Ð7¸bÔAˆÜ%×)Ñ)¨#¨t°SÓ9ˆÜ%×)Ñ)¨#¨t°SÓ9ˆØ�u‰}˜wÑ&¨Ñ0ˆä˜˜dÕ#rG   c                 óx  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }||j                  z  }|j                  d«      dz  dz
  }|j                  d«      dz  dz
  }t	        j
                  ||||¬«      }t	        ||«      j                  ||¬«      }t        j                  t	        j                  ||||¬«      «      }t        j                  t	        ||«      j                  ||¬«      «      }	t        ||d¬«       t        ||d¬«       t        |	|d¬«       y )	Nr  rN   ©rN   rN   ©rM   rN   ri   r  ç-Cëâ6?r®  )	r>   r‘   r’   r˜   r   rµ   r¤  r¶   r   )
r[   r›   r­   rÄ   r"  r#  r  rü  Úcdf3Úcdf4s
             rE   Ú%test_cdf_with_lower_limit_consistencyz<TestMultivariateNormal.test_cdf_with_lower_limit_consistency  s  € ä�i‰i×#Ñ#Ð$7Ó8ˆØ�z‰z˜!‹}ˆØ�j‰j˜Ó ˆØ�C—E‘E‰kˆØ�J‰J�vÓ˜qÑ  1Ñ$ˆØ�J‰J�vÓ˜qÑ  1Ñ$ˆä"×&Ñ& q¨$°ÀÔCˆÜ" 4¨Ó-×1Ñ1°!ÀÐ1ÓCˆÜ�v‰vÔ)×0Ñ0°°D¸#È1ÔMÓNˆÜ�v‰vÔ)¨$°Ó4×;Ñ;¸AÈ1Ð;ÓMÓNˆä˜˜d¨Õ.Ü˜˜d¨Õ.Ü˜˜d¨Ö.rG   c                 ó  — t        j                  d«      }t        j                  d«      }g d¢g d¢g d¢g d¢g}g d¢g d¢g d¢g d¢g}t        j                  g d¢«      }t	        j
                  ||||¬«      }t        ||d   |z  «       y )	NrN   r  rm   ©r   r   r   ©r   r   r   ©r   rl   rl   r   r  r   ©r>   r½   rV   rÌ   r   rµ   r   )r[   r­   rÄ   r#  r"  Úexpected_signsrµ   s          rE   Útest_cdf_signsz%TestMultivariateNormal.test_cdf_signs  so   € ä�x‰x˜‹{ˆÜ�f‰f�Q‹iˆÚš	¢9ªiÐ8ˆÚš	¢9ªiÐ8ˆäŸ™¢.Ó1ˆÜ!×%Ñ% a¨¨sÀÔBˆÜ˜˜S ™V NÑ2Õ3rG   r   rN   c                 ó¾  — t         j                  j                  d«      }|j                  ||f¬«      }|j                  |z  }|j                  |¬«      }t        ||¬«      }|j                  dd|f¬«      }|j                  |«      }t        dg|z  |¬«      }	t        |	j                  t         j                   g|z  ||z
  «      j                  }
t        ||
d¬	«       y )
Né{   r…   rÈ   éýÿÿÿrN   )r  r  r†   r   gñhãˆµøÔ>rô  )r>   r‘   r’   r   r˜   r   rµ   r2   rª   rù   rú   r   )r[   r   r›   r"  rÄ   ÚmrÍ   ra   rµ   Údist_iÚcdf_is              rE   Útest_cdf_vs_cubaturez+TestMultivariateNormal.test_cdf_vs_cubature(  s¾   € ô �i‰i×#Ñ# CÓ(ˆØ�K‰K˜d D˜\ˆKÓ*ˆØ�c‰c�A‰gˆØ�K‰K˜TˆKÓ"ˆÜ"¨¨sÔ3ˆØ�K‰K˜B Q¨d¨WˆKÓ5ˆØ�h‰h�q‹kˆÜ$¨1¨#¨d©(¸Ô<ˆÜ˜Ÿ™¤r§v¡v g Y¨t¡^°Q¸±UÓ;×DÑDˆÜ˜˜U¨Ö.rG   c                 óò   — t        dd«      D ]h  }t        j                  ||fd«      }t        j                  |d«       t	        dg|z  |¬«      }t        |j                  dg|z  «      dd|z   z  d¬«       Œj y )	NrM   é   r  rÉ   r   rì  ç-Cëâ6
?rô  )rƒ  r>   rø   r  r   r   rµ   )r[   r   rÄ   rÍ   s       rE   Útest_cdf_knownz%TestMultivariateNormal.test_cdf_known6  sq   € ä˜!˜R–LˆDÜ—'‘'˜4 ˜,¨Ó,ˆCÜ×Ñ˜S "Ô%Ü&¨ s¨4¡x°SÔ9ˆDÜØ—‘˜!˜˜T™Ó"Ø�b˜4‘iÑ Øöñ	 !rG   r›  r¥   l   ï>[= l	   âHV¬q˜KWs.Ù!)Ý c                 ól  — t         j                  j                  |«      }t        j	                  ||¬«      }|j
                  t         j                   k(  j                  «       sJ ‚t        dg|z  |j                  ¬«      }|j                  |j                  |¬«      }t        ||j                  d¬«       y ©N©r   r›   r   rÈ   ©r›   r8  rô  )r>   r‘   r’   rÿ   r  r  rù   r�  r   r  rµ   r  r   r  ©r[   r¥   r   r›   ÚcaserÍ   Úcdf_vals          rE   Útest_cdf_vs_univariatez-TestMultivariateNormal.test_cdf_vs_univariateB  sŠ   € ô �i‰i×#Ñ# DÓ)ˆÜ×.Ñ.°D¸cÐ.ÓBˆØ—‘œRŸV™V˜GÑ#×(Ñ(Ô*Ð*Ð*ä"¨¨¨D©°d·j±jÔAˆØ—(‘(˜4Ÿ9™9¨#�(Ó.ˆÜ˜ §¡°tÖ<rG   é   c                 ól  — t         j                  j                  |«      }t        j	                  ||¬«      }|j
                  t         j                   k(  j                  «       sJ ‚t        dg|z  |j                  ¬«      }|j                  |j                  |¬«      }t        ||j                  d¬«       y r;  )r>   r‘   r’   rÿ   r  r  rù   r�  r   r  rµ   r  r   r  r>  s          rE   Útest_cdf_vs_univariate_2z/TestMultivariateNormal.test_cdf_vs_univariate_2M  sŠ   € ô �i‰i×#Ñ# DÓ)ˆÜ×+Ñ+°¸3Ð+Ó?ˆØ—‘œRŸV™V˜GÑ#×(Ñ(Ô*Ð*Ð*ä"¨¨¨D©°d·j±jÔAˆØ—(‘(˜4Ÿ9™9¨#�(Ó.ˆÜ˜ §¡°tÖ<rG   rj   l	   äHV¬q˜KWs.Ù!)Ý c                 ó¤  — t         j                  j                  |«      }t        j	                  ||¬«      }|j
                  t         j                   k(  j                  «       sJ ‚t        dg|z  |j                  dd|j                  j                  d   z  ¬«      }|j                  |j                  |¬«      }t        ||j                  d¬«       y )	Nr<  r   Té'  )r­   rÄ   r`   Úmaxptsr=  r­  rô  )r>   r‘   r’   rO  rT  r  rù   r�  r   r  r@   rµ   r  r   r  r>  s          rE   Útest_cdf_vs_univariate_singularz6TestMultivariateNormal.test_cdf_vs_univariate_singularX  s¨   € ô
 �i‰i×#Ñ# DÓ)ˆÜ!×7Ñ7¸TÀsÐ7ÓKˆØ—‘œRŸV™V˜GÑ#×(Ñ(Ô*Ð*Ð*ä"¨¨¨D©°d·j±jÐQUà*0°·±×1AÑ1AÀ!Ñ1DÑ*Dô
ˆð —(‘(˜4Ÿ9™9¨#�(Ó.ˆÜ˜ §¡°tÖ<rG   c                 óŠ  — t        j                  dt        j                  g d¢«      z  «      }t        j                  |«      }d}t        j                  t        |¬«      5  t        j                  ddg|«       d d d «       t        j                  t        |¬«      5  t        ddg|«       d d d «       g d¢}t        j                  |g d¢|«      }t        t        j                  ||¬«      |«       t        j                  |g d	¢|«      }t        t        j                  |d|¬«      |«       y # 1 sw Y   ŒµxY w# 1 sw Y   Œ�xY w)
Nr   rQ   z7`cov` represents a covariance matrix in 3 dimensions...rK   r   )r  r  r  rm   rì  r  )r>   ru   rÌ   r-   rT   rR   r
   rS   r   r¬   rª   r   )r[   ÚPrš   r\   ra   rB   s         rE   Útest_mean_covz$TestMultivariateNormal.test_mean_covh  sð   € ä�G‰G�AœŸ™¢Ó+Ñ+Ó,ˆÜ ×0Ñ0°Ó3ˆ
àKˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¨¨A¨°
Ô;÷ 6ô �]‰]œ:¨WÖ5Ü  A ¨
Ô3÷ 6ò ˆÜ!×%Ñ% aª°JÓ?ˆÜÔ(×,Ñ,¨Q°JÔ?ÀÔEä!×%Ñ% aª°JÓ?ˆÜÔ(×,Ñ,¨Q°°zÔBÀCÕH÷ 6Ð5ú÷ 6Ð5ús   Á D-ÂD9Ä-D6Ä9Ec                 óš   — ddg}d}t        j                  t        |¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   rN   z`x` must be two-dimensional.rK   )rR   r
   rS   r   Úfit)r[   r²  Ú	error_msgs      rE   Útest_fit_wrong_fit_data_shapez4TestMultivariateNormal.test_fit_wrong_fit_data_shape{  s8   € Ø�1ˆvˆØ2ˆ	Ü�]‰]œ:¨YÖ7Ü×#Ñ# DÔ)÷ 8×7Ñ7ús   ¢AÁA
rÝ   )rN   rh   c                 ó@  — t         j                  j                  d«      }|j                  d|f«      }t        j                  |«      \  }}t        j
                  |d¬«      t        j                  |j                  d¬«      }}t        ||d¬«       t        ||d¬«       y )	Nì   ¼@‡,„Q| r£  r   rŠ   )ÚddofçVçž¯Ò<rô  r®  )	r>   r‘   r’   r   rM  r­   rÄ   r˜   r   )r[   rÝ   r›   ra   Úmean_estÚcov_estÚmean_refÚcov_refs           rE   Útest_fit_correctnessz+TestMultivariateNormal.test_fit_correctness�  sy   € ä�i‰i×#Ñ#Ð$4Ó5ˆØ�J‰J˜˜S�zÓ"ˆÜ/×3Ñ3°AÓ6Ñˆ�'ÜŸG™G A¨AÔ.´·±°q·s±sÀÔ0C�'ˆÜ˜ (°Õ7Ü˜ ¨uÖ5rG   c                 óÄ   — t        j                  dd«      }d}t        j                  d«      }t        j                  |||¬«      \  }}t        ||«       t        ||«       y )N)rM   r   rN   rÉ   )Úfix_meanÚfix_cov)r>   rø   Ú
atleast_2dr   rM  r   )r[   r²  Ú
mean_fixedÚ	cov_fixedr­   rÄ   s         rE   Útest_fit_both_parameters_fixedz5TestMultivariateNormal.test_fit_both_parameters_fixedŠ  sT   € Ü�w‰w�v˜qÓ!ˆØˆ
Ü—M‘M "Ó%ˆ	Ü'×+Ñ+¨D¸:Ø4=ô?‰	ˆˆcä�T˜:Ô&Ü�S˜)Õ$rG   rZ  rÿ  ©rN   c                 ó¼   — d}t        j                  t        |¬«      5  t        j                  t        j                  d«      |¬«       d d d «       y # 1 sw Y   y xY w)Nzd`fix_mean` must be a one-dimensional array the same length as the dimensionality of the vectors `x`.rK   rM   ©rZ  ©rR   r
   rS   r   rM  r>   rV   )r[   rZ  rï  s      rE   Ú"test_fit_fix_mean_input_validationz9TestMultivariateNormal.test_fit_fix_mean_input_validation“  s<   € ðCˆä�]‰]œ:¨SÖ1Ü×#Ñ#¤B§F¡F¨1£I¸ÕA÷ 2×1Ñ1úó   ž+AÁAr[  rÔ  )rN   rM   )rj   rj   c                 ó¼   — d}t        j                  t        |¬«      5  t        j                  t        j                  d«      |¬«       d d d «       y # 1 sw Y   y xY w)Nzn`fix_cov` must be a two-dimensional square array of same side length as the dimensionality of the vectors `x`.rK   rN   ©r[  rc  )r[   r[  rï  s      rE   Ú+test_fit_fix_cov_input_validation_dimensionzBTestMultivariateNormal.test_fit_fix_cov_input_validation_dimension›  s=   € ðˆô �]‰]œ:¨SÖ1Ü×#Ñ#¤B§F¡F¨1£I°wÕ?÷ 2×1Ñ1úre  c                 óò   — d}t        j                  t        |¬«      5  t        j                  ddgddgg«      }t        j                  t        j                  d«      |¬«       d d d «       y # 1 sw Y   y xY w)Nz2`fix_cov` must be symmetric positive semidefinite.rK   rÉ   rÊ   r  rM   rg  )rR   r
   rS   r>   rÌ   r   rM  rV   )r[   rN  r[  s      rE   Ú*test_fit_fix_cov_not_positive_semidefinitezATestMultivariateNormal.test_fit_fix_cov_not_positive_semidefinite¥  sT   € ØHˆ	Ü�]‰]œ:¨YÖ7Ü—h‘h  R ¨2¨s¨)Ð4Ó5ˆGÜ×#Ñ#¤B§F¡F¨1£I°wÕ?÷ 8×7Ñ7ús   žAA-Á-A6c                 óæ  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||j                  «      }t        j                  ||d|¬«      }t        j                  |«      \  }}t        j                  |||¬«      j                  «       }t        j                  ||¬«      \  }	}
t        |	|«       t        j                  ||	|
¬«      j                  «       }||k  sJ ‚|j                  d«      }dt        j                  ||j                  «      z  }|
|z   }t        j                  ||	|¬«      j                  «       }||k  sJ ‚y )	NrQ  rN   r"  r£  ©r­   rÄ   r†   r£   rÈ   rb  ç:Œ0âŽyE>)r>   r‘   r’   r„  r˜   r   r¦   rM  r«   r–   r   )r[   r›   rÂ  r{   rÄ   ÚsamplesÚ	mean_freeÚcov_freeÚ	logp_freeÚmean_fixÚcov_fixÚlogp_fixr2  Úcov_perturbedÚlogp_perturbeds                  rE   Útest_fit_fix_meanz(TestMultivariateNormal.test_fit_fix_mean«  sL  € Ü�i‰i×#Ñ#Ð$4Ó5ˆØ�j‰j˜‹mˆØ�J‰J�vÓˆÜ�f‰f�Q˜Ÿ™‹nˆÜ%×)Ñ)¨s¸À#Ø7:ô<ˆä1×5Ñ5°gÓ>Ñˆ	�8Ü'×.Ñ.¨w¸YØ3;ô=ß=@¹S»Uð 	ä/×3Ñ3°GÀcÔJÑˆ�'Ü�X˜sÔ#Ü&×-Ñ-¨g¸HØ29ô;ß;>¹3»5ð 	ð ˜)Ò#Ð#Ð#ð �J‰J�vÓˆØ”2—6‘6˜!˜QŸS™S“>Ñ!ˆØ !™ˆÜ-×4Ñ4°WØ:BØ9FôH÷ 8;±s³uð 	ð  Ò(Ð(Ñ(rG   c                 óä  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||j                  «      }t        j                  ||d|¬«      }t        j                  |«      \  }}t        j                  |||¬«      j                  «       }t        j                  ||¬«      \  }	}
t        |	t        j                  |d¬	«      «       t        |
|«       t        j                  ||	|
¬«      j                  «       }||k  sJ ‚|	d
|j                  d«      z  z   }t        j                  |||
¬«      j                  «       }||k  sJ ‚y )NrQ  rN   r"  r£  rl  rÈ   rg  r   rŠ   rm  )r>   r‘   r’   r„  r˜   r   r¦   rM  r«   r–   r   r­   )r[   r›   rÂ  r{   rÄ   rn  ro  rp  rq  rr  rs  rt  Úmean_perturbedrv  s                 rE   Útest_fit_fix_covz'TestMultivariateNormal.test_fit_fix_covÇ  sJ  € Ü�i‰i×#Ñ#Ð$4Ó5ˆØ�j‰j˜‹mˆØ�J‰J�vÓˆÜ�f‰f�Q˜Ÿ™‹nˆÜ%×)Ñ)¨s¸Ø/2ÀôFˆä1×5Ñ5°gÓ>Ñˆ	�8Ü'×.Ñ.¨w¸YØ3;ô=ß=@¹S»Uð 	ä/×3Ñ3°GÀSÔIÑˆ�'Ü�XœrŸw™w w°QÔ7Ô8Ü�W˜cÔ"Ü&×-Ñ-¨g¸HØ29ô;ß;>¹3»5ð 	ð ˜)Ò#Ð#Ð#ð " D¨3¯:©:°a«=Ñ$8Ñ8ˆÜ-×4Ñ4°WØ:HØ9@ôB÷ 8;±s³uð 	ð  Ò(Ð(Ñ(rG   N)8rÏ   rÐ   rÑ   rh  rn  ru  r|  r  r�  r‡  r™  r¡  r«  r¸  r½  rÏ  rÒ  rR   rÖ   r×   r>   rV   r.   Úfrom_diagonalr×  rÞ  rã  rè  rê  rð  rý  r  r  r	  r  r  r   r'  r.  Úslowr5  r9  rƒ  rA  rD  rH  rK  rO  rX  r_  r½   rd  rh  rj  rw  rz  rÚ   rG   rE   r`  r`  !  sà  „ òOò"ò6(ò(ò(ò(ò	?ò26òh0ò,7ò0Eò0 òAò2Bð ‡[�[×ÑØàˆB�F‰F�1‹IØ$ˆJ×$Ñ$ a¨ VÓ,ð	
óñ;óð;ò:ò4-ò1ò-ò)ò&>1ò@%ò*ò"9ò"3ò$:ò$ò(/ò$	4ð ‡[�[×ÑØ‡[�[×Ñ˜V a¨ VÓ,ñ
/ó -ó ð
/ò
ð ‡[�[×Ñ˜V¡U¨1¨b£\Ó2Ø‡[�[×Ñ˜V jÐ2TÐ%UÓVñ=ó Wó 3ð=ð ‡[�[×Ñ˜V¡U¨1¨b£\Ó2Ø‡[�[×Ñ˜V jÐ2TÐ%UÓVñ=ó Wó 3ð=ð ‡[�[×Ñ˜V¡U¨1¨b£\Ó2Ø‡[�[×Ñ˜V jÐ2TÐ%UÓVñ=ó Wó 3ð=òIò&*ð ‡[�[×Ñ˜U FÓ+ñ6ó ,ð6ò%ð ‡[�[×Ñ˜Z¨(¨"¯(©(°6Ó*:Ø*2¨"¯(©(°5«/ð*;ó <ñBó<ðBð ‡[�[×Ñ˜Y¨¨¯©°%«Ø)1¨¯©°&Ó)9Ø)1¨¯©°&Ó)9ð);ó <ñ@ó<ð@ò@ò)ó8)rG   r`  c            	       óü  — e Zd Zej                  j                  dei feddifg«      ej                  j                  ddg«      ej                  j                  ddgddgg«      ej                  j                  d	d
dg«      ej                  j                  dd
dg«      d„ «       «       «       «       «       Zej                  j                  deeg«      d„ «       Z	ej                  j                  deeg«      d„ «       Z
y)ÚTestMarginalzdist,kwargsÚdfrj   ró   rN   rû   r   rl   ÚfrozenTFrš   c                 óJ  — t         j                  j                  d«      }|j                  |«      }|j                  ||f«      }	|	|	j                  z  }
|r|t
        k(  rt        j                  d«       n|rt        j                  |
«      }
t         j                  j                  dt        |«      f«      } |||
fi |¤Ž}|r#|j                  |«      }|j                  |«      }n& |j                  |||
fi |¤Ž}|j                  |«      }t        ||||«      }t        ||«       y )Né±É«z6`multivariate_t` does not accept a `Covariance` objectrj   )r>   r‘   r’   rä   r˜   r$   rR   r�   r-   rT   r—   Úmarginalrª   rý   r   )r[   rÍ   ró   rû   r€  rš   rD   r›   rÂ  r{   r¼  ra   rò   ÚYrA   rB   s                   rE   Útest_marginal_distributionz'TestMarginal.test_marginal_distributionä  s  € ô �i‰i×#Ñ# IÓ.ˆØ×!Ñ! &Ó)ˆØ×Ñ ¨Ð 0Ó1ˆØ�A—C‘C‘ˆá˜$¤.Ò0Ü�K‰KÐPÕQÙÜ×/Ñ/°Ó6ˆEô �I‰I×%Ñ% q¬#¨j«/Ð&:Ó;ˆÙ��eÑ&˜vÑ&ˆáØ—
‘
˜:Ó&ˆAØ—%‘%˜“(‰Cà�—‘˜j¨#¨uÑ?¸Ñ?ˆAØ—%‘%˜“(ˆCä˜1˜f j°!Ó4ˆÜ˜˜SÕ!rG   rÍ   c                 ó^  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }||j                  z  } |||«      }d}t        j                  t        |¬«      5  |j                  d«       d d d «       t        j                  t        |¬«      5  |j                  g d¢«       d d d «       d}t        j                  t        |¬«      5  |j                  dd	g«       d d d «       t        j                  t        |¬«      5  |j                  d
dgg«       d d d «       d}t        j                  t        |¬«      5  |j                  ddg«       d d d «       y # 1 sw Y   ŒëxY w# 1 sw Y   ŒÀxY w# 1 sw Y   Œ“xY w# 1 sw Y   ŒgxY w# 1 sw Y   y xY w)Nr‚  rN   r"  zDimensions \[3\] are invalid .*rK   )r   r   rM   rN   z,All elements of `dimensions` must be unique.rM   rl   r   r   z*Elements of `dimensions` must be integers.r]  ç       @©	r>   r‘   r’   rä   r˜   rR   r
   rS   rƒ  )r[   rÍ   r›   r­   r{   rÄ   rò   rï  s           rE   Útest_marginal_input_validationz+TestMarginal.test_marginal_input_validation  s=  € ä�i‰i×#Ñ# IÓ.ˆØ×"Ñ" 1Ó%ˆØ×Ñ Ó'ˆØ�!—#‘#‰gˆá��s‹Oˆà0ˆÜ�]‰]œ:¨SÖ1Ø�J‰J�qŒM÷ 2ô �]‰]œ:¨SÖ1Ø�J‰J’|Ô$÷ 2ð >ˆÜ�]‰]œ:¨SÖ1Ø�J‰J˜˜2�wÔ÷ 2ô �]‰]œ:¨SÖ1Ø�J‰J˜˜A˜�xÔ ÷ 2ð <ˆÜ�]‰]œ:¨SÖ1Ø�J‰J˜˜S�zÔ"÷ 2Ð1÷ 2Ð1ú÷ 2Ð1ú÷ 2Ð1ú÷ 2Ð1ú÷ 2Ð1ús<   Á7E3Â,E?Ã%FÄFÅF#Å3E<Å?FÆFÆF Æ#F,c                 ó<  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }||j                  z  } |||«      }d}t        j                  t        |¬«      5  |j                  g «       d d d «       y # 1 sw Y   y xY w)Nr‚  rN   r"  z"Cannot marginalize all dimensions.rK   rˆ  )r[   rÍ   r›   rÂ  r{   r¼  rò   rï  s           rE   Útest_marginal_special_casesz(TestMarginal.test_marginal_special_cases  sy   € ä�i‰i×#Ñ# IÓ.ˆØ×!Ñ! !Ó$ˆØ×Ñ Ó'ˆØ�A—C‘C‘ˆá��eÓˆà3ˆÜ�]‰]œ:¨SÖ1Ø�J‰J�rŒN÷ 2×1Ñ1ús   Á7BÂBN)rÏ   rÐ   rÑ   rR   rÖ   r×   r   r$   r…  r‰  r‹  rÚ   rG   rE   r~  r~  ã  s  „ Ø‡[�[×Ñ˜]Ð.AÀ2Ð-FØ.<¸tÀQ¸iÐ-Hð-Jó Kà‡[�[×Ñ˜X¨ sÓ+Ø‡[�[×Ñ˜\¨Q¨C°"°a°¨>Ó:Ø‡[�[×Ñ˜X¨¨e }Ó5Ø‡[�[×Ñ˜\¨D°%¨=Ó9ñ"ó :ó 6ó ;ó ,óKð"ð4 ‡[�[×Ñ˜VÐ&9¸>Ð%JÓKñ#ó Lð#ð4 ‡[�[×Ñ˜VÐ&9¸>Ð%JÓKñ
ó Lñ
rG   r~  c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestMatrixNormalc           
      ó2  — d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t        t        t
        t        j                  d«      «       t        t        t
        |t        j                  d«      |«       t        t        t
        ||t        j                  d«      «       t        t        t
        |||«       t        t        t
        |||«       t        t        t
        |j                  ||«       t         j                  j                  }t        |t
        j                  ||t        j                  ||f«      «       t        |t
        j                  |t        j                  ||f«      |«       t        |t
        ||t        j                  ||f«      «       t        |t
        |t        j                  ||f«      |«       y )Nrj   rN   r¡   r  çffffffæ?©rh   rj   rN   r›  )r>   rø   re  rf  rS   r   r½   r˜   r¿   rí  r¦   rU   )r[   Únum_rowsÚnum_colsræ   r“   ÚVrî  s          rE   Útest_bad_inputzTestMatrixNormal.test_bad_input/  s‡  € àˆØˆÜ�G‰G�X˜hÐ'¨Ó-ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆô 	”j¤-´·±¸'Ó1BÔCÜ”j¤-°´B·H±H¸R³LÀ!ÔDÜ”j¤-°°A´r·x±xÀ³|ÔDÜ”j¤-°°A°qÔ9Ü”j¤-°°A°qÔ9Ü”j¤-°·±°a¸Ô;ä�I‰I×!Ñ!ˆä�aœ×*Ñ*Ø˜œBŸG™G X¨xÐ$8Ó9ô	;ä�aœ×*Ñ*ØœŸ™ (¨HÐ!5Ó6¸ô	;ô 	�aœ¨¨1¬b¯g©g°xÀÐ6JÓ.KÔLÜ�aœ¨¬2¯7©7°H¸hÐ3GÓ+HÈ!ÕLrG   c                 óÀ  — d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t        j                  ||f«      }t        j                  |df«      }t        j                  d|f«      }t        j                  |«      }	t        j                  |«      }
t        j                  d«      }t	        t        j                  |||¬«      j                  ||f«       t	        t        j                  |¬«      j                  ||f«       t	        t        j                  |¬	«      j                  |df«       t	        t        j                  |¬
«      j                  d|f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        |¬«      j                  |	«       t	        t        |¬«      j                  |
«       t	        t        |¬	«      j                  |«       t	        t        |¬	«      j                  |«       t	        t        |¬
«      j                  |«       t	        t        |¬
«      j                  |«       t	        t        ||¬«      j                  |
«       t	        t        ||¬«      j                  |	«       t	        t        ||¬«      j                  |«       y )Nrj   rN   r¡   r  r�  r   ©r­   ÚrowcovÚcolcov©r­   )r—  )r˜  )r­   r˜  )r­   r—  )r—  r˜  )r>   rø   re  r½   r   r   r¦   r@   r—  r˜  r­   )r[   r‘  r’  ræ   r“   r“  ÚZÚZrÚZcÚIrÚIcÚI1s               rE   Útest_default_inputsz$TestMatrixNormal.test_default_inputsI  s“  € àˆØˆÜ�G‰G�X˜hÐ'¨Ó-ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆÜ�H‰H�h Ð)Ó*ˆÜ�X‰X�x �mÓ$ˆÜ�X‰X�q˜(�mÓ$ˆÜ�[‰[˜Ó"ˆÜ�[‰[˜Ó"ˆÜ�[‰[˜‹^ˆä”]×&Ñ&¨A°aÀÔB×HÑHØ Ð)ô	+ä”]×&Ñ&¨AÔ.×4Ñ4Ø Ð)ô	+ä”]×&Ñ&¨aÔ0×6Ñ6Ø �]ô	$ä”]×&Ñ&¨aÔ0×6Ñ6Ø˜�]ô	$ä”]×&Ñ&¨A°aÔ8×>Ñ>Ø Ð)ô	+ä”]×&Ñ&¨A°aÔ8×>Ñ>Ø Ð)ô	+ä”]×&Ñ&¨a¸Ô:×@Ñ@Ø Ð)ô	+ô 	”]¨Ô*×1Ñ1°2Ô6Ü”]¨Ô*×1Ñ1°2Ô6Ü”]¨!Ô,×1Ñ1°2Ô6Ü”]¨!Ô,×3Ñ3°RÔ8Ü”]¨!Ô,×1Ñ1°2Ô6Ü”]¨!Ô,×3Ñ3°RÔ8Ü”]¨°!Ô4×;Ñ;¸RÔ@Ü”]¨°!Ô4×;Ñ;¸RÔ@Ü”]¨!°AÔ6×;Ñ;¸QÕ?rG   c                 ó  — d}d}t        j                  ||fd«      }t        j                  |d«      }d}t        j                  |d«      }d}t        j                  |«      }t        j                  |«      }	t        t	        |||¬«      j
                  d|z  «       t        t	        |||¬«      j                  d|	z  «       t        t	        |||¬«      j
                  d|z  «       t        t	        |||¬«      j                  d|	z  «       y )Nrj   rN   r¡   r    rŸ   r–  )r>   rø   re  r   r   r—  r˜  )
r[   r‘  r’  ræ   ÚUvÚUsÚVvÚVsr�  rž  s
             rE   Útest_covariance_expansionz*TestMatrixNormal.test_covariance_expansionp  sç   € àˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆÜ�W‰W�X˜sÓ#ˆØˆÜ�W‰W�X˜sÓ#ˆØˆä�[‰[˜Ó"ˆÜ�[‰[˜Ó"ˆä”]¨°"¸RÔ@×GÑGØ˜‘Vô	ä”]¨°"¸RÔ@×GÑGØ˜‘Vô	ä”]¨°"¸RÔ@×GÑGØ˜‘Vô	ä”]¨°"¸RÔ@×GÑGØ˜‘Võ	rG   c                 óÊ  — t        dd«      D �]S  }t        dd«      D �]@  }t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t	        |||¬«      }|j                  d¬«      }t	        j
                  |||d¬	«      }t        ||«       |j                  d¬«      }	|j                  |	«      }
t	        j                  |	|||¬«      }t        |
|«       |j                  |	«      }t	        j                  |	|||¬«      }t        ||«       �ŒC �ŒV y )
Nr   rh   r¡   r  r�  r–  rj  r¼   )r­   r—  r˜  r£   )	rƒ  r>   rø   re  r   r¦   r   rª   r«   )r[   rµ  r¶  ræ   r“   r“  r€  Úrvs1Úrvs2rò   Úpdf1Úpdf2Úlogpdf1Úlogpdf2s                 rE   Útest_frozen_matrix_normalz*TestMatrixNormal.test_frozen_matrix_normal†  s.  € Ü�q˜—ˆAÜ˜1˜Q—Z�Ü—G‘G˜Q˜q˜E 3Ó'�Øœ"Ÿ+™+ a›.Ñ(¬2¯7©7°A°a°5¸#Ó+>Ñ>�Øœ"Ÿ+™+ a›.Ñ(¬2¯7©7°A°a°5¸#Ó+>Ñ>�ä&¨A°aÀÔB�à—z‘z¨t�zÓ4�Ü$×(Ñ(¨a¸À!Ø6:ô<�ä˜T 4Ô(à—J‘J¨D�JÓ1�à—z‘z !“}�Ü$×(Ñ(¨°¸1ÀQÔG�Ü˜T 4Ô(à Ÿ-™-¨Ó*�Ü'×.Ñ.¨q°qÀÈ1ÔM�Ü˜W gÖ.ò)  ñ rG   c                 óZ  — t        dd«      D �]›  }t        dd«      D �]ˆ  }t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t	        |||¬«      }|j                  d¬«      }|j                  |«      }|j                  |«      }	|j                  «       }
|j                  j                  «       }|j                  j                  «       }t        j                  ||«      }t        j                  |||¬	«      }t        j                  |||¬	«      }t        j                  ||¬	«      }t        ||d
¬«       t        |	|d
¬«       t        |
|«       �Œ‹ �Œž y )Nr   rh   r¡   r  r�  r–  rj  r¼   rÈ   ró  r®  )rƒ  r>   rø   re  r   r¦   rª   r«   r¬   r˜   ÚflattenÚkronr   r   )r[   rµ  r¶  ræ   r“   r“  r€  rò   rª  r¬  Úentropy1ÚvecXÚvecMrÄ   r«  r­  Úentropy2s                    rE   Útest_matches_multivariatez*TestMatrixNormal.test_matches_multivariatež  sR  € ô �q˜—ˆAÜ˜1˜Q—Z�Ü—G‘G˜Q˜q˜E 3Ó'�Øœ"Ÿ+™+ a›.Ñ(¬2¯7©7°A°a°5¸#Ó+>Ñ>�Øœ"Ÿ+™+ a›.Ñ(¬2¯7©7°A°a°5¸#Ó+>Ñ>�ä&¨A°aÀÔB�Ø—J‘J¨D�JÓ1�Ø—z‘z !“}�Ø Ÿ-™-¨Ó*�Ø!Ÿ>™>Ó+�à—s‘s—{‘{“}�Ø—s‘s—{‘{“}�Ü—g‘g˜a “l�Ü*×.Ñ.¨t¸$ÀCÔH�Ü-×4Ñ4°TÀÈ#ÔN�Ü.×6Ñ6¸DÀcÔJ�ä  d°Õ7Ü ¨°uÕ=Ü ¨(Ö3ò)  ñ rG   c           	      ó0  — d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }d}t        |||¬«      }|j	                  |d¬	«      }|j	                  |d
¬	«      }	t        j
                  |t         j                  d d …d d …d d …f   |	t         j                  d d …d d …d d …f   fd¬«      }
t        |
j                  d|||f«       |j                  |
«      }t        |j                  d|f«       t        d«      D ]B  }t        |«      D ]2  }t        j                  |
||f   |||¬«      }t        ||||f   d«       Œ4 ŒD y )Nrj   rN   r¡   r  r�  r›  r–  rj  r¢   éá  r   rŠ   rM   ró  )r>   rø   re  r   r¦   r  rï   r   r@   r«   rƒ  r   )r[   r‘  r’  ræ   r“   r“  r  r€  ÚX1ÚX2rò   Úarray_logpdfrµ  r¶  Úseparate_logpdfs                  rE   Útest_array_inputz!TestMatrixNormal.test_array_input¸  sm  € àˆØˆÜ�G‰G�X˜hÐ'¨Ó-ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØˆä A¨a¸Ô:ˆØ�Z‰Z˜Q¨TˆZÓ2ˆØ�Z‰Z˜Q¨TˆZÓ2ˆÜ�N‰N˜BœrŸz™zª!ªAªaÐ/Ñ0°´B·J±JºqÂÂ1Ð4DÑ1EÐFÈQÔOˆÜ�Q—W‘W˜q ! X¨xÐ8Ô9à—}‘} QÓ'ˆÜ�\×'Ñ'¨!¨Q¨Ô0Ü�q–ˆAÜ˜1–X�Ü"/×"6Ñ"6°q¸¸1¸±vÀAØ>?Èô#K�ä °¸aÀ¸cÑ1BÀEÕJñ ñ rG   c                 óº  — d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }d}t        |||¬«      }|j	                  |d¬	«      }t        j
                  |d
¬«      }	t        |	|d¬«       t        j                  |j                  ||z  |«      j                  «      }
t        |
|d¬«       t        j                  t        j                  |dd«      j                  ||z  |«      j                  «      }t        ||d¬«       y )Nrj   rN   r¡   r  r�  éè  r–  rj  r¢   r   rŠ   rŸ   rô  r   rM   )r>   rø   re  r   r¦   r­   r   rÄ   Úreshaper˜   Úswapaxes)r[   r‘  r’  ræ   r“   r“  r  r€  rò   Úsample_meanÚsample_colcovÚsample_rowcovs               rE   Útest_momentszTestMatrixNormal.test_momentsÏ  s%  € àˆØˆÜ�G‰G�X˜hÐ'¨Ó-ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØˆä A¨a¸Ô:ˆØ�J‰J˜A¨DˆJÓ1ˆä—g‘g˜a QÔ'ˆÜ˜ Q¨SÕ1äŸ™˜qŸy™y¨¨8©°HÓ=×?Ñ?Ó@ˆÜ˜ q¨sÕ3äŸ™œrŸ{™{¨1¨Q¨qÓ1×9Ñ9Ø89¸(¹
À8ó MßMNÉQóPˆä˜ q¨sÖ3rG   c           	      óf  — t        j                  t        j                  ddgddgg«      t        j                  ddgddgg«      t        j                  ddgddgg«      t        j                  j                  d«      d¬	«      }t        j                  d
dgddggddgddggg«      }t        ||«       y )Nr   rM   rN   rj   rl   rh   r›  r   )r­   r—  r˜  r£   r†   g¡6‚ÿø?gÇ€À Üó¿g‚¡c´Ï¿@g—ì"ç'ë@gI2Í–é@g^½€Òjy%@gøDn3Á@gëž|\3@)r   r¦   r>   rÌ   r‘   r’   r   )r[   r·  Úexpecteds      rE   Útest_sampleszTestMatrixNormal.test_sampleså  sÃ   € ô ×"Ñ"Ü—‘˜A˜q˜6 A q 6Ð*Ó+Ü—8‘8˜a ˜W r¨1 gÐ.Ó/Ü—8‘8˜a ˜V a¨ WÐ-Ó.ÜŸ™×.Ñ.¨qÓ1Øô
ˆô —8‘8ØÐ!2Ð3ØÐ!1Ð2ð4àÐ!2Ð3ØÐ!1Ð2ð4ð5ó
ˆô 	˜ Õ)rG   N)rÏ   rÐ   rÑ   r”  r   r¦  r®  r¶  r½  rÅ  rÈ  rÚ   rG   rE   r�  r�  -  s.   „ òMò4%@òNò,/ò04ò4Kò.4ó,*rG   r�  c                   óì  — e Zd Zd„ Zd„ Zd„ Zej                  j                  d e	dd«      «      ej                  j                  d e	dd«      «      d„ «       «       Z
d	„ Zed
ej                  dej                  fd„«       Zedej                  dej                  defd„«       Zedej                  dej                  fd„«       Zd„ Zd„ Zd„ Zd„ Zej                  j                  dddg«      d„ «       Zy)ÚTestMatrixTc           	      ó–  — d}d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t        j                  t
        d¬«      5  t        d	¬
«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        t        j                  d«      ¬«       d d d «       t        j                  t
        d¬«      5  t        ||¬«       d d d «       t        j                  t
        d¬«      5  t        ||¬«       d d d «       t        j                  t
        d¬«      5  t        j                  t        j                  ||f«      |¬ «       d d d «       t        j                  t         j                  j                  d!¬«      5  t        j                  ||t        j                  ||f«      |«       d d d «       t        j                  t         j                  j                  d!¬«      5  t        j                  |t        j                  ||f«      ||«       d d d «       t        j                  t         j                  j                  d"¬«      5  t        ||t        j                  ||f«      |«       d d d «       t        j                  t         j                  j                  d"¬«      5  t        |t        j                  ||f«      ||«       d d d «       y # 1 sw Y   �ŒUxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒéxY w# 1 sw Y   �Œ³xY w# 1 sw Y   �Œ}xY w# 1 sw Y   �ŒGxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÛxY w# 1 sw Y   �Œ¥xY w# 1 sw Y   �Œ�xY w# 1 sw Y   �Œ]xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÂxY w# 1 sw Y   �ŒjxY w# 1 sw Y   �ŒxY w# 1 sw Y   y xY w)#Nrj   rN   rh   r¡   r  r�  z$Degrees of freedom must be positive.rK   r   ©r  zArray `mean` must be 2D.r�  r™  zArray `mean` has invalid shape.)rj   rN   r   z%Array `row_spread` has invalid shape.©r   r   ©Ú
row_spreadz2Array `row_spread` must be a scalar or a 2D array.rQ   z"Array `row_spread` must be square.©r   rM   z%Array `col_spread` has invalid shape.©Ú
col_spreadz2Array `col_spread` must be a scalar or a 2D array.z"Array `col_spread` must be square.zAArrays `mean` and `row_spread` must have the same number of rows.©r­   rÏ  zDArrays `mean` and `col_spread` must have the same number of columns.©r­   rÒ  zIThe shape of array `X` is not conformal with the distribution parameters.)rò   r­   z82-th leading minor of the array is not positive definitezUWhen `allow_singular is False`, the input matrix must be symmetric positive definite.)r>   rø   re  rR   r
   rS   r,   r½   rU   rª   r¿   rí  r¦   )r[   r‘  r’  r  ræ   r“   r“  s          rE   r”  zTestMatrixT.test_bad_inputú  s  € àˆØˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆô �]‰]œ:Ð-SÖTÜ˜�N÷ Uô �]‰]œ:Ð-GÖHÜœ"Ÿ(™( 9Ó-Õ.÷ Iô �]‰]œ:Ð-NÖOÜœ"Ÿ(™( 9Ó-Õ.÷ Pô �]‰]œ:Ð-TÖUÜ¤§¡¨£Õ0÷ Vô �]‰]ÜÐRö
ô ¤§¡¨	Ó 2Õ3÷
ô
 �]‰]œ:Ð-QÖRÜ¤§¡¨£Õ0÷ Sô �]‰]œ:Ð-TÖUÜ¤§¡¨£Õ0÷ Vô �]‰]ÜÐRö
ô ¤§¡¨	Ó 2Õ3÷
ô
 �]‰]œ:Ð-QÖRÜ¤§¡¨£Õ0÷ Sô �]‰]Üðö
ô
 ˜!¨Õ*÷
ô �]‰]Üðö
ô
 ˜!¨Õ*÷
ô �]‰]Üð+ö
ô
 �L‰Lœ2Ÿ8™8 X¨xÐ$8Ó9ÀÕB÷
ô �]‰]Ü�I‰I×!Ñ!ØLö
ô �L‰L˜˜AœrŸw™w¨°(Ð';Ó<¸bÔA÷	
ô �]‰]Ü�I‰I×!Ñ!ØLö
ô �L‰L˜œBŸG™G X¨xÐ$8Ó9¸1¸bÔA÷	
ô �]‰]Ü�I‰I×!Ñ!ð+ö
ô
 �Q˜œ2Ÿ7™7 H¨hÐ#7Ó8¸"Ô=÷
ô �]‰]Ü�I‰I×!Ñ!ð+ö
ô
 �QœŸ™ ¨8Ð 4Ó5°q¸"Ô=÷
ð 
÷[ UÑTú÷ IÑHú÷ PÑOú÷ VÑUú÷
ñ 
ú÷
 SÑRú÷ VÑUú÷
ñ 
ú÷
 SÑRú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ð 
úsÀ   ÂS<Ã T	Ä TÅ T#Æ T0Ç T=È U
É UÊ! U$Ë$U1ÌU>Í-VÎ*.VÐ.V%Ñ4$V2Ó$V?Ó<TÔ	TÔT Ô#T-Ô0T:Ô=UÕ
UÕU!Õ$U.Õ1U;Õ>VÖVÖV"Ö%V/Ö2V<Ö?Wc                 ó  — d}d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }t        j                  ||f«      }t        j                  |df«      }t        j                  d|f«      }	t        j                  |«      }
t        j                  |«      }t        j                  d«      }d}t	        t        j                  ||||¬«      j                  ||f«       t	        t        j                  |¬	«      j                  ||f«       t	        t        j                  |¬
«      j                  |df«       t	        t        j                  |¬«      j                  d|f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        j                  ||¬«      j                  ||f«       t	        t        «       j                  |«       t	        t        |¬	«      j                  |
«       t	        t        |¬	«      j                  |«       t	        t        |¬
«      j                  |«       t	        t        |¬
«      j                  |«       t	        t        |¬«      j                  |	«       t	        t        |¬«      j                  |«       t	        t        ||¬«      j                  |«       t	        t        ||¬«      j                  |
«       t	        t        |||¬«      j                  |«       y )Nrj   rN   rh   r¡   r  r�  r   ©r­   rÏ  rÒ  r  r™  rÎ  rÑ  rÔ  rÓ  )rÏ  rÒ  )rÏ  rÒ  r  )r>   rø   re  r½   r   r,   r¦   r@   r  rÏ  rÒ  r­   )r[   r‘  r’  r  ræ   r“   r“  rš  r›  rœ  r�  rž  rŸ  Ú	dfdefaults                 rE   r   zTestMatrixT.test_default_inputsX  s—  € àˆØˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆÜ�H‰H�h Ð)Ó*ˆÜ�X‰X�x �mÓ$ˆÜ�X‰X�q˜(�mÓ$ˆÜ�[‰[˜Ó"ˆÜ�[‰[˜Ó"ˆÜ�[‰[˜‹^ˆØˆ	äÜ�L‰L˜a¨A¸!ÀÔC×IÑIØ�xÐ ô	
ô 	”X—\‘\ qÔ)×/Ñ/°(¸HÐ1EÔFÜ”X—\‘\¨QÔ/×5Ñ5¸À!°}ÔEÜ”X—\‘\¨QÔ/×5Ñ5¸¸8°}ÔEÜ”X—\‘\ q°QÔ7×=Ñ=ÀÈ(Ð?SÔTÜ”X—\‘\ q°QÔ7×=Ñ=ÀÈ(Ð?SÔTÜÜ�L‰L A°!Ô4×:Ñ:¸XÀxÐ<Pô	
ô 	”X“Z—]‘] IÔ.Ü”X 1Ô%×0Ñ0°"Ô5Ü”X 1Ô%×0Ñ0°"Ô5Ü”X¨Ô+×0Ñ0°"Ô5Ü”X¨Ô+×6Ñ6¸Ô;Ü”X¨Ô+×0Ñ0°"Ô5Ü”X¨Ô+×6Ñ6¸Ô;Ü”X 1°Ô3×>Ñ>ÀÔCÜ”X 1°Ô3×>Ñ>ÀÔCÜ”X¨°q¸RÔ@×EÑEÀqÕIrG   c                 ó$  — d}d}d}t        j                  ||fd«      }t        j                  |d«      }d}t        j                  |d«      }d}t        j                  |«      }	t        j                  |«      }
t        t	        ||||¬«      j
                  d|	z  «       t        t	        ||||¬«      j                  d|
z  «       t        t	        ||||¬«      j
                  d|	z  «       t        t	        ||||¬«      j                  d|
z  «       y )Nrj   rN   r   r¡   r    rŸ   rÖ  )r>   rø   re  r   r,   rÏ  rÒ  )r[   r‘  r’  r  ræ   r¢  r£  r¤  r¥  r�  rž  s              rE   r¦  z%TestMatrixT.test_covariance_expansion€  sþ   € àˆØˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆÜ�W‰W�X˜sÓ#ˆØˆÜ�W‰W�X˜sÓ#ˆØˆä�[‰[˜Ó"ˆÜ�[‰[˜Ó"ˆäÜ˜!¨°r¸bÔA×LÑLÈcÐTVÉhô	
ô 	Ü˜!¨°r¸bÔA×LÑLÈcÐTVÉhô	
ô 	Ü˜!¨°r¸bÔA×LÑLÈcÐTVÉhô	
ô 	Ü˜!¨°r¸bÔA×LÑLÈcÐTVÉhõ	
rG   rµ  r   rj   r¶  c                 ó�  — t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }||z   }t        ||||¬«      }|j	                  d¬«      }t        j                  ||||d¬«      }	t        ||	«       |j	                  d¬«      }
|j                  |
«      }t        j                  |
||||¬«      }t        ||«       |j                  |
«      }t        j                  |
||||¬«      }t        ||«       y )Nr¡   r  r�  rÖ  rj  r¼   )r­   rÏ  rÒ  r  r£   )r>   rø   re  r,   r¦   r   rª   r«   )r[   rµ  r¶  ræ   r“   r“  r  r€  r¨  r©  rò   rª  r«  r¬  r­  s                  rE   Útest_frozen_matrix_tz TestMatrixT.test_frozen_matrix_t›  s  € ô �G‰G�Q˜�F˜CÓ ˆØ”"—+‘+˜a“.Ñ ¤2§7¡7¨A¨q¨6°3Ó#7Ñ7ˆØ”"—+‘+˜a“.Ñ ¤2§7¡7¨A¨q¨6°3Ó#7Ñ7ˆØ�‰Uˆä˜q¨Q¸1ÀÔDˆà�z‰z tˆzÓ,ˆÜ�|‰|Ø˜q¨Q°2ÀDô
ˆô 	�T˜4Ô à�J‰J DˆJÓ)ˆà�z‰z˜!‹}ˆÜ�|‰|˜A A°!ÀÀbÔIˆÜ�T˜4Ô à—-‘- Ó"ˆÜ—/‘/ !¨!¸ÀaÈBÔOˆÜ�W˜gÕ&rG   c           	      ó<  — d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }d}d}t        ||||¬«      }|j	                  |d	¬
«      }	|j	                  |d¬
«      }
t        j
                  |	t         j                  d d …d d …d d …f   |
t         j                  d d …d d …d d …f   fd¬«      }t        |j                  d|||f«       |j                  |«      }|j                  }t        |d|f«       t        d«      D ]C  }t        |«      D ]3  }t        j                  |||f   ||||¬«      }t        ||||f   d«       Œ5 ŒE y )Nrj   rN   r¡   r  r�  r   r›  rÖ  rj  r¢   r¸  r   rŠ   rM   ró  )r>   rø   re  r,   r¦   r  rï   r   r@   r«   rƒ  r   )r[   r‘  r’  ræ   r“   r“  r  r  r€  r¹  rº  rò   r»  Úlogpdf_shaperµ  r¶  r¼  s                    rE   r½  zTestMatrixT.test_array_input¶  s{  € àˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØˆØˆä˜q¨Q¸1ÀÔDˆØ�Z‰Z˜Q¨TˆZÓ2ˆØ�Z‰Z˜Q¨TˆZÓ2ˆÜ�N‰N˜BœrŸz™zª1ªa²Ð2Ñ3°R¼¿
¹
ÂAÂqÊ!Ð8KÑ5LÐMÐTUÔVˆÜ�Q—W‘W˜q ! X¨xÐ8Ô9à—}‘} QÓ'ˆØ#×)Ñ)ˆÜ�\ A q 6Ô*Ü�q–ˆAÜ˜1–X�Ü"*§/¡/Ø�a˜�d‘G !°¸aÀBô#�ô   °¸aÀ¸dÑ1CÀUÕKñ	 ñ rG   Úvec1Úvec2c                 óà   — t         j                  j                  | |z
  «      dz  }t         j                  j                  | «      dz  t         j                  j                  |«      dz  z   }||z  S )NrM   )r>   r¿   r   )rÝ  rÞ  Ú	numeratorÚdenominators       rE   Úrelative_errorzTestMatrixT.relative_errorÐ  sV   € ä—I‘I—N‘N 4¨$¡;Ó/°1Ñ4ˆ	Ü—i‘i—n‘n TÓ*¨aÑ/´"·)±)·.±.ÀÓ2FÈ!Ñ2KÑKˆØ˜;Ñ&Ð&rG   Úmat_trueÚmat_estÚreturnc                 ó|  — t        | d¬«      }t        |d¬«      }t        j                  |j                  «      dk  s"t        j                  |j                  «      dk  rt        j                  S t        j
                  |j                  | z  «      }|j                  |j                  z
  }||z   t        | «      z
  dz  S )NFr_   r   rM   )r   r>   r¤  r�   rù   ÚtracerÜ  r—   )rã  rä  Úmat_true_psdÚmat_est_psdÚ
trace_termÚlog_detratios         rE   Úmatrix_divergencezTestMatrixT.matrix_divergenceÖ  s™   € ä˜H°UÔ;ˆÜ˜7°5Ô9ˆÜ�F‰F�;×'Ñ'Ó(¨AÒ-´2·6±6¸,×:OÑ:OÓ3PÐTUÒ3UÜ—6‘6ˆMÜ—X‘X˜k×.Ñ.°Ñ9Ó:ˆ
Ø"×+Ñ+¨l×.CÑ.CÑCˆØ˜\Ñ)¬C°«MÑ9¸QÑ>Ð>rG   Úa_matc                 óp   — | j                   dk(  sJ ‚| j                  j                  | j                  f«      S )zÀ
        For an (m,n) array `a_mat` the output `vec(a_mat)` is an (m*n, 1)
        array formed by stacking the columns of `a_mat` in the order in
        which they occur in `a_mat`.
        rM   )r   r˜   rÀ  r†   )rí  s    rE   ÚveczTestMatrixT.vecà  s-   € ð �z‰z˜QŠÐˆØ�w‰w�‰ §
¡
˜}Ó-Ð-rG   c           
      óÀ  — d}d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }d}d}t        ||||¬	«      }	|	j	                  |d
¬«      }
| j                  ||
j                  d¬«      «      }t        |d|¬«       t        j                  ||«      |dz
  z  }t        j                  t        j                  |
D �cg c]  }| j                  |«      ‘Œ c}«      d¬«      }| j                  ||«      }t        |d|¬«       yc c}w )a*  
        Gupta and Nagar (2000) Theorem 4.3.1 (p.135)
        --------------------------------------------
        The covariance of the vectorized matrix variate t-distribution equals
        $ (V \otimes U) / (\text{df} - 2)$, where $\otimes$
        denotes the usual Kronecker product.
        rh   rj   rN   r¡   r  r�  rF  rŸ   rÖ  é*   r¢   r   rŠ   rô  rM   F)ÚrowvarN)r>   rø   re  r,   r¦   râ  r­   rF   r±  rÄ   rÌ   rï  rì  )r[   r  r‘  r’  ræ   r“   r“  r  rÅ  r€  rò   ÚrelerrÚcov_vec_truera   Úcov_vec_rvsÚkls                   rE   rÅ  zTestMatrixT.test_momentsê  s7  € ð ˆØˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØˆØˆä˜q¨Q¸1ÀÔDˆØ�J‰J˜A¨BˆJÓ/ˆà×$Ñ$ Q¨¯©°A¨«Ó7ˆÜ�V˜Q TÕ*ä—w‘w˜q !“}¨¨Q©Ñ/ˆÜ—f‘fœRŸX™X¹AÓ&>¹A°q t§x¡x°¥{¸AÑ&>Ó?ÈÔNˆØ×#Ñ# L°+Ó>ˆÜ�R˜ Ö&ùò '?s   ÄEc                 óè  — d}t        j                  g d¢g d¢g«      }t        j                  ddgddgg«      }t        j                  g d¢g d¢g d¢g«      }d	}t        j                  g d
¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg
«      }t        j                  g d¢«      }t        j                  |||||¬«      }t	        |||¬ «       y!)"u…  
        Test values generated from Julia.

        Dockerfile
        ----------
        FROM julia:1.11.5
        RUN julia -e 'using Pkg; Pkg.add("Distributions"); Pkg.add("PDMats")'
        WORKDIR /usr/src

        Commands
        --------
        using DelimitedFiles
        using Distributions
        using PDMats
        using Random
        Random.seed!(42)
        Î½ = 5
        M = [1 2 3; 4 5 6]
        Î£ = PDMats.PDMat([1 0.5; 0.5 1])
        Î© = PDMats.PDMat([1 0.3 0.2; 0.3 1 0.4; 0.2 0.4 1])
        dist = MatrixTDist(Î½, M, Î£, Î©)
        samples = rand(dist, 10)
        pdfs = [pdf(dist, s) for s in samples]
        rh   rQ   rà  r   r  ©r   r¡   r    ©r¡   r   çš™™™™™Ù?©r    rú  r   ró  )gF=‘X/¯î?g24£…¾¡@g·oT}@)gqîZ¦H@@g³bžÏµ@gÔ€ ‡+@)gµ�¼ø}—ê?g
„3Æ)¶@gÞ÷Œ{
@)gdb,àÎ@gaª½´žl@g7p…ÆÑœ@)gÐ2œ!'ù?g©ì-Z,ü?gÑÊR`:@)gU53 @gÍÞ°¾ÃM@gNóu:ÚN@)gÎº¨ãðú?gÀì/—Ýh@gNìÓ7@)gQdïê@g¥”¡öNH@gžVÕ×·�@)gÞú+±]Ü?g]jÚ¥“ @g~¢dó\@)gnû‘_@g;rì<oU@g£�¼�Õ@)gÔtÄÊñÓ?gž�ëúšò?göØÏQ@)gˆ�²ú¢@gF:j.Ï@gs
‘çñ@)g<àå2î?ggÕÿâÇþ?g•0©t@)gŸLµ:á@gõBC‘ÀŽ@g€#AH:Â@)gþÏÀo>Î÷?g^°V|ñþ?g&÷*¨Ss@)g\Þ3¦g@gMnÐß?W@gìæ¥ÑÕó@)g-f¸Ä
ð?gp>;F0ö?g=E‚³l @)g¨"òeÕ}@gÜRÈW;ë@gb´æåí@)gA¿Û½ö?gßýjúÛ @g�l©<@)gs ’Í8Á@gî- ƒX@gÇ¶øÑ@)
g¹½€åO2µ?g•ªÈÇê·¾?gôá¼sÃ?gÓfè^¨m?gž‘f¶å‘²?g Ù‹D–¦›?gSˆ1ß?g”�“ñ_Á?gC „]ä‹?gC�' Ó¡?rÖ  r®  N©r>   rÌ   r,   rª   r   )	r[   r  ræ   r“   r“  r¯  Ú	samples_jÚpdfs_jÚpdfs_pys	            rE   Útest_pdf_against_juliaz"TestMatrixT.test_pdf_against_julia  s,  € ð4 ˆÜ�H‰H’i¢Ð+Ó,ˆÜ�H‰H�q˜#�h  a Ð)Ó*ˆÜ�H‰H’m¢]²MÐBÓCˆàˆä—H‘Hò NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMðò
 NÚMððK)ó+
ˆ	ôZ —‘òó
ˆô —,‘,˜y¨q¸QÈ1ÐQSÔTˆä˜ ¨dÖ3rG   c                 óè  — d}t        j                  g d¢g d¢g«      }t        j                  ddgddgg«      }t        j                  g d¢g d¢g d¢g«      }d	}t        j                  g d
¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg d¢g d¢gg
«      }t        j                  g d¢«      }t        j                  |||||¬«      }t	        |||¬ «       y!)"a÷  
        Test values generated from Mathematica 13.0.0 for Linux x86 (64-bit)
        Release ID 13.0.0.0 (7522564, 2021120311723), Patch Level 0

        mu={{1,2,3},{4,5,6}};
        sigma={{1,0.5},{0.5,1}};
        omega={{1,0.3,0.2},{0.3,1,0.4},{0.2,0.4,1}};
        df=5;
        sampleSize=10;
        SeedRandom[42];
        dist=MatrixTDistribution[mu,sigma,omega,df];
        samples=SetPrecision[RandomVariate[dist,sampleSize],15];
        pdfs=SetPrecision[PDF[dist,#]&/@samples,15];
        rh   rQ   rà  r   r  rø  rù  rû  ró  )gƒ¸ìí¥zä?gr×ò	®_@gšùµJ›@)g]rÈÔ@gyEˆ3@g»¨©�@)g(NÊJ2£ò?g!™AÛ5@gNf¨A@@)go]…þÇM@g€n�}”Ï@gP¨¹õ¶¥@)gÂm¤ãêð?gT‰,æ£ @gG¤6�}@@)gös>ÍUò@g†à¹­¦Ÿ@g×ìçîO@)gÂK�1ÑÌé?gÞõR]i;@gr½=ŠÉu@)g^Þâ~È@gè:’¥Y@g©Ì#b4@)g ’µ@ˆÜ?gä{/ìßÊ	@gý3«OÒ£@)gÉ×CÊ¶œ@gR¡'‡øA@gXß^À]Á@)gú`×Zjí?gnæ-Ãÿ@g�á¥é ö@)g`í—De@g•ÌÌ·‚@g^´„|s9@)gM_né* @gq5)Dö?g«0»Œšé@)g}[½ÐK@g^N‡f÷i@gÐ1¯XÛ@)g6h é&õ?g!¨,˜,Ñ@gMW›–«x@)gBeu°y@gš5�ûÍq@g°�Ì<º@)gx,(Ô.÷?gÔ¯Ø Gn @gÂŠ	<@)g÷æPud@g\�@gÏ"öØm¸@)gås”V¹ð?g%egÕSú?gO™Ä…qF
@)gÍk°W0@g)ã©HP@gT†’Ý4@)
gòˆ*˜˜îµ?gVwÊx¿s?gŽ@^`!»?gÚçxµÖMÆ?gµÏ|CØ¯?gK(j‘ƒÏ›?gì=³z€h?g,ð‚Nêv?gU=	Dhš?gÅioq!Æ¾?rÖ  r®  Nrü  )	r[   r  ræ   r“   r“  r¯  Ú	samples_mÚpdfs_mrÿ  s	            rE   Útest_pdf_against_mathematicaz(TestMatrixT.test_pdf_against_mathematicah  s,  € ð  ˆÜ�H‰H’i¢Ð+Ó,ˆÜ�H‰H�q˜#�h  a Ð)Ó*ˆÜ�H‰H’m¢]²MÐBÓCˆàˆä—H‘Hò NÚMðò
 NÚMðò
 MÚMðò
 MÚLðò
 NÚMðò
 NÚMðò
 NÚLðò
 NÚLðò
 NÚLðò
 NÚMððK)ó+
ˆ	ôZ —‘òó
ˆô —,‘,˜y¨q¸QÈ1ÐQSÔTˆä˜ ¨dÖ3rG   c                 ó˜  — d}d}d}t        j                  ||fd«      }dt        j                  |«      z  t        j                  ||fd«      z   }dt        j                  |«      z  t        j                  ||fd«      z   }d}d}t        ||||¬	«      }	|	j	                  |d
¬«      }
|
j                  d«      }t        |j                  |||¬	«      }|j	                  |d
¬«      }|j                  d«      }t        |||¬«       t        |j                  ||¬«       t        ||j                  |¬«       t        |j                  ||¬«       y )Nrh   rj   rN   r¡   r  r�  rF  çš™™™™™©?rÖ  rñ  r¢   r   r®  )r>   rø   re  r,   r¦   r­   r˜   r   )r[   r  r‘  r’  ræ   r“   r“  r  r¯  r€  rò   r2  ÚfrozenTÚXTÚmTs                  rE   rÈ  zTestMatrixT.test_samples¿  s"  € ØˆØˆØˆÜ�G‰G�X˜xÐ(¨#Ó.ˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØ”"—+‘+˜hÓ'Ñ'¬"¯'©'°8¸XÐ2FÈÓ*LÑLˆØˆØˆô
 ˜q¨Q¸1ÀÔDˆØ�J‰J˜A¨BˆJÓ/ˆØ�F‰F�1‹Iˆä §¡°¸aÀBÔGˆØ�[‰[˜a¨bˆ[Ó1ˆØ�W‰W�Q‹Zˆô 	˜˜1 4Õ(Ü˜Ÿ™˜R dÕ+Ü˜˜2Ÿ4™4 dÕ+Ü˜Ÿ™˜R dÖ+rG   Ú
shape_caseÚrowÚcolc                 óä  — d}d}|dk(  r*d}d}d}t        j                  g d¢g d¢g d¢g«      }||z  }n)d}d}t        j                  g d¢g d¢g d¢g«      }d}||z  }t        j                  ||fd	«      }	t        |	|||¬
«      }
t	        |	j                  «       ||¬«      }|
j                  dd¬«      }|
j                  |«      }|j                  |j                  «       «      }t        |||¬«       y)a8  
        Gupta and Nagar (2000) p.133f
        When the number of rows or the number of columns equals 1 the
        matrix t reduces to the multivariate t. But, the matrix t
        is parameterized by raw 2nd moments whereas the multivariate t is
        parameterized by a covariance (raw 2nd central moment normalized by df).
        We can see the difference by comparing the author's notation
            $t_p(n, \omega, \mathbf{\mu}, \Sigma)$
        for a matrix t with a single column
        to the formula (4.1.2) for the PDF of the multivariate t.
        ç�íµ ÷Æ°>rh   r  r   rN   rø  rù  rû  r¡   rÖ  ©rÂ  r@   r  rñ  r¢   r®  N)	r>   rÌ   rø   r,   r$   r©   r¦   r«   r   )r[   r
  r¯  r  r‘  r’  rÏ  rÒ  r@   ræ   Út_matÚt_mvtrò   Út_mat_logpdfÚt_mvt_logpdfs                  rE   Útest_against_multivariate_tz'TestMatrixT.test_against_multivariate_tà  sí   € ð ˆØˆà˜ÒØˆHØˆHØˆJÜŸ™¢=²-ÂÐ"OÓPˆJØ ‘O‰EàˆHØˆHÜŸ™¢=²-ÂÐ"OÓPˆJØˆJØ ‘OˆEä�G‰G�X˜xÐ(¨#Ó.ˆäØ˜z°jÀRô
ˆô  1§9¡9£;°eÀÔCˆà�I‰I˜1¨2ˆIÓ.ˆØ—|‘| A“ˆØ—|‘| A§I¡I£KÓ0ˆÜ˜ l¸Ö>rG   N)rÏ   rÐ   rÑ   r”  r   r¦  rR   rÖ   r×   rƒ  rÚ  r½  Ústaticmethodr>   rJ  râ  rK  rì  rï  rÅ  r   r  rÈ  r  rÚ   rG   rE   rÊ  rÊ  ø  s,  „ ò\>ò|&JòP
ð6 ‡[�[×Ñ˜S¡%¨¨1£+Ó.Ø‡[�[×Ñ˜S¡%¨¨1£+Ó.ñ'ó /ó /ð'ò2Lð4 ð'˜RŸZ™Zð '¨r¯z©zò 'ó ð'ð
 ð? B§J¡Jð ?¸¿¹ð ?Èò ?ó ð?ð ð.�2—:‘:ð . "§*¡*ò .ó ð.ò'ò:_4òBU4òn,ðB ‡[�[×Ñ˜\¨E°5¨>Ó:ñ&?ó ;ñ&?rG   rÊ  c                   ó~   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestDirichletc           	      óþ  — t         j                  j                  d«      }|j                  dd«      }|j	                  dd|«      }t        |«      }t        |j                  «       t        j                  |«      «       t        |j                  «       t        j                  |«      «       t        |j                  «       t        j                  |«      «       d}t        |«      D ]—  }|j	                  dd|«      }|t        j                  |«      z  }t        |j                  |d d «      t        j                  |d d |«      «       t        |j                  |d d «      t        j                  |d d |«      «       Œ™ y ©Nr  r   é    ç•Ö&è.>r£  r›  rl   )r>   r‘   r’   Úintegersr   r   r   Úvarr­   r¬   rƒ  r–   rª   r«   ©r[   r›   rÁ   r  r*  Ú	num_testsrµ  ra   s           rE   Útest_frozen_dirichletz#TestDirichlet.test_frozen_dirichlet  s  € Ü�i‰i×#Ñ# DÓ)ˆà�L‰L˜˜BÓˆØ—‘˜F C¨Ó+ˆä�eÓˆä�Q—U‘U“WœiŸm™m¨EÓ2Ô3Ü�Q—V‘V“XœyŸ~™~¨eÓ4Ô5Ü�Q—Y‘Y“[¤)×"3Ñ"3°EÓ":Ô;Øˆ	Ü�yÖ!ˆAØ—‘˜F C¨Ó+ˆAØ”—‘˜“‰NˆAÜ˜Ÿ™˜q  "˜v›¬	¯©°a¸¸°f¸eÓ(DÔEÜ˜Ÿ™ ! C R &Ó)¬9×+;Ñ+;¸A¸c¸r¸FÀEÓ+JÕKñ	 "rG   c                 óN  — t         j                  j                  d«      }t        j                  g d¢«      }|j	                  |d¬«      }t        |j                  d«       t        t        t        j                  ||«       t        t        t        j                  ||«       t	        j                  |j                  |«       t	        j                  |j                  d d |«       t	        j                  |j                  |«       t	        j                  |j                  d d |«       y )Nr  ©rÉ   r‡  ç      @rk   r…   )rk   rN   rl   )r>   r‘   r’   rÌ   r   r   r@   rf  rS   rª   r«   r˜   ©r[   r›   r  ra   s       rE   Ú"test_numpy_rvs_shape_compatibilityz0TestDirichlet.test_numpy_rvs_shape_compatibility  sÂ   € Ü�i‰i×#Ñ# DÓ)ˆÜ—‘šÓ)ˆØ�M‰M˜% aˆMÓ(ˆÜ�Q—W‘W˜fÔ%Ü”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÔ=Ü�‰�a—c‘c˜5Ô!Ü�‰�a—c‘c˜#˜2�h Ô&Ü×Ñ˜Ÿ™˜eÔ$Ü×Ñ˜Ÿ™˜S˜b˜ 5Õ)rG   c                 ó,  — t         j                  j                  d«      }g d¢}|j                  t        j                  d|«      d¬«      j
                  }t        t        t        j                  ||«       t        t        t        j                  ||«       y )Nr  )rÉ   rÊ   r#  r  rk   r…   ©
r>   r‘   r’   r   Úmaximumr˜   rf  rS   rª   r«   r$  s       rE   Útest_alpha_with_zerosz#TestDirichlet.test_alpha_with_zeros*  sd   € Ü�i‰i×#Ñ# DÓ)ˆÚˆà�M‰Mœ"Ÿ*™* T¨5Ó1¸ˆMÓ:×<Ñ<ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 ó,  — t         j                  j                  d«      }g d¢}|j                  t        j                  d|«      d¬«      j
                  }t        t        t        j                  ||«       t        t        t        j                  ||«       y )Nr  )rÉ   g       Àr#  r  rk   r…   r'  r$  s       rE   Ú test_alpha_with_negative_entriesz.TestDirichlet.test_alpha_with_negative_entries2  sd   € Ü�i‰i×#Ñ# DÓ)ˆÚ ˆà�M‰Mœ"Ÿ*™* T¨5Ó1¸ˆMÓ:×<Ñ<ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óŒ  — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  ||«       t        j                  ||«       t        j                  g d¢«      }t        t        j                  ||«      d«       t        t        j                  ||«      t        j                  d«      «       y )N©rÉ   r‡  r#  ç      @©rŸ   rÊ   r    r�  )rÉ   rÉ   rÉ   rÉ   ri   )r>   rÌ   r   rª   r«   r   rq  ©r[   r  ra   s      rE   Útest_data_with_zerosz"TestDirichlet.test_data_with_zeros:  s�   € Ü—‘Ò-Ó.ˆÜ�H‰HÒ)Ó*ˆÜ�‰�a˜ÔÜ×Ñ˜˜EÔ"Ü—‘Ò-Ó.ˆÜœIŸM™M¨!¨UÓ3°QÔ7ÜœI×,Ñ,¨Q°Ó6¼¿¹¸q»	ÕBrG   c                 óà   — t        j                  g d¢«      }t        j                  g d¢«      }t        t        t        j
                  ||«       t        t        t        j                  ||«       y )N)rÉ   r  r#  r.  r/  ©r>   rÌ   rf  rS   r   rª   r«   r0  s      rE   Ú$test_data_with_zeros_and_small_alphaz2TestDirichlet.test_data_with_zeros_and_small_alphaC  óF   € Ü—‘Ò-Ó.ˆÜ�H‰HÒ)Ó*ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óà   — t        j                  g d¢«      }t        j                  g d¢«      }t        t        t        j
                  ||«       t        t        t        j                  ||«       y )Nr-  )rŸ   r\  r¡   r�  r3  r0  s      rE   Útest_data_with_negative_entriesz-TestDirichlet.test_data_with_negative_entriesI  sF   € Ü—‘Ò-Ó.ˆÜ�H‰HÒ*Ó+ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óà   — t        j                  g d¢«      }t        j                  g d¢«      }t        t        t        j
                  ||«       t        t        t        j                  ||«       y )Nr-  )rŸ   r]  r¡   r�  r3  r0  s      rE   Ú test_data_with_too_large_entriesz.TestDirichlet.test_data_with_too_large_entriesO  r5  rG   c                 óÞ   — t        j                  g d¢«      }t        j                  dd«      }t        t        t
        j                  ||«       t        t        t
        j                  ||«       y )Nr"  )rM   rk   rk   g’$I’$I²?©r>   rÌ   rø   rf  rS   r   rª   r«   r0  s      rE   Útest_data_too_deep_cz"TestDirichlet.test_data_too_deep_cU  sF   € Ü—‘šÓ)ˆÜ�G‰G�I˜vÓ&ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óæ   — t        j                  ddgddgg«      }t        j                  dd«      }t        t        t
        j                  ||«       t        t        t
        j                  ||«       y )NrÉ   r‡  r#  r.  )rM   rM   rk   ç      Ð?r;  r0  s      rE   Útest_alpha_too_deepz!TestDirichlet.test_alpha_too_deep[  sS   € Ü—‘˜3 ˜* s¨C jÐ1Ó2ˆÜ�G‰G�I˜uÓ%ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 ó¶   — t        j                  g d¢«      }t        j                  dd«      }t        j                  ||«       t        j
                  ||«       y )Nr"  ©rN   rk   çUUUUUUÕ?)r>   rÌ   rø   r   rª   r«   r0  s      rE   Útest_alpha_correct_depthz&TestDirichlet.test_alpha_correct_deptha  s>   € Ü—‘šÓ)ˆÜ�G‰G�F˜EÓ"ˆÜ�‰�a˜ÔÜ×Ñ˜˜EÕ"rG   c                 óÞ   — t        j                  g d¢«      }t        j                  dd«      }t        t        t
        j                  ||«       t        t        t
        j                  ||«       y )Nr"  rA  r  r;  r0  s      rE   Útest_non_simplex_dataz#TestDirichlet.test_non_simplex_datag  sF   € Ü—‘šÓ)ˆÜ�G‰G�F˜EÓ"ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óÞ   — t        j                  g d¢«      }t        j                  dd«      }t        t        t
        j                  ||«       t        t        t
        j                  ||«       y )Nr-  )rM   rk   r  r;  r0  s      rE   Útest_data_vector_too_shortz(TestDirichlet.test_data_vector_too_shortm  óG   € Ü—‘Ò-Ó.ˆÜ�G‰G�F˜EÓ"ˆÜ”j¤)§-¡-°°EÔ:Ü”j¤)×"2Ñ"2°A°uÕ=rG   c                 óÞ   — t        j                  g d¢«      }t        j                  dd«      }t        t        t
        j                  ||«       t        t        t
        j                  ||«       y )Nr-  )rh   rk   r    r;  r0  s      rE   Útest_data_vector_too_longz'TestDirichlet.test_data_vector_too_longs  rH  rG   c                 ó
  — t        j                  g d¢«      }t        |«      }g d¢}g d¢}g d¢g d¢g d¢g}t        |j	                  «       |«       t        |j                  «       |«       t        |j                  «       |«       y )N)rÉ   çš™™™™™é?r    ©r  rú  rŸ   )çUUUUUUµ?ç{®Gáz´?ç¸…ëQ¸ž?)rN  ç±¿ç‘¿)rQ  rO  çOè´�N‹¿)rR  rS  rP  )r>   rÌ   r   r   r­   r  rÄ   )r[   r  r*  Úexpected_meanÚexpected_varÚexpected_covs         rE   Útest_mean_var_covzTestDirichlet.test_mean_var_covy  sh   € ô —‘šÓ(ˆÜ�eÓˆâ'ˆÚ-ˆâ.Ú.Ú/ð
ˆô 	" !§&¡&£(¨MÔ:Ü! !§%¡%£'¨<Ô8Ü! !§%¡%£'¨<Õ8rG   c                 ón  — t        j                  dg«      }t        |«      }t        |j	                  «       j
                  d«       t        |j                  «       j
                  d«       t        |j                  dg«      j
                  d«       t        |j                  dg«      j
                  d«       y )Nr    r   rÉ   )	r>   rÌ   r   r   r­   r   r  rª   r«   )r[   r  r*  s      rE   rn  z TestDirichlet.test_scalar_values‹  sy   € Ü—‘˜#˜“ˆÜ�eÓˆô 	�Q—V‘V“X—]‘] AÔ&Ü�Q—U‘U“W—\‘\ 1Ô%ä�Q—U‘U˜B˜4“[×%Ñ% qÔ)Ü�Q—X‘X˜r˜d“^×(Ñ(¨!Õ,rG   c                 óv  — t         j                  j                  d«      }|j                  dd«      }|j	                  dd|«      }t        |«      }d}t        |«      D ]Z  }|j	                  dd|«      }|t        j                  |«      z  }t        |j                  |d d «      |j                  |«      «       Œ\ y r  )
r>   r‘   r’   r  r   r   rƒ  r–   r   rª   r  s           rE   Ú test_K_and_K_minus_1_calls_equalz.TestDirichlet.test_K_and_K_minus_1_calls_equal–  s™   € ä�i‰i×#Ñ# DÓ)ˆà�L‰L˜˜BÓˆØ—‘˜F C¨Ó+ˆä�eÓˆØˆ	Ü�yÖ!ˆAØ—‘˜F C¨Ó+ˆAØ”—‘˜“‰NˆAÜ §¡ a¨¨ f£¨q¯u©u°Q«xÕ8ñ "rG   c                 ó4  — t         j                  j                  d«      }|j                  dd«      }|j	                  dd|«      }t        |«      }d}d}d }t        |«      D ]µ  }t        |«      D ]I  }	|j	                  dd|«      }
|
t        j                  |
«      z  }
|�t        j                  ||
f«      }ŒH|
}ŒK |j                  |j                  «      }d }|D ].  }|j                  |«      }|�t        j                  ||«      }Œ-|}Œ0 t        ||«       Œ· y )Nr  r   r  r  r£  r›  rh   )r>   r‘   r’   r  r   r   rƒ  r–   Úvstackrª   r˜   Úappendr   )r[   r›   rÁ   r  r*  r  Únum_multipleÚxmrµ  r2  ra   ÚrmÚrsÚxsrž  s                  rE   Útest_multiple_entry_callsz'TestDirichlet.test_multiple_entry_calls¤  s  € ä�i‰i×#Ñ# DÓ)ˆà�L‰L˜˜BÓˆØ—‘˜F C¨Ó+ˆÜ�eÓˆàˆ	ØˆØˆÜ�yÖ!ˆAÜ˜<Ö(�Ø—K‘K ¨¨QÓ/�Ø”R—V‘V˜A“Y‘�Ø�>ÜŸ™ B¨ 7Ó+‘Bà‘Bð )ð —‘�r—t‘t“ˆBØˆBÛ�Ø—E‘E˜"“I�Ø�>ÜŸ™ 2 qÓ)‘Bà‘Bð ô & b¨"Õ-ñ! "rG   c                 ó  — t         j                  j                  d«      }|j                  ddd«      }t	        |«      }t        |d   |d   «      }d}t        |«      D ]X  }|j                  ddd«      }|t        j                  |«      z  }t        |j                  |«      |j                  |g«      «       ŒZ t        |j                  «       |j                  «       d   «       t        |j                  «       |j                  «       d   «       y )Nr  r  r£  rM   r   r   r›  )r>   r‘   r’   r   r   r   rƒ  r–   r   rª   r­   r  )r[   r›   r  r*  r#  r  rµ  ra   s           rE   Útest_2D_dirichlet_is_betaz'TestDirichlet.test_2D_dirichlet_is_betaÁ  sÏ   € Ü�i‰i×#Ñ# DÓ)ˆà—‘˜F C¨Ó+ˆÜ�eÓˆÜ��q‘˜5 ™8Ó$ˆàˆ	Ü�yÖ!ˆAØ—‘˜F C¨Ó+ˆAØ”—‘˜“‰NˆAÜ §¡ a£¨!¯%©%°°«*Õ5ð "ô
 	˜AŸF™F›H a§f¡f£h¨q¡kÔ2Ü˜AŸE™E›G Q§U¡U£W¨Q¡ZÕ0rG   N)rÏ   rÐ   rÑ   r   r%  r)  r+  r1  r4  r7  r9  r<  r?  rC  rE  rG  rJ  rW  rn  rZ  rc  re  rÚ   rG   rE   r  r  
  sc   „ òLò$
*ò>ò>òCò>ò>ò>ò>ò>ò#ò>ò>ò>ò9ò$	-ò9ò.ó:1rG   r  c                  ó  — t        j                  ddg«      } t        j                  dgg«      }t        t        t        | |«       	 t	        | |«       y # t        $ r-}d}t        t        |«      d t        |«       |«       Y d }~y d }~ww xY w)NrÊ   rÉ   zDimension mismatch)r>   rÌ   rf  rS   r   r   Ústrr—   )rg  r  rî  rï  s       rE   Ú,test_multivariate_normal_dimensions_mismatchrh  Ò  sw   € ô 
�‰�3˜�*Ó	€BÜ�H‰H�s�e�WÓ€Eä”*Ô1°2°uÔ=ð
-Ü˜B Õ&øÜò -Ø"ˆÜ”S˜“V˜IœS ›XÐ&¨×,Ñ,ûð-ús   ÁA Á	B	Á#BÂB	c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestWishartc                 ó‚  — t        j                  dd¬«      }ddgt        j                  d«      t         j                  d   t        j                  dd¬«      g}|D ]N  }t        d|«      }t	        |j
                  |«       t	        |j
                  j                  |j                  «       ŒP t        j                  ddgddgg«      }ddgt         j                  d   t        j                  ddgddgg«      g}|D ]N  }t        d|«      }t	        |j
                  |«       t	        |j
                  j                  |j                  «       ŒP t        t        t        dt        j                  d«      «       t        dt        j                  d«      «       t        j                  dd¬«      }t        t        t        d|«       y )Nr   rM   ©Úndminr   rÐ  r]  rN   )
r>   rÌ   Úr_r   r   r¼  r@   rf  rS   rV   )r[   Ú
true_scaleÚscalesr¼  Úws        rE   Útest_scale_dimensionsz!TestWishart.test_scale_dimensionsæ  sj  € ô —X‘X˜a qÔ)ˆ
àØˆCÜ�H‰H�Q‹KÜ�E‰E�!‰HÜ�H‰H�Q˜aÔ ð
ˆó ˆEÜ˜˜5Ó!ˆAÜ˜Ÿ™ *Ô-Ü˜Ÿ™Ÿ™¨
×(8Ñ(8Õ9ð ô —X‘X  !˜uØ ! !˜uð&ó 'ˆ
ð ˆqˆEÜ�E‰E�#‰JÜ�H‰H�q˜�eØ˜�eðó ð
ˆó ˆEÜ˜˜5Ó!ˆAÜ˜Ÿ™ *Ô-Ü˜Ÿ™Ÿ™¨
×(8Ñ(8Õ9ð ô 	”j¤'¨1¬b¯f©f°Q«iÔ8ô 	�”R—V‘V˜A“YÔô —‘˜ !Ô$ˆÜ”j¤'¨1¨eÕ4rG   c           
      ó\  — ddgt        j                  d«      t         j                  d   t        j                  dd¬«      t        j                  dgd¬«      g}t        dd«      }|j	                  t        j                  dd¬«      «      }|D ]  }t        |j	                  |«      |«       Œ g d¢t         j                  d   t        j                  g d¢d¬«      g}t        dd«      }|j	                  t        j                  g d¢d¬«      «      }|D ]  }t        |j	                  |«      |«       Œ dddgt        j                  d«      t         j                  d   t        j                  ddgddgg«      t        j                  ddgddgg«      d d …d d …t         j                  f   g}t        dt        j                  d«      «      }|j	                  t        j                  ddgddgg«      d d …d d …t         j                  f   «      }|D ]  }t        |j	                  |«      |«       Œ y )Nr   rM   rl  rN   rQ   rÿ  r   )r>   rÌ   rn  r   rª   r   rï   rV   )r[   rò   rq  Údensityra   s        rE   Útest_quantile_dimensionsz$TestWishart.test_quantile_dimensions	  sÖ  € ð
 ØˆCÜ�H‰H�Q‹KÜ�E‰E�!‰HÜ�H‰H�Q˜aÔ Ü�H‰H�a�S Ô"ð
ˆô �A�a‹LˆØ—%‘%œŸ™ ¨!Ô,Ó-ˆÛˆAÜ˜Ÿ™˜q› 7Õ+ð ò
 Ü�E‰E�%‰LÜ�H‰H’W AÔ&ð
ˆô �A�a‹LˆØ—%‘%œŸ™¢°Ô2Ó3ˆÛˆAÜ˜Ÿ™˜q› 7Õ+ð ð ØˆqˆEÜ�H‰H�Q‹KÜ�E‰E�#‰JÜ�H‰H�q˜�eØ˜�eðó ä�H‰H�q˜�eØ˜�eðó Ú¢¤"§*¡*˜nñ.ð	
ˆô �A”b—f‘f˜Q“iÓ ˆØ—%‘%œŸ™ 1 Q %Ø#$ Q %ð")ó *Ú*+ªA¬b¯j©j¨.ñ:ó ;ˆãˆAÜ˜Ÿ™˜q› 7Õ+ñ rG   c           	      óØ  — d}t        j                  t        j                  |«      dz   «      }t        j                  ||dz
  z  dz  «      |t        j                  |d¬«      <   t        j                  |j
                  |«      }g }t        d«      D ]š  }t        j                  t        j                  |«      |dz   dz  z   «      }t        j                  ||dz
  z  dz  «      |t        j                  |d¬«      <   t        j                  |j
                  |«      }|j                  |«       Œœ t        j                  |«      j
                  }ddt        j                  ddd«      fd||fg}|D ]ú  \  }}}t        ||«      }t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j!                  |«      t        j                   |||«      «       Œü y ©	Nrj   r   rM   rl   ©r‰  rh   r›  rŸ   )r>   ru   rd  Útril_indicesr„  r˜   rƒ  r]  rÌ   rA  r   r   r  r­   Úmoder¬   rª   )	r[   rÝ   r¼  rò   rµ  ra   Ú
parametersr  rq  s	            rE   rÒ  zTestWishart.test_frozenB	  sÉ  € ð ˆÜ—‘œŸ	™	 #› qÑ(Ó)ˆÜ,.¯I©I°c¸SÀ¹U±mÀqÑ6HÓ,IˆŒb�o‰o˜c RÔ(Ñ)Ü—‘�u—w‘w Ó&ˆð ˆÜ�q–ˆAÜ—‘œŸ	™	 #›¨¨!©¨a¡xÑ/Ó0ˆAÜ,.¯I©I°c¸SÀ¹U±mÀqÑ6HÓ,IˆAŒb�o‰o˜c RÔ(Ñ)Ü—‘�q—s‘s˜A“ˆAØ�H‰H�Q�Kð	 ô
 �H‰H�Q‹K�M‰Mˆð �”B—K‘K  R¨Ó+Ð,Ø�˜ˆNð
ˆ
ó
 )‰NˆR�˜Ü˜˜EÓ"ˆAÜ˜Ÿ™›¤'§+¡+¨b°%Ó"8Ô9Ü˜Ÿ™›¤7§<¡<°°EÓ#:Ô;Ü˜Ÿ™›¤7§<¡<°°EÓ#:Ô;Ü˜Ÿ™›¤g§o¡o°b¸%Ó&@ÔAÜ˜Ÿ™˜q›¤7§;¡;¨q°"°eÓ#<Õ=ñ )rG   c                 óZ  — d}d}t        j                  |«      }d|d<   d|d<   t        ||«      }t         j                  j	                  d«      }t        j
                  |||¬«      }t         j                  j	                  d«      }|j                  |¬«      }t         j                  j	                  d«      }|j                  d¬«      }t         j                  |j                  |«      |j                  |d	z
  «      |j                  |d
z
  «      f   dz  }	t        j                  |	«      }
||
t        j                  |d¬«      <   t         j                  j                  |«      }|j                  |
«      }t        j                  ||j                  «      }t        ||«       t        ||«       y )NrN   r›  r  rb  rÍ  iêÈ r¼   r…   r   rM   rl   rx  )r>   rV   r   r‘   r°  r¦   rÜ   rn  Ú	chisquareru   ry  r¿   rÓ   r„  r˜   r   )r[   rÝ   r  r¼  rq  r›   Úw_rvsÚfrozen_w_rvsÚcovariancesÚ	variancesr{   ÚDÚDAÚmanual_w_rvss                 rE   Útest_wishart_2D_rvszTestWishart.test_wishart_2D_rvsb	  sh  € ØˆØˆô —‘�s“ˆØˆˆc‰
Øˆˆc‰
ô �B˜Óˆô �i‰i×#Ñ# FÓ+ˆÜ—‘˜B °CÔ8ˆÜ�i‰i×#Ñ# FÓ+ˆØ—u‘u¨#�uÓ.ˆô �i‰i×#Ñ# FÓ+ˆØ—j‘j a�jÓ(ˆÜ—E‘EØ�M‰M˜"ÓØ�M‰M˜"˜Q™$ÓØ�M‰M˜"˜Q™$Óð!ñ
ð ñ	ˆ	ô �G‰G�IÓˆØ(3ˆŒ"�/‰/˜# Ô
$Ñ%ô �I‰I×Ñ˜uÓ%ˆØ�U‰U�1‹XˆÜ—v‘v˜b "§$¡$Ó'ˆô 	˜˜|Ô,Ü˜ lÕ3rG   c                 óª  — t         j                  j                  d«      }d}d}t        j                  |«      }t        j                  dddt
        ¬«      }t        j                  ddd¬«      }|D ]á  }t        ||«      }t        |«      }	t        |j                  «       |	j                  «       «       t        |j                  «       |	j                  «       «       t        |j                  «       |	j                  «       «       t        |j                  |«      |	j                  |«      «       |j                  ||¬	«      }
|f}d
}t        d|||
«       Œã y )Néž^ éô  r   r›  rM   rë   rŸ   ©Únumr¢   rÃ  r   )r>   r‘   r’   rV   rd  rK  rA  r   r   r   r  r­   r¬   rª   r¦   r   )r[   r›   ÚsnrÝ   r¼  Údf_rangerò   r  rq  Úcr¦   rC   r  s                rE   Útest_1D_is_chisquaredz!TestWishart.test_1D_is_chisquaredŽ	  s  € ô
 �i‰i×#Ñ# FÓ+ˆàˆØˆÜ—‘�s“ˆä—9‘9˜Q  A¬UÔ3ˆÜ�K‰K˜˜B 2Ô&ˆÛˆBÜ˜˜EÓ"ˆAÜ�R“ˆAô ˜AŸE™E›G Q§U¡U£WÔ-Ü˜AŸF™F›H a§f¡f£hÔ/Ü˜AŸI™I›K¨¯©«Ô5ô ˜AŸE™E !›H a§e¡e¨A£hÔ/ð —%‘%˜R¨c�%Ó2ˆCØ�5ˆDØˆEÜ" 6¨4°¸Õ<ñ! rG   c                 óÒ  — t         j                  j                  d«      }d}d}d}t        j                  t        j                  d«      dz   «      }t        j                  d«      |t        j
                  dd¬«      <   t        j                  |j                  |«      }t        j                  |df«      }|j                  j                  |«      j                  |«      j                  «       }t        ||«      }t        ||¬	«      }	t        |j                  «       |	j                  «       «       t        |j                  «       |	j                  «       «       t        |j                  «       |	j                  «       «       t        j                   d
dd¬«      }
t        |j#                  |
«      |	j#                  |
«      «       |j%                  ||¬«      }|d|f}d}t'        d|||«       y )Nr‡  rˆ  r›  rj   r   ri   rl   rx  ©r¼  rŸ   r‰  r¢   r   rÃ  r   )r>   r‘   r’   ru   rd  ry  r„  r˜   rU   r©   r   r   r   r  r­   r¬   rA  rª   r¦   r   )r[   r›   r‹  r  rÝ   r¼  ÚlamdaÚsigma_lamdarq  r�  rò   r¦   rC   r  s                 rE   Útest_is_scaled_chisquaredz%TestWishart.test_is_scaled_chisquared­	  sg  € ô
 �i‰i×#Ñ# FÓ+ˆàˆØˆØˆä—‘œŸ	™	 !› Q™Ó'ˆÜ*,¯)©)°A«,ˆŒb�o‰o˜a 2Ô&Ñ'Ü—‘�u—w‘w Ó&ˆä—‘˜˜Q˜Ó ˆØ—g‘g—k‘k %Ó(×,Ñ,¨UÓ3×;Ñ;Ó=ˆÜ�B˜Ó$ˆÜ�˜;Ô'ˆô 	˜Ÿ™› §¡£Ô)Ü˜Ÿ™› !§&¡&£(Ô+Ü˜Ÿ	™	› Q§Y¡Y£[Ô1ô �K‰K˜˜B 2Ô&ˆÜ˜Ÿ™˜a› !§%¡%¨£(Ô+ð �e‰e˜¨#ˆeÓ.ˆØ�1�[Ð!ˆØˆÜ˜v t¨U°CÕ8rG   N)	rÏ   rÐ   rÑ   rr  ru  rÒ  r…  rŽ  r“  rÚ   rG   rE   rj  rj  å  s$   „ ò)5òV/,òb>ò@*4òX=ó>!9rG   rj  c                   óØ  — e Zd Zd„ Zd„ Zd„ Zej                  j                  dddg«      d„ «       Z	d„ Z
d	„ Zej                  j                  ddd
g«      d„ «       Zd„ Zej                  j                  dddg«      d„ «       Zd„ Zej                  j                  ddd
g«      d„ «       Zd„ Zd„ Zd„ Zej                  j                  dej*                  ej,                  g«      d„ «       Zy)ÚTestMultinomialc                 ób  — t        j                  ddd«      }t        |dd¬«       t        j                  ddgd	d
dg«      }|t        j                   k(  sJ ‚t        j                  d	d	gd	d
dg«      }|d	k(  sJ ‚t        j                  ddgd	ddg«      }t        |t        j
                  d¬«       y )N©rN   rj   rk   ©r¡   r�  g&Múty»÷¿rm  r®  rN   rj   r   r¡   r�  ro   )r   Úlogpmfr   r>   rù   rå  )r[   Úvals1Úvals2Úvals3Úvals4s        rE   Útest_logpmfzTestMultinomial.test_logpmfÑ	  s§   € Ü×"Ñ" 5¨!¨ZÓ8ˆÜ˜Ð1¸Õ=ä×"Ñ" A q 6¨1¨r°2¨hÓ7ˆØœŸ™˜ÒÐÐä×"Ñ" A q 6¨1¨r°2¨hÓ7ˆØ˜ŠzÐˆzä×"Ñ" A q 6¨1¨r°1¨gÓ6ˆÜ˜œrŸv™v¨DÖ1rG   c                 óô   — t        j                  ddd«      }t        j                  ddd«      }t        ||d¬«       t        j                  dd	d
«      }t        j                  dd	d«      }t        ||d¬«       y )Nr—  rk   r˜  rN   r¡   rm  r®  )ri   é   é   ©rŸ   r»  ri   rŸ   )r   r™  r"   r   Úpmf©r[   Úval1Úval2s      rE   Útest_reduces_binomialz%TestMultinomial.test_reduces_binomialÞ	  sf   € ô ×!Ñ! &¨!¨ZÓ8ˆÜ�|‰|˜A˜q #Ó&ˆÜ˜˜d¨Õ.ä�‰˜v r¨:Ó6ˆÜ�y‰y˜˜B Ó$ˆÜ˜˜d¨Ö.rG   c                 ó„   — dg d¢}}ddddddd	dd
ddœ
}|D ](  }t        t        j                  |||«      ||   d¬«       Œ* y )NrN   )g      À?r>  g      ä?g     @Ï?g     ÀÂ?g      ž?g      `?g     ÀÒ?g      ¾?g      ˆ?g      ˜?g      �?)
)r   r   rN   )r   r   rM   )rM   r   r   )rN   r   r   rc  r  ©rM   r   r   )r   rM   r   rò  )r   rN   r   ç›+¡†›„=rô  )r   r   r£  )r[   rÁ   rS  Úr_valsra   s        rE   Útest_RzTestMultinomial.test_Ré	  sX   € ð Ò$ˆ1ˆØ(°[Ø(°[Ø(°[Ø(°[Ø(°[ñ	Bˆó
 ˆAÜœKŸO™O¨A¨q°!Ó4°f¸Q±iÀeÖLñ rG   rÁ   r   rN   c                 óH  — d}t        j                  t        |¬«      5  t        j                  j                  d«      }t        j                  |dgdz  dd¬«      }|j                  |dgdz  d¬«      }t        ||«       d d d «       t        j                  t        |¬«      5  t        j                  j                  d«      }t        j                  |dgd	z  dd¬«      }|j                  |dgd	z  d¬«      }t        ||«       d d d «       y # 1 sw Y   ŒŽxY w# 1 sw Y   y xY w)
Nz,Some rows of `p` do not sum to 1.0 within...rK   r0  r>  rN   rk   r¢   r…   rh   )	rR   ÚwarnsÚFutureWarningr>   r‘   r°  r   r¦   r   )r[   rÁ   r\   ÚrndmÚsc_rvsÚnp_rvss         rE   Útest_rvs_npzTestMultinomial.test_rvs_npú	  sñ   € ð AˆÜ�\‰\œ-¨wÖ7Ü—9‘9×(Ñ(¨Ó-ˆDÜ —_‘_ Q¨¨¨q©°qÀsÔKˆFØ×%Ñ% a¨$¨°©¸Ð%Ó:ˆFÜ˜ Ô(÷	 8ô
 �\‰\œ-¨wÖ7Ü—9‘9×(Ñ(¨Ó-ˆDÜ —_‘_ Q¨¨¨q©°qÀsÔKˆFØ×%Ñ% a¨$¨°©¸Ð%Ó:ˆFÜ˜ Ô(÷	 8Ð7÷ 8Ð7ú÷
 8Ð7ús   žA!DÂ"A!DÄDÄD!c                 ó  — t        j                  ddd«      }t        |dd¬«       t        j                  ddd	«      }t        |d
d¬«       t        j                  ddgddggddgddgggdd«      }t        |ddgddggd¬«       t        j                  dt        j
                  ¬«      }t        j                  |dd	«      }t        |t        j                  g t        j
                  ¬«      «       t        j                  ddgdd	«      }t        |dd¬«       t        j                  g d¢dg d¢«      }t        |dd¬«       t        j                  g d¢dg d¢«      }|dk(  sJ ‚t        j                  g d¢dg d¢«      }|dk(  sJ ‚y )N)rh   rh   ©r   r   rm  r®  r—  rk   r˜  gö5’á
Í?rN   r   r   rl   é	   r¢  g’¹*7î ?gÄÒ<WÆŒÛ?©r   rM   rë   rj   rM   ©rN   rN   r   ri   )gUUUUUUå?rB  r   gß¦îáÌ?rm   r©  )r   r£  r   r>   rî   Úfloat64r   )	r[   Úvals0rš  r›  ra   rœ  r�  Úvals5Úvals6s	            rE   Útest_pmfzTestMultinomial.test_pmf	
  sJ  € Ü—‘  a¨Ó.ˆÜ˜˜q tÕ,ä—‘  q¨(Ó3ˆÜ˜Ð1¸Õ=ä—‘ 1 Q %¨¨1¨ °"°a°¸1¸a¸&Ð0AÐ BÀAØ (ó*ˆä˜ ¨IÐ 6¸¸A¸Ð?ÀdÕKä�H‰H�U¤"§*¡*Ô-ˆÜ—‘  1 hÓ/ˆÜ�UœBŸH™H R¬r¯z©zÔ:Ô;ä—‘  1  q¨(Ó3ˆÜ˜˜q tÕ,ä—‘¢	¨1Ò.?Ó@ˆÜ˜˜~°DÕ9ä—‘¢	¨1Ò.?Ó@ˆØ˜ŠzÐˆzä—‘¢	¨1Ò.?Ó@ˆØ˜ŠzÐ‰zrG   c                 óð  — t        j                  ddgdddgddgg«      }t        |dd	gd
¬«       t        j                  ddgddgddg«      }t        |ddgd
¬«       t        j                  ddgddgggdddg«      }t        |ddggd
¬«       t        j                  ddgdgdgggddg«      }t        |dgdgggd
¬«       t        j                  ddgddggdggggddg«      }t        |ddggggd
¬«       y )Nr   rM   rN   rŸ   r»  r    rL  g´Èv¾ŸÏ?gú~j¼t“Ø?rm  r®  rj   r   )r   r£  r   )r[   rº  rš  r›  rœ  r�  s         rE   Útest_pmf_broadcastingz%TestMultinomial.test_pmf_broadcasting$
  s  € Ü—‘  A ¨¨R°¨H°r¸2°hÐ+?Ó@ˆÜ˜  d˜|°$Õ7ä—‘  A ¨¨A¨°°R°Ó9ˆÜ˜  a˜y¨tÕ4ä—‘ 1 a &¨1¨a¨&Ð!1Ð 2°A¸¸B°xÓ@ˆÜ˜  q 	˜{°Õ6ä—‘  A ¨1¨#°¨s¨¨°r¸2°hÓ?ˆÜ˜ $ ¨!¨ ˜°TÕ:ä—‘ ! Q ¨!¨A¨ °Q°C°5°'°¸RÀ¸HÓEˆÜ˜ 4¨ )  ˜°TÖ:rG   rh   c                 óà   — t        j                  |d«      }|dz  dz  | dz  dz  | dz  dz  g| dz  dz  |dz  dz  | dz  dz  g| dz  dz  | dz  dz  |dz  dz  gg}t        ||d¬«       y )	N)r    r¡   r  r    rL  r¡   r  r�  rm  r®  ©r   rÄ   r   )r[   rÁ   Úcov1rû  s       rE   Útest_covzTestMultinomial.test_cov4
  s™   € ä�‰˜q ,Ó/ˆØ�2‘�b‘˜1˜"˜R™% ™( Q B r¡E¨"¡HÐ-Ø��B‘�r‘˜1˜R™4 ™7 Q B r¡E¨"¡HÐ-Ø��B‘�r‘˜A˜2˜b™5 ™8 Q r¡T¨"¡WÐ-ð/ˆô 	˜˜d¨Ö.rG   c                 ó`  — t        j                  dddgddgg«      }ddgddggddgddggg}t        ||d	¬
«       t        j                  ddgddg«      }ddgddggddgddggg}t        ||d	¬
«       t        j                  ddgddgddgg«      }ddgddggddgddggg}t        ||d	¬
«       y )Nrh   rŸ   r»  r    rL  gÍÌÌÌÌÌÜ?gÍÌÌÌÌÌÜ¿gš™™™™™é¿rm  r®  rj   g
×£p=
×?g
×£p=
×¿r¡   r�  rú  r¿  gáz®Gáê?gáz®Gáê¿rº  g333333ó¿rÁ  ©r[   rÂ  rû  Úcov3Úcov4Úcov5Úcov6s          rE   Útest_cov_broadcastingz%TestMultinomial.test_cov_broadcasting<
  sï   € Ü�‰˜q B¨ 8¨b°"¨XÐ"6Ó7ˆØ�t�˜d C˜[Ð)¨R°¨I¸¸R°yÐ+AÐBˆÜ˜˜d¨Õ.ä�‰  1˜v¨¨B xÓ0ˆØ�t�˜t S˜kÐ*¨c°4¨[¸4À¸+Ð,FÐGˆÜ˜˜d¨Õ.ä�‰  1˜v¨¨R¨°2°r°(Ð';Ó<ˆØ˜8Ð$ x°Ð&9Ð:Ø˜8Ð$ x°Ð&9Ð:ð<ˆä˜˜d¨Ö.rG   rM   c                 óx   — t        j                  |ddg«      }t        |t        j                  |d«      d¬«       y ©Nr    rL  rm  r®  ©r   r¬   r   r"   )r[   rÁ   Úent0s      rE   r  zTestMultinomial.test_entropyJ
  s1   € ô ×"Ñ" 1 r¨2 hÓ/ˆÜ˜œeŸm™m¨A¨rÓ2¸Ö>rG   c           	      ó\  — t        j                  ddgddg«      }t        |t        j                  dd«      t        j                  dd«      gd¬«       t        j                  ddgd	d
gddgg«      }t        |t        j                  dd	«      t        j                  dd«      gd¬«       t        j                  dgdggd	d
gddgg«      }t        |t        j                  dd	«      t        j                  dd«      gt        j                  dd	«      t        j                  dd«      ggd¬«       y )NrM   rN   r    rL  rm  r®  rk   r   r¡   r�  rú  r¿  rÍ  )r[   rÎ  Úent1Úent2s       rE   Útest_entropy_broadcastingz)TestMultinomial.test_entropy_broadcastingQ
  s  € Ü×"Ñ" A q 6¨B°¨8Ó4ˆÜ˜œuŸ}™}¨Q°Ó3´U·]±]À1ÀbÓ5IÐJØ!õ	#ô ×"Ñ" A q 6¨R°¨H°r¸2°hÐ+?Ó@ˆÜ˜œuŸ}™}¨Q°Ó3´U·]±]À1ÀbÓ5IÐJØ!õ	#ô ×"Ñ" Q C¨!¨ :°°R°¸2¸r¸(Ð/CÓDˆÜ˜ÜŸ-™-¨¨2Ó.´·±¸aÀÓ0DÐEÜŸ-™-¨¨2Ó.´·±¸aÀÓ0DÐEðGà!ö	#rG   c                 ó`   — t        j                  |ddg«      }t        ||dz  |dz  gd¬«       y rÌ  ©r   r­   r   )r[   rÁ   Úmean1s      rE   Ú	test_meanzTestMultinomial.test_mean`
  s0   € ä× Ñ   R¨ HÓ-ˆÜ˜  "¡ a¨¡d˜|°$Ö7rG   c                 ó`   — t        j                  ddgddg«      }t        |ddgddggd	¬
«       y )Nrh   ri   r    rL  rÉ   r.  g433333ó?g433333@rm  r®  rÔ  )r[   rÕ  s     rE   Útest_mean_broadcastingz&TestMultinomial.test_mean_broadcastinge
  s5   € Ü× Ñ  ! Q ¨"¨b¨Ó2ˆÜ˜  t ¨t°T¨lÐ;À$ÖGrG   c                 ó¬  — d}d}g d¢g d¢g d¢g d¢g d¢g}t        j                  |t         j                  ¬«      }t        ||«      }t	        |j                  |«      t        j
                  |||«      «       t	        |j                  |«      t        j                  |||«      «       t	        |j                  «       t        j                  ||«      «       y )	Nr7  )rŸ   r    r¡   rú  ©r   r   r   r7  ©r   r   r   rB  ©r   r   r   r›  ©r   r   r   r¶  ©r   r   rM   r   rë   )r>   r?   r¹  r   r   r£  r™  r¬   )r[   rÁ   Úpvalsra   Ú	mn_frozens        rE   rÒ  zTestMultinomial.test_frozeni
  s    € àˆØ ˆÚš
¢:ªiº	ÐBˆÜ�J‰J�q¤§
¡
Ô+ˆÜ  5Ó)ˆ	Ü˜	Ÿ™ aÓ(¬+¯/©/¸!¸QÀÓ*FÔGÜ˜	×(Ñ(¨Ó+¬[×-?Ñ-?ÀÀ1ÀeÓ-LÔMÜ˜	×)Ñ)Ó+¬[×-@Ñ-@ÀÀEÓ-JÕKrG   c                 ó(  — d}t         j                  j                  d«      }|j                  |«      }d|d<   |t        j                  |«      z  }t        j                  |«      }t        j                  |||«      }t        j                  |«      sJ ‚y )NéX   l   iŒRZØY g ÂëþKH´9rl   )r>   r‘   r’   r–   rU   r   r™  Úisfinite)r[   rÁ   r›   rS  ra   r™  s         rE   Útest_gh_11860zTestMultinomial.test_gh_11860t
  sx   € ð
 ˆÜ�i‰i×#Ñ#Ð$7Ó8ˆØ�J‰J�q‹MˆØˆˆ"‰Ø	ŒR�V‰V�A‹Y‰ˆÜ�G‰G�A‹JˆÜ×#Ñ# A q¨!Ó,ˆÜ�{‰{˜6Ô"Ð"Ñ"rG   rì   c                 óæ   — d}t        j                  g d¢|¬«      }t        j                  g d¢||¬«      }t        j                  g d¢||¬«      }t         j                  j                  ||d¬«       y )	Né   )r    r    r    r    r    rë   )r   rM   rh   rk   rj   )ra   rÁ   rS  )r   rM   rj   rh   rk   rS  r®  )r>   r?   r   r£  Útestingr   )r[   rì   rÁ   rS  Úres1Úres2s         rE   Útest_gh_22565zTestMultinomial.test_gh_22565‚
  sW   € ð ˆÜ�J‰JÒ0¸Ô>ˆÜ�‰¢°A¸Ô;ˆÜ�‰¢°A¸Ô;ˆÜ
�
‰
×"Ñ" 4¨°EÐ"Õ:rG   N)rÏ   rÐ   rÑ   rž  r§  r¬  rR   rÖ   r×   r³  r½  r¿  rÃ  rÊ  r  rÒ  rÖ  rØ  rÒ  rä  r>   Úfloat32r¹  rê  rÚ   rG   rE   r•  r•  Ð	  s  „ ò2ò	/òMð" ‡[�[×Ñ˜S 1 a &Ó)ñ)ó *ð)òò6;ð  ‡[�[×Ñ˜S 1 a &Ó)ñ/ó *ð/ò/ð ‡[�[×Ñ˜S 1 a &Ó)ñ?ó *ð?ò#ð ‡[�[×Ñ˜S 1 a &Ó)ñ8ó *ð8òHò	Lò#ð ‡[�[×Ñ˜W r§z¡z°2·:±:Ð&>Ó?ñ;ó @ñ;rG   r•  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestInvwishartc           	      ó|  — d}t        j                  t        j                  |«      dz   «      }t        j                  ||dz
  z  dz  «      |t        j                  |d¬«      <   t        j                  |j
                  |«      }g }t        d«      D ]š  }t        j                  t        j                  |«      |dz   dz  z   «      }t        j                  ||dz
  z  dz  «      |t        j                  |d¬«      <   t        j                  |j
                  |«      }|j                  |«       Œœ t        j                  |«      j
                  }ddt        j                  ddd«      fd||fg}|D ]Ì  \  }}}t        ||«      }t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j!                  |«      t        j                   |||«      «       ŒÎ y rw  )r>   ru   rd  ry  r„  r˜   rƒ  r]  rÌ   rA  r   r   r  r­   rz  r   rª   )	r[   rÝ   r¼  rò   rµ  ra   r{  r  Úiws	            rE   rÒ  zTestInvwishart.test_frozenŽ
  s¬  € ð
 ˆÜ—‘œŸ	™	 #› qÑ(Ó)ˆÜ,.¯I©I°c¸3¸q¹5±kÀ!±mÓ,DˆŒb�o‰o˜c RÔ(Ñ)Ü—‘�u—w‘w Ó&ˆð ˆÜ�q–ˆAÜ—‘œŸ	™	 #›¨¨!©¨a¡xÑ/Ó0ˆAÜ,.¯I©I°c¸3¸q¹5±kÀ!±mÓ,DˆAŒb�o‰o˜c RÔ(Ñ)Ü—‘�q—s‘s˜A“ˆAØ�H‰H�Q�Kð	 ô
 �H‰H�Q‹K�M‰Mˆð �”B—K‘K  R¨Ó+Ð,Ø�˜ˆNð
ˆ
ó
 )‰NˆR�˜Ü˜B Ó&ˆBÜ˜Ÿ™›¤:§>¡>°"°eÓ#<Ô=Ü˜Ÿ™›¤J§O¡O°B¸Ó$>Ô?Ü˜Ÿ™›¤J§O¡O°B¸Ó$>Ô?Ü˜BŸF™F 1›I¤z§~¡~°a¸¸UÓ'CÕDñ )rG   c                 ó¾  — t         j                  j                  d«      }d}d}t        j                  |«      }t        j                  dddt
        ¬«      }t        j                  dd	d	¬
«      }|D ]ë  }t        ||«      }t        |dz  d¬«      }	t        |j                  «       |	j                  «       «       t        |j                  «       |	j                  «       «       t        |j                  |«      |	j                  |«      «       |j                  ||¬«      }
|dz  ddf}d}t        d|||
«       t        |j                  «       |	j                  «       «       Œí y )Nr‡  rˆ  r   rh   é   rM   rë   rŸ   r›  r‰  r  r�  r¢   r   rÃ  r   )r>   r‘   r°  rV   rd  rK  rA  r   r   r   r  r­   rª   r¦   r   r¬   )r[   r›   r‹  rÝ   r¼  rŒ  rò   r  rï  Úigr¦   rC   r  s                rE   Útest_1D_is_invgammaz"TestInvwishart.test_1D_is_invgamma®
  s  € ô
 �i‰i×#Ñ# FÓ+ˆàˆØˆÜ—‘�s“ˆä—9‘9˜Q  A¬UÔ3ˆÜ�K‰K˜˜B 2Ô&ˆÛˆBÜ˜B Ó&ˆBÜ˜"˜Q™$ dÔ+ˆBô ˜BŸF™F›H b§f¡f£hÔ/Ü˜BŸG™G›I r§w¡w£yÔ1ô ˜BŸF™F 1›I r§v¡v¨a£yÔ1ð —&‘&˜b¨s�&Ó3ˆCØ�q‘D˜!˜T�?ˆDØˆEÜ" :¨t°U¸CÔ@ô ˜BŸJ™J›L¨"¯*©*«,Õ7ñ% rG   c                 ó´  — d}d}t        j                  |«      }d|d<   d|d<   t        ||«      }t         j                  j	                  d«      }t        j
                  |||¬«      }t         j                  j	                  d«      }|j                  |¬«      }t         j                  j	                  d«      }|j                  d¬«      }t         j                  |j                  |d	z
  «      |j                  |d
z
  «      |j                  |«      f   dz  }	t        j                  |	«      }
||
t        j                  |d¬«      <   t         j                  j                  |«      }t         j                  j                  |
j                  |j                  «      j                  }t        j                  ||j                  «      }t!        ||«       t!        ||«       y )NrN   r›  r  rb  rÍ  iHG	 r¼   r…   rM   r   rl   rx  )r>   rV   r   r‘   r°  r¦   rÜ   rn  r}  ru   ry  r¿   rÓ   Úsolver˜   r„  r   )r[   rÝ   r  r¼  rï  r›   Úiw_rvsÚfrozen_iw_rvsr€  r�  r{   r‚  ÚLÚmanual_iw_rvss                 rE   Útest_invwishart_2D_rvsz%TestInvwishart.test_invwishart_2D_rvsÏ
  s|  € ØˆØˆô —‘�s“ˆØˆˆc‰
Øˆˆc‰
ô ˜˜EÓ"ˆô �i‰i×#Ñ# FÓ+ˆÜ—‘  E¸Ô<ˆÜ�i‰i×#Ñ# FÓ+ˆØŸ™¨C˜Ó0ˆô �i‰i×#Ñ# FÓ+ˆØ—j‘j a�jÓ(ˆÜ—E‘EØ�M‰M˜"˜Q™$ÓØ�M‰M˜"˜Q™$ÓØ�M‰M˜"Óðñ
ð ñ	ˆ	ô �G‰G�IÓˆØ(3ˆŒ"�/‰/˜# Ô
$Ñ%ô �I‰I×Ñ˜uÓ%ˆÜ�I‰I�O‰O˜AŸC™C §¡Ó%×'Ñ'ˆÜŸ™˜q !§#¡#›ˆô 	˜ Ô.Ü˜ }Õ5rG   c                 óh  — d}d}dD �](  }t        j                  t        j                  |«      dz   «      }t        j                  ||dz
  z  dz  «      |t        j                  |d¬«      <   t        j                  |j
                  |«      }t        ||«      }|j                  «       }|j                  «       }||z  dz  }|j                  |d	¬
«      }	|	j                  d¬«      }
||dz   z  dz  }d|z  }t        j                  d|dz  z
  «      }t        j                  |
|z
  |z  d|¬«      r�Œ)J ‚ y)z1Test that sample mean consistent with known mean.r›  é N  ©r   rh   r   rM   rl   rx  r  rj  r¢   r   rŠ   rÃ  rô  N)r>   ru   rd  ry  r„  r˜   r   r­   r  r¦   r   ÚppfrÕ  )r[   r  Úsample_sizerÝ   r¼  rÍ   Ú	Xmean_expÚXvar_expÚ	Xmean_stdrò   Ú	Xmean_estÚntestsÚ	fail_rateÚmax_diffs                 rE   Útest_sample_meanzTestInvwishart.test_sample_meaný
  s  € ð ˆØˆÜˆCÜ—G‘GœBŸI™I c›N¨QÑ.Ó/ˆEÜ02·	±	¸#ÀÀqÁ¹/ÈAÑ:MÓ0NˆE”"—/‘/ #¨Ô,Ñ-Ü—F‘F˜5Ÿ7™7 EÓ*ˆEä˜b %Ó(ˆDØŸ	™	›ˆIØ—x‘x“zˆHØ! KÑ/°#Ñ5ˆIà—‘˜k¸�Ó=ˆAØŸ™ A˜›ˆIà˜# ™'‘] AÑ%ˆFØ˜v™ˆIÜ—x‘x  I°¡MÑ 1Ó2ˆHÜ—;‘;Ø˜YÑ&¨)Ñ3ØØ÷ð ð ñ! rG   c                 ól  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g d¢g«      }d	}t        j                  |||«      }|j                  d
   }t         j
                  j                  |«      \  }}t         j
                  j                  |«      \  }}t         j
                  j                  ||«      }	|dz  |z  ||z  dz  t        j                  d«      z  z
  t        |dz  |«      z
  ||z   dz   dz  |z  z
  d|	j                  «       z  z
  }
t        ||
«       y)zRegression test for gh-8844.)rM   r   r   r  )r   rM   r  r  )r   r  rN   r   )r  r  r   rM   )r¶  rk   rN   r   )rk   r¶  rh   r   )rN   rh   r   rM   )r   r   rM   r¶  ri   r   rM   r   r  N)r>   rÌ   r   r«   r@   r¿   r¦  rõ  rq  r8   rç  r   )r[   rò   ÚPsiÚnuÚprobrS  ÚsigÚlogdetXÚ	logdetPsiræ   rÇ  s              rE   Útest_logpdf_4x4zTestInvwishart.test_logpdf_4x4  s%  € ä�H‰H’nÚ&Ú$Ú&ð(ó )ˆô �h‰hšÚ$Ú$Ú$ð&ó 'ˆð ˆÜ× Ñ   B¨Ó,ˆà�G‰G�A‰JˆÜ—y‘y×(Ñ(¨Ó+‰ˆˆWÜŸ™×*Ñ*¨3Ó/‰ˆˆYÜ�I‰I�O‰O˜A˜sÓ#ˆØ˜‘T˜9Ñ$Ø˜!‘t˜A‘vœrŸv™v a›yÑ(ñ)ä" 2 a¡4¨Ó+ñ,ð ˜A‘v ‘z 1‘n WÑ,ñ-ð ˜!Ÿ'™'›)‘mñ	$ˆô
 	˜˜hÕ'rG   N)rÏ   rÐ   rÑ   rÒ  ró  rú  r  r  rÚ   rG   rE   rí  rí  �
  s   „ òEò@8òB,6ò\ó6(rG   rí  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestSpecialOrthoGroupc                 óÀ   — t        j                  dt        j                  j	                  d«      ¬«      }t        j
                  g d¢g d¢g d¢g«      }t        ||«       y )NrN   é  r¼   )g©ÃDbÓí¿g MP»Fh�?gï“È,×¿)g7¥�ýßÖ?g+�Ñè+Ê?g– uC)í¿)gääìžÀ®?gïg]óQï¿gã^þÉ¿)r   r¦   r>   r‘   r’   rÌ   r   )r[   ra   rÇ  s      rE   Útest_reproducibilityz*TestSpecialOrthoGroup.test_reproducibility2  sM   € Ü×#Ñ# A´B·I±I×4IÑ4IÈ#Ó4NÔOˆÜ—8‘8ÒCÚBÚCðEó Fˆô 	" ! XÕ.rG   c                 óü   — t        t        t        j                  d «       t        t        t        j                  d«       t        t        t        j                  d«       t        t        t        j                  d«       y ©Nrÿ  rl   rl  )rf  rS   r   r¦   ©r[   s    rE   Útest_invalid_dimz&TestSpecialOrthoGroup.test_invalid_dim9  sN   € Ü”jÔ"5×"9Ñ"9¸4Ô@Ü”jÔ"5×"9Ñ"9¸6ÔBÜ”jÔ"5×"9Ñ"9¸2Ô>Ü”jÔ"5×"9Ñ"9¸3Õ?rG   c                 óˆ   — d}t        |«      }|j                  d¬«      }t        j                  |d¬«      }t        ||«       y )Nrk   rj  r¼   )r   r¦   r   )r[   rÝ   r€  r¨  r©  s        rE   Útest_frozen_matrixz(TestSpecialOrthoGroup.test_frozen_matrix?  s=   € ØˆÜ$ SÓ)ˆà�z‰z tˆzÓ,ˆÜ"×&Ñ& s¸Ô>ˆä�T˜4Õ rG   c                 ó´  — t        dd«      D ��cg c]'  }t        d«      D ]  }t        j                  |«      ‘Œ Œ) }}}|D �cg c]!  }t        j                  j                  |«      ‘Œ# }}t        |dgdz  d¬«       |D ]L  }t        t        j                  ||j                  «      t        j                  |j                  d   «      «       ŒN y c c}}w c c}w )	NrM   r7  rN   rÉ   é   ç‚vIhÂ%<=r®  r   )rƒ  r   r¦   r>   r¿   r¥  r   r   r„  r˜   rV   r@   )r[   rÝ   rµ  rb  ra   Údetss         rE   Útest_det_and_orthoz(TestSpecialOrthoGroup.test_det_and_orthoH  s»   € ä˜q œô!Ù$�#Ü˜Q–x�!ô "×%Ñ% cÕ*àð +Ø$ð 	ñ !ñ
 +-Ó-©" Q”—	‘	—‘˜aÕ ¨"ˆÐ-Ü˜˜r˜d 2™g¨EÕ2ó ˆAÜ%¤b§f¡f¨Q°·±£nÜ&(§f¡f¨Q¯W©W°Q©ZÓ&8õ:ñ ùó!ùò
 .s   �,CÁ&Cc                 óÚ  — d}d}d}t        j                  ||t        j                  j	                  d«      ¬«      }d}|D ���ci c]'  \  }}||ft        |D �cg c]
  }||   |   ‘Œ c}«      “Œ) }	}}}|D �
�cg c]  }
|D ]  }|
|kD  sŒ	|
|f‘Œ Œ }}
}|D ��cg c]  \  }}t        |	|   |	|   «      d   ‘Œ }}}t        |gt        |«      z  |«       y c c}w c c}}}w c c}}
w c c}}w )Nrh   r¿  r  i  r¢   ©rÀ  r·  )r   rj   r#  r   )	r   r¦   r>   r‘   r’   Úsortedr    r   r—   )r[   rÝ   rn  Úks_probrb  ÚelsÚerÚecra   ÚprojÚe0Úe1ÚpairsÚp0Úp1Úks_testss                   rE   Ú	test_haarzTestSpecialOrthoGroup.test_haarV  sò   € ð ˆØˆØˆÜ ×$Ñ$Ø�g¬B¯I©I×,AÑ,AÀ#Ó,Fô
ˆð +ˆáHKÕLÉ¹f¸bÀ"��R�œ&±RÓ!8±R° ! B¡%¨£)°RÑ!8Ó9Ñ9ÈˆÒLÙ$'ÔA¡C˜b³#¨B¸¸b»�"�b’°#� CˆÑAÙDIÔJÁE¹¸¸R”H˜T "™X t¨B¡xÓ0°Ó3ÀEˆÑJÜ˜7˜)¤C¨£JÑ.°Õ9ùò "9ùÔLùÛAùÛJs*   ÁCÁCÁ'	CÁ9C!Â	C!ÂC'ÃCc                 óJ   — t        t        j                  dd¬«      dd¬«       y )Nr   r¿  r…   r  r®  )r   r   r¦   r  s    rE   Útest_one_by_onez%TestSpecialOrthoGroup.test_one_by_oner  s   € ô 	Ô+×/Ñ/°¸Ô=¸qÀuÖMrG   c                 óZ   — t        t        j                  dd¬«      j                  d«       y ©Nr   rj   r…   )rj   r   r   ©r   r   r¦   r@   r  s    rE   Útest_zero_by_zeroz'TestSpecialOrthoGroup.test_zero_by_zerow  ó    € ÜÔ(×,Ñ,¨Q°QÔ7×=Ñ=¸yÕIrG   N)
rÏ   rÐ   rÑ   r  r  r  r  r.  r0  r4  rÚ   rG   rE   r  r  1  s(   „ ò/ò@ò!ò:ò:ò8Nó
JrG   r  c                   ó¶   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Z
d„ Zd	„ Zd
„ Zej                  j                  d„ «       Zy)ÚTestOrthoGroupc                 ó`  — d}t         j                  j                  |«      }t        j                  d|¬«      }t        j                  d|¬«      }t        t         j                  j                  |«      d«       t        j                  g d¢g d¢g d¢g«      }t        ||«       t        ||«       y )Nr  rN   r¼   rl   )gÝÓÕ‹mØ?gÓ hÀ"·¿gE�¹‡„oí?)g~7Ý²Cüì?gž’>­Ä¿g0JÐ_èÙ¿)gÝ±Ø&�Ç¿gü ¤6qrï¿g`Xþ|[°”¿)
r>   r‘   r°  r   r¦   r   r¿   r¥  rÌ   r   )r[   r¥   r›   ra   r²   rÇ  s         rE   r  z#TestOrthoGroup.test_reproducibility|  s…   € ØˆÜ�i‰i×#Ñ# DÓ)ˆÜ�O‰O˜A¨CÔ0ˆÜ�_‰_˜Q¨TÔ2ˆäœBŸI™IŸM™M¨!Ó,¨bÔ1Ü—8‘8Ò<Ú=Ú=ð?ó @ˆô 	" ! XÔ.Ü! " hÕ/rG   c                 óü   — t        t        t        j                  d «       t        t        t        j                  d«       t        t        t        j                  d«       t        t        t        j                  d«       y r  )rf  rS   r   r¦   r  s    rE   r  zTestOrthoGroup.test_invalid_dim‰  sB   € Ü”j¤+§/¡/°4Ô8Ü”j¤+§/¡/°6Ô:Ü”j¤+§/¡/°2Ô6Ü”j¤+§/¡/°3Õ7rG   c                 óÞ   — d}t        |«      }t        |d¬«      }|j                  d¬«      }t        j                  |d¬«      }|j                  d¬«      }t        ||«       t        ||«       y )Nrk   rj  r¤   r¼   r   r…   )r   r¦   r   ©r[   rÝ   r€  Úfrozen_seedr¨  r©  Úrvs3s          rE   r  z!TestOrthoGroup.test_frozen_matrix�  sa   € ØˆÜ˜SÓ!ˆÜ! #¨DÔ1ˆà�z‰z tˆzÓ,ˆÜ�‰˜s°Ô6ˆØ�‰ AˆÓ&ˆä�T˜4Ô Ü�T˜4Õ rG   c                 ó†  — t        dd«      D ��cg c].  }t        d«      D �cg c]  }t        j                  |«      ‘Œ c}‘Œ0 }}}t        j                  |D ��cg c]/  }|D �cg c]!  }t        j
                  j                  |«      ‘Œ# c}‘Œ1 c}}«      }t        t        j                  |«      t        j                  |j                  «      d¬«       |D ]S  }|D ]L  }t        t        j                  ||j                  «      t        j                  |j                  d   «      «       ŒN ŒU y c c}w c c}}w c c}w c c}}w )NrM   r7  r›  r  r®  r   )rƒ  r   r¦   r>   rÌ   r¿   r¥  r   ÚfabsrU   r@   r   r„  r˜   rV   )r[   rÝ   rµ  rb  Úxxra   r  s          rE   r  z!TestOrthoGroup.test_det_and_ortho›  sÿ   € ô ˜q œô&á$�#ô ˜bœ	ó#Ù!�1ô �‰˜sÕ#Ø!ó#à$ð 	ñ &ô
 �x‰xÁ"ÔEÁ"¸B±BÓ7±B¨qœ"Ÿ)™)Ÿ-™-¨Õ*°BÓ7À"ÒEÓFˆÜœŸ™ ›¤r§w¡w¨t¯z©zÓ':ÀÕGó ˆBÛ�Ü)¬"¯&©&°°A·C±C«.Ü*,¯&©&°·±¸±Ó*<õ>ñ ñ ùò#ùó &ùò
 8ùÓEs-   �D2¢D-¾D2Á	D=
Á#&D8Â	D=
Ä-D2Ä8D=
rÝ   )rM   rh   r›  rñ  c                 óz  — t         j                  j                  d«      }t        |¬«      }|j	                  d|¬«      }t
        j                  j                  |«      }t        j                  |dkD  «      }t        |«      }t        j                  ||«      }|j                  d¬«      \  }	}
|	dcxk  r|
k  sJ ‚ J ‚y )	Nl   ø<`L«‰r )rÝ   r  r¢   r   çffffffî?©Úconfidence_levelr  )r>   r‘   r’   r   r¦   rË   r¿   r¥  r–   r—   r0   Ú	binomtestÚproportion_ci)r[   rÝ   r›   rÍ   r¦   r  r‰  rÁ   rA   r  r  s              rE   Útest_det_distribution_gh18272z,TestOrthoGroup.test_det_distribution_gh18272ª  s¤   € ô �i‰i×#Ñ#Ð$7Ó8ˆÜ˜sÔ#ˆØ�h‰h˜D¨sˆhÓ3ˆÜ�|‰|×Ñ Ó$ˆÜ�F‰F�4˜!‘8ÓˆÜ�‹IˆÜ�o‰o˜a Ó#ˆØ×%Ñ%°tÐ%Ó<‰	ˆˆTØ�SÔ˜4ÒÐÑÐÑrG   c                 óÞ  — d}d}d}t         j                  j                  d«      }t        j                  |||¬«      }d}|D ���	ci c]'  \  }}||ft        |D �	cg c]
  }	|	|   |   ‘Œ c}	«      “Œ) }
}}}	|D ��cg c]  }|D ]  }||kD  sŒ	||f‘Œ Œ }}}|D ��cg c]  \  }}t        |
|   |
|   «      d   ‘Œ }}}t        |gt        |«      z  |«       y c c}	w c c}	}}w c c}}w c c}}w )Nrh   r¿  r  i  r¢   r!  r   )	r>   r‘   r°  r   r¦   r"  r    r   r—   )r[   rÝ   rn  r#  r›   rb  r$  r%  r&  ra   r'  r(  r)  r*  r+  r,  r-  s                    rE   r.  zTestOrthoGroup.test_haar·  sò   € ð ˆØˆØˆÜ�i‰i×#Ñ# CÓ(ˆÜ�_‰_˜S w¸SÔAˆð +ˆáHKÕLÉ¹f¸bÀ"��R�œ&±RÓ!8±R° ! B¡%¨£)°RÑ!8Ó9Ñ9ÈˆÒLÙ$'ÔA¡C˜b³#¨B¸¸b»�"�b’°#� CˆÑAÙDIÔJÁE¹¸¸R”H˜T "™X t¨B¡xÓ0°Ó3ÀEˆÑJÜ˜7˜)¤C¨£JÑ.°Õ9ùò "9ùÔLùÛAùÛJs*   ÁCÁCÁ)	CÁ;C#ÂC#ÂC)ÃCc                 óp  — d}t        j                  |dt        j                  j	                  d«      ¬«      }t        t        j                  |«      dd¬«       t        j                  |dkD  «      }t        |«      }t        j                  ||«      }|j                  d¬	«      \  }}|d
cxk  r|k  sJ ‚ J ‚y )Nr   r  r  r¢   r  r®  r   rB  rC  r  )r   r¦   r>   r‘   r’   r   rm  r–   r—   r0   rE  rF  )r[   rÝ   rb  r‰  rÁ   rA   r  r  s           rE   r0  zTestOrthoGroup.test_one_by_oneÒ  s—   € àˆÜ�_‰_˜S t¼"¿)¹)×:OÑ:OÐPSÓ:TÔUˆÜœŸ™˜r›
 A¨EÕ2Ü�F‰F�2˜‘6‹NˆÜ�‹GˆÜ�o‰o˜a Ó#ˆØ×%Ñ%°tÐ%Ó<‰	ˆˆTØ�SÔ˜4ÒÐÑÐÑrG   c                 óZ   — t        t        j                  dd¬«      j                  d«       y r2  r3  r  s    rE   r4  z TestOrthoGroup.test_zero_by_zeroÝ  r5  rG   c                 óD  ‡‡— t         j                  j                  d«      Šdˆfd„	}t        dd«      D ]j  Šdˆˆfd„	} ||«      } |t        j
                  j                  j                  «      }t        j
                  j                  ||«      \  }}t        d|«       Œl y )	Nr  c                 óš   •— t         j                  j                  ‰j                  | | f¬«      «      \  }}}t        j                  ||«      S ©Nr…   )r>   r¿   rå   rÜ   r„  )rÝ   r£   rç   Ú_srà   r›   s        €rE   Úrandom_orthoz<TestOrthoGroup.test_pairwise_distances.<locals>.random_orthoå  s:   ø€ Ü—y‘y—}‘} S§Z¡Z°c¸3°Z ZÓ%@ÓA‰HˆAˆr�1Ü—6‘6˜!˜Q“<ÐrG   rM   ri   c                 ó  •— t        j                  t        |«      D �cg c]-  }t        j                   | ‰‰¬«       | ‰‰¬«      z
  dz  «      ‘Œ/ c}«      }|t         j                  j                  | ||j                  ¬«      z  }|S c c}w )N)rÝ   r£   rM   r…   )r>   rÌ   rƒ  r–   r‘   r   r@   )r¦   r  Úepsrß   r0   rÝ   r›   s        €€rE   Úgenerate_test_statisticszHTestOrthoGroup.test_pairwise_distances.<locals>.generate_test_statisticsê  s�   ø€ ÜŸ™ô # 1œXó"ñ &˜ô —F‘F™C C°cÔ:Ù C°cÔ:ñ;Ø=>ñ?õ @à%ñ"ó �ð œŸ™×*Ñ*¨C¨4°¸5¿;¹;Ð*ÓGÑG�Ø�ùò"s   ž2B	r  r=   )r¿  ró  )
r>   r‘   r°  rƒ  rË   r0   r   r¦   r    r   )	r[   rO  rR  rÇ  r·  Ú_DrS  rÝ   r›   s	          @@rE   Útest_pairwise_distancesz&TestOrthoGroup.test_pairwise_distancesà  s   ù€ ô �i‰i×#Ñ# CÓ(ˆõ	 ô ˜˜A–;ˆCöñ 0°Ó=ˆHÙ-¬e¯k©k×.EÑ.E×.IÑ.IÓJˆFä—K‘K×(Ñ(¨°6Ó:‰EˆB�ä˜c 1Õ%ñ! rG   N)rÏ   rÐ   rÑ   r  r  r  r  rR   rÖ   r×   rG  r.  r0  r4  r|  rT  rÚ   rG   rE   r7  r7  {  si   „ ò0ò8ò
!ò>ð ‡[�[×Ñ˜U¢NÓ3ñ
 ó 4ð
 ò:ò6	 òJð ‡[�[×Ññ&ó ñ&rG   r7  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRandomCorrelationc                 ó  — t         j                  j                  d«      }d}t        j                  ||¬«      }t        j                  |d¬«      }t        j
                  g d¢g d¢g d¢g d¢g«      }t        ||«       t        ||«       y )Nr  ©r  rL  rº  rk  r¼   )rÉ   ç¼Ñ“2©Ç¿ç–AµÁ‰è»?çý¢ý…Í¿)rY  rÉ   ç 4Ô($™Í?çR}ç%èÔ?)rZ  r\  rÉ   çqTn¢–æÆ¿)r[  r]  r^  rÉ   )r>   r‘   r°  r   r¦   rÌ   r   )r[   r›   r  ra   r²   rÇ  s         rE   r  z*TestRandomCorrelation.test_reproducibilityý  sv   € Ü�i‰i×#Ñ# CÓ(ˆØ!ˆÜ×"Ñ" 4°cÔ:ˆÜ×#Ñ# D°sÔ;ˆÜ—8‘8ÒAÚ@Ú@ÚAðCó Dˆô 	" ! XÔ.Ü! " hÕ/rG   c                 óÌ  — t        t        t        j                  d «       t        t        t        j                  d«       t        t        t        j                  d«       t        t        t        j                  dg«       t        t        t        j                  ddgddgg«       t        t        t        j                  ddg«       t        t        t        j                  g d¢«       y )	NÚtestrl  r   rM   rN   rj   g      à¿)r   rM   rŸ   )rf  rS   r   r¦   r  s    rE   Útest_invalid_eigsz'TestRandomCorrelation.test_invalid_eigs	  s™   € Ü”jÔ"4×"8Ñ"8¸$Ô?Ü”jÔ"4×"8Ñ"8¸&ÔAÜ”jÔ"4×"8Ñ"8¸#Ô>Ü”jÔ"4×"8Ñ"8¸3¸%Ô@Ü”jÔ"4×"8Ñ"8¸A¸a¸5À!ÀAÀ¸-ÔHÜ”jÔ"4×"8Ñ"8¸3À¸*ÔEÜ”jÔ"4×"8Ñ"8º*ÕErG   c                 óÚ   — d}t        |«      }t        |d¬«      }t        j                  |d¬«      }|j                  d¬«      }|j                  «       }t        ||«       t        ||«       y )NrX  r  r¤   r¼   )r   r¦   r   )r[   r  r€  r<  r¨  r©  r=  s          rE   r  z(TestRandomCorrelation.test_frozen_matrix  s_   € Ø!ˆÜ# DÓ)ˆÜ(¨°CÔ8ˆä!×%Ñ% d¸Ô=ˆØ�z‰z sˆzÓ+ˆØ�‰Ó ˆä�T˜4Ô Ü�T˜4Õ rG   c           	      ó0  — d„ }t         j                  j                  d«      }t        dd«      D �cg c]  } |||j	                  |¬«      «      ‘Œ }}|j                  g d¢«       |D �cg c]  }dgt        |«      z  ‘Œ }}|D �cg c]  }t        j                  ||¬«      ‘Œ }}|D �cg c]4  }t        j                  t         j                  j                  |«      «      ‘Œ6 }	}|D �cg c]  }t        j                  |«      ‘Œ }
}t        |	|
d	d	¬
«       |D �cg c]  }t        j                  |«      ‘Œ }}t        ||«      D ]  \  }}t        ||d	¬«       Œ |D ]  }t        ||j                   d	¬«       Œ y c c}w c c}w c c}w c c}w c c}w c c}w )Nc                 ó$   — | |z  t        |«      z  S r=   )r–   )rµ  rî  s     rE   r   z3TestRandomCorrelation.test_definition.<locals>.norm&  s   € Ø�Q‘3”s˜1“v‘:ÐrG   r0  rM   ri   r…   )rj   r   r   r   rÉ   r¼   r  rÄ  r®  )r>   r‘   r°  rƒ  r   r]  r—   r   r¦   r?  r¿   r¥  r,  r   ru   Úzipr˜   )r[   r   r›   rµ  r  rî  rU   rb  ra   r  Ú
dets_knownÚdiagsr"  r#  s                 rE   Útest_definitionz%TestRandomCorrelation.test_definition  sa  € ò	ô �i‰i×#Ñ# CÓ(ˆä6;¸A¸q´kÓB±k°‘�Q˜Ÿ™¨˜Ó+Õ,°kˆÐBØ�‰’IÔá%)Ó*¡T ��”S˜“V“ TˆÐ*ÙCGÓHÁ4¸aÔ ×$Ñ$ Q°SÖ9À4ˆÐHñ 46Ó6±2¨a”—‘œŸ	™	Ÿ™ aÓ(Õ)°2ˆÐ6Ù*.Ó/©$ Q”b—g‘g˜a•j¨$ˆ
Ð/Ü˜˜j¨u¸5ÕAñ &(Ó(¡R ”—‘˜• RˆÐ(Ü˜˜tÖ$‰DˆAˆqÜ˜A˜q uÖ-ð %ó ˆAÜ˜A˜qŸs™s¨Ö/ñ ùò) Cùò +ùÚHùò 7ùÚ/ùò )s#   ± E:Á*E?ÂFÂ*9F	Ã)FÄFc           	      óš  — t        j                  ddgddggt        ¬«      }t        j                  |«      }t        |t        j                  ddgddgg«      «       t        j                  d¬«      5  t        j                  ddgddgg«      }t        j                  ddgdt        j                  dd«      ggt        ¬«      }t        j                  |j                  «       «      }t        ||j                  j                  |«      j                  |«      «       t        j                  d	dgdd
ggt        ¬«      }t        j                  |j                  «       «      }t        ||j                  j                  |«      j                  |«      «       d d d «       t        j                  ddgddggt        ¬«      }t        j                  |j                  «       «      }t        |d   d«       t        j                  ddgddggt        ¬«      }t        j                  |j                  «       «      }t        |d   d«       y # 1 sw Y   Œ°xY w)NrŸ   r   r   rë   Úignore)Úoverrl   gœu ˆ<ä7~r»  r]  rM   rÀ  gMùk   @)r>   rÌ   rK  r   Ú_to_corrr   ÚerrstateÚ	nextafterÚcopyr˜   r„  )r[   r2  rõ   Úm0s       rE   Útest_to_corrz"TestRandomCorrelation.test_to_corrB  s¾  € ô �H‰H�s˜A�h  A Ð'¬uÔ5ˆÜ×'Ñ'¨Ó*ˆÜ˜œ2Ÿ8™8 a¨ V¨a°¨XÐ$6Ó7Ô8ô
 �[‰[˜hÖ'Ü—‘˜1˜a˜& 2 q 'Ð*Ó+ˆAä—‘˜E 1˜:¨¬2¯<©<¸¸1Ó+=Ð'>Ð?ÄuÔMˆBÜ"×+Ñ+¨B¯G©G«IÓ6ˆAÜ˜A˜qŸs™sŸw™w r›{Ÿ™¨qÓ1Ô2ä—‘˜C ˜<¨%°¨Ð6¼eÔDˆBÜ"×+Ñ+¨B¯G©G«IÓ6ˆAÜ˜A˜qŸs™sŸw™w r›{Ÿ™¨qÓ1Ô2÷ (ô �X‰X˜˜1�v  1˜vÐ&¬eÔ4ˆÜ×'Ñ'¨¯©«	Ó2ˆÜ˜˜#™ Ô"ô �X‰X˜ !�} q¨! fÐ-´UÔ;ˆÜ×'Ñ'¨¯©«	Ó2ˆÜ˜˜#™ Õ"÷' (Ð'ús   Á2D IÉI
N)rÏ   rÐ   rÑ   r  ra  r  rh  rq  rÚ   rG   rE   rV  rV  ü  s   „ ò
0òFò
!ò"0óH#rG   rV  c                   ó,  — e Zd Zej                  j                  dddg«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dg d¢«      d„ «       Zd	„ Zej                  j                  dg d
¢«      d„ «       Z	y)ÚTestUniformDirectionrÝ   r   rN   r†   ©Nr   rh   )rh   rj   c                 óŠ  — t         j                  j                  d«      }t        ||¬«      }|j	                  |«      }t        j
                  |«      t        j                  |«      }}|j                  |||¬«      j                  }|j                  |k(  sJ ‚t         j                  j                  |d¬«      }	t        |	d«       y )Nì   Sid)_i4 r¤   r…   rl   rŠ   rÉ   )r>   r‘   r’   r(   r¦   r½   rV   r   r@   r¿   r   r   )
r[   rÝ   r†   r›   Úuniform_direction_distrn  r­   rÄ   Úexpected_shapeÚnormss
             rE   rÈ  z!TestUniformDirection.test_samplesd  sž   € ô �i‰i×#Ñ#Ð$7Ó8ˆÜ!2°3¸SÔ!AÐØ(×,Ñ,¨TÓ2ˆÜ—H‘H˜S“M¤2§6¡6¨#£;ˆcˆØ×0Ñ0°°sÀÐ0ÓF×LÑLˆØ�}‰} Ò.Ð.Ð.Ü—	‘	—‘˜w¨R�Ó0ˆÜ˜˜rÕ"rG   )Nr   rÿ  rl  c                 ó’   — d}t        j                  t        |¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)NzMDimension of vector must be specified, and must be an integer greater than 0.rK   )rR   r
   rS   r(   r¦   )r[   rÝ   r\   s      rE   r  z%TestUniformDirection.test_invalid_dimq  s1   € ð<ˆä�]‰]œ:¨WÖ5Ü×!Ñ! #Ô&÷ 6×5Ñ5ús	   ž=½Ac                 óÚ   — d}t        |«      }t        |d¬«      }|j                  d¬«      }t        j                  |d¬«      }|j                  «       }t        ||«       t        ||«       y )Nrh   r  r¤   r¼   )r(   r¦   r   r;  s          rE   Útest_frozen_distributionz-TestUniformDirection.test_frozen_distributionx  s_   € ØˆÜ" 3Ó'ˆÜ'¨°#Ô6ˆà�z‰z sˆzÓ+ˆÜ ×$Ñ$ S°sÔ;ˆØ�‰Ó ˆä�T˜4Ô Ü�T˜4Õ rG   )rM   rh   r   c                 ó  — t         j                  j                  d«      }t        ||¬«      }|j	                  d¬«      \  }}|||z  |z  z  }|t         j
                  j                  |«      z  }t        ||z  dd¬«       |j	                  d¬«      }||z  }||z  }t        j                  ||«      }	|	t         j                  z  }	|	dt         j                  z  z  }	t        «       }
t        |	|
j                  «      }|j                  d	kD  sJ ‚y )
Nl   @9š¼Y sr¤   rM   r…   r   rª  rô  rF  r  )r>   r‘   r’   r(   r¦   r¿   r   r   Úarctan2r  r   r!   rµ   Úpvalue)r[   rÝ   r›   Úspherical_distÚv1Úv2rn  Ús1Ús2ÚanglesÚuniform_distÚkstest_results               rE   Útest_uniformz!TestUniformDirection.test_uniform„  sö   € ä�i‰i×#Ñ#Ð$7Ó8ˆÜ*¨3°SÔ9ˆà×#Ñ#¨Ð#Ó+‰ˆˆBØ
ˆb�2‰g˜‰lÑˆØ
Œb�i‰i�n‰n˜RÓ Ñ ˆÜ˜˜R™ ¨Õ/à ×$Ñ$¨%Ð$Ó0ˆØ�r‰\ˆØ�r‰\ˆÜ—‘˜B Ó#ˆð 	”"—%‘%‰ˆØ�!”B—E‘E‘'Ñˆä“yˆÜ˜v |×'7Ñ'7Ó8ˆØ×#Ñ# dÒ*Ð*Ñ*rG   N)
rÏ   rÐ   rÑ   rR   rÖ   r×   rÈ  r  r|  rˆ  rÚ   rG   rE   rs  rs  c  s“   „ Ø‡[�[×Ñ˜U Q¨ FÓ+Ø‡[�[×Ñ˜VÒ%9Ó:ñ	#ó ;ó ,ð	#ð ‡[�[×Ñ˜UÒ$:Ó;ñ'ó <ð'ò
!ð ‡[�[×Ñ˜U¢IÓ.ñ+ó /ñ+rG   rs  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestUnitaryGroupc                 ó
  — t         j                  j                  d«      }t        j                  d|¬«      }t        j                  dd¬«      }t        j
                  g d¢g d¢g d¢g«      }t        ||«       t        ||«       y )Nr  rN   r¼   )y~½pçÂÓ?yÎZ×?y“§¬¦ë‰¦?ÊÄ­‚èã?y¬8ÕZ˜…Ä?‘&Þž4ã?)yEHÝÎ¾rç?8iÍÓ?y¡eÝ?¢³?+ö—Ý“‡Ý¿yŸu�–=Ù¿B˜Û½Ü'—?)yqXøQÃ¿Ÿ��·±ÙÖ?yˆ˜Në6Ò¿º¿zÜ·Úá¿yŽ! 8ölã?2WÕ'Ó?)r>   r‘   r°  r   r¦   rÌ   r   )r[   r›   ra   r²   rÇ  s        rE   r  z%TestUnitaryGroup.test_reproducibility�  sm   € Ü�i‰i×#Ñ# CÓ(ˆÜ×Ñ˜a¨cÔ2ˆÜ×Ñ˜q¨sÔ3ˆä—8‘8ÚIÚHÚKðMó
ˆô 	" ! XÔ.Ü! " hÕ/rG   c                 óü   — t        t        t        j                  d «       t        t        t        j                  d«       t        t        t        j                  d«       t        t        t        j                  d«       y r  )rf  rS   r   r¦   r  s    rE   r  z!TestUnitaryGroup.test_invalid_dim«  sJ   € Ü”j¤-×"3Ñ"3°TÔ:Ü”j¤-×"3Ñ"3°VÔ<Ü”j¤-×"3Ñ"3°RÔ8Ü”j¤-×"3Ñ"3°SÕ9rG   c                 óÞ   — d}t        |«      }t        |d¬«      }|j                  d¬«      }t        j                  |d¬«      }|j                  d¬«      }t        ||«       t        ||«       y )Nrk   r  r¤   r¼   r   r…   )r   r¦   r   r;  s          rE   r  z#TestUnitaryGroup.test_frozen_matrix±  sc   € ØˆÜ˜sÓ#ˆÜ# C¨cÔ2ˆà�z‰z sˆzÓ+ˆÜ× Ñ  °3Ô7ˆØ�‰ AˆÓ&ˆä�T˜4Ô Ü�T˜4Õ rG   c                 óN  — t        dd«      D ��cg c]'  }t        d«      D ]  }t        j                  |«      ‘Œ Œ) }}}|D ]\  }t        t	        j
                  ||j                  «       j                  «      t	        j                  |j                  d   «      d¬«       Œ^ y c c}}w )NrM   r7  rN   r   rS  rô  )
rƒ  r   r¦   r   r>   r„  Úconjr˜   rV   r@   )r[   rÝ   rµ  rb  ra   s        rE   Útest_unitarityzTestUnitaryGroup.test_unitarity½  s‡   € ä˜q œô!Ù$�#Ü˜Q–x�!ô ×Ñ Õ$àð %Ø$ð 	ñ !ó
 ˆAÜœBŸF™F 1 a§f¡f£h§j¡jÓ1´2·6±6¸!¿'¹'À!¹*Ó3EÈEÖRñ ùó!s   �,B!c           	      ó.  — dD �]
  }d}t        j                  ||t        j                  j	                  d«      ¬«      }t        j
                  |D �cg c]!  }t        j                  j                  |«      ‘Œ# c}«      }t        j                  |j                  |j                  «      }t        |j                  «       t        t        j                   dt        j                  z  «      j                   «      }t#        |j$                  dkD  «       �Œ y c c}w )Nrý  r¿  r  r¢   rM   r  )r   r¦   r>   r‘   r’   r\  rË   r¿   Úeigvalsr~  ÚimagrW  r!   Úravelr   r  rµ   r	   r  )r[   rÝ   rn  rb  ra   r  rA   s          rE   r.  zTestUnitaryGroup.test_haarÆ  sÃ   € ô
 ˆCØˆGä×"Ñ"Ø˜'´·	±	×0EÑ0EÀcÓ0JôˆBô —9‘9¹rÓB¹r¸!œeŸl™l×2Ñ2°1Õ5¸rÑBÓCˆDÜ—
‘
˜4Ÿ9™9 d§i¡iÓ0ˆAÜ˜Ÿ™›¤G¬R¯U©U¨F°A´b·e±e±GÓ$<×$@Ñ$@ÓAˆCÜ�C—J‘J Ñ%Ö&ñ ùò Cs   Á&D
c                 óZ   — t        t        j                  dd¬«      j                  d«       y r2  )r   r   r¦   r@   r  s    rE   r4  z"TestUnitaryGroup.test_zero_by_zeroÙ  s   € Ü”]×&Ñ& q¨qÔ1×7Ñ7¸ÕCrG   N)	rÏ   rÐ   rÑ   r  r  r  r�  r.  r4  rÚ   rG   rE   rŠ  rŠ  œ  s"   „ ò0ò:ò
!òSò'ó&DrG   rŠ  c                   óð  — e Zd Zddgddgddgddgddgddgddgddgddgddgg
ddgddgddggdg d¢fg d¢g d	¢g d
¢g d¢g d¢gg d¢g d¢g d¢g d¢gdg d¢fgZej
                  j                  de«      d„ «       Zej
                  j                  de«      d„ «       Zd„ Z	d„ Z
ej
                  j                  d¬«       ed«      d„ «       «       Zd„ Zd„ Zddd d!dgdd!ggd ddgd!dgdd!ggdfd d!dgdd!ggd!ddgd!dgdd!ggd!fd!d!gd d d!d!gddgddggdfd!d!gd d!d!d!gddgddggd!fd!d!gd!dgdd!ggd d!d!gd!dgdd!ggdfd!d!gd!dgdd!ggd!d!d!gd!dgdd!ggd!fgZej
                  j                  d"e«      d#„ «       Zd$ddd$gdggdfd$gdgdd$gdggdf ej&                  d$g«       ej&                  dg«      dd$gdggdfgZej
                  j                  d"e«      d%„ «       Zd&„ Zd'„ Zd(„ Zej
                  j                  d)d*d+g«      ej
                  j                  d,g d-¢«      ej
                  j                  d.d/d0ej2                  g«      d1„ «       «       «       Zd2„ Zej
                  j                  d,g d3¢«      d4„ «       Zej
                  j                  d,g d5¢«      d6„ «       ZdWd8„Zd9„ Zej
                  j                  d,g d:¢«      ej
                  j                  d;g d<¢«      ej
                  j                  d=d7d>g«      d?„ «       «       «       Z ej
                  jB                  d@„ «       Z"dA„ Z#dB„ Z$dC„ Z%ej
                  j                  d,dD«      dE„ «       Z&dF„ Z'ej
                  j                  d.g dG¢«      dH„ «       Z(ej
                  j                  dIdJ ejR                  dd«      dKdLfdM ej&                  dNdgddJgg«      dOdPfg«      dQ„ «       Z*ej
                  j                  dRg dS¢«      dT„ «       Z+dU„ Z,dV„ Z-y )XÚTestMultivariateTr   rM   rj   rN   rh   r   )
ç|	ßŒ–�Œ?çv
®Å2R?r˜  g0Ü÷$H?r™  r™  g�¥Oäïû`?gåïÕ’XO?g†	ßŒ–�,?g8ÝàN¹8?)gðHPüï?g“©‚QI�À?góÒo_ê?)g9ÖÅm4€ß?g=›UŸ«á?gË¡E¶óýæ?)gÝ$�•CÓ?gh³êsµÃ?gÇº¸�à?)g–!Žuqã?g%�•C‹Ð?gÏ÷Sã¥›ì?)gO¯”eˆcá?gz¥,Cëà?g•Ô	h"lî?)rl   r   é2   )rÉ   r  r>  )r  rÉ   r\  )r>  r\  rÉ   r   )gJ#Ž¥RÉ<g^Ó±�Ê<gš‹L[É<gêN=à¼Ê<gü`$æ§ÁË<zx, loc, shape, df, ansc                 ó\   — t        |||d¬«      }|j                  |«      }t        ||«       y ©Nr   r¤   )r$   rª   r   )r[   ra   rÂ  r@   r  ÚansrÍ   Úvals           rE   Útest_pdf_correctnessz&TestMultivariateT.test_pdf_correctness&  s)   € ä˜c 5¨"°1Ô5ˆØ�h‰h�q‹kˆÜ! # sÕ+rG   c                 ó¤   — t        |||d¬«      }|j                  |«      }|j                  |«      }t        t	        j
                  |«      |«       y rœ  )r$   rª   r«   r   r>   rq  )	r[   ra   rÂ  r@   r  r�  rÍ   r¥  r¦  s	            rE   Útest_logpdf_correctz%TestMultivariateT.test_logpdf_correct,  s>   € ä˜c 5¨"°1Ô5ˆØ�x‰x˜‹{ˆØ�{‰{˜1‹~ˆÜ!¤"§&¡&¨£,°Õ5rG   c                 ó|   — g d¢}t        j                  |d¬«      }t        j                  |«      }t        ||«       y )N)
r¶  rk   rj   r   r1  r¶  r   r1  rl   rN   r   rÌ  )r$   rª   r%   r   )r[   ra   rž  r�  s       rE   Útest_mvt_with_df_one_is_cauchyz0TestMultivariateT.test_mvt_with_df_one_is_cauchy4  s0   € Ú-ˆÜ× Ñ   qÔ)ˆÜ�j‰j˜‹mˆÜ! # sÕ+rG   c                 ó  — d}t        dddd¬«      }|j                  d¬«      }t        |«      \  }}||kD  sJ ‚t        ddgd	d
gd
d	ggdd¬«      }|j                  d¬«      }t        |«      \  }}||kD  j                  «       sJ ‚y )NrŸ   r   r   é † ©r  r¥   r…   ro   rN   r›  rl   rñ  )r$   r¦   r&   r�  )r[   Ú	P_VAL_MINrÍ   rn  rß   rS  s         rE   Ú&test_mvt_with_high_df_is_approx_normalz8TestMultivariateT.test_mvt_with_high_df_is_approx_normal:  s›   € ð
 ˆ	ä˜a  v°AÔ6ˆØ—(‘( �(Ó'ˆÜ˜'Ó"‰ˆˆ1Ø�I’Ð�ä˜r 1˜g¨¨R¨°2°r°(Ð';ÀØ#%ô'ˆà—(‘( �(Ó'ˆÜ˜'Ó"‰ˆˆ1Ø�Y‘×#Ñ#Ô%Ð&Ñ%rG   zuses mocking©Úreasonz'scipy.stats.multivariate_normal._logpdfc                 ó:  — t        ddt        j                  d¬«      }t        |t        «      sJ ‚t        j
                  dt        j                  ¬«       |j                  dk(  sJ ‚t        j                  dt        j                  ¬«       |j                  dk(  sJ ‚y )Nr   r   rk   r¦  rÌ  rM   )r$   r>   rù   r§   r   rª   Ú
call_countr«   )r[   ÚmockrÍ   s      rE   Ú!test_mvt_with_inf_df_calls_normalz3TestMultivariateT.test_mvt_with_inf_df_calls_normalL  su   € ô ˜a ¤r§v¡v°AÔ6ˆÜ˜$Ô :Ô;Ð;Ð;Ü×Ñ˜1¤§¡Õ(Ø�‰ !Ò#Ð#Ð#Ü×Ñ˜a¤B§F¡FÕ+Ø�‰ !Ò#Ð#Ñ#rG   c                 óÔ  — d}t        j                  |«      }t        j                  |«      }d}t        j                  |«      }t        |||«      j	                  |«      }t        j
                  |«      sJ ‚t        |||«      j                  |«      }t        j
                  |«      sJ ‚d}t         j                  j                  d«      }|j                  ||f«      }t        |||«      j	                  |«      }|j                  |fk(  sJ ‚t        |||«      j                  |«      }|j                  |fk(  sJ ‚t        t        j                  d«      t        j                  d«      d«      j                  «       }t        j
                  |«      sJ ‚d}	t        t        j                  d«      t        j                  d«      d«      j                  |	¬«      }|j                  |	fk(  sJ ‚y )Nrj   ç      @rk   l   ©áI r   r…   )r>   r½   rV   r$   rª   Úisscalarr«   r‘   r’   r@   r¦   )
r[   rÝ   rÂ  r@   r  ra   rA   Ú	n_samplesr›   r†   s
             rE   Útest_shape_correctnessz(TestMultivariateT.test_shape_correctnessV  s•  € ð ˆÜ�h‰h�s‹mˆÜ—‘�s“ˆØˆÜ�H‰H�S‹MˆÜ˜S %¨Ó,×0Ñ0°Ó3ˆÜ�{‰{˜3ÔÐÐÜ˜S %¨Ó,×3Ñ3°AÓ6ˆÜ�{‰{˜3ÔÐÐð ˆ	Ü�i‰i×#Ñ# JÓ/ˆØ�J‰J˜	 3Ð'Ó(ˆÜ˜S %¨Ó,×0Ñ0°Ó3ˆØ—	‘	˜i˜\Ò)Ð*Ð)Ü˜S %¨Ó,×3Ñ3°AÓ6ˆØ—	‘	˜i˜\Ò)Ð*Ð)ô œRŸX™X a›[¬"¯&©&°«)°QÓ7×;Ñ;Ó=ˆÜ�{‰{˜3ÔÐÐð ˆÜœRŸX™X a›[¬"¯&©&°«)°QÓ7×;Ñ;ÀÐ;ÓFˆØ—	‘	˜d˜WÒ$Ð%Ñ$rG   c                 ó˜   — t        «       }t        |j                  dg«       t        |j                  dgg«       |j                  dk(  sJ ‚y )Nr   r   ©r$   r   rÂ  r@   r  )r[   rÍ   s     rE   Útest_default_argumentsz(TestMultivariateT.test_default_argumentsw  s<   € ÜÓˆÜ�T—X‘X ˜sÔ#Ü�T—Z‘Z 1 # Ô'Ø—‘˜1’Ð‘rG   )NNNr   r   r   )NNrk   r   r   rk   Nrk   z*loc, shape, df, loc_ans, shape_ans, df_ansc                 óš   — t        |||¬«      }t        |j                  |«       t        |j                  |«       |j                  |k(  sJ ‚y )Nr  rµ  ©r[   rÂ  r@   r  Úloc_ansÚ	shape_ansÚdf_ansrÍ   s           rE   Útest_default_argsz#TestMultivariateT.test_default_argsˆ  s@   € ô  #¨U°rÔ:ˆÜ�T—X‘X˜wÔ'Ü�T—Z‘Z Ô+Ø—‘˜6Ò!Ð"Ñ!rG   rl   c                 ó¢   — t        |||«      }t        |j                  |«       t        |j                  |«       t        |j                  |«       y r=   rµ  r¸  s           rE   Ú&test_scalar_list_and_ndarray_argumentsz8TestMultivariateT.test_scalar_list_and_ndarray_arguments–  s<   € ô ˜c 5¨"Ó-ˆÜ�T—X‘X˜wÔ'Ü�T—Z‘Z Ô+Ü�T—W‘W˜fÕ%rG   c           	      ó‚  — ddgg}t        t        t        fi t        |¬«      ¤Ž ddgddgddgg}t        t        t        fi t        ||¬«      ¤Ž t	        j
                  d«      }t	        j                  d«      }d}t        t        t        fi t        |||¬«      ¤Ž d}t        t        t        fi t        |||¬«      ¤Ž y )	Nr   )rÂ  rM   rN   )rÂ  r@   rl   r  r   )rf  rS   r$   r%  r>   r½   rV   )r[   rÂ  r@   r  s       rE   Útest_argument_error_handlingz.TestMultivariateT.test_argument_error_handlingŸ  sÀ   € à�1ˆvˆhˆÜ”jÜ$ñ	'ä œò	'ð
 �Q�˜!˜Q˜ ! Q Ð(ˆÜ”jÜ$ñ	4ä ¨EÔ2ò	4ô
 �h‰h�q‹kˆÜ—‘�q“	ˆØˆÜ”jÜ$ñ	;ä ¨E°bÔ9ò	;ð ˆÜ”jÜ$ñ	;ä ¨E°bÔ9ó	;rG   c                 ó,  — t         j                  j                  d«      }|j                  d¬«      }t        j                  d«      }t        ||dd¬«      }t        ||dd¬«      }|j                  d¬«      }|j                  d¬«      }t        ||«       y )Nrj   rN   r…   rM   r¦  r›  )r>   r‘   r°  r   rV   r$   r¦   r   )r[   r›   rÂ  r@   r°   Údist2Úsamples1Úsamples2s           rE   r  z&TestMultivariateT.test_reproducibility¸  s}   € Ü�i‰i×#Ñ# AÓ&ˆØ�k‰k˜qˆkÓ!ˆÜ—‘�q“	ˆÜ˜s E¨a°aÔ8ˆÜ˜s E¨a°aÔ8ˆØ—9‘9 "�9Ó%ˆØ—9‘9 "�9Ó%ˆÜ�X˜xÕ(rG   c                 ó„   — t        ddgddgddggdd¬«      }t        t        j                  j                  t
        fi |¤Ž y )Nr   r   F)rÂ  r@   r  r`   )r%  rf  r>   r¿   rí  r$   )r[   rC   s     rE   Útest_allow_singularz%TestMultivariateT.test_allow_singularÂ  s;   € ä˜˜1˜ q¨ e¨Q¨q¨E ]°qÈÔOˆÜ”b—i‘i×+Ñ+¬^ÑD¸tÓDrG   r†   )r›  rN   )rh   ri   rj   rN   rÝ   )rM   rN   rj   rh   r  rÉ   r‡  c                 ó¸   — t        t        j                  |«      t        j                  |«      |«      }|j	                  |¬«      }|j
                  ||fz   k(  sJ ‚y rM  )r$   r>   r½   rV   r¦   r@   )r[   r†   rÝ   r  rÍ   r¦   s         rE   Útest_rvszTestMultivariateT.test_rvsÇ  sJ   € ô œbŸh™h s›m¬R¯V©V°C«[¸"Ó=ˆØ�h‰h˜DˆhÓ!ˆØ�y‰y˜D C 7™NÒ*Ð*Ñ*rG   c                 ó  — t        j                  d«      }t        j                  d«      }d}g d¢g d¢g d¢g d¢g}g d¢g d¢g d¢g d¢g}t        j                  g d¢«      }t	        j
                  |||||¬«      }t        ||d	   |z  «       y )
NrN   r›  r  rm   r)  r*  r+  r  r   r,  )r[   r­   rÄ   r  r#  r"  r-  rµ   s           rE   r.  z TestMultivariateT.test_cdf_signsÏ  sv   € ä�x‰x˜‹{ˆÜ�f‰f�Q‹iˆØˆÚš	¢9ªiÐ8ˆÚš	¢9ªiÐ8ˆäŸ™¢.Ó1ˆÜ!×%Ñ% a¨¨s°BÀAÔFˆÜ˜˜S ™V NÑ2Õ3rG   )r   rM   rh   c                 ó&   — | j                  |«       y r=   ©Úcdf_against_mvn_test©r[   rÝ   s     rE   Ú$test_cdf_against_multivariate_normalz6TestMultivariateT.test_cdf_against_multivariate_normalÛ  s   € ð 	×!Ñ! #Õ&rG   )rN   ri   r¶  c                 ó(   — | j                  dd«       y )NrN   TrË  rÍ  s     rE   Ú-test_cdf_against_multivariate_normal_singularz?TestMultivariateT.test_cdf_against_multivariate_normal_singularà  s   € ð 	×!Ñ! ! TÕ*rG   Fc           	      ó,  — t         j                  j                  d«      }d}d|j                  dd|¬«      z  }t	        ||||«      }d|j                  dd|¬«      z  t        j
                  |j                  |¬«      «      z  }d|j                  dd||f¬«      z   |z   }d|j                  dd||f¬«      z  |z   }	t        j                  j                  |	||d	|d
|¬«      }
t        j                  j                  |	||d
|¬«      }t        |
|d¬«       y )Nì   ]J>?a rN   r›  ro   r   r…   rl   rM   rF  T)r  r  r`   r£   )r`   r  çü©ñÒMb@?rô  )r>   r‘   r’   r   râ   ÚsignrÜ   r0   r$   rµ   r   r   )r[   rÝ   rˆ   r›   rÁ   rq  rÄ   r­   r"  r#  rA   rB   s               rE   rÌ  z&TestMultivariateT.cdf_against_mvn_testå  s  € ä�i‰i×#Ñ# OÓ4ˆØˆà�—‘˜B ¨�Ó,Ñ,ˆÜ   a¨¨hÓ7ˆà�3—;‘;˜r 1¨3�;Ó/Ñ/´"·'±'¸#¿*¹*È#¸*Ó:NÓ2OÑOˆØ�—‘˜R ¨!¨S¨�Ó2Ñ2Ð2°TÑ9ˆØ�—‘˜B ¨¨C¨�Ó1Ñ1°DÑ8ˆä×"Ñ"×&Ñ& q¨$°¸È1Ø6:Èð 'ó Nˆä×'Ñ'×+Ñ+¨A¨t°SÈØ89ð ,ó ;ˆä˜˜S tÖ,rG   c                 óP  — t         j                  j                  d«      }d}d}|j                  dt        j                  |«      ¬«      }d}t
        j                  j                  ||||t         j                   |¬«      }t
        j                  j                  |||t        j                  |«      «      }t
        j                  j                  ||t        j                  |«      «      }t        ||d¬	«       t        j                  t        j                  ||z
  «      d
kD  «      sJ ‚y )NrÒ  rM   r   r›  )r†   r¼  rN   )r  r£   rÓ  rô  r­  )r>   r‘   r’   rÜ   r  r0   r$   rµ   rù   r/  r   r   r�  rm  )	r[   r›   rÄ   r­   ra   r  rA   rB   Ú	incorrects	            rE   Útest_cdf_against_univariate_tz/TestMultivariateT.test_cdf_against_univariate_t÷  sÛ   € Ü�i‰i×#Ñ# OÓ4ˆØˆØˆØ�J‰J˜B¤b§g¡g¨c£lˆJÓ3ˆØˆä×"Ñ"×&Ñ& q¨$°°RÄbÇfÁfÀWØ47ð 'ó 9ˆä�g‰g�k‰k˜!˜R ¤r§w¡w¨s£|Ó4ˆÜ—J‘J—N‘N 1 d¬B¯G©G°C«LÓ9ˆ	ä˜˜S tÕ,Ü�v‰v”b—f‘f˜S 9™_Ó-°Ñ4Ô5Ð5Ñ5rG   )rM   rN   rh   r›  r¥   )ì   no l   øm±, l   �sO l   €�U iOfYl    Ož_ rˆ   Tc           	      óP  — |r|dk7  rt        j                  d«       t        j                  j	                  |«      }d|j                  dd|¬«      z  }t        ||||«      }|j                  |«      }|j                  |«       }|j                  |«      }	|j                  «       dz  }
t        j                  j                  |	|||
|d¬	«      }t        j                  d
¬«      5  t        d|
|t        j                  |z  |	|z
  |«      d   }d d d «       t        |dd¬«       t        j                  j                  |	|||
||d¬«      }t        j                  d
¬«      5  t        d|
|||z
  |	|z
  |«      d   }d d d «       t        ||dd¬«       y # 1 sw Y   Œ†xY w# 1 sw Y   Œ%xY w)NrØ  z4Agreement with qsimvtv is not great in singular caser›  ro   rM   r…   rh   T)r£   r`   rj  )Úinvalidrü  r   g-Cëâ6*?r­  ©rÅ  r¯  )r  r£   r`   r$  )rR   r�   r>   r‘   r’   r   râ   r0   r$   rµ   rm  r:   rù   r   )r[   rÝ   r¥   rˆ   r›   rq  rÄ   r­   r"  r#  r  rA   rB   s                rE   Útest_cdf_against_qsimvtvz*TestMultivariateT.test_cdf_against_qsimvtv  s  € ñ
 ˜ 
Ò*Ü�K‰KÐNÔOÜ�i‰i×#Ñ# DÓ)ˆØ�—‘˜B ¨�Ó,Ñ,ˆÜ   a¨¨hÓ7ˆØ�z‰z˜#‹ˆØ�Z‰Z˜‹_ÐˆØ�J‰J�s‹OˆØ�Z‰Z‹\˜AÑˆô ×"Ñ"×&Ñ& q¨$°°RÀcØ6:ð 'ó <ˆä�[‰[ Ö*Ü˜5 " c¬2¯6©6°!©8°Q¸±X¸sÓCÀAÑFˆC÷ +ä˜˜S t°$Õ7ô ×"Ñ"×&Ñ& q¨$°°RÀQØ47Èð 'ó Nˆä�[‰[ Ö*Ü˜5 " c¨1¨t©8°Q¸±X¸sÓCÀAÑFˆC÷ +ä˜˜S t°$Ö7÷ +Ð*ú÷ +Ð*ús   Ã#(FÅFÆFÆF%c           
      ó€  ‡	‡
‡— d}t         j                  j                  d«      }d|j                  dd|¬«      z  }t	        |||d¬«      Š	|j                  |«      Š|j                  |«       }|j                  |«      }|j                  «       d	z  Š
t
        j                  j                  |‰‰	‰
||¬
«      }ˆ	ˆ
ˆfd„}t        |||t
        j                  j                  ||¬«      ¬«      }t        ||j                  d¬«       ˆ	ˆ
ˆfd„}t        ||d   |d   |d   |d   |d   |d   «      }t        ||d   d¬«       y )NrN   l   	!†y‚ r›  rl   r   r…   T)rˆ   rh   )r£   r  c                 ó\   •— t         j                  j                  | j                  ‰‰‰«      S r=   )r0   r$   rª   r˜   )ra   rÄ   r  r­   s    €€€rE   Ú	integrandzITestMultivariateT.test_cdf_against_generic_integrators.<locals>.integrand2  s$   ø€ Ü×'Ñ'×+Ñ+¨A¯C©C°°s¸BÓ?Ð?rG   )r*  r¥   )Úqrngr­  r®  c                  óT   •— t         j                  j                  | d d d…   ‰‰‰«      S )Nrl   )r0   r$   rª   )ÚzyxrÄ   r  r­   s    €€€rE   rß  zITestMultivariateT.test_cdf_against_generic_integrators.<locals>.integrand8  s(   ø€ Ü×'Ñ'×+Ñ+¨C±°"°©I°t¸SÀ"ÓEÐErG   r   rM   )r>   r‘   r’   r   râ   r0   r$   rµ   r5   ÚqmcÚHaltonr   Úintegralr7   )r[   rÝ   r›   rq  r"  r#  rA   rß  rB   rÄ   r  r­   s            @@@rE   Ú$test_cdf_against_generic_integratorsz6TestMultivariateT.test_cdf_against_generic_integrators#  s+  ú€ ð ˆÜ�i‰i×#Ñ# NÓ3ˆØ�#—+‘+˜b !¨#�+Ó.Ñ.ˆÜ   a¨°tÔ<ˆØ�z‰z˜#‹ˆØ�Z‰Z˜‹_ÐˆØ�J‰J�s‹OˆØ�Z‰Z‹\˜AÑˆä×"Ñ"×&Ñ& q¨$°°RÀcØ34ð 'ó 6ˆö	@ô �y ! Q¬U¯Y©Y×-=Ñ-=ÀÈ#Ð-=Ó-NÔOˆÜ˜˜SŸ\™\°Õ5ö	Fô �i  1¡ q¨¡t¨Q¨q©T°1°Q±4¸¸1¹¸qÀ¹tÓDˆÜ˜˜S ™V¨$Ö/rG   c                 óú   — t         j                  j                  d«      }t        j                  g d¢g d¢g d¢g«      }d}t	        j
                  ||¬«      }|j                  g d¢|¬«      }d	}t        ||d
¬«       y )Nl   ËJ½a )gço!ß@çSÛ<ÄõÞÍ?çÍ^SsûÑ@)rè  g’R·P…¬=@ç“jTŠ0@)ré  rê  g™ˆÐk`-3@gú WÀKÿ?©r@   r  rm   r¼   g¡ø1æ®%Ð?r­  r®  )r>   r‘   r’   rÌ   r0   r$   rµ   r   )r[   r›   rÄ   r  rÍ   rA   rB   s          rE   Útest_against_matlabz%TestMultivariateT.test_against_matlab>  sr   € ô �i‰i×#Ñ# JÓ/ˆÜ�h‰hÒ?Ú?Ú?ðAó Bˆð  ˆÜ×#Ñ#¨#°"Ô5ˆØ�h‰h’y¨sˆhÓ3ˆØˆÜ˜˜S tÖ,rG   c                 óò  — d}t         j                  j                  |«      }|j                  d¬«      }|j                  d¬«      |z   }t        j                  d«      }|j                  «       }|||f}t         j                  j                  |«      }t         j                  j                  |«      }	t        j                  |d|iŽ}
t        |
j                  |«      t        j                  |g|¢­d|	iŽ«       y )Nl   2m rN   r…   r¥   r£   )	r>   r‘   r’   r   rV   r0   r$   r   rµ   )r[   r¥   r›   rÂ  ra   r@   r  rC   Ú
rng_frozenÚrng_unfrozenrÍ   s              rE   rÒ  zTestMultivariateT.test_frozenO  sÌ   € ØˆÜ�i‰i×#Ñ# DÓ)ˆØ�k‰k˜qˆkÓ!ˆØ�K‰K˜QˆKÓ #Ñ%ˆÜ—‘�q“	ˆØ�Z‰Z‹\ˆØ�U˜BÐˆä—Y‘Y×*Ñ*¨4Ó0ˆ
Ü—y‘y×,Ñ,¨TÓ2ˆÜ×#Ñ# TÐ;°
Ñ;ˆÜ�T—X‘X˜a“[Ü#×'Ñ'¨ÐL¨DÒL¸|ÑLõ	NrG   c                 ó®  ‡‡	‡
‡— d}d}t         j                  j                  d«      Š‰j                  ||f¬«      }||j                  z  Š‰j                  |«      Š
‰j                  ||fz   «      }‰j                  «       dz  Š	t        j
                  j                  |‰
‰‰	‰¬«      }ˆˆ	ˆ
ˆfd„}t        j                  |d|«      }t        ||d	d
¬«       y )Nrj   r#  rÒ  r…   rh   r¼   c                 óT   •— t        d‰‰t        j                   | z  | ‰z
  ‰«      d   S )NrF  r   )r:   r>   rù   )ra   rÄ   r  r­   r›   s    €€€€rE   Ú_cdf_1dz2TestMultivariateT.test_vectorized.<locals>._cdf_1dj  s+   ø€ Ü˜E 2 s¬R¯V©V¨G°A©I°q¸±v¸sÓCÀAÑFÐFrG   rl   r$  r­  rÛ  )	r>   r‘   r’   r˜   r0   r$   rµ   Úapply_along_axisr   )r[   rÝ   rÁ   r{   ra   rA   rò  rB   rÄ   r  r­   r›   s           @@@@rE   Útest_vectorizedz!TestMultivariateT.test_vectorized^  s¾   û€ ØˆØˆÜ�i‰i×#Ñ# OÓ4ˆØ�J‰J˜S #˜JˆJÓ'ˆØ�!—#‘#‰gˆØ�z‰z˜#‹ˆØ�J‰J�q˜C˜6‘zÓ"ˆØ�Z‰Z‹\˜AÑˆä×"Ñ"×&Ñ& q¨$°°RÀcÐ&ÓJˆ÷	Gô ×!Ñ! '¨2¨qÓ1ˆÜ˜˜S t°$Ö7rG   rA  c                 ó  — t         j                  j                  d«      }t        j                  j                  dgdg|dz
  z  z   ¬«      }t        j                  |¬«      j                  dg|z  |¬«      }d|dz   z  }t        ||d¬	«       y )
NrÒ  r   r  )r�  )r@   r   r¼   r8  r®  )
r>   r‘   r’   rË   r¿   Útoeplitzr0   r$   rµ   r   )r[   rÝ   r›   r{   rA   rB   s         rE   Útest_against_analyticalz)TestMultivariateT.test_against_analyticalp  s~   € ä�i‰i×#Ñ# OÓ4ˆÜ�L‰L×!Ñ! Q C¨3¨%°3¸±7Ñ*;Ñ$;Ð!Ó<ˆÜ×"Ñ"¨Ô+×/Ñ/°°°c±	ÈÐ/ÓLˆØ�3˜‘7‰mˆÜ˜˜S tÖ,rG   c                 óà   — t        j                  dd«      }t         j                  }t        j                  j                  ||¬«      }t        j                  j                  d |«      }||k(  sJ ‚y )NrN   rë  )r>   rV   rù   r0   r$   r¬   r   )r[   rÄ   r  Úmvt_entropyÚmvn_entropys        rE   Útest_entropy_inf_dfz%TestMultivariateT.test_entropy_inf_dfx  s[   € Ü�f‰f�Q˜‹lˆÜ�V‰VˆÜ×*Ñ*×2Ñ2¸ÀÐ2ÓDˆÜ×/Ñ/×7Ñ7¸¸cÓBˆØ˜kÒ)Ð)Ñ)rG   )r   r›  r£  c                 ó¢   — t         j                  j                  d|¬«      }t         j                  j                  |¬«      }t	        ||d¬«       y )NrÉ   rë  rÌ  r  r®  )r0   r$   r¬   r/  r   )r[   r  rù  Ú	t_entropys       rE   Útest_entropy_1dz!TestMultivariateT.test_entropy_1d  s=   € ä×*Ñ*×2Ñ2¸ÀÐ2ÓCˆÜ—G‘G—O‘O r�OÓ*ˆ	Ü˜ Y°UÖ;rG   zdf, cov, ref, tolr›  gÔøË}’M@rª  r£  r  gŒNfh@rm  c                 ó”   — t        j                  d«      }t        j                  |||«      }t	        |j                  «       ||¬«       y )NrÔ  r®  )r>   r½   r0   r$   r   r¬   )r[   r  rÄ   rB   ÚtolrÂ  Úmvts          rE   Ú%test_entropy_vs_numerical_integrationz7TestMultivariateT.test_entropy_vs_numerical_integration“  s7   € ô
 �h‰h�u‹oˆÜ×"Ñ" 3¨¨RÓ0ˆÜ˜Ÿ™› s°Ö5rG   zdf, dim, ref, tol))r›  r   gDdÿVWø?rS  )r£  r   gU•“°Ýö?r  )rˆ  r   g÷Ž/+¼ö?rª  )ç@Œµx¯Dr   çZ_2äø³ö?rS  )ç}Ã”%­I²Tr   r  rS  )r›  r›  gz©°g#.@rS  )r¿  r›  gD¬ë:f,@r  )r  r›  ç1÷>÷`,@rS  )r  r›  r  rS  )r›  r£  g8—d¹?‰b@rS  )r¿  r£  gç-YÒº¿a@rª  )r  r£  çZGrš¼a@rS  )r  r£  r  rS  c                 ó�   — t        j                  t        j                  |«      |¬«      }t	        |j                  «       ||¬«       y )Nrë  r®  )r0   r$   r>   rV   r   r¬   )r[   r  rÝ   rB   r   r  s         rE   Útest_extreme_entropyz&TestMultivariateT.test_extreme_entropyœ  s1   € ôF ×"Ñ"¬¯©°«¸Ô<ˆÜ˜Ÿ™› s°Ö5rG   c                 óª  — t        j                  g d¢g d¢g d¢g d¢g d¢g«      }||j                  z  }d}t        j                  j                  ||¬«      }t        d |¬«      j                  «       }t        ||d	¬
«       d}d}t        j                  j                  ||¬«      }t        j                  j                  ||¬«      }	t        ||	d¬
«       y )N)g¸…ëQ¸ö?g
×£p=
·?g\�Âõ(\ß¿çÃõ(\�ÂÅ?g®Gáz®ç?)g®Gázò¿g{®Gáz„¿g¸…ëQ¸æ?rú  gìQ¸…ëá¿)g…ëQ¸ñ?g)\�Âõ(Ü?gìQ¸…ëÑ¿g)\�Âõ(Ü¿g�Âõ(\�Ò?)g      ø¿g®Gázî¿gq=
×£på¿g\�Âõ(\ç?gš™™™™™ñ¿)r  g{®Gáz´¿g\�Âõ(\÷?g{®GázÔ¿gÃõ(\�Âõ?r  rë  rì  rS  r®  iý  i   rÚ  )r>   rÌ   r˜   r0   r$   r¬   r   r   )
r[   Ú_ArÄ   r  Úmul_t_entropyÚmul_norm_entropyÚdf1Údf2Ú	_entropy1Ú	_entropy2s
             rE   Útest_entropy_with_covariancez.TestMultivariateT.test_entropy_with_covarianceÂ  sÈ   € ô �X‰XÚ+Ú-Ú,Ú,Ú,ð
ó ˆð �2—4‘4‰iˆð ˆÜ×,Ñ,×4Ñ4¸3À2Ð4ÓFˆÜ.¨t¸Ô=×EÑEÓGÐÜ˜Ð'7¸eÕDð ˆØˆÜ×(Ñ(×0Ñ0°s¸sÐ0ÓCˆ	Ü×(Ñ(×0Ñ0°s¸sÐ0ÓCˆ	Ü˜	 9°4Ö8rG   c                 ó†  — t        j                  dddt        j                  ¬«      }t	        j                  ddd«      }t        ||«       t        j                  j                  d«      }|j                  d«      }|j                  d«      t        j                  d«      dz  z   }|j                  |z   }t	        ||¬«      }t        ||t        j                  ¬«      }|j                  d«      }t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y )	Nr   rÌ  l   18KJ.rN   r"  rÈ   r  r›  )r$   r«   r>   rù   r   r   r‘   r’   rV   r˜   r¦   rª   )	r[   rA   rB   r›   r­   rÄ   rò   r„  ra   s	            rE   Útest_logpdf_df_inf_gh19930z,TestMultivariateT.test_logpdf_df_inf_gh19930à  sì   € ô
 ×#Ñ# A q¨!´·±Ô7ˆÜ!×(Ñ(¨¨A¨qÓ1ˆÜ˜˜SÔ!ô �i‰i×#Ñ# LÓ1ˆØ�z‰z˜!‹}ˆØ�j‰j˜Ó ¤2§6¡6¨!£9¨Q¡;Ñ.ˆØ�e‰e�c‰kˆÜ T¨sÔ3ˆÜ˜t¨3´2·6±6Ô:ˆð �E‰E�"‹IˆÜ˜Ÿ™ › Q§X¡X¨a£[Ô1Ü˜Ÿ™˜a› !§%¡%¨£(Õ+rG   ©F).rÏ   rÐ   rÑ   Ú	PDF_TESTSrR   rÖ   r×   rŸ  r¡  r£  r¨  Úthread_unsafer;   r®  r³  r¶  ÚDEFAULT_ARGS_TESTSr¼  r>   rÌ   ÚARGS_SHAPES_TESTSr¾  rÀ  r  rÆ  rù   rÈ  r.  rÎ  rÐ  rÌ  r×  rÜ  r|  ræ  rì  rÒ  rô  r÷  rû  rþ  rV   r  r	  r  r  rÚ   rG   rE   r—  r—  Ý  s|  „ ð �ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFØ�ˆFð	
ð 
ˆAˆð �ˆFØ�ˆFð	
ð
 	
ò	
ð1%òP %Ú$Ú$Ú$Ú$ð	
ò 	ò %Ú%Ú%ð	
ð 	
ò	
ð)ðK@€IðD ‡[�[×ÑÐ5°yÓAñ,ó Bð,ð
 ‡[�[×ÑÐ5°yÓAñ6ó Bð6ò,ò'ð$ ‡[�[×Ñ nÐÓ5Ù
Ð4Ó5ñ$ó 6ó 6ð$ò&òBð 	$Ø Ø	��A�˜˜A˜Ð ¨¨1 v°°A°¸¸A¸Ð/?ÀÐCØ	��A�˜˜A˜Ð  Q¨ F¨a°¨V°a¸°VÐ,<¸aÐ@Ø
ˆQˆ��t˜a ˜V q¨! f¨q°!¨fÐ%5°qÐ9Ø
ˆQˆ��q˜1˜a˜& A q 6¨A¨q¨6Ð"2°AÐ6Ø
ˆQˆ�1�a�&˜1˜a˜&Ð! 4¨!¨Q¨°1°a°&¸1¸a¸&Ð1AÀ1ÐEØ
ˆQˆ�1�a�&˜1˜a˜&Ð! 1 q¨! f°°1¨v¸¸1°vÐ.>ÀÐBð	Ðð ‡[�[×ÑÐIØ/ó1ñ#ó1ð#ð 
ˆQ��B�4˜1˜#˜ Ð"Ø
ˆ�ˆs�A˜�t˜q˜c˜U AÐ&Ø	ˆ�‰�2�$‹˜˜Ÿ™ 1 #›¨¨B¨4°1°#°¸Ð:ðÐð ‡[�[×ÑÐIØ.ó0ñ&ó0ð&ò;ò2)òEð
 ‡[�[×Ñ˜V g¨|Ð%<Ó=Ø‡[�[×Ñ˜U¢LÓ1Ø‡[�[×Ñ˜T B¨¨B¯F©FÐ#3Ó4ñ+ó 5ó 2ó >ð+ò

4ð ‡[�[×Ñ˜U¢IÓ.ñ'ó /ð'ð ‡[�[×Ñ˜U¢IÓ.ñ+ó /ð+ó-ò$6ð ‡[�[×Ñ˜U¢MÓ2Ø‡[�[×Ñ˜Vò &Jó Kà‡[�[×Ñ˜Z¨%°¨Ó7ñ8ó 8óKó 3ð8ð2 ‡[�[×Ññ0ó ð0ò4-ò"Nò8ð$ ‡[�[×Ñ˜U FÓ+ñ-ó ,ð-ò*ð ‡[�[×Ñ˜T¢<Ó0ñ<ó 1ð<ð& ‡[�[×ÑÐ0Ø! 6 2§6¡6¨!¨Q£<Ð1CÀUÐKØ" H B§H¡H¨s°A¨h¸¸B¸Ð-@Ó$AØ/°ð7ð8ó9ñ6ó	9ð6ð
 ‡[�[×ÑØò	
óñ$6ó%ð$6ò(9ó<,rG   r—  c                   ó”  — e Zd Zej                  j                  dddgddgddfddgddgdej                   fd	dgddgdej                   fddgd
dgdej                  fddgddggddgd
dggddgej                  ej                  gfd	dgd
dgdej                  fddgddgdej                  fddgddgdej                  fddgddgdej                  fddgddgdej                   fg
«      d„ «       Z	d„ Z
d„ Zd„ Zej                  j                  dg d¢dfg d¢dfddgdfdgdff«      d„ «       Zej                  j                  ddgdgddfddgddgddfddgddggddgddgggddgddgddggdd gdd!ggf ej                  g e¬"«       ej                  g e¬"«      dg fddgddgddfg d#¢g d$¢d%d&fg«      d'„ «       Zej                  j                  dddgddgdd(ggddd)gfdgdggdgdggddgd*d+gfdgdgggdgdggddgd*d+ggfdgdggdggggddgd*d+gggfg«      d,„ «       Zd-„ Zd.„ Zd/„ Zd0„ Zd1„ Zd2„ Zd3„ Zd4„ Zd5„ Zd6„ Zd7„ Zy8)9ÚTestMultivariateHypergeomzx, m, n, expectedrN   rj   rh   r›  rk   g©¥¹Âêñ¿r   r1  éûÿÿÿr   rM   rr   iúÿÿÿiöÿÿÿrB  r7  rl   iùÿÿÿc                 óN   — t        j                  |||«      }t        ||d¬«       y )Nr  r®  )r   r™  r   ©r[   ra   r2  rÁ   rÇ  Úvalss         rE   rž  z%TestMultivariateHypergeom.test_logpmfù  s$   € ô6 &×,Ñ,¨Q°°1Ó5ˆÜ˜˜h¨TÖ2rG   c                 ó  — t        j                  ddgddgd¬«      }t        j                  dddd¬«      }t        ||d	¬
«       t        j                  ddgddgd¬«      }t        j                  dddd¬«      }t        ||d	¬
«       y )NrN   r   r›  rh   rj   )ra   r2  rÁ   é   )r‰  ræ   rÁ   r  rm  r®  rk   é   )r   r£  r#   r   r¤  s      rE   Útest_reduces_hypergeomz0TestMultivariateHypergeom.test_reduces_hypergeom  s|   € ô &×)Ñ)¨Q°¨F°r¸1°gÀÔCˆÜ�}‰}˜q B¨!¨rÔ2ˆÜ˜˜d¨Õ.ä%×)Ñ)¨Q°¨F°r¸2°hÀ"ÔEˆÜ�}‰}˜q B¨"°Ô3ˆÜ˜˜d¨Ö.rG   c                 óž   — t        ddgd¬«      }|j                  dd¬«      }t        |j                  d«      |j                  «       d	¬
«       y )NrN   rh   rj   ©r2  rÁ   r¿  r0  r¢   r   rÃ  r®  ©r   r¦   r   r­   ©r[   rÅ   r¦   s      rE   rÈ  z"TestMultivariateHypergeom.test_rvs"  s@   € ô $ q¨! f°Ô2ˆØ�f‰f˜$¨SˆfÓ1ˆÜ˜Ÿ™ › R§W¡W£Y°TÖ:rG   c                 óª   — t        ddgddggddg¬«      }|j                  dd¬	«      }t        |j                  d
«      |j                  «       d¬«       y )NrN   rh   r›  rj   r¶  r&  ©r¿  rM   r0  r¢   r   rÃ  r®  r'  r(  s      rE   Útest_rvs_broadcastingz/TestMultivariateHypergeom.test_rvs_broadcasting)  sK   € Ü#¨¨1 v°°2¨wÐ&7¸A¸q¸6ÔBˆØ�f‰f˜)°#ˆfÓ6ˆÜ˜Ÿ™ › R§W¡W£Y°TÖ:rG   zm, n)r   r   rñ  r   r   )r   r   r   r   r   c                 ó¢   — t        j                  ||«      }t        j                  |«      }|j	                  «       }|||dk7  <   t        ||«       y )Nr   )r   r¦   r>   r?   ro  r   )r[   r2  rÁ   rA   Úres_exs        rE   Útest_rvs_gh16171z*TestMultivariateHypergeom.test_rvs_gh16171.  sE   € ô
 %×(Ñ(¨¨AÓ.ˆÜ�J‰J�q‹MˆØ—‘“ˆØˆˆq�A‰v‰Ü�S˜&Õ!rG   g z÷lÂâÔ?r   r¶  gQ°µ­Ù?gEçÙ³¤|?gé�
¸çyÞ?rë   r¸  )rh   ri   rk   ri   g‘z²p†?c                 óN   — t        j                  |||«      }t        ||d¬«       y ©NrÙ  r®  ©r   r£  r   r  s         rE   r½  z"TestMultivariateHypergeom.test_pmf9  s$   € ô" &×)Ñ)¨!¨Q°Ó2ˆÜ˜˜h¨TÖ2rG   r"  gõ­ æÎÕ?rÉ   rÊ   c                 óN   — t        j                  |||«      }t        ||d¬«       y r0  r1  r  s         rE   r¿  z/TestMultivariateHypergeom.test_pmf_broadcastingM  s$   € ô &×)Ñ)¨!¨Q°Ó2ˆÜ˜˜h¨TÖ2rG   c                 óh   — t        j                  g d¢d¬«      }g d¢g d¢g d¢g}t        ||d¬«       y )	N)rN   rk   r›  r7  r&  )g«×Âf_�ä?çÁ&BUúÐ¿ç–ˆCx¬@Ø¿)r4  g�gsƒ>dò?çZ¤ásKì¿)r5  r6  gö¿3å5ô?rm  r®  ©r   rÄ   r   )r[   rÂ  rû  s      rE   rÃ  z"TestMultivariateHypergeom.test_covZ  s2   € Ü%×)Ñ)ªJ¸"Ô=ˆÚ6Ú6Ú6ð8ˆô 	˜˜d¨Ö.rG   c                 óV  — t        j                  ddgddggddg¬«      }dd	gd	dggd
dgdd
ggg}t        ||d¬«       t        j                  dgdggddg¬«      }dggdggg}t        ||d¬«       t        j                  ddgddg¬«      }dd	gd	dggddgddggg}t        ||d¬«       y )Nrk   r¶  r›  r"  r   r7  r&  gÍÌÌÌÌÌð?gÍÌÌÌÌÌð¿gö(\�Âõø?gö(\�Âõø¿rm  r®  rj   rh   rÊ   g333333é?g333333é¿r7  rÅ  s          rE   rÊ  z/TestMultivariateHypergeom.test_cov_broadcastinga  sã   € Ü%×)Ñ)¨a°¨V°b¸"°XÐ,>À1ÀbÀ'ÔJˆØ˜� ¨ Ð.Ø˜� ¨ Ð.ð0ˆä˜˜d¨Õ.ä%×)Ñ)¨a¨S°1°#¨J¸1¸a¸&ÔAˆØ��˜"˜˜ÐˆÜ˜˜d¨Õ.ä%×)Ñ)¨Q°¨F°q¸"°gÔ>ˆØ˜� ¨ Ð.Ø˜'Ð" W¨fÐ$5Ð6ð8ˆä˜˜d¨Ö.rG   c                 ó‚   — t        j                  ddgd¬«      }t        j                  ddd¬«      }t        ||d¬«       y )	Nr›  rh   rj   r&  r"  ©ræ   rÁ   r  rm  r®  )r   r  r#   r   )r[   Úvar0Úvar1s      rE   Útest_varz"TestMultivariateHypergeom.test_varp  s6   € ä%×)Ñ)¨R°¨G°qÔ9ˆÜ�}‰}˜r Q¨"Ô-ˆÜ˜˜d¨Ö.rG   c                 ó®  — t        j                  ddgddg¬«      }t        j                  ddgd¬«      }t        j                  ddgd¬«      }t        |d   |d¬«       t        |d	   |d¬«       t        j                  ddgdd
ggddg¬«      }ddgddgg}t        ||d¬«       t        j                  dgdggddg¬«      }dgdgg}t        ||d¬«       y )Nr›  rh   rj   r   r&  r   rm  r®  r   r¡  gÌ�3—eYæ?g�I›ª{¤õ?rÊ   )r   r  r   )r[   r;  r<  Úvar2Úvar3Úvar4Úvar5Úvar6s           rE   Útest_var_broadcastingz/TestMultivariateHypergeom.test_var_broadcastingv  sâ   € Ü%×)Ñ)¨R°¨G¸¸1°vÔ>ˆÜ%×)Ñ)¨R°¨G°qÔ9ˆÜ%×)Ñ)¨R°¨G°qÔ9ˆÜ˜˜Q™ ¨DÕ1Ü˜˜Q™ ¨DÕ1ä%×)Ñ)¨b°!¨W°r¸2°hÐ,?ÀAÀqÀ6ÔJˆØ˜IÐ&¨°8Ð(<Ð=ˆÜ˜˜d¨Õ.ä%×)Ñ)¨a¨S°2°$¨K¸A¸r¸7ÔCˆØ��r�dˆ|ˆÜ˜˜d¨Ö.rG   c                 óÞ   — t        j                  ddgd¬«      }t        j                  ddd¬«      }t        |d   |d¬	«       t        j                  d
dgd¬«      }ddg}t        ||d¬	«       y )Nr›  rh   rj   r&  r"  r:  r   rm  r®  r7  r   g      @r.  )r   r­   r#   r   ©r[   Úmean0rÕ  rú  Úmean3s        rE   rÖ  z#TestMultivariateHypergeom.test_mean…  sf   € ä&×+Ñ+¨r°1¨g¸Ô;ˆÜ—‘  q¨BÔ/ˆÜ˜˜a™ %¨dÕ3ä&×+Ñ+¨r°1¨g¸Ô<ˆØ˜jÐ)ˆÜ˜˜u¨4Ö0rG   c                 ón   — t        j                  ddgddggddg¬«      }ddgd	d
gg}t        ||d¬«       y )NrN   rh   r›  rj   r   r&  rk  rl  gUUUUUU@gUUUUUU@rm  r®  )r   r­   r   )r[   rG  rÕ  s      rE   rØ  z0TestMultivariateHypergeom.test_mean_broadcasting�  sE   € Ü&×+Ñ+°°1¨v¸¸A°wÐ.?ÀAÀqÀ6ÔJˆØ˜HÐ%¨
°IÐ'>Ð?ˆÜ˜˜u¨4Ö0rG   c                 óV  — t        j                  g d¢d¬«      }t        |g d¢«       t        j                  g d¢d¬«      }t        |t        j                  t        j                  t        j                  g«       t        j                  g d¢g d¢gd¬«      }t        |t        j                  t        j                  t        j                  gg d¢gd	¬
«       t        j                  t        j                  g t        ¬«      d¬«      }t        |g «       t        |j                  dk(  «       y )Nrm   r   r&  ©rÊ   rÊ   rÊ   ©r   r   r   rM   r)  )rÉ   rÊ   rÉ   ç—ÔFFõg<r®  rë   ©r   )
r   r­   r   r>   rå  r   rÌ   rH  r	   r@   rF  s        rE   Útest_mean_edge_casesz.TestMultivariateHypergeom.test_mean_edge_cases”  sÅ   € Ü&×+Ñ+ªi¸1Ô=ˆÜ�UšLÔ)ä&×+Ñ+ªi¸1Ô=ˆÜ�UœRŸV™V¤R§V¡V¬R¯V©VÐ4Ô5ä&×+Ñ+ªyº)Ð.DÈÔJˆÜ˜¤§¡¬¯©´·±Ð 8º,ÐGØ"õ	$ô '×+Ñ+¬b¯h©h°rÄÔ.EÈÔKˆÜ�U˜BÔÜ�—‘˜uÑ$Õ%rG   c                 óZ  — t        j                  g d¢d¬«      }t        |g d¢d¬«       t        j                  g d¢d¬«      }t        |t        j
                  t        j
                  t        j
                  g«       t        j                  g d¢g d	¢gd¬«      }t        |t        j
                  t        j
                  t        j
                  gg d¢gd
¬«       t        j                  t	        j                  g t        ¬«      d¬«      }t        |g «       t        |j                  dk(  «       y )Nrm   r   r&  rK  g¼‰Ø—²Òœ<r®  rL  rM   r)  rM  rë   rN  )
r   r  r   r   r>   rå  rÌ   rH  r	   r@   )r[   r;  r<  r?  r@  s        rE   Útest_var_edge_casesz-TestMultivariateHypergeom.test_var_edge_cases£  sÇ   € Ü%×)Ñ)ªI¸Ô;ˆÜ˜šl°Õ7ä%×)Ñ)ªI¸Ô;ˆÜ�TœBŸF™F¤B§F¡F¬B¯F©FÐ3Ô4ä%×)Ñ)ªYº	Ð,BÀaÔHˆÜ˜¤§¡¬¯©´·±Ð7ºÐFØ"õ	$ô &×)Ñ)¬B¯H©H°R¼sÔ,CÀqÔIˆÜ�T˜2ÔÜ�—
‘
˜eÑ#Õ$rG   c                 óÞ  — t        j                  g d¢d¬«      }g d¢g d¢g d¢g}t        ||d¬«       t        j                  g d¢d¬«      }g d¢g d¢g d¢g}t        ||«       t        j                  t	        j
                  g t        ¬	«      d¬«      }t	        j
                  g t        j                  ¬	«      j                  dd«      }t        ||d¬«       t        |j                  d
k(  «       y )NrL  r   r&  rK  rM  r®  rm   r   rë   rÀ  )r   rÄ   r   r   r>   rÌ   rH  r¹  rÀ  r	   r@   )r[   Úcov0rÂ  rÆ  rÇ  rÈ  rÉ  s          rE   Útest_cov_edge_casesz-TestMultivariateHypergeom.test_cov_edge_cases²  s¯   € Ü%×)Ñ)ªI¸Ô;ˆÚšlªLÐ9ˆÜ˜˜d¨Õ/ä%×)Ñ)ªI¸Ô;ˆÚšlªLÐ9ˆÜ�T˜4Ô ä%×)Ñ)¬B¯H©H°R¼sÔ,CÀqÔIˆÜ�x‰x˜¤"§*¡*Ô-×5Ñ5°a¸Ó;ˆÜ˜˜d¨Õ/Ü�—
‘
˜fÑ$Õ%rG   c                 óø  — d}g d¢}g d¢g d¢g d¢g d¢g d¢g}t        j                  |t        ¬«      }t        ||«      }t	        |j                  |«      t        j
                  |||«      «       t	        |j                  |«      t        j                  |||«      «       t	        |j                  «       t        j                  ||«      «       t	        |j                  «       t        j                  ||«      «       y )	Nr7  )rk   r¶  rB  é   rÚ  rÛ  rÜ  rÝ  rÞ  rë   )	r>   r?   rH  r   r   r£  r™  r  rÄ   )r[   rÁ   r2  ra   Ú
mhg_frozens        rE   rÒ  z%TestMultivariateHypergeom.test_frozenÀ  sÆ   € àˆÚˆÚšMª=Úš<ð)ˆä�J‰J�q¤Ô$ˆÜ+¨A¨qÓ1ˆ
Ü˜
Ÿ™ qÓ)Ü.×2Ñ2°1°a¸Ó;ô	=ä˜
×)Ñ)¨!Ó,Ü.×5Ñ5°a¸¸AÓ>ô	@ä˜
Ÿ™Ó(Ô*@×*DÑ*DÀQÈÓ*JÔKÜ˜
Ÿ™Ó(Ô*@×*DÑ*DÀQÈÓ*JÕKrG   c                 ó°  — t        t        t        j                  ddd«       t        t        t        j                  ddgd«       t        t        t        j                  ddgdgd«       t        t        t        j                  ddgddgd«       t        t        t        j                  ddgddgd«       t        t        t        j                  ddgddgd«       y )	Nrh   r›  rj   g      @r°  r"  g      %@g      /@)rf  rS   r   r£  Ú	TypeErrorr  s    rE   Útest_invalid_paramsz-TestMultivariateHypergeom.test_invalid_paramsÏ  sµ   € Ü”jÔ"8×"<Ñ"<¸aÀÀQÔGÜ”jÔ"8×"<Ñ"<¸aÀ"ÀÀqÔIÜ”jÔ"8×"<Ñ"<¸qÀ!¸fÀrÀdÈAÔNÜ”iÔ!7×!;Ñ!;¸cÀ3¸ZØ˜2�h ô	#ä”iÔ!7×!;Ñ!;¸aÀ¸VØ˜T�l Aô	'ä”iÔ!7×!;Ñ!;¸aÀ¸VØ˜2�h õ	%rG   N)rÏ   rÐ   rÑ   rR   rÖ   r×   r>   rù   rå  rž  r$  rÈ  r+  r.  rÌ   rH  r½  r¿  rÃ  rÊ  r=  rD  rÖ  rØ  rO  rQ  rT  rÒ  rZ  rÚ   rG   rE   r  r  ø  s|  „ Ø‡[�[×ÑØð �ˆV�a˜�W˜a Ð+à�ˆV�a˜�W˜a "§&¡& Ð)à�!ˆW�q˜"�g˜q 2§6¡6 'Ð*à�ˆV�b˜"�X˜q "§&¡&Ð)à�!ˆf�q˜!�fÐ  R ¨2¨s¨)Ð4Ø�ˆV�b—f‘f˜bŸf™fÐ%ð'ð �!ˆW�r˜2�h  2§6¡6Ð*à�ˆW�r˜1�g˜r 2§6¡6Ð*à�ˆW�r˜2�h  B§F¡FÐ+à�ˆV�a˜�W˜b "§&¡&Ð)à�ˆV�a˜�W˜a "§&¡& Ð)ð+	
óñ43ó5ð43ò	/ò;ò;ð
 ‡[�[×Ñ˜VÚ	˜1Ð¢°Ð3Ø
ˆQˆ�ˆ�q�c˜1�Xð&ó ñ"ó	ð"ð ‡[�[×ÑØàˆS�1�#�q˜!ÐØ�ˆV�a˜�W˜a Ð+à�1ˆv˜˜1�vÐ " a ¨1¨a¨&Ð 1Ð2Ø�ˆW˜˜1�v  1˜vÐ&Ø˜+Ð&¨¨I¨Ð7ð9ð ˆR�X‰X�b Ô$ h b§h¡h¨r¸Ô&=¸qÀ"ÐEØ�ˆV�a˜�V˜Q Ð"âš	 1 jÐ1ð	
óñ 3ó!ð 3ð ‡[�[×ÑØà�ˆV�q˜"�g  B˜xÐ(¨!¨i¸Ð-CÐDØˆc�A�3ˆZ˜1˜# ˜s˜ a¨ V¨b°"¨XÐ6Øˆs�Q�Cˆjˆ\˜Q˜C ! ˜:¨¨1 v°°R°¨zÐ:Øˆc�A�3ˆZ˜Q˜C˜5˜'˜ Q¨ F¨r°2¨h¨Z¨LÐ9ð		
óñ3óð3ò/ò/ò/ò/ò1ò1ò
&ò%ò&òLó	%rG   r  c                   óT  — e Zd Zd„ Zd„ Zej                  j                  dd«      d„ «       Zd„ Z	ej                  j                  dd«      ej                  j                  d	d«      d
„ «       «       Z
ej                  j                  dd«      d„ «       Zd„ Zej                  j                  dd«      d„ «       Zej                  j                  dd«      d„ «       Zej                  j                  dd«      d„ «       Zej                  j                  dd«      ej                  j                  dg dgf«      ej                  j                  dg dgf«      d„ «       «       «       Zej                  j                  dd«      d„ «       Zd„ Zej                  j                  dd«      d„ «       Zy)ÚTestRandomTablec                 ó@   — t         j                  j                  d«      S )Nl   ÖO˜f½E)r>   r‘   r’   r  s    rE   Úget_rngzTestRandomTable.get_rngÜ  s   € Ü�y‰y×$Ñ$Ð%7Ó8Ð8rG   c                 ó^  — d}t        j                  t        |¬«      5  t        ddggddg«       d d d «       d}t        j                  t        |¬«      5  t        ddgddgg«       d d d «       d}t        j                  t        |¬«      5  t        ddgddg«       d d d «       d}t        j                  t        |¬«      5  t        ddgdd	g«       d d d «       d
}t        j                  t        |¬«      5  t        ddgddg«       d d d «       d}t        j                  t        |¬«      5  t        ddgg d¢«       d d d «       d}t        j                  t        |¬«      5  t        ddgg d¢«       d d d «       ddg}g d¢}t        j                  ddgg d¢«      \  }}}t        ||«       t        ||«       |t        j                  |«      k(  sJ ‚y # 1 sw Y   �Œ¨xY w# 1 sw Y   �Œ~xY w# 1 sw Y   �ŒUxY w# 1 sw Y   �Œ,xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÙxY w# 1 sw Y   Œ¯xY w)Nz`row` must be one-dimensionalrK   r   rM   z`col` must be one-dimensionalz*each element of `row` must be non-negativerl   z*each element of `col` must be non-negativero   z'sums over `row` and `col` must be equalr   z(each element of `row` must be an integerçÍÌÌÌÌÌ @)r   r   rM   z(each element of `col` must be an integer)r]  r]  r   rN   ©rM   r   r   )rR   r
   rS   r'   Ú_process_parametersr   r>   r–   )r[   r\   r  r  rž  r�  rÁ   s          rE   Útest_process_parametersz'TestRandomTable.test_process_parametersß  sÆ  € Ø1ˆÜ�]‰]œ:¨WÖ5Ü˜1˜a˜&˜ A q 6Ô*÷ 6ð 2ˆÜ�]‰]œ:¨WÖ5Ü˜!˜Q˜ 1 a & Ô*÷ 6ð ?ˆÜ�]‰]œ:¨WÖ5Ü˜!˜R˜ 1 a &Ô)÷ 6ð ?ˆÜ�]‰]œ:¨WÖ5Ü˜!˜Q˜ ! R Ô)÷ 6ð <ˆÜ�]‰]œ:¨WÖ5Ü˜!˜Q˜ ! Q Ô(÷ 6ð =ˆÜ�]‰]œ:¨WÖ5Ü˜#˜s˜¢YÔ/÷ 6ð =ˆÜ�]‰]œ:¨WÖ5Ü˜!˜Q˜¢Ô/÷ 6ð �!ˆfˆÚˆÜ×2Ñ2°A°q°6º9ÓE‰ˆˆ1ˆaÜ�S˜!ÔÜ�S˜!ÔØ”B—F‘F˜3“KÒÐÑ÷A 6Ñ5ú÷ 6Ñ5ú÷ 6Ñ5ú÷ 6Ñ5ú÷ 6Ñ5ú÷ 6Ð5ú÷ 6Ð5úsS   žGÁG#ÂG0ÃG=Ã8H
Ä.HÅ$H#ÇG Ç#G-Ç0G:Ç=HÈ
HÈH È#H,zscale,method))r   Úboyett)r£  Ú	patefieldc                 óä   — t        j                  ddg«      |z  }t        j                  g d¢«      |z  }t        }|j                  |||d¬«      }|j                  ||d d¬«      }t	        ||«       y )Nr   rN   ra  ©Úmethodr£   )r>   rÌ   r'   r¦   r   )r[   r¼  rh  r  r  ÚctrÇ  Úgots           rE   Útest_process_rvs_method_on_Nonez/TestRandomTable.test_process_rvs_method_on_None  si   € ô �h‰h˜˜1�vÓ Ñ&ˆÜ�h‰h’yÓ! EÑ)ˆäˆØ—6‘6˜#˜s¨6À�6ÓBˆØ�f‰f�S˜# d¸ˆfÓ;ˆä�X˜sÕ#rG   c                 ó¨   — ddg}g d¢}d}t        j                  t        |¬«      5  t        j                  ||d¬«       d d d «       y # 1 sw Y   y xY w)Nr   rN   ra  z$'foo' not recognized, must be one ofrK   Úfoo)rh  )rR   r
   rS   r'   r¦   )r[   r  r  r\   s       rE   Ú$test_process_rvs_method_bad_argumentz4TestRandomTable.test_process_rvs_method_bad_argument  sC   € Ø�!ˆfˆÚˆð 9ˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜S #¨eÕ4÷ 6×5Ñ5ús   ¦AÁAr€  )TFrq  c                 ó¢  ‡‡‡‡— | j                  «       }ddgŠg d¢Št        j                  ‰‰dd|¬«      }|rt        ‰‰«      nt        }t        ||rdnd«      Š|s	‰Šˆˆˆfd	„Š|rˆfd
„n‰}t	        j
                  |dd¬«      \  }} ||«      }	t        |	t        |«      z  |d¬«        |t        |d   «      «      }
t        |
|	d   «       |j                  d|j                  dd  z   «      } ||«      }	|	j                  dk(  sJ ‚t        |	j                  d   «      D ]A  }t        |	j                  d   «      D ]$  }|	||f   }|||f   } ||«      }t        ||«       Œ& ŒC g d¢g d¢g}t        t	        j                  |d¬«      ‰«        ||«      }	|	dk(  sJ ‚g d¢g d¢g}t        t	        j                  |d¬«      ‰«        ||«      }	|	dk(  sJ ‚d}t        j                  t         |¬«      5   |dg«       d d d «       d}t        j                  t         |¬«      5   |dgg«       d d d «       d}t        j                  t         |¬«      5   |t        j"                  gg«       d d d «       d}t        j                  t         |¬«      5   |dgg«       d d d «       d}t        j                  t         |¬«      5   |g d¢g«       d d d «       d }t        j                  t         |¬«      5   |ddgd!d"gg«       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   ŒêxY w# 1 sw Y   Œ¸xY w# 1 sw Y   Œ”xY w# 1 sw Y   ŒoxY w# 1 sw Y   y xY w)#NrM   ri   ©r   rN   rj   r¿  rd  ©r†   rh  r£   r™  r£  c                 ó   •—  ‰| ‰‰«      S r=   rÚ   )ra   r  Úoriginal_methodr  s    €€€rE   rh  z/TestRandomTable.test_pmf_logpmf.<locals>.method)  s   ø€ Ù& q¨#¨sÓ3Ð3rG   c                 ó:   •— t        j                   ‰| «      «      S r=   )r>   r¤  )ra   rh  s    €rE   rb   z1TestRandomTable.test_pmf_logpmf.<locals>.<lambda>+  s   ø€ œŸ™¡ q£	Ô*rG   r   T©r‹   Úreturn_countsrŸ   r®  )r›  r£  r   )r   r   r   )rM   r   rN   rl   rŠ   rc  )r   rM   rM   ro   z$`x` must be at least two-dimensionalrK   z%`x` must contain only integral valuesr]  z)`x` must contain only non-negative valuesz"shape of `x` must agree with `row`rQ   z"shape of `x` must agree with `col`rN   rj   )r^  r'   r¦   rv   r>   Úuniquer   r—   rÔ   r   rÀ  r@   rƒ  r–   rR   r
   rS   rå  )r[   r€  rq  r›   r¦   Úobjr£  Ú
unique_rvsÚcountsrS  Úp2Úrvs_ndrµ  r¶  ÚpijÚrvijÚqijra   r\   r  rh  rs  r  s                      @@@@rE   Útest_pmf_logpmfzTestRandomTable.test_pmf_logpmf  sò  û€ ð �l‰l‹nˆØ�!ˆfˆÚˆÜ×Ñ˜s C¨dØ&.¸SôBˆñ )/Œl˜3 Ô$´LˆÜ˜©#™h°5Ó9ˆÙØ$ˆOö4á/2Ô*¸ˆäŸY™Y s°À$ÔGÑˆ
�Fñ �
‹OˆÜ˜œC ›H™ f°3Õ7ñ ”�j ‘mÓ$Ó%ˆÜ�R˜˜1™Ôð —‘˜Y¨¯©°1°2¨Ñ6Ó7ˆÙ�‹KˆØ�w‰w˜)Ò#Ð#Ð#Ü�q—w‘w˜q‘zÖ"ˆAÜ˜1Ÿ7™7 1™:Ö&�Ø˜˜1˜‘g�Ø˜a ˜d‘|�Ù˜$“i�Ü˜S #Õ&ñ	 'ð #ò š	Ð"ˆÜ”R—V‘V˜A BÔ'¨Ô-Ù�‹FˆØ�AŠvˆˆvò š	Ð"ˆÜ”R—V‘V˜A BÔ'¨Ô-Ù�‹FˆØ�AŠvˆˆvð 9ˆÜ�]‰]œ:¨WÖ5Ù��ŒH÷ 6ð :ˆÜ�]‰]œ:¨WÖ5Ù�#��ŒL÷ 6ð :ˆÜ�]‰]œ:¨WÖ5Ù”"—&‘&��
ŒO÷ 6ð >ˆÜ�]‰]œ:¨WÖ5Ù�"��ŒK÷ 6ð 7ˆÜ�]‰]œ:¨WÖ5Ù’�Ô÷ 6ð 7ˆÜ�]‰]œ:¨WÖ5Ù�!�Q�Ø�Q�ðô ÷ 6Ð5÷) 6Ñ5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5úsH   Ç2
LÈ!LÉL!ÊL-Ê?L9Ë0MÌLÌLÌ!L*Ì-L6Ì9MÍMrh  )rd  re  c                 óò  — | j                  «       }ddg}g d¢}t        j                  ||d||¬«      }t        j                  ||«      }t	        t        j                  |«      t        j                  |«      «       t        |j                  d«      |d¬«       t	        |j                  d	¬
«      t        j                  |d«      «       t	        |j                  d¬
«      t        j                  |d«      «       y )NrM   ri   rp  r¿  rq  r   r  rô  rl   rŠ   r*  ro   )r¿  rN   )	r^  r'   r¦   r­   r   r>   r–   r   Úbroadcast_to)r[   rh  r›   r  r  r¦   r­   s          rE   Útest_rvs_meanzTestRandomTable.test_rvs_meanh  s¸   € ð �l‰l‹nˆØ�!ˆfˆÚˆÜ×Ñ˜s C¨d¸6Ø,/ô1ˆä× Ñ   cÓ*ˆÜ”R—V‘V˜D“\¤2§6¡6¨#£;Ô/Ü˜Ÿ™ › T°Õ5Ü�S—W‘W "�WÓ%¤r§¡°s¸IÓ'FÔGÜ�S—W‘W "�WÓ%¤r§¡°s¸IÓ'FÕGrG   c                 ó  — | j                  «       }ddg}g d¢}t        j                  ||dd|¬«      }t        j                  ||dd|¬«      }t        j                  |d¬	«      }t        j                  |d¬	«      }t        ||d
¬«       y )NrM   ri   rp  rF  rd  rq  re  r   rŠ   ç{®Gáz”?rô  )r^  r'   r¦   r>   r  r   )r[   r›   r  r  r¨  r©  rÂ  rû  s           rE   Útest_rvs_covzTestRandomTable.test_rvs_covw  s   € ð �l‰l‹nˆØ�!ˆfˆÚˆÜ×Ñ  S¨u¸XØ-0ô2ˆä×Ñ  S¨u¸[Ø-0ô2ˆä�v‰v�d Ô#ˆÜ�v‰v�d Ô#ˆÜ˜˜d¨Ö.rG   c           	      ó(  — ddg}g d¢}t        j                  |||| j                  «       ¬«      }|j                  dk(  sJ ‚t        j                  ||d|| j                  «       ¬«      }|j                  dk(  sJ ‚t	        ||d	   «       t        j                  ||d	|| j                  «       ¬«      }|j                  d
k(  sJ ‚t        j                  ||d|| j                  «       ¬«      }|j                  dk(  sJ ‚t        j                  ||d|| j                  «       ¬«      }|j                  dk(  sJ ‚t        |j                  ddd«      |d¬«       d}	t        j                  t        |	¬«      5  t        j                  ||d|| j                  «       ¬«       d d d «       t        j                  t        |	¬«      5  t        j                  ||t        j                  || j                  «       ¬«       d d d «       y # 1 sw Y   ŒdxY w# 1 sw Y   y xY w)NrM   ri   rp  rg  r#  r   rq  rQ   r   )r   rM   rN   rñ  )rñ  rM   rN   )rj   rh   )rj   rh   rM   rN   rN   rS  r®  z/`size` must be a non-negative integer or `None`rK   rl   )r'   r¦   r^  r@   r   r   rÀ  rR   r
   rS   r>   rå  )
r[   rh  r  r  rÅ   Úrv2Úrv3Úrv4Úrv5r\   s
             rE   Útest_rvs_sizezTestRandomTable.test_rvs_size…  sÃ  € à�!ˆfˆÚˆô ×Ñ˜c 3¨vØ+/¯<©<«>ô;ˆà�x‰x˜6Ò!Ð!Ð!ô ×Ñ˜s C¨a¸Ø,0¯L©L«Nô<ˆà�y‰y˜IÒ%Ð%Ð%Ü�R˜˜Q™Ô ô ×Ñ˜s C¨a¸Ø,0¯L©L«Nô<ˆà�y‰y˜IÒ%Ð%Ð%ô ×Ñ˜s C¨b¸Ø,0¯L©L«Nô<ˆà�y‰y˜JÒ&Ð&Ð&ä×Ñ˜s C¨f¸VØ,0¯L©L«Nô<ˆà�y‰y˜LÒ(Ð(Ð(ä˜Ÿ™ B¨¨1Ó-¨s¸Õ?ð DˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜S #¨B°vØ*.¯,©,«.õ:÷ 6ô �]‰]œ:¨WÖ5Ü×Ñ˜S #¬B¯F©F¸6Ø*.¯,©,«.õ:÷ 6Ð5÷	 6Ð5ú÷ 6Ð5ús   Å0)G<Æ<7HÇ<HÈHc                 óø   — ddg}g d¢}t         }|j                  ||d|| j                  «       ¬«      }t        j                  |dd¬«      \  }}|j                  |||«      }t        |t        |«      z  |d	¬
«       y )NrM   ri   rp  r¥  rq  r   Tru  r…  r®  )r'   r¦   r^  r>   rw  r£  r   r—   )	r[   rh  r  r  ri  r¦   ry  rz  rS  s	            rE   Útest_rvs_methodzTestRandomTable.test_rvs_method¯  s|   € ð �!ˆfˆÚˆäˆØ�f‰f�S˜# F°6Ø"&§,¡,£.ð ó 2ˆô  ŸY™Y s°À$ÔGÑˆ
�Fð �F‰F�:˜s CÓ(ˆÜ˜œC ›H™ f°4Ö8rG   c                 óø   — g d¢}g d¢}t        ||«      }|j                  d|| j                  «       ¬«      }t        j                  dt        |«      t        |«      f«      }g d¢g d¢g d¢g|d<   t        ||«       y )Nr*  )r   r   r   r   r¿  rg  )r   r   r   r   .©r'   r¦   r^  r>   r½   r—   r   ©r[   rh  r  r  r*  rÅ   rÇ  s          rE   Útest_rvs_with_zeros_in_col_rowz.TestRandomTable.test_rvs_with_zeros_in_col_rowÄ  so   € âˆÚˆÜ˜˜cÓ"ˆØ�U‰U�4 °T·\±\³^ˆUÓDˆÜ—8‘8˜T¤3 s£8¬S°«XÐ6Ó7ˆÚ%Ú%Ú%ð'ˆ�‰ô 	�R˜Õ"rG   )Nrd  re  r  r   r  c                 óÌ   — t        ||«      }|j                  d|| j                  «       ¬«      }t        j                  dt        |«      t        |«      f«      }t        ||«       y )Nr›  rg  r�  r‘  s          rE   Útest_rvs_with_edge_casesz(TestRandomTable.test_rvs_with_edge_casesÐ  sQ   € ô ˜˜cÓ"ˆØ�U‰U�2˜f°4·<±<³>ˆUÓBˆÜ—8‘8˜R¤ S£¬3¨s«8Ð4Ó5ˆÜ�R˜Õ"rG   rà   rÐ  c                 ó®  — dd l mc m} t        j                  ddgt        j
                  ¬«      }t        j                  g d¢t        j
                  ¬«      }t        |d|› �«      }t        j                  |«      } ||||d| j                  «       «      }|j                  dt        |«      t        |«      fk(  sJ ‚t        j                  |«      |k(  sJ ‚y )Nr   r   rN   rë   ra  Ú	rvs_rcont)Úscipy.stats._rcontr0   Ú_rcontr>   rÌ   Úint64rv   r–   r^  r@   r—   )r[   rà   r˜  r  r  r¦   ÚntotÚresults           rE   Útest_rvs_rcontzTestRandomTable.test_rvs_rcontÙ  s¤   € ÷ 	,Ð+ä�h‰h˜˜1�v¤R§X¡XÔ.ˆÜ�h‰h’y¬¯©Ô1ˆä�f 	¨!¨˜oÓ.ˆä�v‰v�c‹{ˆÙ�S˜#˜t Q¨¯©«Ó7ˆà�|‰| ¤3 s£8¬S°«XÐ6Ò6Ð6Ð6Ü�v‰v�f‹~ Ò%Ð%Ñ%rG   c                 ó”  — ddg}g d¢}t        ||| j                  «       ¬«      }|j                  «       }t        j                  ||«      }t	        ||j                  «       «       t        j
                  |||«      }t	        ||j                  |«      «       t        j                  |||«      }t	        ||j                  |«      «       y )NrM   ri   rp  r¤   )r'   r^  r¦   r­   r   r£  r™  )r[   r  r  r*  r  rÇ  s         rE   rÒ  zTestRandomTable.test_frozenê  sž   € Ø�!ˆfˆÚˆÜ˜˜c¨¯©«Ô7ˆà—‘“ˆä×$Ñ$ S¨#Ó.ˆÜ�X˜qŸv™v›xÔ(ä×#Ñ# F¨C°Ó5ˆÜ�X˜qŸu™u V›}Ô-ä×&Ñ& v¨s°CÓ8ˆÜ�X˜qŸx™x¨Ó/Õ0rG   c                 óÚ   — ddg}g d¢}t        ||| j                  «       ¬«      }t        j                  ||d|| j                  «       ¬«      }|j                  d|¬«      }t        ||«       y )NrM   ri   rp  r¤   r›  rq  )r†   rh  )r'   r^  r¦   r   )r[   rh  r  r  r*  rÇ  rj  s          rE   Útest_rvs_frozenzTestRandomTable.test_rvs_frozenú  sb   € à�!ˆfˆÚˆÜ˜˜c¨¯©«Ô7ˆä×#Ñ# C¨°2¸fØ15·±³ôAˆà�e‰e˜ FˆeÓ+ˆÜ�X˜sÕ#rG   N)rÏ   rÐ   rÑ   r^  rc  rR   rÖ   r×   rk  rn  r€  rƒ  r†  rŒ  rŽ  r’  r”  rœ  rÒ  rŸ  rÚ   rG   rE   r\  r\  Û  s×  „ ò9ò" ðH ‡[�[×Ñ˜^Ø@óBñ$óBð$ò5ð ‡[�[×Ñ˜X }Ó5Ø‡[�[×Ñ˜U MÓ2ñLó 3ó 6ðLð\ ‡[�[×Ñ˜XÐ'>Ó?ñHó @ðHò/ð ‡[�[×Ñ˜XÐ'>Ó?ñ':ó @ð':ðR ‡[�[×Ñ˜XÐ'>Ó?ñ9ó @ð9ð( ‡[�[×Ñ˜XÐ'>Ó?ñ	#ó @ð	#ð ‡[�[×Ñ˜XÐ'DÓEØ‡[�[×Ñ˜U R¨!¨ IÓ.Ø‡[�[×Ñ˜U R¨!¨ IÓ.ñ#ó /ó /ó Fð#ð ‡[�[×Ñ˜S &Ó)ñ&ó *ð&ò 1ð  ‡[�[×Ñ˜XÐ'>Ó?ñ$ó @ñ$rG   r\  c                 ó  — | j                   }d| _          | j                  |ddiŽ t        j                  | «      } | j                  |ddiŽ}t        j                  |«      } |j                  |ddiŽ}t        ||«       || _         y )Nrj  r†   r   )r£   r¦   ÚpickleÚdumpsÚloadsr   )ÚdistfnrC   r°  rè   Úr0Ú	unpickledÚr1s          rE   Úcheck_picklingr¨    sƒ   € ð
 ×Ñ€Dà€FÔØ€F‡J�J�Ð˜1ÒÜ�‰�VÓ€AØ	ˆ�‰�TÐ	" Ñ	"€Bä—‘˜Q“€IØ	ˆ�‰˜Ð	% 1Ñ	%€BÜ��RÔð €FÕrG   z2uses numpy global random state and monkey-patchingr©  c                  ó&  — t        j                  d«      } d| d<   d| d<   t        dgt        t        j                  dg«      fgt
        d| fgt        d| fgt        dg d	¢fgt        d
gt        d
gg}|D ]  \  }}t        ||«       t        ||«       Œ y )NrN   r  rb  rÍ  rÚ   rÉ   r›  rh   rM  rÔ  )r>   rV   r   r   rÌ   r   r   r   r   r   r9   r¨  )r¼  Údistsr¤  rC   s       rE   Útest_random_state_propertyr«    sž   € ä�F‰F�1‹I€EØ€Eˆ$�KØ€Eˆ$�Kä	˜bÐ!Ü	”R—X‘X˜r˜d“^Ð&Ð'Ü	�2�u�+ÐÜ	�b˜%�[Ð!Ü	�qš/Ð*Ð+Ü	�dÐÜ	˜dÐ#ð€Eó ‰ˆ�Ü# F¨DÔ1Ü�v˜tÕ$ñ rG   c                   óä  — e Zd Zej                  j                  dg d¢«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dg d	¢«      d
„ «       «       Zd„ Zd„ Z	d„ Z
ej                  j                  dddg«      d„ «       Zej                  j                  dddg«      d„ «       Zej                  j                  dej                  ej                  g«      d„ «       Zej                  j                  dej                  ej                  g«      d„ «       Zej                  j                  d ej&                  g d¢«       ej&                  g d¢«      ddf ej&                  g d¢«       ej&                  g d¢«      ddf ej&                  g d¢«       ej&                  g d¢«      ddf ej&                  g d¢«       ej&                  g d¢«      dd f ej&                  g d¢«       ej&                   ej(                  d!«       ej(                  d"«      dg«      d#d$f ej&                  g d¢«       ej&                  g d¢«      d#d%f ej&                  g d&¢«       ej&                  g d&¢«      d#d'f ej&                  g d&¢«       ej&                   ej(                  d!«       ej(                  d"«      dddg«      d#d(f ej&                  g d&¢«       ej&                   ej(                  d)«       ej(                  d*«      dddg«      d#d+fg	«      d,„ «       Zej                  j                  d ej&                  g d¢«       ej&                  g d¢«      dd-f ej&                  g d¢«       ej&                  g d¢«      dd.f ej&                  g d¢«       ej&                  g d¢«      dd/f ej&                  g d¢«       ej&                  g d¢«      dd0f ej&                  g d¢«       ej&                   ej(                  d!«       ej(                  d"«      dg«      d#d1f ej&                  g d¢«       ej&                  g d¢«      d#d2f ej&                  g d&¢«       ej&                  g d&¢«      d#d3f ej&                  g d&¢«       ej&                   ej(                  d!«       ej(                  d"«      dddg«      d#d4f ej&                  g d&¢«       ej&                   ej(                  d)«       ej(                  d*«      dddg«      d#d5fg	«      d6„ «       Zej                  j                  d7g d8¢«      d9„ «       Zej                  j                  dej                  ej                  g«      d:„ «       Zd;„ Zej                  j                  dg d<¢«      ej                  j                  d=g d>¢«      d?„ «       «       Zd@„ ZdA„ ZdB„ ZyC)DÚTestVonMises_FisherrÝ   )rM   rN   rj   ri   r†   rt  c                 óæ  — t         j                  j                  d«      }t        j                  |fdt        j                  |«      z  «      }t        |d|¬«      }|j                  |«      }t        j                  |«      t        j                  |«      }}|j                  |||¬«      j                  }	|j                  |	k(  sJ ‚t         j                  j                  |d¬«      }
t        |
d«       y )Nrv  r   r¤   r…   rl   rŠ   rÉ   )r>   r‘   r’   rø   r  r)   r¦   r½   rV   r   r@   r¿   r   r   )r[   rÝ   r†   r›   rg  Úvmf_distrn  r­   rÄ   rx  ry  s              rE   rÈ  z TestVonMises_Fisher.test_samples.  s»   € ô �i‰i×#Ñ#Ð$7Ó8ˆÜ�W‰W�c�W˜a¤§¡¨£™nÓ-ˆÜ" 2 q¨sÔ3ˆØ—,‘,˜tÓ$ˆÜ—H‘H˜S“M¤2§6¡6¨#£;ˆcˆØ×0Ñ0°°sÀÐ0ÓF×LÑLˆØ�}‰} Ò.Ð.Ð.Ü—	‘	—‘˜w¨R�Ó0ˆÜ˜˜rÕ"rG   rh   r   Úkappa)g  4&õkCr  gêŒ 9Y>)Fc                 óÚ   — t         j                  j                  d«      }t        j                  |fdt        j                  |«      z  «      }t        |||¬«      }|j                  d«       y )Nrv  r   r¤   r›  )r>   r‘   r’   rø   r  r)   r¦   )r[   rÝ   r°  r›   rg  r¯  s         rE   Ú test_sampling_high_concentrationz4TestVonMises_Fisher.test_sampling_high_concentration<  sQ   € ô �i‰i×#Ñ#Ð$7Ó8ˆÜ�W‰W�c�W˜a¤§¡¨£™nÓ-ˆÜ" 2 u°3Ô7ˆØ�‰�RÕrG   c                 óª   — t        j                  d«      }d}t        j                  t        |¬«      5  t        |d«       d d d «       y # 1 sw Y   y xY w)Nrÿ  z%'mu' must have one-dimensional shape.rK   r   ©r>   rU   rR   r
   rS   r)   ©r[   rg  rï  s      rE   Útest_two_dimensional_muz+TestVonMises_Fisher.test_two_dimensional_muE  s8   € Ü�W‰W�V‹_ˆØ5ˆÜ�]‰]œ:¨SÖ1Ü˜B Ô"÷ 2×1Ñ1úó   ³A	Á	Ac                 óª   — t        j                  d«      }d}t        j                  t        |¬«      5  t        |d«       d d d «       y # 1 sw Y   y xY w)NrÔ  z%'mu' must be a unit vector of norm 1.rK   r   r´  rµ  s      rE   Útest_wrong_norm_muz&TestVonMises_Fisher.test_wrong_norm_muK  s8   € Ü�W‰W�U‹^ˆØ5ˆÜ�]‰]œ:¨SÖ1Ü˜B Ô"÷ 2×1Ñ1úr·  c                 óª   — t        j                  d«      }d}t        j                  t        |¬«      5  t        |d«       d d d «       y # 1 sw Y   y xY w)Nrµ  z$'mu' must have at least two entries.rK   r   r´  rµ  s      rE   Útest_one_entry_muz%TestVonMises_Fisher.test_one_entry_muQ  s8   € Ü�W‰W�U‹^ˆØ4ˆÜ�]‰]œ:¨SÖ1Ü˜B Ô"÷ 2×1Ñ1úr·  rl   )rh   rN   c                 ó„   — d}t        j                  t        |¬«      5  t        ddg|«       d d d «       y # 1 sw Y   y xY w)Nz"'kappa' must be a positive scalar.rK   r   r   ©rR   r
   rS   r)   ©r[   r°  rï  s      rE   Útest_kappa_validationz)TestVonMises_Fisher.test_kappa_validationW  s/   € à2ˆÜ�]‰]œ:¨SÖ1Ü˜Q ˜F EÔ*÷ 2×1Ñ1úó   ž6¶?r   rÊ   c                 ó„   — d}t        j                  t        |¬«      5  t        ddg|«       d d d «       y # 1 sw Y   y xY w)NzŸFor 'kappa=0' the von Mises-Fisher distribution becomes the uniform distribution on the sphere surface. Consider using 'scipy.stats.uniform_direction' instead.rK   r   r   r½  r¾  s      rE   Útest_kappa_zeroz#TestVonMises_Fisher.test_kappa_zero]  s3   € ðˆô �]‰]œ:¨SÖ1Ü˜Q ˜F EÔ*÷ 2×1Ñ1úrÀ  rh  c                 ó®   — t        j                  g d¢«      }d}t        j                  t        |¬«      5   ||ddgd«       d d d «       y # 1 sw Y   y xY w)N©rÉ   rÊ   r   znThe dimensionality of the last axis of 'x' must match the dimensionality of the von Mises Fisher distribution.rK   r   r   ©r>   rÌ   rR   r
   rS   ©r[   rh  ra   rï  s       rE   Útest_invalid_shapes_pdf_logpdfz2TestVonMises_Fisher.test_invalid_shapes_pdf_logpdfg  sE   € ô �H‰H’[Ó!ˆðˆô �]‰]œ:¨SÖ1Ù�1�q˜!�f˜aÔ ÷ 2×1Ñ1úó   µAÁAc                 ó®   — t        j                  ddg«      }d}t        j                  t        |¬«      5   ||ddgd«       d d d «       y # 1 sw Y   y xY w)Nr  rÊ   ú8'x' must be unit vectors of norm 1 along last dimension.rK   r   r   rÅ  rÆ  s       rE   Útest_unnormalized_inputz+TestVonMises_Fisher.test_unnormalized_inputq  sE   € ô �H‰H�c˜2�YÓˆØHˆÜ�]‰]œ:¨SÖ1Ù�1�q˜!�f˜aÔ ÷ 2×1Ñ1úrÈ  zx, mu, kappa, reference)rÉ   rÊ   rÊ   r$  g÷0ñµ_´?rÄ  )rÊ   rÊ   rÉ   g»ô7m0_´?r£  gLI‹«»Ô/@gFíK:h*7g\�Âõ(\ï?r…  iÐ  gó3pˆBæ£>gÐ7Kõäs@)rÉ   rÊ   rÊ   rÊ   rÊ   go´Éé½¿ø@gW+x\Á(?rL  r    gSô‹³ð-c                 óV   — t        ||«      j                  |«      }t        ||d¬«       y )Nr  r®  )r)   rª   r   )r[   ra   rg  r°  Ú	referencerª   s         rE   Útest_pdf_accuracyz%TestVonMises_Fisher.test_pdf_accuracy…  s'   € ô4 ˜b %Ó(×,Ñ,¨QÓ/ˆÜ˜˜Y¨UÖ3rG   gÅ[d6U?Àgþ1*¤‰?ÀgÑJ8“j#@g©=f«äNXÀg][«­,Àg1V‡V@g‰|¿˜'@gm¢FÚ&!Àg–ÈeÏóhÀc                 óV   — t        ||«      j                  |«      }t        ||d¬«       y )Nrª  r®  )r)   r«   r   )r[   ra   rg  r°  rÍ  r«   s         rE   Útest_logpdf_accuracyz(TestVonMises_Fisher.test_logpdf_accuracy¯  s'   € ô4 !  UÓ+×2Ñ2°1Ó5ˆÜ˜ 	°Ö6rG   zdim, kappa, reference))rN   r$  g®©·£‰?@)rN   r£  g¡•p&ÕFü¿)rh   r  gT†;Ó·&À)r   r   go›–ØZ@c                 ó®   — t        j                  |fdt        j                  |«      z  «      }t        ||«      j	                  «       }t        ||d¬«       y )Nr   g›+¡†›„=r®  )r>   rø   r  r)   r¬   r   )r[   rÝ   r°  rÍ  rg  r¬   s         rE   Útest_entropy_accuracyz)TestVonMises_Fisher.test_entropy_accuracyÚ  sC   € ô �W‰W�c�W˜a¤§¡¨£™nÓ-ˆÜ! " eÓ,×4Ñ4Ó6ˆÜ˜ °Ö7rG   c           	      ó¦  — d}t         j                  j                  d«      }t        d«      j	                  ||¬«      }t        j
                  ddt        j                  d«      z  «      }d} ||||«      }|j                  |k(  sJ ‚t        |d   «      D ]:  }t        |d   «      D ]'  }	 ||||	d d …f   ||«      }
t        |
|||	f   d	¬
«       Œ) Œ< y )Nrÿ  rv  rN   r¼   r`  r   rh   r   rS  r®  )
r>   r‘   r’   r(   r¦   rø   r  r@   rƒ  r   )r[   rh  Ú	testshaper›   ra   rg  r°  Ú
result_allrµ  r¶  Úcurrent_vals              rE   r¸  z%TestVonMises_Fisher.test_broadcastingä  sÎ   € ð ˆ	Ü�i‰i×#Ñ#Ð$7Ó8ˆÜ˜aÓ ×$Ñ$ Y¸SÐ$ÓAˆÜ�W‰W�U˜AœbŸg™g a›j™LÓ)ˆØˆÙ˜A˜r 5Ó)ˆ
Ø×Ñ 9Ò,Ð,Ð,Ü�y ‘|Ö$ˆAÜ˜9 Q™<Ö(�Ù$ Q q¨!ªQ w¡Z°°UÓ;�Ü ¨Z¸¸1¸Ñ-=ÀEÖJñ )ñ %rG   c                 óV  — t         j                  j                  d«      }t        j                  ddg«      }t        j                  |d   |d   «      }d}t        ||«      }t        ||¬«      }t        d«      j                  d|¬«      }t        j                  |d d …df   |d d …df   «      }t        |j                  «       |j                  «       «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y )	Nrv  r   r   rñ  )rÂ  r°  rM   r›  r¼   )r>   r‘   r’   rÌ   r~  r)   r+   r(   r¦   r   r¬   rª   r«   )	r[   r›   rg  Úmu_angler°  ÚvmfÚvonmises_distÚvectorsr…  s	            rE   Útest_vs_vonmises_2dz'TestVonMises_Fisher.test_vs_vonmises_2dô  sï   € ô �i‰i×#Ñ#Ð$7Ó8ˆÜ�X‰X�q˜!�fÓˆÜ—:‘:˜b ™e R¨¡UÓ+ˆØˆÜ˜b %Ó(ˆÜ  X°UÔ;ˆÜ# AÓ&×*Ñ*¨2¸CÐ*Ó@ˆÜ—‘˜G¢A q D™M¨7²1°a°4©=Ó9ˆÜ˜×-Ñ-Ó/°·±³Ô?Ü˜×)Ñ)¨&Ó1°3·7±7¸7Ó3CÔDÜ˜×,Ñ,¨VÓ4°c·j±jÀÓ6IÕJrG   )rM   rN   ri   zkappa, mu_tol, kappa_tol))r   r  r  )r›  rÃ  rÃ  )r£  ç{®Gázt?r…  )r¿  r­  r…  c                 ó�  — t        j                  |fdt        j                  |«      z  «      }t        ||«      }t         j                  j                  d«      }d}|j                  ||¬«      }	t        j                  |	«      \  }
}t        j                  |j                  |
«      «      }t        |d|d¬«       t        |||¬«       y )	Nr   rv  rF  r¼   rÊ   r   rÛ  r®  )r>   rø   r  r)   r‘   r’   r¦   rM  Úarccosr„  r   )r[   rÝ   r°  Úmu_tolÚ	kappa_tolrg  r¯  r›   r²  rn  Úmu_fitÚ	kappa_fitÚangular_errors                rE   Útest_fit_accuracyz%TestVonMises_Fisher.test_fit_accuracy  sŸ   € ô �W‰W�c�W˜a¤§¡¨£™nÓ-ˆÜ" 2 uÓ-ˆÜ�i‰i×#Ñ#Ð$7Ó8ˆØˆ	Ø—,‘,˜y°s�,Ó;ˆÜ+×/Ñ/°Ó8Ñˆ�	ÜŸ	™	 "§&¡&¨£.Ó1ˆÜ˜ r°¸QÕ?Ü˜˜y¨yÖ9rG   c                 ó¼   — t        j                  d«      }d}t        j                  t        |¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr`  z'x' must be two dimensional.rK   )r>   r½   rR   r
   rS   r)   rM  ©r[   ra   rï  s      rE   Ú#test_fit_error_one_dimensional_dataz7TestVonMises_Fisher.test_fit_error_one_dimensional_data  s<   € Ü�H‰H�U‹OˆØ,ˆÜ�]‰]œ:¨SÖ1Ü×Ñ Ô"÷ 2×1Ñ1úó   ³AÁAc                 ó¼   — t        j                  d«      }d}t        j                  t        |¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr"  rÊ  rK   )r>   rU   rR   r
   rS   r)   rM  rç  s      rE   Ú test_fit_error_unnormalized_dataz4TestVonMises_Fisher.test_fit_error_unnormalized_data  s<   € Ü�G‰G�F‹OˆØHˆÜ�]‰]œ:¨SÖ1Ü×Ñ Ô"÷ 2×1Ñ1úré  c                 ó  — t        j                  g d¢«      }d}t        ||«      }t        ||d¬«      }|j                  d¬«      }t        j                  ||d¬«      }|j                  «       }t	        ||«       t	        ||«       y )N)r   r   r   rh   r  r¤   r¼   )r>   rÌ   r)   r¦   r   )r[   rg  r°  r€  r<  r¨  r©  r=  s           rE   r|  z,TestVonMises_Fisher.test_frozen_distribution   ss   € Ü�X‰X’iÓ ˆØˆÜ   UÓ+ˆÜ% b¨%°cÔ:ˆà�z‰z sˆzÓ+ˆÜ×"Ñ" 2 u¸3Ô?ˆØ�‰Ó ˆä�T˜4Ô Ü�T˜4Õ rG   N)rÏ   rÐ   rÑ   rR   rÖ   r×   rÈ  r²  r¶  r¹  r»  r¿  rÂ  r)   rª   r«   rÇ  rË  r>   rÌ   r  rÎ  rÐ  rÒ  r¸  rÜ  rå  rè  rë  r|  rÚ   rG   rE   r­  r­  -  s  „ Ø‡[�[×Ñ˜U¢LÓ1Ø‡[�[×Ñ˜VÒ%9Ó:ñ
#ó ;ó 2ð
#ð ‡[�[×Ñ˜U Q¨ FÓ+Ø‡[�[×Ñ˜WÒ&8Ó9ñó :ó ,ðò#ò#ò#ð ‡[�[×Ñ˜W r¨6 lÓ3ñ+ó 4ð+ð
 ‡[�[×Ñ˜W q¨" gÓ.ñ+ó /ð+ð ‡[�[×Ñ˜X¨×(;Ñ(;Ø(7×(>Ñ(>ð(@ó Añ!óAð!ð ‡[�[×Ñ˜X¨×(;Ñ(;Ø(7×(>Ñ(>ð(@ó Añ!óAð!ð$ ‡[�[×ÑÐ6Ø'˜rŸx™xªÓ5°x°r·x±xÂÓ7MØ#Ð%7ð9à'˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ#Ð%8ð:à'˜rŸx™xªÓ5°x°r·x±xÂÓ7MØ"Ð$6ð8à'˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ"Ð$9ð;à'˜rŸx™xªÓ5Ø'˜rŸx™x¨¨¯©°«¸¸¿¹À»ÀrÐ(JÓKØ#Ð%:ð<ð  (˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ#Ð%6ð8à'˜rŸx™xÒ(<Ó=Ø'˜rŸx™xÒ(<Ó=Ø#Ð%7ð9ð  (˜rŸx™xÒ(<Ó=Ø'˜rŸx™x¨¨¯©°«¸¸¿¹À»ÀrØ)*¨Bð)0ó  1à#Ð%;ð=ð  (˜rŸx™xÒ(<Ó=Ø'˜rŸx™x¨¨¯©°«°w°r·w±w¸s³|ÀRØ)*¨Bð)0ó  1à#Ð%;ð=ð)>ó?ñ24ó3?ð24ð" ‡[�[×ÑÐ6Ø'˜rŸx™xªÓ5°x°r·x±xÂÓ7MØ#Ð%8ð:à'˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ#Ð%8ð:à'˜rŸx™xªÓ5°x°r·x±xÂÓ7MØ"Ð$5ð7à'˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ"Ð$6ð8à'˜rŸx™xªÓ5Ø'˜rŸx™x¨¨¯©°«¸¸¿¹À»ÀrÐ(JÓKØ#Ð%8ð:ð  (˜rŸx™xªÓ4°h°b·h±hº|Ó6LØ#Ð%6ð8à'˜rŸx™xÒ(<Ó=Ø'˜rŸx™xÒ(<Ó=Ø#Ð%7ð9ð  (˜rŸx™xÒ(<Ó=Ø'˜rŸx™x¨¨¯©°«¸¸¿¹À»ÀrØ)*¨Bð)0ó  1à#Ð%7ð9ð  (˜rŸx™xÒ(<Ó=Ø'˜rŸx™x¨¨¯©°«°w°r·w±w¸s³|ÀRØ)*¨Bð)0ó  1à#Ð%8ð:ð);ó<ñ27ó3<ð27ð$ ‡[�[×ÑÐ4ò:ó;ñ
8ó;ð
8ð
 ‡[�[×Ñ˜X¨×(;Ñ(;Ø(7×(>Ñ(>ð(@ó AñKóAðKòKð ‡[�[×Ñ˜U¢IÓ.Ø‡[�[×ÑÐ7ò2ó3ñ
	:ó3ó /ð	:ò#ò#ó!rG   r­  c                   óf  — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                  j                  ddd	g«      d
„ «       Ze
j                  j                  dddg«      d„ «       Zd„ Zd„ Ze
j                  j                  ddd	g«      d„ «       Ze
j                  j                  dg d¢«      d„ «       Zy)ÚTestDirichletMultinomialc                 óÆ   — t         j                  j                  d«      }|j                  ddd¬«      }|j	                  dd|df¬«      }|j                  d¬	«      }|||||fS )
Nì   ðt7ž)r   r£  rM   r…   r   rñ  rl   rŠ   )r>   r‘   r’   r   r  r–   )r[   r2  r›   r  ra   rÁ   s         rE   Ú
get_paramsz#TestDirichletMultinomial.get_params/  sc   € ä�i‰i×#Ñ#Ð$5Ó6ˆØ—‘˜A˜s¨�Ó+ˆØ�L‰L˜˜B a¨ VˆLÓ,ˆØ�E‰E�rˆE‹NˆØ�A�u˜a Ð"Ð"rG   c                 ó¨  — t         j                  j                  d«      }|j                  ddd«      }|j	                  ddd«      }t        j
                  |d¬«      }t        ||«      }t        |j                  |«      t        j                  |||«      «       t        |j                  |«      t        j                  |||«      «       t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       t        |j                  «       t        j                  ||«      «       y )Nrð  r   r£  r›  rl   rŠ   )r>   r‘   r’   r   r  r–   r*   r   r™  r£  r­   r  rÄ   )r[   r›   r  ra   rÁ   r*  s         rE   rÒ  z$TestDirichletMultinomial.test_frozen7  sõ   € Ü�i‰i×#Ñ#Ð$5Ó6ˆà—‘˜A˜s BÓ'ˆØ�L‰L˜˜B Ó#ˆÜ�F‰F�1˜2Ôˆä! %¨Ó+ˆÜ�Q—X‘X˜a“[Ô"7×">Ñ">¸qÀ%ÈÓ"KÔLÜ�Q—U‘U˜1“XÔ4×8Ñ8¸¸EÀ1ÓEÔFÜ�Q—V‘V“XÔ4×9Ñ9¸%ÀÓCÔDÜ�Q—U‘U“WÔ3×7Ñ7¸¸qÓAÔBÜ�Q—U‘U“WÔ3×7Ñ7¸¸qÓAÕBrG   c                 óþ  — t        j                  g d¢«      }t        j                  |«      }t        j                  g d¢«      }t        j                  |||«      }t        j
                  |||«      }d}t        ||«       t        |t        j                  |«      «       |j                  |j                  cxk(  rdk(  sJ ‚ J ‚t         j                  j                  d«      }|j                  ddd«      }|j                  ddd«      }t        j                  |d	¬
«      }t        ||«      j	                  |«      }t        j
                  |||«      }d}t        ||«       t        |t        j                  |«      «       y )NrQ   ©rN   rj   rh   gp.¸U.¸µ?rÚ   rð  r   r£  r›  rl   rŠ   g+»©œTº<)r>   rÌ   r–   r*   r£  r™  r   rq  r@   r‘   r’   r   r  )r[   ra   rÁ   r  rA   ÚlogresrB   r›   s           rE   Útest_pmf_logpmf_against_Rz2TestDirichletMultinomial.test_pmf_logpmf_against_RE  s.  € ô
 �H‰H’YÓˆÜ�F‰F�1‹IˆÜ—‘šÓ#ˆÜ#×'Ñ'¨¨5°!Ó4ˆÜ&×-Ñ-¨a°¸Ó:ˆØ!ˆÜ˜˜SÔ!Ü˜¤§¡ s£Ô,Ø�y‰y˜FŸL™LÔ.¨BÒ.Ð.Ñ.Ð.Ð.ô �i‰i×#Ñ#Ð$5Ó6ˆØ—‘˜A˜s BÓ'ˆØ�L‰L˜˜B Ó#ˆÜ�F‰F�1˜2ÔˆÜ# E¨1Ó-×1Ñ1°!Ó4ˆÜ&×-Ñ-¨a°¸Ó:ˆØ"ˆÜ˜˜SÔ!Ü˜¤§¡ s£Õ,rG   c                 ó:  — | j                  d«      \  }}}}}|dz  }t        t        ||«      j                  |«      d«       t        t        ||«      j	                  |«      t
        j                   «       | j                  d«      \  }}}}}|j                  d¬«      dkD  }t        j                  ||   dz  «      ||<   t        t        ||«      j                  |«      |   d«       t        t        ||«      j	                  |«      |   t
        j                   «       t        j                  t        ||«      j                  |«      |    dkD  «      sJ ‚t        j                  t        ||«      j	                  |«      |    t
        j                   kD  «      sJ ‚y )Nr   r   r›  r…   r  rM   )
rñ  r   r*   r£  r™  r>   rù   r‘   Úroundr�  )r[   r›   r2  r  rÁ   ra   rµ  s          rE   Útest_pmf_logpmf_supportz0TestDirichletMultinomial.test_pmf_logpmf_supportd  s`  € ð #Ÿo™o¨aÓ0ÑˆˆQ��q˜!Ø	ˆQ‰ˆÜÔ*¨5°!Ó4×8Ñ8¸Ó;¸QÔ?ÜÔ*¨5°!Ó4×;Ñ;¸AÓ>ÄÇÁÀÔHà"Ÿo™o¨bÓ1ÑˆˆQ��q˜!Ø�J‰J˜BˆJÓ #Ñ%ˆÜ�x‰x˜˜!™˜q™Ó!ˆˆ!‰ÜÔ*¨5°!Ó4×8Ñ8¸Ó;¸AÑ>ÀÔBÜÔ*¨5°!Ó4×;Ñ;¸AÓ>¸qÑAÄBÇFÁFÀ7ÔKÜ�v‰vÔ+¨E°1Ó5×9Ñ9¸!Ó<¸a¸RÑ@À1ÑDÔEÐEÐEÜ�v‰vÔ+¨E°1Ó5×<Ñ<¸QÓ?ÀÀÑCÄrÇvÁvÀgÑMÔNÐNÑNrG   c                 óð  — d}dg}t        j                  |g«      }t        ||«      }t        |j	                  |«      d«       t        |j	                  |dz   «      d«       t        |j                  |«      d«       t        |j                  |dz   «      t         j                   «       t        |j                  «       |«       t        |j                  «       d«       t        |j                  «       d«       y )Nri   r›  r   r   ©
r>   r?   r*   r   r£  r™  rù   r­   r  rÄ   ©r[   rÁ   r  ra   rÍ   s        rE   Útest_dimensionality_onez0TestDirichletMultinomial.test_dimensionality_onet  s°   € àˆØ�ˆÜ�J‰J˜�s‹OˆÜ$ U¨AÓ.ˆä�T—X‘X˜a“[ !Ô$Ü�T—X‘X˜a ™c“] AÔ&Ü�T—[‘[ “^ QÔ'Ü�T—[‘[  1¡Ó%¬¯© wÔ/Ü�T—Y‘Y“[ !Ô$Ü�T—X‘X“Z Ô#Ü�T—X‘X“Z Õ#rG   c                 ó.  — d}t        j                  ddg«      }t        j                  ddg«      }t        ||«      }t        |j	                  |«      d«       t        |j	                  |dz   «      d«       t        |j                  |«      d«       t        |j                  |dz   «      t         j                   «       t        |j                  «       ddg«       t        |j                  «       ddg«       t        |j                  «       ddgddgg«       y )Nr   rÉ   r   rû  rü  s        rE   Útest_n_is_zeroz'TestDirichletMultinomial.test_n_is_zeroƒ  sÓ   € àˆÜ—
‘
˜B ˜8Ó$ˆÜ�J‰J˜˜1�vÓˆÜ$ U¨AÓ.ˆä�T—X‘X˜a“[ !Ô$Ü�T—X‘X˜a ™c“] AÔ&Ü�T—[‘[ “^ QÔ'Ü�T—[‘[  1¡Ó%¬¯© wÔ/Ü�T—Y‘Y“[ 1 a &Ô)Ü�T—X‘X“Z ! Q Ô(Ü�T—X‘X“Z 1 a &¨1¨a¨&Ð!1Õ2rG   Úmethod_namer£  r™  c                 ó  — | j                  d«      \  }}}}}t        t        ||«      |«      }t        t        j                  |g|j
                  ¢­Ž |«      } ||«      }	 ||j
                  d   «      }
t        |	|
«       y ©Nr£  r   ©rñ  rv   r*   r0   Ú	betabinomr˜   r   ©r[   r   r›   r2  r  rÁ   ra   rh  Ú
ref_methodrA   rB   s              rE   Útest_against_betabinom_pmfz3TestDirichletMultinomial.test_against_betabinom_pmf’  sr   € à"Ÿo™o¨cÓ2ÑˆˆQ��q˜!äÔ.¨u°aÓ8¸+ÓFˆÜœUŸ_™_¨QÐ9°·±Ò9¸;ÓGˆ
á�Q‹iˆÙ˜Ÿ™˜Q™Ó ˆÜ˜˜SÕ!rG   r­   r  c                 óô   — | j                  d«      \  }}}}}t        t        ||«      |«      }t        t        j                  |g|j
                  ¢­Ž |«      } |«       d d …df   }	 |«       }
t        |	|
«       y r  r  r  s              rE   Útest_against_betabinom_momentsz7TestDirichletMultinomial.test_against_betabinom_moments�  sm   € à"Ÿo™o¨cÓ2ÑˆˆQ��q˜!äÔ.¨u°aÓ8¸+ÓFˆÜœUŸ_™_¨QÐ9°·±Ò9¸;ÓGˆ
á‹h’q˜!�t‰nˆÙ‹lˆÜ˜˜SÕ!rG   c                 ó®  — t         j                  j                  d«      }d}|j                  dd«      }|j                  |¬«      dz  }t	        ||«      }d}|j                  ||¬«      }|j                  |||¬«      }t        |j                  «       t        j                  |d¬	«      d
¬«       t        |j                  «       t        j                  |d¬	«      d¬«       |j                  «       j                  |j                  «       j                  cxk(  r|fk(  sJ ‚ J ‚|j                  «       }	|	j                  ||fk(  sJ ‚t        |	t        j                  |j                  «      d¬«       t        t        j                  |	«      |j                  «       «       t        j                  t         j"                  j%                  |	«      d   dkD  «      sJ ‚y )Nrð  rh   r   r£  r…   r›  r¥  r   rŠ   rÝ  r®  rÃ  r…  )r>   r‘   r’   r  r*   r   r   r   r­   r  r@   rÄ   r˜   r   ru   r�  rË   r¿   rÀ   )
r[   r›   rÝ   rÁ   r  rÍ   r2  rS  ra   rÄ   s
             rE   rÅ  z%TestDirichletMultinomial.test_moments¨  sc  € Ü�i‰i×#Ñ#Ð$5Ó6ˆØˆØ�L‰L˜˜CÓ ˆØ—
‘
 �
Ó$ rÑ)ˆÜ$ U¨AÓ.ˆð ˆØ�M‰M˜% aˆMÓ(ˆØ�O‰O˜A˜q qˆOÓ)ˆä˜Ÿ	™	›¤R§W¡W¨Q°QÔ%7¸dÕCÜ˜Ÿ™›
¤B§F¡F¨1°1Ô$5¸DÕAØ�y‰y‹{× Ñ  D§H¡H£J×$4Ñ$4Ô>¸¸Ò>Ð>Ñ>Ð>Ð>à�h‰h‹jˆØ�y‰y˜S #˜JÒ&Ð&Ð&Ü˜œRŸV™V A§C¡C›[¨tÕ4Ü”R—W‘W˜S“\ 4§8¡8£:Ô.Ü�v‰v”e—l‘l×'Ñ'¨Ó,¨QÑ/°!Ñ3Ô4Ð4Ñ4rG   c                 ó€  — t        j                  g d¢«      }t        j                  |«      }t        j                  g d¢«      }d}t        t        |¬«      5  t        j                  g d¢||«       d d d «       t        t        |¬«      5  t        j                  g d¢||«       d d d «       d}t        t        |¬«      5  t        j                  |g d¢|«       d d d «       t        t        |¬«      5  t        j                  |g d	¢|«       d d d «       d
}t        t        |¬«      5  t        j                  ||d«       d d d «       t        t        |¬«      5  t        j                  ||d«       d d d «       t        j                  g d¢«      }t        j                  g d¢«      }d}t        t        |¬«      5  t        j                  |||j                  «       «       d d d «       y # 1 sw Y   �ŒyxY w# 1 sw Y   �ŒSxY w# 1 sw Y   �Œ+xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÞxY w# 1 sw Y   Œ¹xY w# 1 sw Y   y xY w)NrQ   rô  z,`x` must contain only non-negative integers.rK   )r   rl   rN   )r   r`  rN   z*`alpha` must contain only positive values.)rN   r   rj   )rN   rl   rj   z#`n` must be a non-negative integer.gÍÌÌÌÌŒH@rl   )r   rM   rN   rj   z&`x` and `alpha` must be broadcastable.)r>   rÌ   r–   rf  rS   r*   r™  )r[   Úx0Ún0Úalpha0Útextra   r  s          rE   r]   z.TestDirichletMultinomial.test_input_validation¾  sŠ  € ä�X‰X’iÓ ˆÜ�V‰V�B‹ZˆÜ—‘š)Ó$ˆà=ˆÜœ:¨TÖ2Ü!×(Ñ(ª°V¸RÔ@÷ 3äœ:¨TÖ2Ü!×(Ñ(ª°f¸bÔA÷ 3ð <ˆÜœ:¨TÖ2Ü!×(Ñ(¨ªY¸Ô;÷ 3äœ:¨TÖ2Ü!×(Ñ(¨ªZ¸Ô<÷ 3ð 5ˆÜœ:¨TÖ2Ü!×(Ñ(¨¨V°TÔ:÷ 3äœ:¨TÖ2Ü!×(Ñ(¨¨V°RÔ8÷ 3ô �H‰H’\Ó"ˆÜ—‘šÓ#ˆØ7ˆÜœ:¨TÖ2Ü!×(Ñ(¨¨E°1·5±5³7Ô;÷ 3Ð2÷) 3Ñ2úç2Ñ2ú÷ 3Ñ2úç2Ñ2ú÷ 3Ð2úç2Ð2ú÷ 3Ð2úsT   ÁG(Â
G5Â?HÃ2HÄ'HÅH(Æ9&H4Ç(G2Ç5G?ÈHÈHÈH%È(H1È4H=rh  c           	      ó^  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  dgdgdgg«      }t        j                  g d¢g d	¢g«      j                  d
«      }t        t        |«      } ||||«      }|j
                  dk(  sJ ‚t        t        |«      «      D ]…  }t        t        |«      «      D ]l  }t        t        |«      «      D ]S  }||||f   }	 |||   j                  «       ||   j                  «       ||   j                  «       «      }
t        |	|
«       ŒU Œn Œ‡ y )Nrô  rà  ©rh   rh   rk   ©r   r¶  r›  ri   rk   r   rQ   )rM   rM   rN   )rM   r   r   rN   )rM   rN   rj   )
r>   rÌ   rÀ  rv   r*   r@   rƒ  r—   r©   r   )r[   rh  r  rÁ   ra   rA   rµ  r¶  r‰  Úres_ijkrB   s              rE   Útest_broadcasting_pmfz.TestDirichletMultinomial.test_broadcasting_pmfÜ  sý   € ä—‘š)¢Y²	º:ÐFÓGˆÜ�H‰H�q�c˜A˜3  �_Ó%ˆÜ�H‰H’i¢Ð+Ó,×4Ñ4°\ÓBˆÜÔ.°Ó7ˆÙ�Q˜˜qÓ!ˆØ�y‰y˜IÒ%Ð%Ð%Ü”s˜1“v–ˆAÜœ3˜q›6–]�Üœs 5›zÖ*�AØ! ! Q¨ '™l�GÙ   1¡§¡£°°q±×1AÑ1AÓ1CÀQÀqÁTÇ\Á\Ã^ÓT�CÜ# G¨SÕ1ñ +ñ #ñ rG   )r­   r  rÄ   c                 ó¼  — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  dgdgdgg«      }t        t        |«      } |||«      }|dk7  r|j                  d	k(  sJ ‚	 t        t        |«      «      D ]Y  }t        t        |«      «      D ]@  }|||f   } |||   j                  «       ||   j                  «       «      }	t        ||	«       ŒB Œ[ y )
Nrô  rà  r  r  ri   rk   r   rÄ   )rN   rj   rN   )	r>   rÌ   rv   r*   r@   rƒ  r—   r©   r   )
r[   r   r  rÁ   rh  rA   r¶  r‰  r  rB   s
             rE   Útest_broadcasting_momentsz2TestDirichletMultinomial.test_broadcasting_momentsë  sÆ   € ä—‘š)¢Y²	º:ÐFÓGˆÜ�H‰H�q�c˜A˜3  �_Ó%ˆÜÔ.°Ó<ˆÙ�U˜AÓˆØ)4¸Ò)=ˆs�y‰y˜IÒ%ÐOÐOÀ<Ü”s˜1“v–ˆAÜœ3˜u›:Ö&�Ø˜a ˜d™)�Ù˜U 1™X×-Ñ-Ó/°°1±·±³Ó@�Ü ¨Õ-ñ 'ñ rG   N)rÏ   rÐ   rÑ   rL  rñ  rÒ  rö  rù  rý  rÿ  rR   rÖ   r×   r  r	  rÅ  r]   r  r  rÚ   rG   rE   rî  rî  .  sÝ   „ Øñ#ó ð#òCò-ò>Oò $ò3ð ‡[�[×Ñ˜]¨U°HÐ,=Ó>ñ"ó ?ð"ð ‡[�[×Ñ˜]¨V°U¨OÓ<ñ"ó =ð"ò5ò,<ð< ‡[�[×Ñ˜X¨¨xÐ'8Ó9ñ2ó :ð2ð ‡[�[×Ñ˜]Ò,BÓCñ
.ó Dñ
.rG   rî  c                   ó:  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zej                  j                  ej                  j                  d«      d„ «       «       Zej                  j                  dej                  ej                   ej"                  ej$                  g«      d	„ «       Zy
)ÚTestNormalInverseGammac           	      óL  ‡— t         j                  j                  d«      }|j                  d«      \  }}}}t        j                  ||||«      Št        j
                  d|z  |dt        j                  ||z  |z  «      z  ¬«      }t        j                  ddd«      }t        ˆfd	„d
t         j                  |f¬«      }|j                  |«      }	t        |j                  |	«       ‰j                  d|¬«      }t        j                  |d
   |j                  «      \  }
}|dkD  sJ ‚y )Nì   �&( rj   rM   r   rÁ  r  rh   rB  c                 ó(   •— ‰j                  || «      S r=   ©rª   )r„  ra   Únorm_inv_gammas     €rE   rb   z8TestNormalInverseGamma.test_marginal_x.<locals>.<lambda>  ó   ø€  ^×%7Ñ%7¸¸2Ô%>rG   r   ©rC   rF  r¢   rŸ   )r>   r‘   r’   r0   Únormal_inverse_gammar/  r  rA  r1   rù   rª   r   rå  r¦   Úks_1samprµ   )r[   r›   rg  Úlmbdar"  r#  r/  ra   rA   rB   rß   r  r  s               @rE   Útest_marginal_xz&TestNormalInverseGamma.test_marginal_xû  s÷   ø€ ô �i‰i×#Ñ# JÓ/ˆØŸ*™* Q›-‰ˆˆE�1�aä×3Ñ3°B¸¸qÀ!ÓDˆÜ�G‰G�A�a‘C˜R q¬¯©°°U±¸Q±Ó)?Ñ'?Ô@ˆô �K‰K˜˜A˜rÓ"ˆÜÓ>ÀÄ2Ç6Á6ÐQRÐPTÔUˆØ�e‰e�A‹hˆÜ˜Ÿ™ cÔ*ð × Ñ  e¸#Ð Ó>ˆÜ—N‘N 3 q¡6¨1¯5©5Ó1‰	ˆˆ6Ø˜Š|Ð‰|rG   c                 ó*  ‡— t         j                  j                  d«      }|j                  d«      \  }}}}t        j                  ||||«      Št        j
                  ||¬«      }t        j                  ddd«      }t        ˆfd„t         j                   t         j                  |f¬«      }|j                  |«      }	t        |j                  |	«       ‰j                  d|¬	«      }t        j                  |d
   |j                  «      \  }
}|dkD  sJ ‚y )Nr  rj   r�  rŸ   r›  c                 ó(   •— ‰j                  | |«      S r=   r  )ra   r„  r  s     €rE   rb   z9TestNormalInverseGamma.test_marginal_s2.<locals>.<lambda>  r  rG   r  rF  r¢   r   )r>   r‘   r’   r0   r   r   rA  r1   rù   rª   r   rå  r¦   r!  rµ   )r[   r›   rg  r"  r"  r#  Ú	inv_gammar„  rA   rB   rß   r  r  s               @rE   Útest_marginal_s2z'TestNormalInverseGamma.test_marginal_s2  sã   ø€ ô �i‰i×#Ñ# JÓ/ˆØŸ*™* Q›-‰ˆˆE�1�aä×3Ñ3°B¸¸qÀ!ÓDˆÜ—N‘N 1¨AÔ.ˆ	ô �[‰[˜˜b "Ó%ˆÜÓ>ÜŸ™�w¤§¡¨b¨Uô4ˆà�m‰m˜BÓˆÜ˜Ÿ™ cÔ*ð × Ñ  e¸#Ð Ó>ˆÜ—N‘N 3 q¡6¨9¯=©=Ó9‰	ˆˆ6Ø˜Š|Ð‰|rG   c                 óz  — t         j                  j                  d«      }|j                  d«      dz
  \  }}}}|j                  d¬«      dz
  \  }}t        j                  ||||«      j                  ||«      }t        j                  j                  ||||||«      }	t        |t        j                  |	«      «       y )Nr  )rj   rñ  r>  )rM   rñ  r…   )	r>   r‘   r’   r0   r   rª   r«   r   r¤  )
r[   r›   rg  r"  r"  r#  ra   r„  rA   rB   s
             rE   Útest_pdf_logpdfz&TestNormalInverseGamma.test_pdf_logpdf&  sŸ   € ä�i‰i×#Ñ# JÓ/ˆØŸ*™* WÓ-°Ñ4‰ˆˆE�1�aØ—
‘
 �
Ó(¨4Ñ/‰ˆˆ2Ü×(Ñ(¨¨U°A°qÓ9×=Ñ=¸aÀÓDˆÜ×(Ñ(×/Ñ/°°2°r¸5À!ÀQÓGˆÜ˜œRŸV™V C›[Õ)rG   c                 óº  — t         j                  j                  d«      }|j                  d«      \  }}}}|j                  d«      \  }}t        j                  t         j
                  |||«      j                  ||«      }t        |t         j
                  «       t        j                  |d||«      j                  ||«      }t        |t         j
                  «       t        j                  ||d|«      j                  ||«      }t        |t         j
                  «       t        j                  |||d«      j                  ||«      }t        |t         j
                  «       t        j                  ||||«      j                  |d«      }t        |d«       t        j                  |dt         j
                  g||«      j                  |d«      }t        |t         j
                  «       t        j                  |d||«      j                  «       }t        |t         j
                  t         j
                  f«       t        j                  ||d|«      j                  «       }t        |t         j
                  t         j
                  f«       t        j                  t        d¬«      5  t        j                  |||d«      j                  «        d d d «       y # 1 sw Y   y xY w)Nr  rj   rM   rl   r   zDomain error in arguments...rK   )r>   r‘   r’   r0   r   rå  rª   r   r­   r  rR   r
   rS   r¦   )	r[   r›   rg  r"  r"  r#  ra   r„  rA   s	            rE   Útest_invalid_and_special_casesz5TestNormalInverseGamma.test_invalid_and_special_cases/  s  € ä�i‰i×#Ñ# JÓ/ˆØŸ*™* Q›-‰ˆˆE�1�aØ—
‘
˜1“‰ˆˆ2ä×(Ñ(¬¯©°¸¸1Ó=×AÑAÀ!ÀRÓHˆÜ�Sœ"Ÿ&™&Ô!ä×(Ñ(¨¨R°°AÓ6×:Ñ:¸1¸bÓAˆÜ�Sœ"Ÿ&™&Ô!ä×(Ñ(¨¨U°A°qÓ9×=Ñ=¸aÀÓDˆÜ�Sœ"Ÿ&™&Ô!ä×(Ñ(¨¨U°A°rÓ:×>Ñ>¸qÀ"ÓEˆÜ�Sœ"Ÿ&™&Ô!ä×(Ñ(¨¨U°A°qÓ9×=Ñ=¸aÀÓDˆÜ�S˜!Ôô ×(Ñ(¨¨b´"·&±&¨\¸1¸aÓ@×DÑDÀQÈÓKˆÜ�Sœ"Ÿ&™&Ô!ä×(Ñ(¨¨R°°AÓ6×;Ñ;Ó=ˆÜ�Sœ2Ÿ6™6¤2§6¡6Ð*Ô+ä×(Ñ(¨¨U°B¸Ó:×>Ñ>Ó@ˆÜ�Sœ2Ÿ6™6¤2§6¡6Ð*Ô+ä�]‰]œ:Ð-KÖLÜ×&Ñ& r¨5°!°RÓ8×<Ñ<Ô>÷ M×LÑLús   Ê!'KËKc                 ó  — t         j                  j                  d«      }|j                  d«      }|j                  d«      dz   }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||||«      }t        j
                  ||||||«      }	|	D �
cg c]  }
t        j                  |
«      ‘Œ }}
|j                  ||«      }|j                  |	d   j                  k(  sJ ‚t        |j                  «       t        j                  j                  |Ž «       |j                  ||«      }|j                  |	d   j                  k(  sJ ‚t        |j                  «       t        j                  j                  |Ž «       t        j
                  ||||«      }	|	D �
cg c]  }
t        j                  |
«      ‘Œ }}
|j                  «       }|d   j                  |	d   j                  k(  sJ ‚t        |d   j                  «       |d	   j                  «       ft        j                  j                  |Ž «       |j                  «       }|d   j                  |	d   j                  k(  sJ ‚t        |d   j                  «       |d	   j                  «       ft        j                  j                  |Ž «       d
}t         j                  j                  d«      }|j                  ||¬«      }t         j                  j                  d«      }d}t        j                  j                  |||dœŽ}t        |d   j                  |«      |d	   j                  |«      f|«       y c c}
w c c}
w )Nr  rM   )rN   r   )rj   r   r   )rh   r   r   r   )ri   r   r   r   r   )rk   r   r   r   r   r   r   r   )ri   rh   rj   rN   rM   l   ¬�M‹r¢   )ri   éx   )r>   r‘   r’   r0   r   Úbroadcast_arraysr”  rª   r@   r   r«   r­   r  r¦   rÀ  )r[   r›   r#  r"  r"  rg  r„  ra   rÍ   ÚbroadcastedÚarrÚbroadcasted_raveledrA   r†   r@   rB   s                   rE   r¸  z(TestNormalInverseGamma.test_broadcastingQ  sþ  € ô �i‰i×#Ñ# JÓ/ˆØ�J‰J�q‹MˆØ�J‰J�vÓ Ñ"ˆØ—
‘
˜9Ó%ˆØ�Z‰Z˜Ó%ˆØ�Z‰Z˜Ó(ˆØ�J‰JÐ)Ó*ˆÜ×)Ñ)¨"¨e°Q¸Ó:ˆô ×)Ñ)¨!¨R°°U¸A¸qÓAˆÙ8CÓD¹°œrŸx™x¨�}¸ÐÐDà�h‰h�q˜"‹oˆØ�y‰y˜K¨™N×0Ñ0Ò0Ð0Ð0Ü˜Ÿ	™	›Ü×2Ñ2×6Ñ6Ð8KÐLô	Nð �k‰k˜!˜RÓ ˆØ�y‰y˜K¨™N×0Ñ0Ò0Ð0Ð0Ü˜Ÿ	™	›Ü×2Ñ2×9Ñ9Ð;NÐOô	Qô ×)Ñ)¨"¨e°Q¸Ó:ˆÙ8CÓD¹°œrŸx™x¨�}¸ÐÐDà�i‰i‹kˆØ�1‰v�|‰|˜{¨1™~×3Ñ3Ò3Ð3Ð3Ü˜˜Q™Ÿ™›¨¨Q©¯©«Ð8Ü×2Ñ2×7Ñ7Ð9LÐMô	Oð �h‰h‹jˆØ�1‰v�|‰|˜{¨1™~×3Ñ3Ò3Ð3Ð3Ü˜˜Q™Ÿ™›¨¨Q©¯©«Ð8Ü×2Ñ2×6Ñ6Ð8KÐLô	Nð ˆÜ�i‰i×#Ñ# MÓ2ˆØ�h‰h˜D¨sˆhÓ3ˆÜ�i‰i×#Ñ# MÓ2ˆØˆÜ×(Ñ(×,Ñ,Ð.AÈØ:=ò?ˆä˜˜Q™Ÿ™¨Ó.°°A±·±¸uÓ0EÐFÈÕLùòE Eùò Es   Â?M=ÇNr›  c                 ó  ‡— t         j                  j                  d«      }|j                  d«      \  }}}}|dz  }t        j                  ||||«      Š‰j                  «       }t        ˆfd„t         j                   t         j                  dt         j                  «      }t        |d   |d   d¬«       t        ˆfd„t         j                   t         j                  dt         j                  «      }t        |d	   |d   d¬«       y )
Nr  rj   rM   c                 ó.   •— ‰j                  || «      |z  S r=   r  ©r„  ra   rÍ   s     €rE   rb   z5TestNormalInverseGamma.test_moments.<locals>.<lambda>�  s   ø€  D§H¡H¨Q°£O°aÒ$7rG   r   r  r®  c                 ó.   •— ‰j                  || «      | z  S r=   r  r4  s     €rE   rb   z5TestNormalInverseGamma.test_moments.<locals>.<lambda>’  s   ø€  D§H¡H¨Q°£O°bÒ$8rG   r   )	r>   r‘   r’   r0   r   r­   r6   rù   r   )	r[   r›   rg  r"  r"  r#  rA   rB   rÍ   s	           @rE   rÅ  z#TestNormalInverseGamma.test_moments„  sÂ   ø€ ô �i‰i×#Ñ# JÓ/ˆØŸ*™* Q›-‰ˆˆE�1�aØ	ˆQ‰ˆä×)Ñ)¨"¨e°Q¸Ó:ˆØ�i‰i‹kˆäÓ7¼"¿&¹&¸Ä"Ç&Á&È!ÌRÏVÉVÓTˆÜ˜˜A™  A¡¨TÕ2äÓ8¼2¿6¹6¸'Ä2Ç6Á6È1ÌbÏfÉfÓUˆÜ˜˜A™  A¡¨TÖ2rG   rì   c                 ó^  — t         j                  dk  rt        j                  d«       t         j                  j                  d«      }|j                  ddd¬«      j                  |«      \  }}}}}}t        j                  d|«      }	t        j                  ||||«      }
|
j                  «       d	   j                  |	k(  sJ ‚|
j                  «       d
   j                  |	k(  sJ ‚|
j                  «       d	   j                  |	k(  sJ ‚|
j                  «       d
   j                  |	k(  sJ ‚|
j                  «       d	   j                  |	k(  sJ ‚|
j                  «       d
   j                  |	k(  sJ ‚|
j                  ||«      j                  |	k(  sJ ‚|
j!                  ||«      j                  |	k(  sJ ‚y )NÚ2z*Scalar dtypes only respected after NEP 50.r  rN   r›  ri   r…   rÉ   r   r   )r>   Ú__version__rR   r�   r‘   r’   r   ÚastypeÚresult_typer0   r   r¦   rì   r­   r  r«   rª   )r[   rì   r›   ra   r„  rg  r"  r"  r#  Ú	dtype_outrÍ   s              rE   Ú
test_dtypez!TestNormalInverseGamma.test_dtype•  sr  € ä�>‰>˜CÒÜ�K‰KÐDÔEÜ�i‰i×#Ñ# JÓ/ˆØ!$§¡¨Q°¸ Ó!;×!BÑ!BÀ5Ó!IÑˆˆ2ˆr�5˜!˜QÜ—N‘N 3¨Ó.ˆ	Ü×)Ñ)¨"¨e°Q¸Ó:ˆØ�x‰x‹z˜!‰}×"Ñ" iÒ/Ð/Ð/Ø�x‰x‹z˜!‰}×"Ñ" iÒ/Ð/Ð/Ø�y‰y‹{˜1‰~×#Ñ# yÒ0Ð0Ð0Ø�y‰y‹{˜1‰~×#Ñ# yÒ0Ð0Ð0Ø�x‰x‹z˜!‰}×"Ñ" iÒ/Ð/Ð/Ø�x‰x‹z˜!‰}×"Ñ" iÒ/Ð/Ð/Ø�{‰{˜1˜bÓ!×'Ñ'¨9Ò4Ð4Ð4Ø�x‰x˜˜2‹×$Ñ$¨	Ò1Ð1Ñ1rG   N)rÏ   rÐ   rÑ   r#  r'  r)  r+  r¸  rR   rÖ   r|  Ú	fail_slowrÅ  r×   r>   Úint32Úfloat16rë  r¹  r<  rÚ   rG   rE   r  r  ù  s’   „ òò*ò,*ò ?òD1Mðf ‡[�[×ÑØ‡[�[×Ñ˜2Óñ3ó ó ð3ð ‡[�[×Ñ˜W r§x¡x°·±¸R¿Z¹ZÈÏÉÐ&TÓUñ2ó Vñ2rG   r  r  )lrG  r¡  Údataclassesr   Únumpy.testingr   r   r   r   r   r	   rR   r
   rf  Útest_continuous_basicr   Únumpyr>   Úscipy.linalgrË   Úscipy.stats._multivariater   r   r   Úscipy.statsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úscipy.stats._continuous_distnsr/   r4  r0   Úscipy.integrater1   r2   r3   r4   r5   r6   r7   Úscipy.specialr8   r-  Úcommon_testsr9   Ú	data._mvtr:   Úunittest.mockr;   rF   rI   râ   ré   rý   rÿ   rO  r`  r~  r�  rÊ  r  rh  rj  r•  rí  r  r7  rV  rs  rŠ  r—  r  r\  r¨  rÖ   r  r«  r­  rî  r  rÚ   rG   rE   Ú<module>rM     s  ðñó Ý !÷7÷ 7ó Ý *å 9ã ã ÷Cñ C÷D÷ D÷ D÷ D÷ D÷ D÷ Dõ D÷ 0Ý @Ý ç 4Ñ 4ß <Ó <Ý &Ý å 5Ý å ò'÷]!ñ ]!ó@òò+ð. ÷Að Aó ðAðH ÷Xð Xó ðX÷v
)ñ 
)÷DGñ G÷TH*ñ H*÷VO?ñ O?÷dE1ñ E1òP-÷&i9ñ i9÷Vz;ñ z;÷za(ñ a(÷HGJñ GJ÷T~&ñ ~&÷Bd#ñ d#÷N6+ñ 6+÷r>Dñ >D÷BX,ñ X,÷v`%ñ `%÷Fh$ñ h$òV	ð( ‡�×ÑÐ"VÐÓWñ%ó Xð%÷$~!ñ ~!÷BH.ñ H.÷Vk2ò k2rG   