+
    0i                       R t ^ RIt^ RIHt ^ RIHtHtHtHtH	t	H
t
 ^ RIt^ RIHt ^RIHt ^ RIt^ RIt^ RIHtHtHt ^ RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5 ^ RIH6t6H7t7 ^ R	I8H9t: ^ R
IH;t; ^ RI<H=t=H>t>H?t? ^ RI<H@t@HAtAHBtBHCtC ^ RIDHEtE ^ RIDHFtF ^RIGHHtH ^RIIHJtJ ^ RIKHLtL R tM ! R R4      tNRFR ltOR tPR tQ] ! R R4      4       tR] ! R R4      4       tS ! R R4      tT ! R R4      tU ! R R 4      tV ! R! R"4      tW ! R# R$4      tXR% tY ! R& R'4      tZ ! R( R)4      t[ ! R* R+4      t\ ! R, R-4      t] ! R. R/4      t^ ! R0 R14      t_ ! R2 R34      t` ! R4 R54      ta ! R6 R74      tb ! R8 R94      tc ! R: R;4      tdR< te]P                  P                  R=R>7      R? 4       th ! R@ RA4      ti ! RB RC4      tj ! RD RE4      tkR# )GzH
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                     \         P                  ! V 4      \         P                  ! V4      r\        W.VO5/ VB  \        V P                  VP                  4       R # N)npasarrayr   r   shape)resrefargskwargss   &&*,a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/stats/tests/test_multivariate.pyassert_closerD   /   s=    zz#

3C.t.v.CII&    c                   J  a  ] tR t^5t o R tR]P                  R]P                  P                  R]P                  P                  R]P                  P                  RR /t]P                  ! ]! ]4      4      tR]P                  ! . RO4      R	. RO. RO. RO.R
]P                  ! . RO4      R. R O. R!O. R"O./tR]R	]R,          R
]. R$O,          R]R#R /t]P$                  P'                  R]RR 4      R 4       t]P$                  P'                  R]! ]4      4      ]P$                  P'                  R]4      R 4       4       t]P$                  P'                  RR]! 4       ^R%.4      ]P$                  P'                  R]! ]4      4      ]P$                  P'                  R]4      R 4       4       4       t]P$                  P'                  R]! 4       R%.4      ]P$                  P'                  R]4      R 4       4       tR t]P$                  P5                  R4      R 4       tR tRtV tR# )&TestCovariancec                   R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      \
        P                  ! ^4      R7       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! R4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! R\
        P                  ! ^4      34       RRR4       R	p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      R34       RRR4       R
p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! . RO\
        P                  ! ^4      34       RRR4       R#   + '       g   i     EL3; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELb; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)z:The input `precision` must be a square, two-dimensional...matchNz0`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...         )pytestr	   
ValueErrorr+   CovViaPrecisionr<   oneseyeCovViaDiagonalCovViaCholeskyCovViaEigendecompositionselfmessages   & rC   test_input_validation$TestCovariance.test_input_validation7   s   N]]:W55''
3 6 E]]:W55''q	bffQiH 6 L]]:W55&&x0 6 N]]:W55&&rwwqz2 6 I]]:W5500(BFF1I1FG 6 A]]:W5500"''!*h1GH 6 N]]:W5500)RVVAY1GH 651 655 655 655 655 655 65 655sT   +I< AJ/J$4+J8-K(-K /K3<J	J!	$J5	8K		K	 K0	3L	Diagonal	PrecisionCholeskyEigendecompositionPSDc                    \        V R R7      # )Tallow_singular)r   )xs   &rC   <lambda>TestCovariance.<lambda>Y   s    %)!D%ArE   diagonal full rankzgeneral full rankzdiagonal singularzgeneral singularrN   NNNcov_type_namec                   \         P                  ! . RO4      p. ROp\        \        RV 24      pV P                  V,          p\        \
        RVP                  4        24      pV! V! V4      4      pV! V! V4      4      p\        V4      \        V4      J g   Q h\        VP                  V4      VP                  V4      4       R# )rN   CovViafrom_NrM   )rO      )
r<   diaggetattrr+   _covariance_preprocessingr,   lowertyper   whiten)	rZ   rk   Arf   cov_typepreprocessingfactoryr?   r@   s	   &&       rC   test_factoriesTestCovariance.test_factoriese   s    GGI;&(@A66}E*m.A.A.C-D&EFmA&'}Q'(CyDI%%%

1szz!}5rE   matrix_typec                   R V RV R2pW P                   V,          9  d   \        P                  ! V4       V P                  V,          p\	        \
        R V 24      pV P                  V,          p\        VRR7      pV! V! V4      4      p\        VP                  VP                  4       \        VP                  VP                  4       \        VP                  \        P                  ! V4      P                  4       \        VP                  \        P                  ! V4      4       \        P                   P#                  R4      p	V	P!                  ^R7      p
VP%                  V
4      pWP&                  ,          p\        W,          W,          4       \)        VR4      '       d#   RV9  d   \        VP+                  V4      V
4       V	P!                  RR7      p
VP%                  V
4      pWP&                  ,          p\        V^,          P-                  RR	7      V^,          P-                  RR	7      4       \)        VR4      '       d#   RV9  d   \        VP+                  V4      V
4       \)        VR4      '       dN   VP+                  \        P.                  ! \1        V4      4      4      p\        VP2                  V,          V4       R
# R
# )rm    does not support 	 matricesTrd      VGiVK size	_colorizesingularaxisNrO      rP   )
_cov_typesrQ   skip	_matricesrr   r+   rs   r   rD   log_pdetr   rankr>   r<   r=   rK   randomdefault_rngrv   UhasattrcolorizesumrU   lenT)rZ   r}   rk   r[   rw   rx   ry   psd
cov_objectrngrf   r?   r@   s   &&&          rC   test_covarianceTestCovariance.test_covariances   s    M?*<[M J  <<KK NN;';&(@A66}E1T* mA./
Z((#,,7Z__chh/Z%%rzz!}':':;Z**BJJqM: ii##$78JJAJ"%%iSY	*:{++
+0M,,S115 JJIJ&"%%ic1f\\r\*S!VLLbL,AB:{++
+0M,,S115 :{++%%bffSVn5Ca( ,rE   r   c                   R V RV R2pW0P                   V,          9  d   \        P                  ! V4       V P                  V,          p\	        \
        R V 24      pV P                  V,          p. R
OpV! V! V4      4      p	\        p
\        WRR7      p\        WRR7      p\        P                  P                  R4      pVP                  WVR7      p\        P                  P                  R4      pV
P                  WWR7      p\        P                  P                  R4      pV
! WVR7      P                  VR7      p\        V	\
        P                  4      '       dB   \        V\        P                  ! V4      4       \        V\        P                  ! V4      4       ML\!        VP"                  VP"                  4       \!        VP"                  VP"                  4       \        VV4       \        V
P%                  WV	4      VP%                  V4      4       \        VP%                  V4      VP%                  V4      4       \        V
P'                  WV	4      VP'                  V4      4       \        VP'                  V4      VP'                  V4      4       \        V
P)                  W4      VP)                  4       4       \        VP)                  4       VP)                  4       4       R	# )rm   r   r   Trd   r   r   r   random_stateseedN皙?皙?333333?)r   rQ   r   r   rr   r+   rs   r   r<   r   r   rvs
isinstance	CovViaPSDrD   squeezer   r>   pdflogpdfentropy)rZ   r   r}   rk   r[   rw   rx   ry   meanr   mvndist0dist1r   rf   x1x2s   &&&&             rC   test_mvn_with_covariance'TestCovariance.test_mvn_with_covariance   s    M?*<[M J  <<KK NN;';&(@A66}EmA./
!#DDA#DTJii##$78##D$#7ii##$78WWTDWCii##$78,00d0;j+"7"788RZZ]+RZZ]+177+177+R SWWQj1599Q<@UYYq\599Q<0SZZ4ell1oFU\\!_ell1o6S[[2EMMODU]]_emmo6rE   c                   R pV P                   V,          p\        \        RV 24      pV P                  V,          p. ROpV! V! V4      4      p\        p	\	        WtRR7      p
\	        WxRR7      p\
        P                  P                  R4      pVP	                  WtVR7      p\        V	P                  WV4      V
P                  V4      4       \        VP                  V4      V
P                  V4      4       \        V	P                  WV4      V
P                  V4      4       \        VP                  V4      V
P                  V4      4       R# )ri   rm   Trd   r   r   Nr   )r   rr   r+   rs   r   r<   r   r   rD   cdflogcdf)rZ   r   rk   r}   rw   rx   ry   r   r   r   r   r   r   rf   s   &&&           rC   test_mvn_with_covariance_cdf+TestCovariance.test_mvn_with_covariance_cdf   s    +NN;';&(@A66}EmA./
!#DDA#DTJii##$78##D$#7SWWQj1599Q<@UYYq\599Q<0SZZ4ell1oFU\\!_ell1o6rE   c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        4        RRR4       R#   + '       g   i     R# ; i)z7The `Covariance` class cannot be instantiated directly.rI   N)rQ   r	   NotImplementedErrorr,   rY   s   & rC   test_covariance_instantiation,TestCovariance.test_covariance_instantiation   s-    K]].g>>L ?>>>s	   <A	zignore::RuntimeWarningc                   \         P                  ! . RO4      pVP                  ^ ,          p\         P                  ! V4      p\        P
                  ! \        RR7      ;_uu_ 4        \        W14      P                  4        RRR4       Rp\         P                  P                  V4      p\         P                  P                  V4      p\        P                  ! \         P                  P                  V4      4      p\        W74      pVP                  VR7      p	\        P                  ! W7VR7      p
\        W4       R#   + '       g   i     L; i)rN   zThe input matrix must be...rI   Nl   .ypGw r   )rN   rO   g:0yE)r<   rq   r>   zerosrQ   r	   rR   r   r   r   r   r,   from_eigendecompositionlinalgeighr   )rZ   rw   nr   r   rng1rng2covrvr?   r@   s   &          rC   test_gh9942TestCovariance.test_gh9942   s    
 GGM"GGAJxx{ ]]:-JKK(,,. L #yy$$T*yy$$T*001BC +ff$f'!%%ddCS LKs   &D==E	c                   \         P                  ! ^4      p\        P                  ! \         P                  ! ^4      \         P
                  ! ^4      34      p\        P                  P                  WR7      pVP                  RR7      p\        WA4       \        P                  P                  P                  \         P                  ! RR.4      \         P                  ! RR.RR..4      34      p\        P                  P                  WR7      pVP                  RR7      pV^ ,          V^ ,          8w  g   Q hV^,          V^,          8X  g   Q hR# )rO   r   r   Nr         ?        g      y@)r<   rT   r,   r   r   rU   scipyr.   r   r   r   array)rZ   r   r   distr   s   &    rC   test_gh19197TestCovariance.test_gh19197  s    
 wwqz00"((1+rvvay1IJ{{..D.BhhDh!Skk$$<<XXr2hB8b$Z*@!ABD{{..D.BhhDh!1va   1va   rE    rM   )rp   rN   rP   )rN      r   )rP   r      )rN       rP   r   )rp   r   r   )r   rp   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____firstlineno__r\   r<   rq   r   invcholeskyr   rs   r   list_all_covariance_typesr   r   rQ   markparametrizer{   r   tupler   r   r   filterwarningsr   r   __static_attributes____classdictcell____classdict__s   @rC   rG   rG   5   s.    I< ",RWW!,biimm!+RYY-?-?!5ryy~~!& )B	!C HHT*C%DE%rwwy'9$y)Y&G$bggi&8#j*i%HJI '(=%'<R'@%'<['I$&;BC&@BJ
 [[_.CCR.HI6 J6 [[]DO<[[_.CD-) E =-)^ [[VdEGQ	%BC[[]DO<[[_.CD#7 E = D#7J [[Vegy%9:[[_.CD7 E ;70
 [[ 89 :,! !rE   rG   c                 .   VP                  W 34      pWDP                  ,          p\        P                  P	                  V4      w  rVV'       d   VP                  V R 7      ^ 8  p^ W&   V\        P                  ! V4      ,          VP                  ,          pV# r   )r   r   r<   r   r   normalrq   )	dimevalsr   r   rw   _v	zero_eigsr   s	   &&&&     rC   _random_covariancer     ss     	

C:A	CCA99>>!DAJJCJ(1,	
bggen
qss
"CJrE   c                     \         P                  P                  R 4      pVP                  W 34      p\        P
                  P                  V4      w  r4pV# )l   :; )r<   r   r   standard_normalr   r   svd)r   r   Musr   s   &     rC   _sample_orthonormal_matrixr   #  sE    
))



+CQF#Allq!GA!HrE   c                  a aaa \         P                  ! V4      pW"^ 8  ;;,          S,          uu&   VP                  4       pSRV3,          o\         P                  ! S\        R7      oRSV&   V VVV3R lp\         P
                  ! S\        V4      ,
          \         P                  4      p\        WV) V4      P                  # )zwIntegrate marginalized dimensions of multivariate
probability distribution to calculate the marginalized
distribution.
NNNdtypeFc                    < \         P                  ! V P                  ^ ,          SP                  ^ ,          S34      pV R\         P                  R3,          VRS3&   SVRS( 3&   SP	                  V4      # )r   r   .)r<   emptyr>   newaxisr   )zyXX_ndimi_marginalizerf   s   & rC   gmarginal_pdf.<locals>.g7  se    HHaggaj!''!*f56 !!RZZ"2 3#}
!"#~
uuQxrE   )
r<   r=   argsortrT   boolfullr   infr0   estimate)r  r  
dimensionsrf   dim_sort_idxr  r  r  s   ff&f   @rC   marginal_pdfr  )  s     J'JA~&(%%'L	!\/AGGF$/M %M*  ''&3z?*BFF
3CAtS!***rE   c                      a a ] tR tRt oRtRtV 3R lt]RR l4       t]RR l4       t	]RR l4       t
R tR	 tR
 tR tV3R ltRtVtV ;t# )
MVNProblemi@  a$  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.
Nc                  < \         SV `  4        Wn        W n        W0n        W@n        \        P                  ! V P
                  V P
                  4      V n        \        P                  ! V P                  R 4       V P                  4        R# r   N)super__init__ndimlowhighlambdasr<   outercovarfill_diagonalfind_target)rZ   r  r  r  r  	__class__s   &&&&&rC   r  MVNProblem.__init__]  s\    		XXdllDLL9

S)rE   c                    \         P                  P                  V4      p\         P                  ! V\         P                  ) 4      pVP                  R\         P                  ! V4      VR7      pVP                  RRVR7      pV ! VVVVR7      pV# )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  rZ   s   &&&    rC   generate_semigeneralMVNProblem.generate_semigeneralh  s{     ii##C(ggdRVVG${{3D{9++dCd+3	
 rE   c                p   \         P                  P                  V4      p\         P                  ! V\         P                  ) 4      pVP                  R\         P                  ! V4      VR7      p\         P                  ! VP                  RR4      4      p\         P                  ! W4      pV ! VVVVR7      pV# )zVConstant off-diagonal covariance, random upper bounds, infinite lower bounds.
        r   r   r   r!  r#  )r&  r  r   r  r  sigmar  rZ   s   &&&     rC   generate_constantMVNProblem.generate_constanty  s     ii##C(ggdRVVG${{3D{9C-.''$&	
 rE   c                    \         P                  ! V\         P                  ) 4      p\         P                  ! V4      p\         P                  ! R4      pV ! VVVVR7      p^V^,           ,          Vn        V# )zjOff-diagonal covariance of 0.5, negative orthant bounds.

True analytically-derived answer is 1/(ndim+1).
      ?r!  )r<   r
  r  r   r$  true_valr%  s   &&&    rC   generate_halvesMVNProblem.generate_halves  s`     ggdRVVG$xx~''#,	
 T!VrE   c                    \        RRR7      pVP                  V4       \        V P                  3/ VB w  V n        V n        R# )z?Perform the simplified integral and store the results.
              "@abN      "dictupdater1   univariate_func
target_val
target_errrZ   kwdsds   &, rC   r  MVNProblem.find_target  s?     
 	
+/0D0D+J+J(rE   c           
        \         P                  ! ^V P                  ^,          ,
          4      p\         P                  ! \        P
                  ! V P                  V P                  VR\         P                  3,          ,          ,           V,          4      \        P
                  ! V P                  V P                  VR\         P                  3,          ,          ,           V,          4      ,
          ^R7      # )zPThe parameter-specific term of the univariate integrand,
for separate plotting.
r   r   )	r<   r$  r  prodspecialndtrr  r   r  )rZ   tdenoms   && rC   _univariate_termMVNProblem._univariate_term  s     DLL!O+,wwLL$))dll1Q

]3C&CCuLMLL$((T\\!ArzzM2B%BBeKLM
 	
rE   c                    \         P                  ! V4      p\         P                  ! \        V4      V P	                  V4      ,          4      # )zUnivariate integrand.
        )r<   
atleast_1dr   norm_pdfrH  rZ   rF  s   &&rC   r;  MVNProblem.univariate_func  s5     MM!zz(1+(=(=a(@@AArE   c                $   ^ RI Hp \        P                  ! R	RR4      pVP	                  V\        V4      RR7       VP	                  W P                  V4      RR7       VP	                  W P                  V4      RR7       VP                  4        R# )
QPlot the univariate integrand and its component terms for understanding.
        pyplotr3    	$\phi(t)$label$f(t)$$f(t)*phi(t)$Nr7  )	
matplotlibrR  r<   linspaceplotrL  rH  r;  legendrZ   pltrF  s   &  rC   plot_integrandMVNProblem.plot_integrand  so     	-KKc4(HQK|4))!,I>((+3CD

rE   c                   < V ^8  d   Qh/ S[ ;R&   S[P                  ;R&   S[P                  ;R&   S[P                  ;R&   S[P                  ;R&   S[;R&   S[;R&   S[R,          ;R	&   # )
rO   r  r  r  r  r  r<  r=  Nr/  intr<   ndarrayfloat)formatr   s   "rC   __annotate__MVNProblem.__annotate__@  s     " J# $ **% & ::' ( jj) * JJ+ , - . / 6 t|"7 rE   )r  r  r  r  r  r=  r<  r/  r;   )r   r   r   r   __doc__r/  r  classmethodr'  r+  r0  r  rH  r;  r_  __annotate_func__r   r   __classcell__)r  r   s   @@rC   r  r  @  sp     2 #H	     "  $K	
B	s  rE   r  c                   b   a  ] tR tRt o RtR t]RR l4       tR tR t	R t
R	 tV 3R
 ltRtV tR# )SingularMVNProblemi  a  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
c                D   Wn         W n        W0n        \        P                  ! V\        P
                  ) 4      V n        \        P                  ! V P                  V P                  4      ) V n        \        P                  ! V P                  R 4       V P                  4        R# r  )r  r  r  r<   r
  r  r  r  r  r  r  )rZ   r  r  r  s   &&&&rC   r  SingularMVNProblem.__init__  sf    		774"&&)hht||T\\::

S)rE   Nc                r   \         P                  P                  V4      pVP                  R\         P                  ! V4      VR7      pVP                  \         P                  ! VR4      4      p\         P                  ! V^V,
          ,          4      VP                  RR.VR7      ,          pV ! VVVR7      pV# )z/Singular lambdas, random upper bounds.
        r   r   r   )r  r  r  r"  )r<   r   r   r   r$  r   r
  choice)r&  r  r   r  pr  rZ   s   &&&    rC   generate_semiinfinite(SingularMVNProblem.generate_semiinfinite  s     ii##C({{3D{9MM"''$,-''!qs)$szz4+Dz'II

 rE   c                    \        RR R7      pVP                  V4       \        V P                  3/ VB w  V n        V n        R# )r3  r4  Nr7  r8  r>  s   &, rC   r  SingularMVNProblem.find_target  s=    
 	
+/0D0D+J+J(rE   c           	        \         P                  ! ^V P                  ^,          ,           4      p\         P                  ! \        P
                  ! V P                  RV P                  ,          VR\         P                  3,          ,          ,
          V,          4      ^R7      p\         P                  ! \        P
                  ! V P                  ) RV P                  ,          VR\         P                  3,          ,          ,           V,          4      ^R7      pVRV P                  ,          V,          ,
          P                  # )rN   y              ?r   r   r   )
r<   r$  r  rC  rD  rE  r  r   r  real)rZ   rF  rG  i1i2s   &&   rC   rH  #SingularMVNProblem._univariate_term  s    DLL!O+,WWLL$))boa2::6F&FF%OP
 WWLL499*r$,,qBJJ7G'GG5PQ
 b499_r))///rE   c                    \         P                  ! V4      p\        V4      V P                  V4      ,          P	                  4       # r;   )r<   rK  rL  rH  r   rM  s   &&rC   r;  "SingularMVNProblem.univariate_func  s3    MM!d33A66??AArE   c                H   ^ RI Hp \        P                  ! R
RR4      pVP	                  V\        V4      RR7       VP	                  W P                  V4      RR7       VP	                  W P                  V4      RR7       VP                  RR4       VP                  4        R	# )rP  rQ  r3  rS  rT  rU  rW  rX  皙?Nr7  皙)
rY  rR  r<   rZ  r[  rL  rH  r;  ylimr\  r]  s   &  rC   r_  !SingularMVNProblem.plot_integrand  s}     	-KKc4(HQK|4))!,I>((+3CDs

rE   c                   < V ^8  d   Qh/ S[ ;R&   S[P                  ;R&   S[P                  ;R&   S[P                  ;R&   S[P                  ;R&   S[;R&   S[;R&   # )rO   r  r  r  r  r  r<  r=  rb  )rf  r   s   "rC   rg  SingularMVNProblem.__annotate__  so     & J' ( **) * ::+ , jj- . JJ/ 0 1 2 3 rE   )r  r  r  r  r  r=  r<  r;   )r   r   r   r   ri  r  rj  rt  r  rH  r;  r_  rk  r   r   r   s   @rC   rn  rn    sA     2  K0B
_  rE   rn  c                   *  a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR t]P&                  P)                  R]P,                  ! ^4      ]P0                  ! ^^.4      .4      R 4       tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t']P&                  PP                  ]P&                  P)                  R ^^.4      R! 4       4       t)R" t*]P&                  P)                  R ]+! ^^
4      4      ]P&                  P)                  R#R$R%.4      R& 4       4       t,]P&                  P)                  R ]+! ^^4      4      ]P&                  P)                  R#R$R%.4      R' 4       4       t-]P&                  P)                  R ]+! ^^4      4      ]P&                  P)                  R#R$R(.4      R) 4       4       t.R* t/R+ t0]P&                  P)                  R,R84      R- 4       t1R. t2]P&                  P)                  R/]Pf                  ! R94      ]Pf                  ! R:4      .4      R0 4       t4]P&                  P)                  R1]Pf                  ! R;4      ]Pf                  ! R<4      ]Pf                  ! R=4      .4      R2 4       t5R3 t6R4 t7R5 t8R6t9V t:R7# )>TestMultivariateNormali!  c                ^   \         P                  ! ^4      p\         P                  ! ^4      p\        \        \
        P                  RW4       \        \        \
        P                  RW4       \        \        \
        P                  RW4       \        \        \
        P                  RW4       R# )rP   Nr   rN   r   rN   rO   )r<   arangeidentityassert_raisesrR   r   r   r   )rZ   mur   s   &  rC   test_input_shape'TestMultivariateNormal.test_input_shape"  sp    YYq\kk!nj"5"9"962Kj"5"9"99bNj"5"9"962Kj"5"9"99bNrE   c                   \         P                  P                  R 4      pRRRrCp\        P                  ! W#V4      p\        VP                  ^ 4       VP                  ^4      pVP                  ^4      p\         P                  ! VP                  ^4      4      p\        P                  ! W#V4      p\        VP                  ^ 4       RRRrCp\        P                  ! W#V4      p\        VP                  ^ 4       VP                  ^4      pVP                  ^4      p\         P                  ! VP                  ^4      4      p\        P                  ! W#V4      p\        VP                  ^ 4       R# )        ?g333333?      @N)
r<   r   r   r   r   r   r  r   absr   )rZ   r   rf   r   r   r   r   s   &      rC   test_scalar_values)TestMultivariateNormal.test_scalar_values*  s&   ii##D) C!%%as3SXXq! """1%ffS((+,!%%as3SXXq! C!%%as3SXXq! """1%ffS((+,!%%as3SXXq!rE   c                n   \         P                  P                  R 4      pVP                  ^4      pVP                  ^4      p\         P                  ! VP                  ^4      4      p\
        P                  ! W#V4      p\
        P                  ! W#V4      p\        V\         P                  ! V4      4       R# r  N)
r<   r   r   r   r  r   r   r   r   logrZ   r   rf   r   r   d1d2s   &      rC   test_logpdf"TestMultivariateNormal.test_logpdfE      ii##D)"""1%ffS((+, ''5 $$Qc2BFF2J'rE   c                   \         P                  P                  R 4      pVP                  ^4      p\        P
                  ! V4      p\        P                  ! V4      p\        P
                  ! VR^4      p\        P                  ! VR^4      p\        V\         P                  ! V4      4       \        V\         P                  ! V4      4       R# r  )	r<   r   r   r   r   r   r   r   r  rZ   r   rf   r  r  d3d4s   &      rC   test_logpdf_default_values1TestMultivariateNormal.test_logpdf_default_valuesO       ii##D)" ''* $$Q' ''43 $$Qa0BFF2J'BFF2J'rE   c                n   \         P                  P                  R 4      pVP                  ^4      pVP                  ^4      p\         P                  ! VP                  ^4      4      p\
        P                  ! W#V4      p\
        P                  ! W#V4      p\        V\         P                  ! V4      4       R# r  )
r<   r   r   r   r  r   r   r   r   r  r  s   &      rC   test_logcdf"TestMultivariateNormal.test_logcdf\  r  rE   c                   \         P                  P                  R 4      pVP                  ^4      p\        P
                  ! V4      p\        P                  ! V4      p\        P
                  ! VR^4      p\        P                  ! VR^4      p\        V\         P                  ! V4      4       \        V\         P                  ! V4      4       R# r  )	r<   r   r   r   r   r   r   r   r  r  s   &      rC   test_logcdf_default_values1TestMultivariateNormal.test_logcdf_default_valuesf  r  rE   c                \   \         P                  P                  R 4      p^pVP                  V4      p\	        ^V^,           4       Fb  pVP                  W$34      p\         P
                  ! WUP                  4      p\        W6RR7      p\        VP                  P                  V4       Kd  	  R# )r  Trd   N)r<   r   r   r   rangedotr   r   r   r   r   )rZ   r   r   r   expected_rankr   r   distns   &       rC   	test_rank TestMultivariateNormal.test_ranks  s    ii##D)""1%"1a!e_M##Q$67A&&CC.C'$GE))..>	 -rE   c           	        \         P                  P                  R 4      p\        ^^4       EF  pVP	                  V4      p\        ^V4       EF  pVP	                  WD34      p\         P
                  ! WUP                  4      p\         P                  ! W"34      pWgRV1RV13&   \         P                  ! V4      pVRV VRV% \        V4      p	\         P
                  ! V	\         P
                  ! WyP                  4      4      p
\         P
                  ! W4      p\        \         P                  ! V4      VRR7      p\        \         P                  ! V4      VRR7      p\        \         P                  ! V4      V
RR7      p\        VP                  P                  V4       \        VP                  P                  V4       \        VP                  P                  V4       VP                  VRV 4      pVP                  V4      pVP                  V4      p\        VV4       \        VV4       VP                  VRV 4      pVP                  V4      pVP                  V4      p\        VV4       \        VV4       WR,          ,           pVP                  V4      pVP                  V4      p\        VR4       \        V\         P                   ) 4       EK  	  EK  	  R# )r  NTrd   r   )r   r   )r<   r   r   r  r   r  r   r   r   r   r   r   r   r   r   r   r  )rZ   r   r   r  kr   cov_kkcov_nnrf   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   &                       rC   test_degenerate_distributions4TestMultivariateNormal.test_degenerate_distributions~  sB   ii##D)q!A##A&A1a[''/33 1&)!'rr2A2v HHQK"1"1 /q1266&###67FF1L /rxx{F>BD.rxx{F>BD.rxx{F>BDX0055q9X0055q9X0055q9!ae,!a!a//$OOAbqE2	$OOA.	$OOA.		95	95 uX&ll62!)!8 [#.^bffW5] ! rE   c           	        ^
p\        ^^4       EF,  p\        ^V4       EF  p\        P                  ! V4      p\        V4      RRV13,          p\        P                  ! WUP
                  4      p\        P                  ! WFVR7      p\        P                  ! WtVRR7      p\        VP                  V4       \        P                  ! VR8  4      '       g   Q h\        P                  ! WtVRR7      p	\        V	P                  V4       \        P                  ! V	\        P                  ) 8  4      '       d   EK  Q h	  EK/  	  R# )
   r   Nr   r   r   T)r   r   re   r   )r  r<   r   r   r  r   r   r   r   r   r   allr   r  )
rZ   r  r   rmnr   vrr  r   r   s
   &         rC   test_degenerate_array,TestMultivariateNormal.test_degenerate_array  s     q!A1a[XXa[.q1!RaR%8VVAss^'++!D)--ab=ACSXXq)vvcCi((((,33ABCGIV[[!,vvfw.//// ! rE   c                d   R p^dp^p\         P                  ! W,          4      pW#,           p\         P                  ! WU3\        R7      p\         P                  ! Wd4       ^ Wc) R1V) R13&   \        \        P                  P                  V4      ^ 4       \        \        P                  P                  VRV1RV13,          4      \         P                  4       \        \         P                  P                  VRV1RV13,          4      ^V34       \        V4      p\        VP                  V4       R# )g     @@r   N)r<   expr   re  r  r   r   r   detr  r   slogdetr   r   )rZ   large_total_lognposnzerolarge_entryr   r   r   s   &       rC   test_large_pseudo_determinant4TestMultivariateNormal.test_large_pseudo_determinant  s    
 !ff_34LhhvU+
* !FGeVW 	U\\%%c*A.U\\%%c%4%$,&78"&&A		))#eteUdUl*;<O,	. 3io6rE   c                b   \         P                  P                  R 4      p^pVP                  W"4      p\         P                  ! W3P
                  4      pVP                  V4      pVP                  ^^V4      p\        P                  ! WeV4      p\        P                  ! WeV4      p\        ^4       F{  p	\        ^4       Fi  p
\        P                  ! WiV
3,          WT4      p\        WW3,          4       \        P                  ! WiV
3,          WT4      p\        WW3,          RR7       Kk  	  K}  	  R# )r  MbP?rtolN)r<   r   RandomStaterandnr  r   r   r   r   r  r   )rZ   r   r   datar   r   r  desired_pdfdesired_cdfijactuals   &           rC   test_broadcasting(TestMultivariateNormal.test_broadcasting  s    ii##D) yyffT66"yy| IIaA *--as;)--as;qA1X,00a4$DAC(89,00a4$DAC(8tD  rE   c                2   \         P                  ! ^ ^^
4      pRRr2VR,          p\        P                  ! WV4      p\        P                  ! WV4      p\        WV4       \        P                  ! WV4      p\        P                  ! WV4      p\        WV4       R# )r   333333??r.  N)r<   rZ  r   r   r   r   r   )rZ   rf   r   r   scaler  r  s   &      rC   test_normal_1D%TestMultivariateNormal.test_normal_1D  sz     KK1b!cSXXau% $$Qc2XXau% $$Qc2rE   c                   \         P                  ! R R.4      p\         P                  ! RR.RR..4      pR
p^V^,
          ,          p\         P                  ! ^ ^V4      p\         P                  ! WU4      w  rg\         P                  ! W3^34      pWhR&   WxR&   \
        P                  ! WV4      p	\        W^ R7      p
\        W^R7      p\        P                  ! WQ^ ,          VR,          R,          R7      p\        P                  ! WQ^,          VR,          R,          R7      p\        WRRR7       \        WRRR7       R	# )r  g      @r.  r   333333?r   locr  {Gz?r  atolNi  )r   r   r   )r   r   rN   r   r   )rN   rN   )
r<   r   rZ  meshgridr   r   r   r2   r   r   )rZ   r   r   r   deltar   xvyvposr   margin_xmargin_ygauss_xgauss_ys   &             rC   test_marginalization+TestMultivariateNormal.test_marginalization  s    xxc
#hhS	C9-.QUKK1a Q"hhay!GG!%%c5 ++ ((1q'Tc1AB((1q'Tc1AB4@4@rE   c                h   \         P                  P                  R 4      pVP                  ^4      pVP                  ^4      p\         P                  ! VP                  ^4      4      p\        W44      p\        VP                  V4      \
        P                  ! W#V4      4       \        VP                  V4      \
        P                  ! W#V4      4       \        VP                  V4      \
        P                  ! W#V4      4       \        VP                  V4      \
        P                  ! W#V4      4       R# r  )r<   r   r   r   r  r   r   r   r   r   r   )rZ   r   rf   r   r   norm_frozens   &     rC   test_frozen"TestMultivariateNormal.test_frozen  s    ii##D)"""1%ffS((+,)$4*,?,C,CAS,QR**1-+221C@	B*,?,C,CAS,QR**1-+221C@	BrE   rK   c                   \         P                  ! R4      p\         P                  ! ^4      p\        W!4      p\         P                  ! VP
                  V4      '       g   Q h\         P                  ! VP                  V4      '       g   Q hR# )rO   NrO   )r<   rT   rU   r   allcloser   r   )rZ   rK   r   cov_should_ber  s   &&   rC   2test_frozen_multivariate_normal_exposes_attributesITestMultivariateNormal.test_frozen_multivariate_normal_exposes_attributes-  s`     wwt}q	)$;{{;++T2222{{;??M::::rE   c           
        \         P                  P                  R 4      p^pVP                  W"34      p\         P                  ! W3P
                  4      p\        P                  P                  V4      w  rV\         P                  ! VR4      pRV^ &   RVR&   \         P                  ! V\         P                  ! \         P                  ! V4      VP
                  4      4      pRp\        WGR7      p\        VP                  VR7      p	\        VP                  \         P                  ! \         P                   ! VRR 4      4      4       \        VP                  ) V	P                  4       R# )r  r.  r   Hz>h㈵>)condNr   )r<   r   r   r   r  r   r   r   r   r
  rq   r   pinvr   r   r   r  )
rZ   r   r   rf   r   r   r   r  r   psd_pinvs
   &         rC   test_pseudodet_pinv*TestMultivariateNormal.test_pseudodet_pinv;  s     ii##D)'ffQn||  %GGAsO!"ffQrwwqz133/0 3"t, 	bffRVVAcrF^&<= 	x'8'89rE   c                @    . RO. RO.p\        \        \        V4       R# )rN   NrM   r   rp   r   r  rR   r   rZ   r   s   & rC   test_exception_nonsquare_cov3TestMultivariateNormal.test_exception_nonsquare_covU  s    )$j$,rE   c                    ^^ .^ \         P                  ..p\        \        \        V4       ^^ .^ \         P
                  ..p\        \        \        V4       R# )rN   N)r<   nanr  rR   r   r  )rZ   cov_nancov_infs   &  rC   test_exception_nonfinite_cov3TestMultivariateNormal.test_exception_nonfinite_covY  sF    q6Arvv;'j$0q6Arvv;'j$0rE   c                @    ^^ .^ R..p\        \        \        V4       R# )rN   Nr   r  r  s   & rC   test_exception_non_psd_cov1TestMultivariateNormal.test_exception_non_psd_cov_  s     1v2wj$,rE   c                   \         P                  P                  R 4      pVP                  ^4      pVP                  ^4      p\         P                  ! R4      p\         P
                  P                  p\        V\        W44       \        V\        P                  W#V4       \        V\        P                  W#V4       \        V\        P                  W#V4       \        V\        P                  W#V4       RR.RR..pRp\        P                  ! \         P
                  P                  VR7      ;_uu_ 4        \        VR7       RRR4       R#   + '       g   i     R# ; i)r  r   r   z0When `allow_singular is False`, the input matrixrI   r   N)rp   rp   )r<   r   r   r   rT   r   LinAlgErrorr  r   r   r   r   r   rQ   r	   )rZ   r   rf   r   r   emsgs   &      rC   test_exception_singular_cov2TestMultivariateNormal.test_exception_singular_covc  s    ii##D)"""1%ggfoII!!a,d8a,00!3?a,33QcBa,00!3?a,33QcB Bx"b"@]]29900<<C( =<<<s   5EE	c                \   \         P                  ! . RO4      p\         P                  ! ^ ^^4      p^V,          ^,
          pV\         P                  ! V4      ,           p\         P                  ! W#V.4      P                  p\         P                  ! . ROR4      p\         P                  ! . R	O. R
O. RO.R4      p\
        P                  ! WVV4      p\        WRR7       \         P                  ! . RO4      p	\
        P                  ! WVV4      p
\        WRR7       \         P                  ! . RO4      p\         P                  ! W#.4      P                  p\         P                  ! ^^.R4      p\         P                  ! ^^.^^..R4      p\
        P                  ! WV4      p\        WRR7       R# )0Q-?r@  绽|=r  gh㈵>r  N)r+  gox'V?g[S, t?gDB?gc_.?)rN   rP   rO   rN   rO   r   )rO   rp   r.  )r   r.  rP   )gwk:E]?g̙Z?g0?gL8?gAG*?)gIى?gG?gƏ)?gėh?gEE?)	r<   r   rZ  cosr   r   r   r   r   )rZ   r_pdfrf   r  r  r  r   r   r   r_cdfr   r_cdf2r2mean2cov2cdf2s   &               rC   test_R_values$TestMultivariateNormal.test_R_valuesv  sQ     6 7 KK1a EAIq	MHHaAY!!xx	3'hh	:z:C@!%%as3/  6 7 "%%as3.  3 4 XXqf!Q%xx!Q!Q(#."&&r$740rE   c                    \         P                  ! ^4      p\         P                  ! R4      p\        WRR7      pVP                  4       p\	        V^ ^ .4       R# )rO   Trd   NrO   rO   )r<   r   r   r   r   )rZ   r   rK   modelsamples   &    rC   ,test_multivariate_normal_rvs_zero_covarianceCTestMultivariateNormal.test_multivariate_normal_rvs_zero_covariance  sB    xx{XXf%
#DTJVaV$rE   c                   R p^p\         P                  ! \        P                  ! V4      ^VR7      p\	        VP
                  W34       \         P                  ! R\        P                  ! ^R.R^..4      VR7      p\	        VP
                  V^34       \        ^ ^R7      pVP                  V4      p\	        VP
                  V34       R# )i,  r  Nr   r   )r   r   r<   r   r   r>   r   )rZ   Nr@  r<  r   s   &    rC   test_rvs_shape%TestMultivariateNormal.test_rvs_shape  s     $((bhhqkqqIV\\A6*$((d-/XX2wQ6H-I./1 	V\\Aq6*QA.qV\\A5)rE   c                   \         P                  P                  R 4      p^pVP                  V4      pVP                  W"4      p\         P                  ! WDP
                  4      pRp\        P                  ! W5WaR7      p\        \         P                  ! VP
                  4      VRR7       \        VP                  ^ 4      VRR7       R# )    r   r   r  N)r<   r   r  r  r  r   r   r   r   r   r   )rZ   r   r   r   r   r   r   r<  s   &       rC   test_large_sample(TestMultivariateNormal.test_large_sample  s     ii##D)yy|IIaOffQn$((DKvxx(#D9A48rE   c                   \         P                  P                  R 4      p^pVP                  V4      pVP                  W"4      p\         P                  ! WDP
                  4      p\        W54      p\        VP                  4       \        P                  ! W54      4       \         P                  P                  V4      ^ ,          pRV\         P                  ! ^\         P                  ,          4      ^,           ,          \         P                  ! \         P                  ! V4      4      ,           ,          p\        WP                  4       4       R# )rD  Nr.  )r<   r   r  r  r  r   r   r   r   r   eigr  pir   )	rZ   r   r   r   r   r   r   eigsdesireds	   &        rC   test_entropy#TestMultivariateNormal.test_entropy  s    ii##D)yy|IIaOffQn + 	BJJL*=*E*Ed*PQ yy}}S!!$1q255y 1A 56t9MMNGZZ\2rE   c                    \         P                  ! . RO4      pRp\        \         P                  ! \	        V4      4      V4       R# )rN   r.  NrN   rN   rN   )r<   r   r   r  r   )rZ   alpharL  s   &  rC   test_lnBTestMultivariateNormal.test_lnB  s,    #BFF4;/9rE   c                   \         P                  P                  R 4      p^ ^ .p\         P                  ! ^4      pVP                  R4      ^,          ^,
          pVP                  R4      ^,          ^,
          p\        P
                  ! WRW4R7      p\        P
                  ! WRV4      p\        P
                  ! WBV4      p\         P                  ! VR,          VR,          3RR7      p	\         P                  ! VR,          VR,          3RR7      p
\        P
                  ! WV4      p\        P
                  ! WV4      pWx,           V,
          V,
          p\        Wm4       R# )   FYc@Y lower_limitr   N)r   rP   rO   ).:r   rN   N).:rN   rO   Nr   )r<   r   r   rU   r   r   concatenater   )rZ   r   r   r   r5  r6  cdf1cdf2acdf2bab1ab2cdf2ab1cdf2ab2r6  s   &             rC    test_cdf_with_lower_limit_arrays7TestMultivariateNormal.test_cdf_with_lower_limit_arrays  s
   ii##$781vffQiJJy!!#a'JJy!!#a'"&&qC#''5#''5nnak1X;7bAnnak1X;7bA%))#S9%))#S9}w&0#rE   c           	        \         P                  P                  R 4      pVP                  ^4      pVP                  R4      pW3P                  ,          pVP                  R4      ^,          ^,
          pVP                  R4      ^,          ^,
          p\        P
                  ! WRW4R7      p\	        W#4      P                  WTR7      p\         P                  ! \        P                  ! WRW4R7      4      p\         P                  ! \	        W#4      P                  WTR7      4      p	\        WvRR7       \        WRR7       \        WRR7       R# )rU  rV  -C6?r  NrP   rP   rO   rP   )	r<   r   r   r   r   r   r  r   r   )
rZ   r   r   r   r5  r6  rY  r6  cdf3cdf4s
   &         rC   %test_cdf_with_lower_limit_consistency<TestMultivariateNormal.test_cdf_with_lower_limit_consistency  s    ii##$78zz!}jj EEkJJvq 1$JJvq 1$"&&qC"4-11!1Cvv)00#MNvv)$4;;A;MN...rE   c                (   \         P                  ! ^4      p\         P                  ! ^4      p. RO. RO. RO. RO.p. RO. RO. RO. RO.p\         P                  ! . RO4      p\        P
                  ! W1W$R7      p\        Wf^ ,          V,          4       R# rP   rV  NrP  r   rN   r   rN   r   rN   r   )rN   r   r   rN   r<   r   rU   r   r   r   r   )rZ   r   r   r6  r5  expected_signsr   s   &      rC   test_cdf_signs%TestMultivariateNormal.test_cdf_signs  si    xx{ffQi	9i8	9i8.1!%%asBVN23rE   r  c                   \         P                  P                  ^{4      pVP                  W3R7      pVP                  V,          pVP                  VR7      p\        WTR7      pVP                  R^V3R7      pVP                  V4      p\        ^ .V,          VR7      p	\        V	P                  \         P                  ) .V,          Wu,
          4      P                  p
\        WRR7       R# ){   r   r   )r  r  r   gh㈵>r-  N)r<   r   r   r   r   r   r   r0   r   r  r  r   )rZ   r  r   r5  r   mr   rf   r   dist_icdf_is   &&         rC   test_cdf_vs_cubature+TestMultivariateNormal.test_cdf_vs_cubature(  s     ii##C(KKd\K*ccAgKKTK""3KKBQdWK5hhqk$1#d(<rvvgYt^QU;DD.rE   c                   \        ^^4       Fz  p\        P                  ! W3R4      p\        P                  ! VR4       \	        ^ .V,          VR7      p\        VP                  ^ .V,          4      RRV,           ,          RR7       K|  	  R# )rO   r.  r   r$  -C6
?r-  N)r  r<   r
  r  r   r   r   )rZ   r  r   r   s   &   rC   test_cdf_known%TestMultivariateNormal.test_cdf_known6  so    !RLD''4,,CS"%&s4xS9D!T"b4i 	 !rE   r   l   >[= l	   HVqKWs.!) c                ~   \         P                  P                  V4      p\        P	                  W#R 7      pVP
                  \         P                  ) 8H  P                  4       '       g   Q h\        ^ .V,          VP                  R7      pVP                  VP                  VR7      p\        WdP                  RR7       R# r  r   r   r   r{  r-  N)r<   r   r   r  r'  r  r  r  r   r  r   r  r   r<  rZ   r   r  r   caser   cdf_vals   &&&    rC   test_cdf_vs_univariate-TestMultivariateNormal.test_cdf_vs_univariateB  s     ii##D)..D.BRVVG#((****"DdjjA((499#(.t<rE   c                ~   \         P                  P                  V4      p\        P	                  W#R 7      pVP
                  \         P                  ) 8H  P                  4       '       g   Q h\        ^ .V,          VP                  R7      pVP                  VP                  VR7      p\        WdP                  RR7       R# r  )r<   r   r   r  r+  r  r  r  r   r  r   r  r   r<  r  s   &&&    rC   test_cdf_vs_univariate_2/TestMultivariateNormal.test_cdf_vs_univariate_2M  s     ii##D)+++?RVVG#((****"DdjjA((499#(.t<rE   l	   HVqKWs.!) c                   \         P                  P                  V4      p\        P	                  W#R 7      pVP
                  \         P                  ) 8H  P                  4       '       g   Q h\        ^ .V,          VP                  RRVP                  P                  ^ ,          ,          R7      pVP                  VP                  VR7      p\        WdP                  RR7       R# )r  T'  )r   r   re   maxptsr  r  r-  N)r<   r   r   rn  rt  r  r  r  r   r  r>   r   r  r   r<  r  s   &&&    rC   test_cdf_vs_univariate_singular6TestMultivariateNormal.test_cdf_vs_univariate_singularX  s    
 ii##D)!77T7KRVVG#((****"DdjjQU*01A1A!1D*D
 ((499#(.t<rE   c                   \         P                  ! ^\         P                  ! . RO4      ,          4      p\        P                  ! V4      pRp\
        P                  ! \        VR7      ;_uu_ 4        \        P                  ! ^ ^ .V4       RRR4       \
        P                  ! \        VR7      ;_uu_ 4        \        ^ ^ .V4       RRR4       . ROp\        P                  ! V. ROV4      p\        \        P                  ! WBR7      V4       \        P                  ! V. ROV4      p\        \        P                  ! V^VR7      V4       R#   + '       g   i     L; i  + '       g   i     L; i)	rN   z7`cov` represents a covariance matrix in 3 dimensions...rI   Nr$  rM   )r.  r.  r.  r   rP  )r<   rq   r   r+   rS   rQ   r	   rR   r   r   r   r   )rZ   Pr   r[   rf   r@   s   &     rC   test_mean_cov$TestMultivariateNormal.test_mean_covh  s    GGA++, 003
K]]:W55''A
; 6 ]]:W55A
3 6 !%%aJ?(,,Q?E!%%aJ?(,,QzBCH 65 65s   0E6EE	E.	c                    ^^.pRp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)rN   z`x` must be two-dimensional.rI   N)rQ   r	   rR   r   fit)rZ   r  	error_msgs   &  rC   test_fit_wrong_fit_data_shape4TestMultivariateNormal.test_fit_wrong_fit_data_shape{  s>    1v2	]]:Y77##D) 8777s   AA	r   c                @   \         P                  P                  R 4      pVP                  ^dV34      p\        P                  ! V4      w  rE\         P
                  ! V^ R7      \         P                  ! VP                  ^ R7      rv\        WFRR7       \        WWRR7       R# )   @,Q| r   )ddofV瞯<r-  r  N)	r<   r   r   r   r  r   r   r   r   )rZ   r   r   rf   mean_estcov_estmean_refcov_refs   &&      rC   test_fit_correctness+TestMultivariateNormal.test_fit_correctness  sq    ii##$45JJSz"/33A6GGAA.qss0C'7u5rE   c                    \         P                  ! R^4      pRp\         P                  ! R4      p\        P                  ! WVR7      w  rE\        WB4       \        WS4       R# )rO   r   )fix_meanfix_covN)rO   rN   )r<   r
  
atleast_2dr   r  r   )rZ   r  
mean_fixed	cov_fixedr   r   s   &     rC   test_fit_both_parameters_fixed5TestMultivariateNormal.test_fit_both_parameters_fixed  sL    wwvq!
MM"%	'++D4=?	T&S$rE   r  c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      VR7       RRR4       R#   + '       g   i     R# ; i)zd`fix_mean` must be a one-dimensional array the same length as the dimensionality of the vectors `x`.rI   r  NrQ   r	   rR   r   r  r<   rU   )rZ   r  r'  s   && rC   "test_fit_fix_mean_input_validation9TestMultivariateNormal.test_fit_fix_mean_input_validation  sB    C]]:S11##BFF1IA 2111   -AA/	r  c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! \
        P                  ! ^4      VR7       RRR4       R#   + '       g   i     R# ; i)zn`fix_cov` must be a two-dimensional square array of same side length as the dimensionality of the vectors `x`.rI   r  Nr  )rZ   r  r'  s   && rC   +test_fit_fix_cov_input_validation_dimensionBTestMultivariateNormal.test_fit_fix_cov_input_validation_dimension  sC     ]]:S11##BFF1Iw? 2111r  c                   R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! RR.RR..4      p\
        P                  ! \        P                  ! ^4      VR7       RRR4       R#   + '       g   i     R# ; i)z2`fix_cov` must be symmetric positive semidefinite.rI   r   r   r  Nr"  )rQ   r	   rR   r<   r   r   r  rU   )rZ   r  r  s   &  rC   *test_fit_fix_cov_not_positive_semidefiniteATestMultivariateNormal.test_fit_fix_cov_not_positive_semidefinite  sZ    H	]]:Y77hhR2s)45G##BFF1Iw? 8777s   A	A::B	c                   \         P                  P                  R 4      pVP                  ^4      pVP                  R4      p\         P                  ! W3P                  4      p\
        P                  ! W$^dVR7      p\
        P                  ! V4      w  rg\
        P                  ! WVVR7      P                  4       p\
        P                  ! WRR7      w  r\        W4       \
        P                  ! WYV
R7      P                  4       pW8  g   Q hVP                  R4      pR\         P                  ! W3P                  4      ,          pW,           p\
        P                  ! VV	VR7      P                  4       pW8  g   Q hR# )r  r   r   r   r   r   r  :0yE>Nrd  )r<   r   r   r  r   r   r   r  r   r   r   )rZ   r   r  rw   r   samples	mean_freecov_free	logp_freemean_fixcov_fixlogp_fixru  cov_perturbedlogp_perturbeds   &              rC   test_fit_fix_mean(TestMultivariateNormal.test_fit_fix_mean  s4   ii##$45jjmJJvffQn%))s#7:<155g>	'..w3;==@SU 	/33GJX#&--g29;;>35 	 ### JJv266!SS>!-44W:B9FH 8;su 	 (((rE   c                   \         P                  P                  R 4      pVP                  ^4      pVP                  R4      p\         P                  ! W3P                  4      p\
        P                  ! W$^dVR7      p\
        P                  ! V4      w  rg\
        P                  ! WVVR7      P                  4       p\
        P                  ! WTR7      w  r\        V	\         P                  ! V^ R7      4       \        W4       \
        P                  ! WYV
R7      P                  4       pW8  g   Q hV	RVP                  ^4      ,          ,           p\
        P                  ! VVV
R7      P                  4       pW8  g   Q hR# )r  r  r   r  r   r  Nrd  )r<   r   r   r  r   r   r   r  r   r   r   r   )rZ   r   r  rw   r   r  r  r  r  r  r  r  mean_perturbedr  s   &             rC   test_fit_fix_cov'TestMultivariateNormal.test_fit_fix_cov  s6   ii##$45jjmJJvffQn%))s/2F155g>	'..w3;==@SU 	/33GIXrwwwQ78W"&--g29;;>35 	 ### "D3::a=$88-44W:H9@B 8;su 	 (((rE   r   N)rP   rp   r:  rP   r  )rP   rO   )r   r   );r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   r  rQ   r   r   r<   rU   r,   from_diagonalr
  r  r  r  r!  r(  r7  r=  rA  rF  rM  rR  r`  rh  rp  slowrx  r|  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r   s   @rC   r  r  !  s    O"6((((	?26h0,70E0 A2B [[FF1I$$aV,	
;;:4-1-)&>1@%*"9"3$:$(/$	4 [[[[VaV,
/ - 
/
 [[VU1b\2[[Vj2T%UV= W 3= [[VU1b\2[[Vj2T%UV= W 3= [[VU1b\2[[Vj2T%UV= W 3=I&* [[UF+6 ,6% [[Z"((6*:*,((5/*; <B<B [[Y%)+&)9)+&)9); <@<@@)8) )rE   r  c            	         a  ] tR tRt o ]P
                  P                  R]/ 3]R^/3.4      ]P
                  P                  R^.4      ]P
                  P                  R^.R^..4      ]P
                  P                  RRR.4      ]P
                  P                  R	RR.4      R
 4       4       4       4       4       t	]P
                  P                  R]].4      R 4       t
]P
                  P                  R]].4      R 4       tRtV tR# )TestMarginali  zdist,kwargsdfr  r  frozenTFr   c                r   \         P                  P                  R 4      pVP                  V4      pVP                  W"34      p	WP                  ,          p
V'       d#   V\
        8X  d   \        P                  ! R4       MV'       d   \        P                  ! V
4      p
\         P                  P                  ^\        V4      34      pV! W3/ VB pV'       d$   VP                  V4      pVP                  V4      pM%VP                  ! W8V
3/ VB pVP                  V4      p\        WW;4      p\        W4       R# )ɫz6`multivariate_t` does not accept a `Covariance` objectN)r<   r   r   r   r   r"   rQ   r   r+   rS   r   marginalr   r  r   )rZ   r   r  r  r  r   rB   r   r  rw   r  rf   r  Yr?   r@   s   &&&&&&&         rC   test_marginal_distribution'TestMarginal.test_marginal_distribution  s     ii##I.!!&) 01CC$.0KKPQ//6E II%%q#j/&:;&v&

:&A%%(Cju??A%%(C1j4!rE   r   c                   \         P                  P                  R 4      pVP                  ^4      pVP                  R4      pWDP                  ,          pV! W54      pRp\
        P                  ! \        VR7      ;_uu_ 4        VP                  ^4       RRR4       \
        P                  ! \        VR7      ;_uu_ 4        VP                  . R	O4       RRR4       Rp\
        P                  ! \        VR7      ;_uu_ 4        VP                  ^R
.4       RRR4       \
        P                  ! \        VR7      ;_uu_ 4        VP                  ^ ^..4       RRR4       Rp\
        P                  ! \        VR7      ;_uu_ 4        VP                  RR.4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r  zDimensions \[3\] are invalid .*rI   Nz,All elements of `dimensions` must be unique.z*Elements of `dimensions` must be integers.r         @rd  )r   rN   rO   rP   r   	r<   r   r   r   r   rQ   r	   rR   r  )rZ   r   r   r   rw   r   r  r'  s   &&      rC   test_marginal_input_validation+TestMarginal.test_marginal_input_validation  sN   ii##I.""1%'##gO0]]:S11JJqM 2 ]]:S11JJ|$ 2 >]]:S11JJ2w 2 ]]:S11JJAx  2 <]]:S11JJSz" 21 211 21 21 21 211s<   F# F7G
GG0#F4	7G	
G	G-	0H	c                d   \         P                  P                  R 4      pVP                  ^4      pVP                  R4      pWDP                  ,          pV! W54      pRp\
        P                  ! \        VR7      ;_uu_ 4        VP                  . 4       RRR4       R#   + '       g   i     R# ; i)r  z"Cannot marginalize all dimensions.rI   Nrd  r  )rZ   r   r   r  rw   r  r  r'  s   &&      rC   test_marginal_special_cases(TestMarginal.test_marginal_special_cases  s{    ii##I.!!!$'CC3]]:S11JJrN 2111s   BB/	r   Nr   )r   r   r   r   rQ   r   r   r   r"   r  r  r  r   r   r   s   @rC   r  r    s    [[].A2-F.<tQi-H-J K[[Xs+[[\QC"a>:[[Xe}5[[\D%=9" : 6 ; ,K"4 [[V&9>%JK# L#4 [[V&9>%JK
 L
rE   r  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )TestMatrixNormali-  c           
     R   ^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p\        \        \
        \         P                  ! R4      4       \        \        \
        V\         P                  ! ^
4      V4       \        \        \
        W4\         P                  ! ^
4      4       \        \        \
        W4V4       \        \        \
        W5V4       \        \        \
        VP                  WE4       \         P                  P                  p\        V\
        P                  W4\         P                  ! W"34      4       \        V\
        P                  V\         P                  ! W34      V4       \        V\
        W4\         P                  ! W"34      4       \        V\
        V\         P                  ! W34      V4       R# )r   r   r.  ffffff?Nrp   r   rP   )r<   r
  r  r  rR   r   r   r   r   r%  r   rT   )rZ   num_rowsnum_colsr   r   Vr&  s   &      rC   test_bad_inputTestMatrixNormal.test_bad_input/  sm   GGX'-"++h''"''82F*LL"++h''"''82F*LL 	j-'1BCj-BHHRL!Dj-rxx|Dj-q9j-q9j-a;II!!a**BGGX$89	;a**(!56	; 	abggx6J.KLa277H3G+H!LrE   c                   ^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p\         P                  ! W34      p\         P                  ! V^34      p\         P                  ! ^V34      p\         P                  ! V4      p	\         P                  ! V4      p
\         P                  ! ^4      p\	        \
        P                  ! W4VR7      P                  W34       \	        \
        P                  ! VR7      P                  W34       \	        \
        P                  ! VR7      P                  V^34       \	        \
        P                  ! VR7      P                  ^V34       \	        \
        P                  ! W5R7      P                  W34       \	        \
        P                  ! W4R	7      P                  W34       \	        \
        P                  ! WER
7      P                  W34       \	        \        VR7      P                  V	4       \	        \        VR7      P                  V
4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V4       \	        \        W4R	7      P                  V
4       \	        \        W5R7      P                  V	4       \	        \        WER
7      P                  V4       R# )r   r   r.  r  r   rowcovcolcovr   )r  )r  )r   r  )r   r  )r  r  N)r<   r
  r  r   r   r   r   r>   r  r  r   )rZ   r  r  r   r   r  ZZrZcIrIcI1s   &           rC   test_default_inputs$TestMatrixNormal.test_default_inputsI  ss   GGX'-"++h''"''82F*LL"++h''"''82F*LLHHh)*XXxm$XXq(m$[["[["[[^]&&ABHH)	+]&&A.44)	+]&&a066]	$]&&a066]	$]&&A8>>)	+]&&A8>>)	+]&&a:@@)	+ 	]*1126]*1126]!,1126]!,33R8]!,1126]!,33R8]4;;R@]4;;R@]!6;;Q?rE   c                :   ^p^p\         P                  ! W3R4      p\         P                  ! VR4      pRp\         P                  ! VR4      pRp\         P                  ! V4      p\         P                  ! V4      p	\        \	        W4VR7      P
                  RV,          4       \        \	        W4VR7      P                  RV	,          4       \        \	        W5VR7      P
                  RV,          4       \        \	        W5VR7      P                  RV	,          4       R# )r   r   r   r   r  N)r<   r
  r  r   r   r  r  )
rZ   r  r  r   UvUsVvVsr  r  s
   &         rC   test_covariance_expansion*TestMatrixNormal.test_covariance_expansionp  s    GGX(#.WWXs#WWXs#[["[["]R@GGV	]R@GGV	]R@GGV	]R@GGV	rE   c           	        \        ^^4       EFb  p\        ^^4       EFM  p\        P                  ! W3R4      pR\        P                  ! V4      ,          \        P                  ! W3R4      ,           pR\        P                  ! V4      ,          \        P                  ! W"3R4      ,           p\	        W4VR7      pVP                  RR7      p\        P
                  ! W4VRR7      p\        Wx4       VP                  RR7      p	VP                  V	4      p
\        P                  ! WWER7      p\        W4       VP                  V	4      p\        P                  ! WWER7      p\        W4       EKP  	  EKe  	  R# )	rN   r   r.  r  r  r  r   )r   r  r  r   N)	r  r<   r
  r  r   r   r   r   r   )rZ   r  r  r   r   r  r  rvs1rvs2r  pdf1pdf2logpdf1logpdf2s   &             rC   test_frozen_matrix_normal*TestMatrixNormal.test_frozen_matrix_normal  s   qA1QZGGQE3'"++a.(277A5#+>>"++a.(277A5#+>>&ABzztz4$((a!6:<T(JJDJ1zz!}$((1GT( --*'..qMW.)   rE   c                   \        ^^4       EF  p\        ^^4       EF  p\        P                  ! W3R4      pR\        P                  ! V4      ,          \        P                  ! W3R4      ,           pR\        P                  ! V4      ,          \        P                  ! W"3R4      ,           p\	        W4VR7      pVP                  RR7      pVP                  V4      pVP                  V4      p	VP                  4       p
VP                  P                  4       pVP                  P                  4       p\        P                  ! WT4      p\        P                  ! WVR7      p\        P                  ! WVR7      p\        P                  ! WR7      p\        WRR	7       \        WRR	7       \        V
V4       EK  	  EK  	  R
# )rN   r   r.  r  r  r  r   r   r,  r  N)r  r<   r
  r  r   r   r   r   r   r   flattenkronr   r   )rZ   r  r  r   r   r  r  r  r  r  entropy1vecXvecMr   r   r  entropy2s   &                rC   test_matches_multivariate*TestMatrixNormal.test_matches_multivariate  s>    qA1QZGGQE3'"++a.(277A5#+>>"++a.(277A5#+>>&ABJJDJ1zz!} --*!>>+ss{{}ss{{}ggal*..tCH-44T#N.66DJ7u=(3)   rE   c           	     ^   ^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p^
p\        W4VR7      pVP	                  VRR7      pVP	                  VRR7      p	\         P
                  ! V\         P                  RRR3,          V	\         P                  RRR3,          3^ R	7      p
\        V
P                  ^WaV34       VP                  V
4      p\        VP                  ^V34       \        ^4       FJ  p\        V4       F8  p\        P                  ! WV3,          VWER7      p\        WW3,          R
4       K:  	  KL  	  R# )r   r   r.  r  r  r  r     r   r   r,  N)r<   r
  r  r   r   rX  r   r   r>   r   r  r   )rZ   r  r  r   r   r  r@  r  X1X2r  array_logpdfr  r  separate_logpdfs   &              rC   test_array_input!TestMatrixNormal.test_array_input  s[   GGX'-"++h''"''82F*LL"++h''"''82F*LLA:ZZQTZ2ZZQTZ2NNBrzz!Aa/0BJJq14D1EFQOQWWq!x89}}Q'\''!Q0qA1X"/"6"6q1vA>?#Kac1BEJ  rE   c                   ^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           pRp\        W4VR7      pVP	                  VRR7      p\         P
                  ! V^ R7      p	\        WR	R
7       \         P                  ! VP                  Wa,          V4      P                  4      p
\        WR	R
7       \         P                  ! \         P                  ! V^^4      P                  Wb,          V4      P                  4      p\        WR	R
7       R# )r   r   r.  r    r  r  r   r   r   r-  N)r<   r
  r  r   r   r   r   r   reshaper   swapaxes)rZ   r  r  r   r   r  r@  r  r  sample_meansample_colcovsample_rowcovs   &           rC   test_momentsTestMatrixNormal.test_moments  s   GGX'-"++h''"''82F*LL"++h''"''82F*LLA:JJADJ1ggaQ'S1qyyH=??@s3r{{1Qq19989
8 MMNQPs3rE   c           	     p   \         P                  ! \        P                  ! ^^.^^..4      \        P                  ! ^R
.R
^..4      \        P                  ! ^^.^^
..4      \        P                  P                  ^ 4      ^R7      p\        P                  ! RR.RR..RR.RR...4      p\        W4       R	# )rN   )r   r  r  r   r   g6?gcϿ@g"'@gI2͖@g^jy%@gDn3@g|\3@Nr   gǀ)r   r   r<   r   r   r   r   )rZ   r  expecteds   &  rC   test_samplesTestMatrixNormal.test_samples  s     ""Aq6Aq6*+88aWr1g./88aVaW-...q1
 88!23!124!23!1245
 	)rE   r   N)r   r   r   r   r  r  r  r  r  r  r  r!  r   r   r   s   @rC   r  r  -  s6     M4%@N,/044K.4,* *rE   r  c                     a  ] tR tRt o R tR tR t]P                  P                  R]
! ^^4      4      ]P                  P                  R]
! ^^4      4      R 4       4       tR t]V 3R	 lR
 l4       t]V 3R lR l4       t]V 3R lR l4       tR tR tR tR t]P                  P                  RRR.4      R 4       tRtV tR# )TestMatrixTi  c           
        ^p^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p\        P                  ! \
        RR7      ;_uu_ 4        \        ^ R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R	7       RRR4       \        P                  ! \
        R
R7      ;_uu_ 4        \        \         P                  ! R4      R	7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        \         P                  ! R4      R7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        WFR7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        WER7       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        \        P                  ! \         P                  ! W34      VR7       RRR4       \        P                  ! \         P                  P                  RR7      ;_uu_ 4        \        P                  ! WE\         P                  ! W"34      V4       RRR4       \        P                  ! \         P                  P                  RR7      ;_uu_ 4        \        P                  ! V\         P                  ! W34      Wc4       RRR4       \        P                  ! \         P                  P                  RR7      ;_uu_ 4        \        WE\         P                  ! W"34      V4       RRR4       \        P                  ! \         P                  P                  RR7      ;_uu_ 4        \        V\         P                  ! W34      Wc4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELw; i  + '       g   i     EL>; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELZ; i  + '       g   i     EL!; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL7; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     R# ; i) r   r   r.  r  z$Degrees of freedom must be positive.rI   r  NzArray `mean` must be 2D.r  zArray `mean` has invalid shape.z%Array `row_spread` has invalid shape.
row_spreadz2Array `row_spread` must be a scalar or a 2D array.z"Array `row_spread` must be square.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   rP   r   rN   r   rM   rN   rO   )r<   r
  r  rQ   r	   rR   r*   r   rT   r   r   r%  r   )rZ   r  r  r  r   r   r  s   &      rC   r  TestMatrixT.test_bad_input  s   GGX(#."++h''"''82F*LL"++h''"''82F*LL ]]:-STTN U ]]:-GHH"((9-. I ]]:-NOO"((9-. P ]]:-TUU0 V ]]R
 
 	 23

 ]]:-QRR0 S ]]:-TUU0 V ]]R
 
 	 23

 ]]:-QRR0 S ]]
 

 !*
 ]]
 

 !*
 ]]+
 

 LL288X$89B
 ]]II!!L
 
 LLrww';<bA	
 ]]II!!L
 
 LLBGGX$891A	
 ]]II!!+
 

 Q277H#78"=
 ]]II!!+
 

 Q 45q=
 
[ UTT IHH POO VUU
 
 

 SRR VUU
 
 

 SRR
 
 

 
 

 
 

 
 

 
 

 
 

 
 
s   7V$0!V8=!W
!W !W4$!X1!X>!X0!YYY,
.Z 8.Z&.Z(#Z<7#[$V5	8W		W	 W1	4X	X	X-	0Y	Y	Y)	,Y=	 Z	Z%	(Z9	<[	[!	c           	     ,   ^p^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p\         P                  ! W34      p\         P                  ! V^34      p\         P                  ! ^V34      p	\         P                  ! V4      p
\         P                  ! V4      p\         P                  ! ^4      p^p\	        \
        P                  ! WEWcR7      P                  W34       \	        \
        P                  ! VR7      P                  W34       \	        \
        P                  ! VR7      P                  V^34       \	        \
        P                  ! VR7      P                  ^V34       \	        \
        P                  ! WFR7      P                  W34       \	        \
        P                  ! WER	7      P                  W34       \	        \
        P                  ! WVR
7      P                  W34       \	        \        4       P                  V4       \	        \        VR7      P                  V
4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V4       \	        \        VR7      P                  V	4       \	        \        VR7      P                  V4       \	        \        WER	7      P                  V4       \	        \        WFR7      P                  V
4       \	        \        WVVR7      P                  V4       R# )r   r   r.  r  r   r(  r*  r  r  r'  r)  r,  r+  )r(  r*  )r(  r*  r  N)r<   r
  r  r   r   r*   r   r>   r  r(  r*  r   )rZ   r  r  r  r   r   r  r  r  r  r  r  r  	dfdefaults   &             rC   r  TestMatrixT.test_default_inputsX  su   GGX(#."++h''"''82F*LL"++h''"''82F*LLHHh)*XXxm$XXq(m$[["[["[[^	LLa!CII 	
 	X\\q)//(1EFX\\Q/55!}EX\\Q/558}EX\\q7==?STX\\q7==?STLLA4::X<P	
 	XZ]]I.X1%00"5X1%00"5X+00"5X+66;X+00"5X+66;X13>>CX13>>CXR@EEqIrE   c           	     >   ^p^p^p\         P                  ! W3R4      p\         P                  ! VR4      pRp\         P                  ! VR4      pRp\         P                  ! V4      p	\         P                  ! V4      p
\        \	        WEWsR7      P
                  RV	,          4       \        \	        WEWsR7      P                  RV
,          4       \        \	        WFWR7      P
                  RV	,          4       \        \	        WFWR7      P                  RV
,          4       R# )r   r   r   r   r1  N)r<   r
  r  r   r*   r(  r*  )rZ   r  r  r  r   r  r  r  r  r  r  s   &          rC   r  %TestMatrixT.test_covariance_expansion  s    GGX(#.WWXs#WWXs#[["[["!rALLcTVh	
 	!rALLcTVh	
 	!rALLcTVh	
 	!rALLcTVh	
rE   r  r  c                   \         P                  ! W3R 4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R 4      ,           pW,           p\        W4WVR7      pVP	                  RR7      p\        P                  ! W4WVRR7      p	\        W4       VP	                  RR7      p
VP                  V
4      p\        P                  ! WWEVR7      p\        W4       VP                  V
4      p\        P                  ! WWEVR7      p\        W4       R# )r   r.  r  r1  r  r   )r   r(  r*  r  r   N)r<   r
  r  r*   r   r   r   r   )rZ   r  r  r   r   r  r  r  r  r  r  r  r   r  r  s   &&&            rC   test_frozen_matrix_t TestMatrixT.test_frozen_matrix_t  s     GGQFC "++a. 277A63#77"++a. 277A63#77Uq1Dzztz,||QD
 	T JJDJ)zz!}||A!bIT --"//!BOW&rE   c           
     h   ^p^p\         P                  ! W3R4      pR\         P                  ! V4      ,          \         P                  ! W3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           p^p^
p\        W4WVR7      pVP	                  VRR7      p	VP	                  VRR7      p
\         P
                  ! V	\         P                  RRR3,          V
\         P                  RRR3,          3^ R	7      p\        VP                  ^WqV34       VP                  V4      pVP                  p\        V^V34       \        ^4       FK  p\        V4       F9  p\        P                  ! WV3,          W4WVR7      p\        VWV3,          R
4       K;  	  KM  	  R# )r   r   r.  r  r1  r  r   r  r   r   r,  N)r<   r
  r  r*   r   rX  r   r   r>   r   r  r   )rZ   r  r  r   r   r  r  r@  r  r  r  r  r  logpdf_shaper  r  r  s   &                rC   r  TestMatrixT.test_array_input  sg   GGX(#."++h''"''82F*LL"++h''"''82F*LLq1DZZQTZ2ZZQTZ2NNBrzz1a23R

Aq!8K5LMTUVQWWq!x89}}Q'#))\Aq6*qA1X"*//dG!a#  d1CUK	  rE   c                N   < V ^8  d   QhRS[ P                  RS[ P                  /# )rO   vec1vec2r<   rd  )rf  r   s   "rC   rg  TestMatrixT.__annotate__  s#     ' 'RZZ 'rzz 'rE   c                   \         P                  P                  W,
          4      ^,          p\         P                  P                  V 4      ^,          \         P                  P                  V4      ^,          ,           pW#,          # r  )r<   r   r   )r=  r>  	numeratordenominators   &&  rC   relative_errorTestMatrixT.relative_error  sR    IINN4;/14	iinnT*a/"))..2F!2KK&&rE   c                T   < V ^8  d   QhRS[ P                  RS[ P                  RS[/# )rO   mat_truemat_estreturn)r<   rd  re  )rf  r   s   "rC   rg  r@    s*     ? ?BJJ ? ? ?rE   c                   \        V R R7      p\        VR R7      p\        P                  ! VP                  4      ^ 8:  g&   \        P                  ! VP                  4      ^ 8:  d   \        P                  # \        P
                  ! VP                  V ,          4      pVP                  VP                  ,
          pWE,           \        V 4      ,
          ^,          # )Frd   )r   r<   r  r   r  tracer  r   )rG  rH  mat_true_psdmat_est_psd
trace_termlog_detratios   &&    rC   matrix_divergenceTestMatrixT.matrix_divergence  s    HU;759FF;''(A-266,:O:O3PTU3U66MXXk..9:
"++l.C.CC)CM9Q>>rE   c                N   < V ^8  d   QhRS[ P                  RS[ P                  /# )rO   a_matrI  r?  )rf  r   s   "rC   rg  r@    s#     . .2:: ."** .rE   c                t    V P                   ^8X  g   Q hV P                  P                  V P                  34      # )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`.
)r  r   r  r   )rS  s   &rC   vecTestMatrixT.vec  s-     zzQww

}--rE   c           
        ^p^p^p\         P                  ! W#3R4      pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W33R4      ,           pRpRp\        WEWaR7      p	V	P	                  V^*R7      p
V P                  WJP                  ^ R7      4      p\        V^ VR7       \         P                  ! We4      V^,
          ,          p\         P                  ! \         P                  ! V
 Uu. uF  qP                  V4      NK  	  up4      R	R
7      pV P                  W4      p\        V^ VR7       R# u upi )z
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.
r   r.  r  r   r1  r   r   r-  F)rowvarNr  )r<   r
  r  r*   r   rD  r   rD   r  r   r   rU  rP  )rZ   r  r  r  r   r   r  r@  r  r  r  relerrcov_vec_truerf   cov_vec_rvskls   &               rC   r  TestMatrixT.test_moments  s%    GGX(#."++h''"''82F*LL"++h''"''82F*LLq1DJJABJ/$$QA7VQT*wwq}Q/ffRXXA&>Aqxx{A&>?N##L>R& '?s   .E5c                   ^p\         P                  ! . RO. RO.4      p\         P                  ! ^R.R^..4      p\         P                  ! . RO. R	O. R
O.4      pRp\         P                  ! . RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO..
4      p\         P                  ! . RO4      p\        P                  ! WbW4VR7      p\	        WxVR7       R# ) 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]
r.  r,  r1  r  NrM   r  rN   r   r   r   rN   皙?r   ra  rN   )gF=X/?g24@goT}@)gqZH@@gbϵ@gԀ+@)g}?g
3)@g{
@)gdb,@gal@g7pќ@)g2!'?g-Z,?gR`:@)gU53@gްM@gNu:N@)gκ?g/h@gN7@)gQd@gNH@gV׷@)g+]?g]j @g~d\@)gn_@g;r<oU@g@)gt?g?gQ@)g@gF:j.@gs
@)g<2?gg?g0t@)gL:@gBC@g#AH:@)go>?g^V|?g&*Ss@)g\3g@gMn?W@g@)g-f
?gp>;F0?g=El @)g"e}@gRW;@gb@)gA۽?gj @gl<@)gs 8@g-X@gǶ@)
gO2?g귾?gs?gf^m?gf呲?gًD?gS1?g_?gC ]?gC' ӡ?r<   r   r*   r   r   )	rZ   r  r   r   r  r  	samples_jpdfs_jpdfs_pys	   &        rC   test_pdf_against_julia"TestMatrixT.test_pdf_against_julia  s&   4 HHi+,HHq#ha)*HHm]MBCHH NM
 NM
 NM
 NM
 NM
 NM
 NM
 NM
 NM
 NMK)+
	Z 
 ,,yQQSTd3rE   c                   ^p\         P                  ! . RO. RO.4      p\         P                  ! ^R.R^..4      p\         P                  ! . RO. R	O. R
O.4      pRp\         P                  ! . RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO.. RO. RO..
4      p\         P                  ! . RO4      p\        P                  ! WbW4VR7      p\	        WxVR7       R# ) 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];
r.  r,  r1  r  NrM   r  r_  r`  rb  )gz?gr	_@gJ@)g]r@gyE3@g@)g(NJ2?g!A5@gNfA@@)go]M@gn}@gP@)gm?gT, @gG6}@@)gs>U@g๭@gO@)gK1?gR]i;@gr=u@)g^~@g:Y@g#b4@)g @?g{/	@g3Oң@)gCʶ@gR'A@gX^]@)g`Zj?gn-@g @)g`De@g̷@g^|s9@)gM_n* @gq5)D?g0@)g}[K@g^Nfi@g1X@)g6h&?g!,,@gMWx@)gBeuy@g5q@g<@)gx,(.?gԯؠGn @g	<@)gPud@g\@g"m@)gsV?g%egS?gOąqF
@)gkW0@g)HP@gT4@)
g*?gVwxs?g@^`!?gxM?g|Cد?gK(jϛ?g=zh?g,Nv?gU=	Dh?gioq!ƾ?rc  )	rZ   r  r   r   r  r  	samples_mpdfs_mrf  s	   &        rC   test_pdf_against_mathematica(TestMatrixT.test_pdf_against_mathematicah  s&     HHi+,HHq#ha)*HHm]MBCHH NM
 NM
 MM
 ML
 NM
 NM
 NL
 NL
 NL
 NMK)+
	Z 
 ,,yQQSTd3rE   c                   ^p^p^p\         P                  ! W#3R4      pR\         P                  ! V4      ,          \         P                  ! W"3R4      ,           pR\         P                  ! V4      ,          \         P                  ! W33R4      ,           pR	pRp\        WEWaR7      p	V	P	                  V^*R7      p
V
P                  ^ 4      p\        VP                  WeVR7      pVP	                  V^*R7      pVP                  ^ 4      p\        WKVR7       \        VP                  WR7       \        WP                  VR7       \        VP                  WR7       R# )
rp   r   r.  r  皙?r1  r   r  Nr  )r<   r
  r  r*   r   r   r   r   )rZ   r  r  r  r   r   r  r@  r  r  r  ru  frozenTXTmTs   &              rC   r!  TestMatrixT.test_samples  s   GGX(#."++h''"''82F*LL"++h''"''82F*LL
 q1DJJABJ/FF1IBG[[ab[1WWQZ 	4(R+44d+R+rE   
shape_caserowcolc                   Rp^pVR8X  d/   ^p^p^p\         P                  ! . R	O. R
O. RO.4      pWs,          pM-^p^p\         P                  ! . R	O. R
O. RO.4      p^pWc,          p\         P                  ! WE3R4      p	\        WWsR7      p
\	        V	P                  4       WR7      pV
P                  ^^*R7      pV
P                  V4      pVP                  VP                  4       4      p\        WVR7       R# )a  
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.
ư>ru  r   r1  r  r>   r  r   r  Nr_  r`  rb  )	r<   r   r
  r*   r"   r   r   r   r   )rZ   rt  r  r  r  r  r(  r*  r>   r   t_matt_mvtr  t_mat_logpdft_mvt_logpdfs   &&             rC   test_against_multivariate_t'TestMatrixT.test_against_multivariate_t  s     HHJ=-"OPJOEHH=-"OPJJOEGGX(#.j
 199;eCII12I.||A||AIIK0>rE   r   N)r   r   r   r   r  r  r  rQ   r   r   r  r7  r  staticmethodrD  rP  rU  r  rg  rl  r!  r~  r   r   r   s   @rC   r$  r$    s     \>|&JP
6 [[S%1+.[[S%1+.' / /'2L4 ' '
 ? ? . .':_4BU4n,B [[\E5>:&? ;&?rE   r$  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tRtV tR# )TestDirichleti
  c           	        \         P                  P                  R 4      pVP                  ^^ 4      pVP	                  R^dV4      p\        V4      p\        VP                  4       \
        P                  ! V4      4       \        VP                  4       \
        P                  ! V4      4       \        VP                  4       \
        P                  ! V4      4       ^
p\        V4       F  pVP	                  R^dV4      pV\         P                  ! V4      ,          p\        VP                  VRR 4      \
        P                  ! VRR V4      4       \        VP                  VRR 4      \
        P                  ! VRR V4      4       K  	  R# rD  &.>Nr   )r<   r   r   integersr   r   r   varr   r   r  r   r   r   rZ   r   r   rQ  r@  	num_testsr  rf   s   &       rC   test_frozen_dirichlet#TestDirichlet.test_frozen_dirichlet  s   ii##D)LLBFC+eQUUWimmE23QVVXy~~e45QYY[)"3"3E":;	y!AFC+ANAq"v	afe(DE!CR&)9+;+;AcrFE+JK	 "rE   c                V   \         P                  P                  R 4      p\         P                  ! . RO4      pVP	                  V^R7      p\        VP                  R4       \        \        \        P                  W24       \        \        \        P                  W24       \        P                  ! VP                  V4       \        P                  ! VP                  RR V4       \        P                  ! VP                  V4       \        P                  ! VP                  RR V4       R# )rD  r   Nr   r        @)r   rP   r   )r<   r   r   r   r   r   r>   r  rR   r   r   r   rZ   r   rQ  rf   s   &   rC   "test_numpy_rvs_shape_compatibility0TestDirichlet.test_numpy_rvs_shape_compatibility  s    ii##D))MM%aM(QWWf%j)--:j)"2"2A=acc5!acc#2h&e$Sb5)rE   c                ,   \         P                  P                  R 4      p. ROpVP                  \         P                  ! RV4      ^R7      P
                  p\        \        \        P                  W24       \        \        \        P                  W24       R# )rD  r  r   N)r   r   r  
r<   r   r   r   maximumr   r  rR   r   r   r  s   &   rC   test_alpha_with_zeros#TestDirichlet.test_alpha_with_zeros*  s`    ii##D)MM"**T51M:<<j)--:j)"2"2A=rE   c                ,   \         P                  P                  R 4      p. ROpVP                  \         P                  ! RV4      ^R7      P
                  p\        \        \        P                  W24       \        \        \        P                  W24       R# )rD  r  r   N)r   g       r  r  r  s   &   rC    test_alpha_with_negative_entries.TestDirichlet.test_alpha_with_negative_entries2  s`    ii##D) MM"**T51M:<<j)--:j)"2"2A=rE   c                   \         P                  ! . RO4      p\         P                  ! . RO4      p\        P                  ! W!4       \        P                  ! W!4       \         P                  ! . RO4      p\        \        P                  ! W!4      ^4       \        \        P                  ! W!4      \         P                  ! ^4      4       R# )r   Nr   r  r        @r   r   r   r  )r   r   r   r   )r<   r   r   r   r   r   r  rZ   rQ  rf   s   &  rC   test_data_with_zeros"TestDirichlet.test_data_with_zeros:  sy    -.HH)*a"-.IMM!3Q7I,,Q6q	BrE   c                    \         P                  ! . RO4      p\         P                  ! . RO4      p\        \        \        P
                  W!4       \        \        \        P                  W!4       R# )r   N)r   r.  r  r  r  r<   r   r  rR   r   r   r   r  s   &  rC   $test_data_with_zeros_and_small_alpha2TestDirichlet.test_data_with_zeros_and_small_alphaC  B    -.HH)*j)--:j)"2"2A=rE   c                    \         P                  ! . RO4      p\         P                  ! . RO4      p\        \        \        P
                  W!4       \        \        \        P                  W!4       R# )r   Nr  )r   r  r   r  r  r  s   &  rC   test_data_with_negative_entries-TestDirichlet.test_data_with_negative_entriesI  sB    -.HH*+j)--:j)"2"2A=rE   c                    \         P                  ! . RO4      p\         P                  ! . RO4      p\        \        \        P
                  W!4       \        \        \        P                  W!4       R# )r   Nr  )r   r  r   r  r  r  s   &  rC    test_data_with_too_large_entries.TestDirichlet.test_data_with_too_large_entriesO  r  rE   c                    \         P                  ! . RO4      p\         P                  ! RR4      p\        \        \
        P                  W!4       \        \        \
        P                  W!4       R# )r   Nr  )rO   r   r   g$I$I?r<   r   r
  r  rR   r   r   r   r  s   &  rC   test_data_too_deep_c"TestDirichlet.test_data_too_deep_cU  sB    )GGIv&j)--:j)"2"2A=rE   c                    \         P                  ! R R.RR..4      p\         P                  ! RR4      p\        \        \
        P                  W!4       \        \        \
        P                  W!4       R# )r   r  r  r  N)rO   rO   r         ?r  r  s   &  rC   test_alpha_too_deep!TestDirichlet.test_alpha_too_deep[  sO    3*sCj12GGIu%j)--:j)"2"2A=rE   c                    \         P                  ! . RO4      p\         P                  ! RR4      p\        P                  ! W!4       \        P
                  ! W!4       R# )r   Nr  rP   r   UUUUUU?)r<   r   r
  r   r   r   r  s   &  rC   test_alpha_correct_depth&TestDirichlet.test_alpha_correct_deptha  s:    )GGFE"a"rE   c                    \         P                  ! . RO4      p\         P                  ! RR4      p\        \        \
        P                  W!4       \        \        \
        P                  W!4       R# )r   Nr  r  r.  r  r  s   &  rC   test_non_simplex_data#TestDirichlet.test_non_simplex_datag  sB    )GGFE"j)--:j)"2"2A=rE   c                    \         P                  ! . RO4      p\         P                  ! RR4      p\        \        \
        P                  W!4       \        \        \
        P                  W!4       R# )r   Nr  )rO   r   r.  r  r  s   &  rC   test_data_vector_too_short(TestDirichlet.test_data_vector_too_shortm  C    -.GGFE"j)--:j)"2"2A=rE   c                    \         P                  ! . RO4      p\         P                  ! RR4      p\        \        \
        P                  W!4       \        \        \
        P                  W!4       R# )r   Nr  )rp   r   r   r  r  s   &  rC   test_data_vector_too_long'TestDirichlet.test_data_vector_too_longs  r  rE   c                   \         P                  ! . RO4      p\        V4      p. ROp. ROp. RO. RO. RO.p\        VP	                  4       V4       \        VP                  4       V4       \        VP                  4       V4       R# )r   N)r   皙?r   r.  ra  r   )UUUUUU?{Gz?Q?)r  )r  r  O贁N)r  r  r  )r<   r   r   r   r   r  r   )rZ   rQ  r@  expected_meanexpected_varexpected_covs   &     rC   test_mean_var_covTestDirichlet.test_mean_var_covy  sh     (e'-../
 	"!&&(M:!!%%'<8!!%%'<8rE   c                r   \         P                  ! R .4      p\        V4      p\        VP	                  4       P
                  ^ 4       \        VP                  4       P
                  ^ 4       \        VP                  R.4      P
                  ^ 4       \        VP                  R.4      P
                  ^ 4       R# )r   r   N)	r<   r   r   r   r   r  r  r   r   )rZ   rQ  r@  s   &  rC   r   TestDirichlet.test_scalar_values  sy    #e 	QVVX]]A&QUUW\\1%QUUB4[%%q)QXXrd^((!,rE   c                   \         P                  P                  R 4      pVP                  ^^ 4      pVP	                  R^dV4      p\        V4      p^
p\        V4       F`  pVP	                  R^dV4      pV\         P                  ! V4      ,          p\        VP                  VRR 4      VP                  V4      4       Kb  	  R# r  )
r<   r   r   r  r   r   r  r   r   r   r  s   &       rC    test_K_and_K_minus_1_calls_equal.TestDirichlet.test_K_and_K_minus_1_calls_equal  s    ii##D)LLBFC+e	y!AFC+ANAafquuQx8 "rE   c                V   \         P                  P                  R 4      pVP                  ^^ 4      pVP	                  R^dV4      p\        V4      p^
p^pRp\        V4       F  p\        V4       FR  p	VP	                  R^dV4      p
V
\         P                  ! V
4      ,          p
Ve   \         P                  ! Wz34      pKP  T
pKT  	  VP                  VP                  4      pRpV F2  pVP                  V4      pVe   \         P                  ! W4      pK0  TpK4  	  \        W4       K  	  R# rD  r  N)r<   r   r   r  r   r   r  r   vstackr   r   appendr   )rZ   r   r   rQ  r@  r  num_multiplexmr  ru  rf   rmrsxsr  s   &              rC   test_multiple_entry_calls'TestDirichlet.test_multiple_entry_calls  s    ii##D)LLBFC+e	y!A<(KKQ/RVVAY>B7+BB ) rttBBEE"I>2)BB  &b-! "rE   c                N   \         P                  P                  R 4      pVP                  R^d^4      p\	        V4      p\        V^ ,          V^,          4      p^
p\        V4       F^  pVP                  R^d^4      pV\         P                  ! V4      ,          p\        VP                  V4      VP                  V.4      4       K`  	  \        VP                  4       VP                  4       ^ ,          4       \        VP                  4       VP                  4       ^ ,          4       R# r  )r<   r   r   r   r   r   r  r   r   r   r   r  )rZ   r   rQ  r@  r6  r  r  rf   s   &       rC   test_2D_dirichlet_is_beta'TestDirichlet.test_2D_dirichlet_is_beta  s    ii##D)FC+eq58$	y!AFC+ANAa!%%*5 "
 	AFFHaffhqk2AEEGQUUWQZ0rE   r   N)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   s   @rC   r  r  
  sk     L$
*>>C>>>>>#>>>9$	-9.:1 1rE   r  c                      \         P                  ! R R .4      p \         P                  ! R..4      p\        \        \        W4        \	        W4       R#   \         d/   pRp\        \        T4      R\        T4       T4        Rp?R# Rp?ii ; i)r   r   zDimension mismatchN)r<   r   r  rR   r   r   strr   )r  r*  r&  r'  s       rC   ,test_multivariate_normal_dimensions_mismatchr    ss     
3*	BHHseWE*12=
-B& -"SVISX&,,-s   A B#BBc                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TestWisharti  c           	        \         P                  ! ^^R7      p^^.\         P                  ! ^4      \         P                  ^,          \         P                  ! ^^R7      .pV FO  p\        ^V4      p\	        VP
                  V4       \	        VP
                  P                  VP                  4       KQ  	  \         P                  ! ^^ .^ ^..4      p^^.\         P                  R,          \         P                  ! ^^ .^ ^..4      .pV FO  p\        ^V4      p\	        VP
                  V4       \	        VP
                  P                  VP                  4       KQ  	  \        \        \        ^\         P                  ! ^4      4       \        R\         P                  ! ^4      4       \         P                  ! ^^R7      p\        \        \        ^V4       R# )rN   ndminr  Nr.  )
r<   r   r_r   r   r  r>   r  rR   rU   )rZ   
true_scalescalesr  ws   &    rC   test_scale_dimensions!TestWishart.test_scale_dimensions  sj    XXaq)
CHHQKEE!HHHQa 
 E5!A*-
(8(89  XX!u !!u& '
 qEEE#JHHqee 
 E5!A*-
(8(89  	j'1bffQi8 	RVVAY !$j'1e4rE   c           
        ^^.\         P                  ! ^4      \         P                  ^,          \         P                  ! ^^R7      \         P                  ! ^.^R7      .p\        ^^4      pVP	                  \         P                  ! ^^R7      4      pV F  p\        VP	                  V4      V4       K   	  . RO\         P                  R,          \         P                  ! . RO^R7      .p\        ^^4      pVP	                  \         P                  ! . RO^R7      4      pV F  p\        VP	                  V4      V4       K   	  ^^^.\         P                  ! ^4      \         P                  R,          \         P                  ! ^^ .^ ^..4      \         P                  ! ^^ .^ ^..4      RR\         P                  3,          .p\        ^\         P                  ! ^4      4      pVP	                  \         P                  ! ^^ .^ ^..4      RR\         P                  3,          4      pV F  p\        VP	                  V4      V4       K   	  R# )rN   r  r   NrM   r:  )r<   r   r  r   r   r   r   rU   )rZ   r  r  densityrf   s   &    rC   test_quantile_dimensions$TestWishart.test_quantile_dimensions	  s   
 CHHQKEE!HHHQa HHaS"
 AaL%%!,-Aq7+ 
 EE%LHHWA&
 AaL%%23Aq7+  qEHHQKEE#JHHqee HHqee "**n.	
 AbffQi %%1Q%#$Q%") **+Abjj.: ;Aq7+ rE   c           	     @   ^p\         P                  ! \         P                  ! V4      ^,           4      p\         P                  ! W^,
          ,          ^,          4      V\         P                  ! VRR7      &   \         P                  ! VP
                  V4      p. p\        ^4       F  p\         P                  ! \         P                  ! V4      V^,           ^,          ,           4      p\         P                  ! W^,
          ,          ^,          4      V\         P                  ! VRR7      &   \         P                  ! VP
                  V4      pVP                  V4       K  	  \         P                  ! V4      P
                  p^
^\         P                  ! R^
^4      3^
W#3.pV F  w  rrp\        Wr4      p\        VP                  4       \        P                  ! Wr4      4       \        VP                  4       \        P                  ! Wr4      4       \        VP                  4       \        P                  ! Wr4      4       \        VP                  4       \        P                  ! Wr4      4       \        VP!                  V4      \        P                   ! WWV4      4       K  	  R# r   r  r   Nr   )r<   rq   r  tril_indicesr  r   r  r  r   rZ  r   r   r  r   moder   r   )	rZ   r   r  r  r  rf   
parametersr  r  s	   &        rC   r  TestWishart.test_frozenB	  s    		#q(),.IIcUmq6H,IboocR()uww& qA		#!ax/0A,.IIcUmq6H,IAboocR()qssAAHHQK	 
 HHQKMM BKKR+,N


 )NR"A'++b"897<<#:;7<<#:;goob&@Aq7;;qe#<= )rE   c                z   ^p^
p\         P                  ! V4      pRVR&   RVR&   \        W#4      p\         P                  P	                  R4      p\        P
                  ! W#VR7      p\         P                  P	                  R4      pVP                  VR7      p\         P                  P	                  R4      pVP                  ^R7      p\         P                  VP                  V4      VP                  V^,
          4      VP                  V^,
          4      3,          R,          p	\         P                  ! V	4      p
W\         P                  ! VR	R7      &   \         P                  P                  V4      pVP                  V
4      p\         P                  ! WP                  4      p\        Wm4       \        W}4       R# )
rP   r.  i r   r   r  Nr  r-  r   )r<   rU   r   r   r  r   r   r  	chisquarerq   r  r   r   r  r   r   )rZ   r   r  r  r  r   w_rvsfrozen_w_rvscovariances	variancesrw   DDAmanual_w_rvss   &             rC   test_wishart_2D_rvsTestWishart.test_wishart_2D_rvsb	  s\    sc
c
 B ii##F+BC8ii##F+uu#u. ii##F+jjaj(EEMM"MM"Q$MM"Q$!
 		 GGI(3"//#
$% IIu%UU1Xvvb$$' 	,3rE   c                   \         P                  P                  R 4      pRp^p\         P                  ! V4      p\         P                  ! ^^
^\
        R7      p\         P                  ! R^
^
R7      pV F  p\        Wt4      p\        V4      p	\        VP                  4       V	P                  4       4       \        VP                  4       V	P                  4       4       \        VP                  4       V	P                  4       4       \        VP                  V4      V	P                  V4      4       VP                  W!R7      p
V3pRp\        RWV
4       K  	  R# )	^   r   r   numr   r  r   N)r<   r   r   rU   r  re  rZ  r   r   r   r  r   r   r   r   r
   )rZ   r   snr   r  df_ranger  r  r  cr   rA   rQ  s   &            rC   test_1D_is_chisquared!TestWishart.test_1D_is_chisquared	  s    
 ii##F+s99QAU3KKB2&B"ARA AEEGQUUW-AFFHaffh/AIIK5 AEE!HaeeAh/ %%R%2C5DE"64<! rE   c                   \         P                  P                  R 4      pRp^
p^p\         P                  ! \         P                  ! ^4      ^,           4      p\         P                  ! ^4      V\         P
                  ! ^R
R7      &   \         P                  ! VP                  V4      p\         P                  ! V^34      pVP                  P                  V4      P                  V4      P                  4       p\        W74      p\        W7R7      p	\        VP                  4       V	P                  4       4       \        VP                  4       V	P                  4       4       \        VP                  4       V	P                  4       4       \         P                   ! R^
^
R7      p
\        VP#                  V
4      V	P#                  V
4      4       VP%                  W!R7      pV^ V3pRp\'        RWV4       R	# )r	  r
  r  r  r   r  r   r  r   Nr   )r<   r   r   rq   r  r  r  r   rT   r   r   r   r   r  r   r   rZ  r   r   r
   )rZ   r   r  r  r   r  lamdasigma_lamdar  r  r  r   rA   rQ  s   &             rC   test_is_scaled_chisquared%TestWishart.test_is_scaled_chisquared	  s_   
 ii##F+		!Q'*,))A,booa2&'uww&Q ggkk%(,,U3;;=B$' 	)!&&(+		QYY[1 KKB2&a!%%(+ eee.1[!vtC8rE   r   N)r   r   r   r   r  r  r  r  r  r  r   r   r   s   @rC   r  r    s,     )5V/,b>@*4X=>!9 !9rE   r  c                     a  ] tR tRt o R tR tR t]P                  P                  R^ ^.4      R 4       t
R tR t]P                  P                  R^ ^.4      R	 4       tR
 t]P                  P                  R^ ^.4      R 4       tR t]P                  P                  R^ ^.4      R 4       tR tR tR t]P                  P                  R]P,                  ]P.                  .4      R 4       tRtV tR# )TestMultinomiali	  c                t   \         P                  ! R^R4      p\        VRRR7       \         P                  ! ^^.^ RR.4      pV\        P                  ) 8X  g   Q h\         P                  ! ^ ^ .^ RR.4      pV^ 8X  g   Q h\         P                  ! ^^.^ R	^.4      p\        V\        P
                  RR7       R# )
rP   r   r  r  r  NrP   r   r   r  g&Mtyr   )r   logpmfr   r<   r  r  )rZ   vals1vals2vals3vals4s   &    rC   test_logpmfTestMultinomial.test_logpmf	  s    ""5!Z81=""Aq61r2h7""Aq61r2h7zz""Aq61r1g6rvvD1rE   c                    \         P                  ! R^R4      p\        P                  ! ^^R4      p\        WRR7       \         P                  ! R^R	4      p\        P                  ! ^^R4      p\        WRR7       R# )
rP   r   r  r  r   Nr  r  )r      r   r  )r   r  r    r   pmfrZ   val1val2s   &  rC   test_reduces_binomial%TestMultinomial.test_reduces_binomial	  sb     !!&!Z8||Aq#&.vr:6yyB$.rE   c                    ^. ROr!RRRRRRRRRRRRRRRRRRRR	/
pV F,  p\        \        P                  ! WAV4      W4,          R
R7       K.  	  R# )rP   g     @?g     ?g      ?g      `?g     ?g      ?g      ?g      ?g      ?+=r-  N)g      ?r  g      ?)r   r   rP   )rN   r   rO   )rO   r   rN   )rP   r   r   r  rP  rO   rN   r   )r   rO   rN   r.  )r   rP   r   )r   r   r'  )rZ   r   rs  r_valsrf   s   &    rC   test_RTestMultinomial.test_R	  sf     $1[)[[)[[)[[)[[)[	B
 AKOOA!4fieL rE   r   c           	        R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  P                  ^{4      p\        P                  ! VR.^,          ^^{R7      pVP                  VR.^,          ^R7      p\        WE4       RRR4       \         P                  ! \        VR7      ;_uu_ 4        \        P                  P                  ^{4      p\        P                  ! VR.^,          ^^{R7      pVP                  VR.^,          ^R7      p\        WE4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z,Some rows of `p` do not sum to 1.0 within...rI   r   r   Nr  )	rQ   warnsFutureWarningr<   r   r  r   r   r   )rZ   r   r[   rndmsc_rvsnp_rvss   &&    rC   test_rvs_npTestMultinomial.test_rvs_np	  s     A\\-w7799((-D __QqqsKF%%a$%:F(	 8
 \\-w7799((-D __QqqsKF%%a$%:F(	 87 87
 877s   A)D/<A)E/D?	E	c                &   \         P                  ! R	^R
4      p\        V^RR7       \         P                  ! R^R4      p\        VRRR7       \         P                  ! ^^.^ ^..R^	.^^...^R4      p\        VRR.^ ^ ..RR7       \        P                  ! R\        P
                  R7      p\         P                  ! V^R4      p\        V\        P                  ! . \        P
                  R7      4       \         P                  ! ^^.^R4      p\        V^ RR7       \         P                  ! . RO^. RO4      p\        VRRR7       \         P                  ! . RO^ . RO4      pV^8X  g   Q h\         P                  ! . RO^ . RO4      pV^ 8X  g   Q hR# )rp   r  r  g5
?g*7?g<Wƌ?r   gߦ?N)rp   rN   r  r  r   r&  r   rO   rP   rP   r   )gUUUUUU?r  r   r   r/  )r   r'  r   r<   r   float64r   )	rZ   vals0r  r  rf   r   r!  vals5vals6s	   &        rC   test_pmfTestMultinomial.test_pmf	
  sJ   a.qt,q(31=1Q%1"a1a&0A BA (*I 6A?dKHHU"**-1h/UBHHRrzz:;1q(3qt,	1.?@~D9	1.?@zz	1.?@zzrE   c                   \         P                  ! ^^.^RR.RR..4      p\        VRR.RR7       \         P                  ! ^^.^^.RR.4      p\        VR^ .RR7       \         P                  ! ^^.^^...^RR.4      p\        VR^ ..RR7       \         P                  ! ^^.^.^...RR.4      p\        VR.^ ...RR7       \         P                  ! ^^.^^..^....RR.4      p\        VR^ ....RR7       R	# )
rN   r   r  r   r  gv?g~jt?r  r  N)r   r'  r   )rZ   r@  r  r  r   r!  s   &     rC   test_pmf_broadcasting%TestMultinomial.test_pmf_broadcasting$
  s   ARHr2h+?@d|$7AAR9ayt41a&1a&!1 2ABx@q	{6A1#sr2h?$!T:!Q!AQC5'RHE4)T:rE   c                r   \         P                  ! VR4      pVR ,          R,          V) R ,          R,          V) R ,          R,          .V) R,          R ,          VR,          R,          V) R,          R,          .V) R,          R ,          V) R,          R,          VR,          R,          ..p\        W#RR7       R# )	r   r   r.  r  r  r  r  N)r   r   r.  r   r   r   )rZ   r   cov1r5  s   &&  rC   test_covTestMultinomial.test_cov4
  s    q,/2b1"R%(QBrE"H-Br1R47QBrE"H-BrA2b58QrT"W-/ 	.rE   c                b   \         P                  ! ^RR.RR..4      pRR.RR..RR.RR...p\        WRR7       \         P                  ! ^^.RR.4      pRR.RR..RR.RR...p\        W4RR7       \         P                  ! ^^.R	R
.RR..4      pRR.RR..RR.RR...p\        WVRR7       R# )rp   r   r  r   r  g?r  r  g
ףp=
?r   r  ra  r  Ngܿgg
ףp=
׿r  gzG?g333333gzGrI  rZ   rJ  r5  cov3cov4cov5cov6s   &      rC   test_cov_broadcasting%TestMultinomial.test_cov_broadcasting<
  s    qB8b"X"67tdC[)RIRy+AB.1vBx0ttSk*c4[4+,FG.1vR2r(';<8$x&9:8$x&9:<.rE   c                ~    \         P                  ! VR R.4      p\        V\        P                  ! VR 4      RR7       R# r   r  r  r  Nr   r   r   r    )rZ   r   ent0s   && rC   rM  TestMultinomial.test_entropyJ
  s1     ""1r2h/emmAr2>rE   c           	     t   \         P                  ! ^^.RR.4      p\        V\        P                  ! ^R4      \        P                  ! ^R4      .RR7       \         P                  ! ^^.RR.RR..4      p\        V\        P                  ! ^R4      \        P                  ! ^R4      .RR7       \         P                  ! ^.^..RR.RR..4      p\        V\        P                  ! ^R4      \        P                  ! ^R4      .\        P                  ! ^R4      \        P                  ! ^R4      ..RR7       R	# )
rO   r   r  r  r  r   r  ra  r  NrW  )rZ   rX  ent1ent2s   &   rC   test_entropy_broadcasting)TestMultinomial.test_entropy_broadcastingQ
  s   ""Aq6B84u}}Q3U]]1b5IJ!	# ""Aq6RHr2h+?@u}}Q3U]]1b5IJ!	# ""QC!:R2r(/CD--2.a0DE--2.a0DEG!	#rE   c                r    \         P                  ! VR R.4      p\        W!R ,          VR,          .RR7       R# rV  r   r   r   )rZ   r   mean1s   && rC   	test_meanTestMultinomial.test_mean`
  s.      RH-"ad|$7rE   c                d    \         P                  ! ^^.RR.4      p\        VRR.RR	..RR7       R# )
rp   r   r  r  r  Nr   r  g433333?g433333@r`  )rZ   ra  s   & rC   test_mean_broadcasting&TestMultinomial.test_mean_broadcastinge
  s5      !Q"b2ttTl;$GrE   c                   ^pRp. RO. RO. RO. RO. RO.p\         P                  ! V\         P                  R7      p\        W4      p\	        VP                  V4      \        P
                  ! W1V4      4       \	        VP                  V4      \        P                  ! W1V4      4       \	        VP                  4       \        P                  ! W4      4       R# )	   r   N)r   r   r   ra  r   r   r   rh  r   r   rN      r   rN   rN   r  rN   rN   rN   	   rN   rN   rO   r%  )r<   r=   r?  r   r   r'  r  r   )rZ   r   pvalsrf   	mn_frozens   &    rC   r  TestMultinomial.test_frozeni
  s     
:i	BJJq

+)		a(+//!*FG	((+[-?-?e-LM	))+[-@-@-JKrE   c                D   ^Xp\         P                  P                  R4      pVP                  V4      pRVR&   V\         P                  ! V4      ,          p\         P                  ! V4      p\
        P                  ! WAV4      p\         P                  ! V4      '       g   Q hR# )X   l   iRZY gKH9Nr   )r<   r   r   r   rT   r   r  isfinite)rZ   r   r   rs  rf   r  s   &     rC   test_gh_11860TestMultinomial.test_gh_11860t
  sy    
 ii##$78JJqM"	RVVAYGGAJ##A!,{{6""""rE   r   c                    ^p\         P                  ! . ROVR7      p\        P                  ! . ROW#R7      p\        P                  ! . ROW#R7      p\         P                  P                  WERR7       R# )	   r   )rf   r   rs  r  r  N)r   r   r   r   r   )rN   rO   rp   r   r   )rN   rO   r   rp   r   )r<   r=   r   r'  testingr   )rZ   r   r   rs  res1res2s   &&    rC   test_gh_22565TestMultinomial.test_gh_22565
  sQ     JJ0>A;A;


""4E":rE   r   N)r   r   r   r   r"  r+  r1  rQ   r   r   r9  rC  rF  rK  rS  rM  r]  rb  re  r  rv  r<   float32r?  r}  r   r   r   s   @rC   r  r  	  s    2	/M" [[S1a&)) *)6;  [[S1a&)/ *// [[S1a&)? *?# [[S1a&)8 *8H	L# [[Wrzz2::&>?; @;rE   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestInvwisharti
  c           	        ^p\         P                  ! \         P                  ! V4      ^,           4      p\         P                  ! W^,
          ,          ^,          4      V\         P                  ! VRR7      &   \         P                  ! VP
                  V4      p. p\        ^4       F  p\         P                  ! \         P                  ! V4      V^,           ^,          ,           4      p\         P                  ! W^,
          ,          ^,          4      V\         P                  ! VRR7      &   \         P                  ! VP
                  V4      pVP                  V4       K  	  \         P                  ! V4      P
                  p^
^\         P                  ! R^
^4      3^
W#3.pV F  w  rrp\        Wr4      p\        VP                  4       \        P                  ! Wr4      4       \        VP                  4       \        P                  ! Wr4      4       \        VP                  4       \        P                  ! Wr4      4       \        VP!                  V4      \        P                   ! WWV4      4       K  	  R# r  )r<   rq   r  r  r  r   r  r  r   rZ  r   r   r  r   r  r   r   )	rZ   r   r  r  r  rf   r  r  iws	   &        rC   r  TestInvwishart.test_frozen
  s   
 		#q(),.IIcq5k!m,DboocR()uww& qA		#!ax/0A,.IIcq5k!m,DAboocR()qssAAHHQK	 
 HHQKMM BKKR+,N


 )NRB&B:>>"#<=JOOB$>?JOOB$>?BFF1Iz~~aU'CD )rE   c                   \         P                  P                  R 4      pRp^p\         P                  ! V4      p\         P                  ! ^^^\
        R7      p\         P                  ! R^
^
R7      pV F  p\        Wt4      p\        V^,          R
R7      p	\        VP                  4       V	P                  4       4       \        VP                  4       V	P                  4       4       \        VP                  V4      V	P                  V4      4       VP                  W!R7      p
V^,          ^ R
3pRp\        RWV
4       \        VP                  4       V	P                  4       4       K  	  R	# )r	  r
  r   r   r  r  r   r  r   Nr.  )r<   r   r  rU   r  re  rZ  r   r   r   r  r   r   r   r
   r   )rZ   r   r  r   r  r  r  r  r  igr   rA   rQ  s   &            rC   test_1D_is_invgamma"TestInvwishart.test_1D_is_invgamma
  s   
 ii##F+s99QAU3KKB2&BB&B"Q$d+B BFFHbffh/BGGIrwwy1 BFF1Irvvay1 &&b&3CqD!T?DE":tC@ BJJL"**,7% rE   c                   ^p^
p\         P                  ! V4      pRVR&   RVR&   \        W#4      p\         P                  P	                  R4      p\        P
                  ! W#VR7      p\         P                  P	                  R4      pVP                  VR7      p\         P                  P	                  R4      pVP                  ^R7      p\         P                  VP                  V^,
          4      VP                  V^,
          4      VP                  V4      3,          R,          p	\         P                  ! V	4      p
W\         P                  ! VR	R7      &   \         P                  P                  V4      p\         P                  P                  V
P                  VP                  4      P                  p\         P                  ! WP                  4      p\!        Wm4       \!        W}4       R# )
rP   r.  iHG	 r   r   r  Nr  r-  r   )r<   rU   r   r   r  r   r   r  r  rq   r  r   r   solver   r  r   )rZ   r   r  r  r  r   iw_rvsfrozen_iw_rvsr  r  rw   r  Lmanual_iw_rvss   &             rC   test_invwishart_2D_rvs%TestInvwishart.test_invwishart_2D_rvs
  sp    sc
c
 " ii##F+<ii##F+C0 ii##F+jjaj(EEMM"Q$MM"Q$MM"
 		 GGI(3"//#
$% IIu%IIOOACC%''q## 	.5rE   c                   ^
pRpR
 EFi  p\         P                  ! \         P                  ! V4      ^,           4      p\         P                  ! W3^,
          ,          ^,          4      V\         P                  ! VRR7      &   \         P                  ! VP
                  V4      p\        W4      pVP                  4       pVP                  4       pWr,          R,          pVP                  VRR7      p	V	P                  ^ R7      p
W3^,           ,          ^,          pRV,          p\        P                  ! ^V^,          ,
          4      p\         P                  ! W,
          V,          ^ VR7      '       d   EKj  Q h	  R	# )z1Test that sample mean consistent with known mean. N  r  r.  r  r   r   r  r-  NrN   rp   r   )r<   rq   r  r  r  r   r   r   r  r   r   ppfr  )rZ   r  sample_sizer   r  r   	Xmean_expXvar_exp	Xmean_stdr  	Xmean_estntests	fail_ratemax_diffs   &             rC   test_sample_meanTestInvwishart.test_sample_mean
  s    CGGBIIcNQ./E02		#q/A:M0NE"//#,-FF577E*Eb(D		IxxzH!/#5Ik=AAI']A%FvIxxIM 12H;;&)3   ! rE   c                   \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! . RO. RO. R	O. R
O.4      p^p\        P                  ! WV4      pVP                  ^ ,          p\         P
                  P                  V4      w  rg\         P
                  P                  V4      w  rh\         P
                  P                  W4      p	V^,          V,          W5,          ^,          \         P                  ! ^4      ,          ,
          \        V^,          V4      ,
          W5,           ^,           ^,          V,          ,
          RV	P                  4       ,          ,
          p
\        WJ4       R# )zRegression test for gh-8844.r.  N)rO   rN   r   r.  )rN   rO   r.  r.  )r   r.  rP   rN   )r.  r.  rN   rO   )rn  r   rP   rN   )r   rn  rp   rN   )rP   rp   r%  rO   )rN   rN   rO   rn  )r<   r   r   r   r>   r   r  r  r  r6   rK  r   )rZ   r  Psinuprobrs  siglogdetX	logdetPsir   r   s   &          rC   test_logpdf_4x4TestInvwishart.test_logpdf_4x4  s   HHn&$&( ) hh$$$& '   ,GGAJyy((+**3/IIOOA#T9$tAvrvvay()"2a4+, vz1nW,- !'')m	$
 	'rE   r   N)r   r   r   r   r  r  r  r  r  r   r   r   s   @rC   r  r  
  s'     E@8B,6\6( (rE   r  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestSpecialOrthoGroupi1  c                    \         P                  ! ^\        P                  P	                  R4      R7      p\        P
                  ! . RO. RO. RO.4      p\        W4       R# )rP     r   N)gDbgMPFh?g,׿)g7?g++?guC))g?gg]Qg^ɿ)r   r   r<   r   r   r   r   )rZ   rf   r   s   &  rC   test_reproducibility*TestSpecialOrthoGroup.test_reproducibility2  sK    ##ABII4I4I#4NO88CBCE F 	"!.rE   c                    \        \        \        P                  R 4       \        \        \        P                  R4       \        \        \        P                  R4       \        \        \        P                  R4       R # Nr  r:  r   )r  rR   r   r   rZ   s   &rC   test_invalid_dim&TestSpecialOrthoGroup.test_invalid_dim9  sN    j"5"9"94@j"5"9"96Bj"5"9"92>j"5"9"93?rE   c                    ^p\        V4      pVP                  RR7      p\         P                  ! VRR7      p\        W44       R# )r   r  r   N)r   r   r   )rZ   r   r  r  r  s   &    rC   test_frozen_matrix(TestSpecialOrthoGroup.test_frozen_matrix?  s;    $S)zztz,"&&s>T rE   c                   \        ^^4       UUu. uF+  p\        ^4       F  p\        P                  ! V4      NK  	  K-  	  pppV Uu. uF"  p\        P                  P                  V4      NK$  	  pp\        VR.^,          RR7       V FR  p\        \        P                  ! WDP                  4      \        P                  ! VP                  ^ ,          4      4       KT  	  R# u uppi u upi )rO   r   vIh%<=r  N)r  r   r   r<   r   r  r   r   r  r   rU   r>   )rZ   r   r  r  rf   detss   &     rC   test_det_and_ortho(TestSpecialOrthoGroup.test_det_and_orthoH  s    q!$#Qx! "%%c* +$ 	 !
 +--"Q		a "-rd2gE2 A%bffQn&(ffQWWQZ&8: !
 .s   1C"(C(c                   ^pRpRp\         P                  ! W\        P                  P	                  R4      R7      pRpV UUUu/ uF/  w  rgWg3\        V Uu. uF  qV,          V,          NK  	  up4      bK1  	  p	pppV U
Uu. uF  q F  qV8  g   K  W3NK  	  K  	  pp
pV UUu. uF$  w  r\        W,          W,          4      ^,          NK&  	  ppp\        V.\        V4      ,          V4       R# u upi u upppi u upp
i u uppi )rp   r  ro  i  r   Nr  r=  )rN   r   re  )	r   r   r<   r   r   sortedr   r   r   )rZ   r   r  ks_probr  elserecrf   proje0e1pairsp0p1ks_testss   &               rC   	test_haarTestSpecialOrthoGroup.test_haarV  s      $$BII,A,A#,F
 +HKLfb&R!8RB%))R!899L$'ACb#Bb"#CADIJEHTXtx033EJ7)CJ.9 "9LAJs*   C7C2.C7C>C>&*D2C7c                N    \        \        P                  ! ^RR7      ^RR7       R# )rN   r  r   r  r  N)r   r   r   r  s   &rC   test_one_by_one%TestSpecialOrthoGroup.test_one_by_oner  s     	+//=quMrE   c                ^    \        \        P                  ! ^ ^R7      P                  R4       R# r   r   N)r   r   r   r   r   r   r>   r  s   &rC   test_zero_by_zero'TestSpecialOrthoGroup.test_zero_by_zerow       (,,QQ7==yIrE   r   N)r   r   r   r   r  r  r  r  r  r  r  r   r   r   s   @rC   r  r  1  s1     /@!::8N
J JrE   r  c                      a  ] tR tRt o R tR tR tR t]P                  P                  R. RO4      R 4       tR tR	 tR
 t]P                  P                  R 4       tRtV tR# )TestOrthoGroupi{  c                d   R p\         P                  P                  V4      p\        P                  ! ^VR7      p\        P                  ! ^VR7      p\        \         P                  P                  V4      R4       \         P                  ! . RO. RO. RO.4      p\        W54       \        WE4       R# )r  r   Nr   )gm?gӠh"gEo?)g~7ݲC?g>Ŀg0J_ٿ)gݱ&ǿg 6qrg`X|[)
r<   r   r  r   r   r   r   r  r   r   )rZ   r   r   rf   r   r   s   &     rC   r  #TestOrthoGroup.test_reproducibility|  s    ii##D)OOAC0__QT2BIIMM!,b188<==? @ 	"!.!"/rE   c                    \        \        \        P                  R 4       \        \        \        P                  R4       \        \        \        P                  R4       \        \        \        P                  R4       R # r  )r  rR   r   r   r  s   &rC   r  TestOrthoGroup.test_invalid_dim  sB    j+//48j+//6:j+//26j+//37rE   c                    ^p\        V4      p\        VRR7      pVP                  RR7      p\         P                  ! VRR7      pVP                  ^R7      p\        WE4       \        WF4       R# )r   r  r   r   r   N)r   r   r   rZ   r   r  frozen_seedr  r  rvs3s   &      rC   r  !TestOrthoGroup.test_frozen_matrix  s]    S!!#D1zztz,s6A&T T rE   c                   \        ^^4       UUu. uF2  p\        ^
4       Uu. uF  p\        P                  ! V4      NK  	  upNK4  	  ppp\        P                  ! V UUu. uF1  qD Uu. uF"  p\        P
                  P                  V4      NK$  	  upNK3  	  upp4      p\        \        P                  ! V4      \        P                  ! VP                  4      RR7       V F[  pV FR  p\        \        P                  ! WUP                  4      \        P                  ! VP                  ^ ,          4      4       KT  	  K]  	  R# u upi u uppi u upi u uppi )rO   r  r  N)r  r   r   r<   r   r   r  r   fabsrT   r>   r   r  r   rU   )rZ   r   r  r  xxrf   r  s   &      rC   r  !TestOrthoGroup.test_det_and_ortho  s     q&$# b	#!1 s#!#$ 	 &
 xx"E"BB7Bq"))--*B7"EFrwwtzz':G B)"&&CC.*,&&*<>  # &
 8Es.   EEE E
((EE
EE
r   c                   \         P                  P                  R 4      p\        VR7      pVP	                  RVR7      p\
        P                  P                  V4      p\         P                  ! V^ 8  4      p\        V4      p\        P                  ! Wg4      pVP                  RR7      w  rV	Ru;8  d	   V
8  g   Q h Q hR# )l   <`Lr )r   rE  r   ffffff?confidence_levelr.  N)r<   r   r   r   r   r   r   r  r   r   r.   	binomtestproportion_ci)rZ   r   r   r   r   r  r  r   r?   r  r  s   &&         rC   test_det_distribution_gh18272,TestOrthoGroup.test_det_distribution_gh18272  s     ii##$78s#hhDsh3||$FF4!8Iooa#%%t%<	S4rE   c                   ^pRpRp\         P                  P                  R4      p\        P                  ! WVR7      pRpV UUU	u/ uF/  w  rxWx3\        V U	u. uF  qV,          V,          NK  	  up	4      bK1  	  p
ppp	V UUu. uF  q F  qV8  g   K  W3NK  	  K  	  pppV UUu. uF$  w  r\        W,          W,          4      ^,          NK&  	  ppp\        V.\        V4      ,          V4       R# u up	i u up	ppi u uppi u uppi )rp   r  ro  i  r   Nr  )	r<   r   r  r   r   r  r   r   r   )rZ   r   r  r  r   r  r  r  r  rf   r  r  r  r  r  r  r  s   &                rC   r  TestOrthoGroup.test_haar  s     ii##C(__SSA +HKLfb&R!8RB%))R!899L$'ACb#Bb"#CADIJEHTXtx033EJ7)CJ.9 "9LAJs*   C9C40C9D D (*D4C9c                ~   ^p\         P                  ! VR\        P                  P	                  R4      R7      p\        \        P                  ! V4      ^RR7       \        P                  ! V^ 8  4      p\        V4      p\        P                  ! W44      pVP                  RR7      w  rgVRu;8  d	   V8  g   Q h Q hR	# )
rN   rE  r  r   r  r  r  r  r.  N)r   r   r<   r   r   r   r  r   r   r.   r  r  )rZ   r   r  r  r   r?   r  r  s   &       rC   r  TestOrthoGroup.test_one_by_one  s    __St")):O:OPS:TUr
AE2FF26NGooa#%%t%<	S4rE   c                ^    \        \        P                  ! ^ ^R7      P                  R4       R# r  r  r  s   &rC   r   TestOrthoGroup.test_zero_by_zero  r  rE   c                N  aa \         P                  P                  R 4      oRV3R llp\        ^^4       Fk  oRVV3R llpV! V4      pV! \        P
                  P                  P                  4      p\        P
                  P                  W44      w  rV\        RV4       Km  	  R# )r  Nc                    < \         P                  P                  SP                  W 3R 7      4      w  r#p\         P                  ! W$4      # r   )r<   r   r   r   r  )r   r   r   _sr   r   s   &&   rC   random_ortho<TestOrthoGroup.test_pairwise_distances.<locals>.random_ortho  s4    yy}}SZZcZZ%@AHA166!<rE   c                 :  < \         P                  ! \        V4       Uu. uF7  p\         P                  ! V ! SSR 7      V ! SSR 7      ,
          ^,          4      NK9  	  up4      pV\         P                  P                  V) W$P                  R7      ,          pV# u upi ))r   r   r   )r<   r   r  r   r   r   r>   )r   r@  epsr   r.   r   r   s   &&&  rC   generate_test_statisticsHTestOrthoGroup.test_pairwise_distances.<locals>.generate_test_statistics  s     #1X" & FFCCc:Cc:;=>? @%"  **C4;;*GG"s   =Bro  r;   )r  r,  )
r<   r   r  r  r   r.   r   r   r   r   )	rZ   r  r  r   r  _Drs  r   r   s	   &      @@rC   test_pairwise_distances&TestOrthoGroup.test_pairwise_distances  s     ii##C(	  A;C  0=H-ekk.E.E.I.IJFKK((:EBc1%! rE   r   N)rO   rp   r     )r   r   r   r   r  r  r  r  rQ   r   r   r  r  r  r  r  r  r   r   r   s   @rC   r  r  {  sl     08
!> [[UN3
  4
 :6	 J [[& &rE   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestRandomCorrelationi  c                   \         P                  P                  R 4      pRp\        P                  ! W!R7      p\        P                  ! VR R7      p\         P
                  ! . RO. RO. RO. RO.4      p\        W54       \        WE4       R# )r  r   Nr.  r  r  r  )r   ѓ2ǿA?Ϳ)r  r   4($?R}%?)r  r  r   qTnƿ)r  r  r  r   )r<   r   r  r   r   r   r   )rZ   r   rK  rf   r   r   s   &     rC   r  *TestRandomCorrelation.test_reproducibility  sp    ii##C(!""4:##Ds;88A@@AC D 	"!.!"/rE   c                   \        \        \        P                  R 4       \        \        \        P                  R4       \        \        \        P                  R4       \        \        \        P                  R.4       \        \        \        P                  ^^.^^..4       \        \        \        P                  RR.4       \        \        \        P                  . RO4       R # )Ntestr  g      )rN   rO   r   )r  rR   r   r   r  s   &rC   test_invalid_eigs'TestRandomCorrelation.test_invalid_eigs	  s    j"4"8"8$?j"4"8"8&Aj"4"8"8#>j"4"8"83%@j"4"8"8Aa5!A-Hj"4"8"83*Ej"4"8"8*ErE   c                    Rp\        V4      p\        VRR7      p\         P                  ! VRR7      pVP                  RR7      pVP                  4       p\        WE4       \        WF4       R# )r.  r  r   r   Nr  )r   r   r   )rZ   rK  r  r  r  r  r  s   &      rC   r  (TestRandomCorrelation.test_frozen_matrix  s[    !#D)(C8!%%d=zzsz+ T T rE   c           
     R   R  p\         P                  P                  ^{4      p\        ^^4       Uu. uF  q1! W2P	                  VR7      4      NK  	  ppVP                  . RO4       V Uu. uF  pR.\        V4      ,          NK  	  ppV Uu. uF  p\        P                  ! WRR7      NK  	  ppV Uu. uF6  p\         P                  ! \         P                  P                  V4      4      NK8  	  p	pV Uu. uF  p\         P                  ! V4      NK  	  p
p\        WRRR7       V Uu. uF  p\         P                  ! V4      NK  	  pp\        W4       F  w  r\        WRR7       K  	  V F  p\        WP                   RR7       K  	  R# u upi u upi u upi u upi u upi u upi )	c                 2    W,          \        V4      ,          # r;   )r   )r  r&  s   &&rC   r   3TestRandomCorrelation.test_definition.<locals>.norm&  s    3s1v:rE   r   r   r   r  r  r  N)r   r   r   r   )r<   r   r  r  r   r  r   r   r   r  r   r  rC  r   rq   zipr   )rZ   r   r   r  rK  r&  rT   r  rf   r  
dets_knowndiagsr5  r6  s   &             rC   test_definition%TestRandomCorrelation.test_definition  sU   	 ii##C(6;AqkBkQ+,kBI%)*TSVT*CGH4a $$Q94H 4662a		a()26*./$Qbggaj$
/u5A &((RR($DAAu- % AAss/ ) C +H 7/ )s#    F*F F2<F4F'F$c           
        \         P                  ! R ^ .^ ^..\        R7      p\        P                  ! V4      p\        V\         P                  ! ^^ .^ R ..4      4       \         P                  ! RR7      ;_uu_ 4        \         P                  ! ^ ^.R^ ..4      p\         P                  ! R^ .^ \         P                  ! ^^ 4      ..\        R7      p\        P                  ! VP                  4       4      p\        WP                  P                  V4      P                  V4      4       \         P                  ! RR.RR..\        R7      p\        P                  ! VP                  4       4      p\        WP                  P                  V4      P                  V4      4       RRR4       \         P                  ! ^^.^^..\        R7      p\        P                  ! VP                  4       4      p\        VR	,          ^4       \         P                  ! R
^.^^..\        R7      p\        P                  ! VP                  4       4      p\        VR	,          ^4       R#   + '       g   i     L; i)r   r   ignore)overgu <7~r  r  Nr   r  gMk   @)r<   r   re  r   _to_corrr   errstate	nextaftercopyr   r  )rZ   ru  r  m0s   &   rC   test_to_corr"TestRandomCorrelation.test_to_corrB  s    HHsAhA'u5''*288aVaX$678
 [[h''1a&2q'*+AE1:2<<1+='>?uMB"++BGGI6AAsswwr{q12C<%6eDB"++BGGI6AAsswwr{q12 ( XX1v1v&e4''	2#" XX!}q!f-U;''	2#"' ('s   >D$II.	r   N)r   r   r   r   r  r  r  r  r  r   r   r   s   @rC   r  r    s%     
0F
!"0H# #rE   r  c                   @  a  ] tR tRt o ]P
                  P                  R^^.4      ]P
                  P                  R. R
O4      R 4       4       t]P
                  P                  R. RO4      R 4       tR t	]P
                  P                  R. RO4      R 4       t
R	tV tR# )TestUniformDirectionic  r   r   Nc                   \         P                  P                  R 4      p\        WR7      pVP	                  V4      p\         P
                  ! V4      \         P                  ! V4      rvVP                  WgVR7      P                  pVP                  V8X  g   Q h\         P                  P                  VRR7      p	\        V	R4       R#    Sid)_i4 r   r   r   r   Nr   )r<   r   r   r&   r   r   rU   r   r>   r   r   r   )
rZ   r   r   r   uniform_direction_distr  r   r   expected_shapenormss
   &&&       rC   r!  !TestUniformDirection.test_samplesd  s     ii##$78!23!A(,,T2HHSM266#;c000FLL}}...		wR0r"rE   c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)zMDimension of vector must be specified, and must be an integer greater than 0.rI   N)rQ   r	   rR   r&   r   )rZ   r   r[   s   && rC   r  %TestUniformDirection.test_invalid_dimq  s7    <]]:W55!!#& 6555s   AA	c                    ^p\        V4      p\        VRR7      pVP                  RR7      p\         P                  ! VRR7      pVP                  4       p\        WE4       \        WF4       R# )rp   r  r   r   N)r&   r   r   r  s   &      rC   test_frozen_distribution-TestUniformDirection.test_frozen_distributionx  s[    "3''#6zzsz+ $$Ss; T T rE   c                b   \         P                  P                  R 4      p\        WR7      pVP	                  ^R7      w  rEWTV,          V,          ,          pV\         P
                  P                  V4      ,          p\        WE,          ^ RR7       VP	                  RR7      pWd,          pWe,          p\         P                  ! Wx4      p	V	\         P                  ,          p	V	^\         P                  ,          ,          p	\        4       p
\        WP                  4      pVP                  R8  g   Q hR# )l   @9Y sr   r   r.  r-  r  ro  N)r<   r   r   r&   r   r   r   r   arctan2rJ  r   r   r   pvalue)rZ   r   r   spherical_distv1v2r  s1s2anglesuniform_distkstest_results   &&          rC   test_uniform!TestUniformDirection.test_uniform  s    ii##$78*39###+
2gl
biinnR  / $$%$0\\B# 	"%%!BEE'yv'7'78##d***rE   r   NrN   rp   )rp   r   )Nr   r:  r  )rO   rp   r%  )r   r   r   r   rQ   r   r   r!  r  r-  r:  r   r   r   s   @rC   r"  r"  c  s     [[UQF+[[V%9:	# ; ,	# [[U$:;' <'
! [[UI.+ /+rE   r"  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TestUnitaryGroupi  c                   \         P                  P                  R 4      p\        P                  ! ^VR7      p\        P                  ! ^R R7      p\         P
                  ! . RO. RO. RO.4      p\        W$4       \        W44       R# )r  r   N)y~p?yZ?y뉦?ĭ?y8Z?&4?)yEHξr?8i?ye??+ݓݿyu=ٿB۽'?)yqXQÿ?yN6ҿzܷy! 8l?2W'?)r<   r   r  r   r   r   r   )rZ   r   rf   r   r   s   &    rC   r  %TestUnitaryGroup.test_reproducibility  si    ii##C(ac2qs388IHKM
 	"!.!"/rE   c                    \        \        \        P                  R 4       \        \        \        P                  R4       \        \        \        P                  R4       \        \        \        P                  R4       R # r  )r  rR   r   r   r  s   &rC   r  !TestUnitaryGroup.test_invalid_dim  sJ    j-"3"3T:j-"3"3V<j-"3"3R8j-"3"3S9rE   c                    ^p\        V4      p\        VRR7      pVP                  RR7      p\         P                  ! VRR7      pVP                  ^R7      p\        WE4       \        WF4       R# )r   r  r   r   r   N)r   r   r   r  s   &      rC   r  #TestUnitaryGroup.test_frozen_matrix  s_    s##Cc2zzsz+  37A&T T rE   c                h   \        ^^4       UUu. uF+  p\        ^4       F  p\        P                  ! V4      NK  	  K-  	  pppV Fb  p\        \        P
                  ! WDP                  4       P                  4      \        P                  ! VP                  ^ ,          4      RR7       Kd  	  R# u uppi )rO   r  r-  N)
r  r   r   r   r<   r  conjr   rU   r>   )rZ   r   r  r  rf   s   &    rC   test_unitarityTestUnitaryGroup.test_unitarity  s    q!$#Qx! $ %$ 	 !
 ABFF1ffhjj1266!''!*3EER !s   1B.c           	     D   R EF  pRp\         P                  ! W\        P                  P	                  R4      R7      p\        P
                  ! V Uu. uF"  p\        P                  P                  V4      NK$  	  up4      p\        P                  ! VP                  VP                  4      p\        VP                  4       \        \        P                  ) ^\        P                  ,          4      P                   4      p\#        VP$                  R8  4       EK  	  R# u upi )rN   r  r  r   ro  Nr  )r   r   r<   r   r   r  r   r   eigvalsr0  imagry  r   ravelr   rJ  r   r   r1  )rZ   r   r  r  rf   rK  r?   s   &      rC   r  TestUnitaryGroup.test_haar  s    
 CG""		0E0Ec0JB 99rBr!ell2215rBCD

499dii0AGRUUFAbeeG$<$@$@ACCJJ%&  Cs   (D
c                ^    \        \        P                  ! ^ ^R7      P                  R4       R# r  )r   r   r   r>   r  s   &rC   r  "TestUnitaryGroup.test_zero_by_zero  s    ]&&qq177CrE   r   N)r   r   r   r   r  r  r  rG  r  r  r   r   r   s   @rC   r>  r>    s+     0:
!S'&D DrE   r>  c                     a  ] tR tRt o ^^.^^.^^.^^.^^.^^.^^.^^.^^.^^..
^ ^ .^^ .^ ^..^. R7O3. R8O. R9O. R:O. R;O. R<O.. R>O. R?O. R@O. RAO.^. RBO3.t]P                  P                  R]4      R 4       t]P                  P                  R]4      R 4       t	R t
R t]P                  P                  R	R
7      ]! R4      R 4       4       tR tR tRCRDR^^ .^ ^..R^ ^ .^^ .^ ^..^3R^^ .^ ^..^^ ^ .^^ .^ ^..^3^^.RR^^.^^ .^ ^..^3^^.R^^^.^^ .^ ^..^3^^.^^ .^ ^..R^^.^^ .^ ^..^3^^.^^ .^ ^..^^^.^^ .^ ^..^3.t]P                  P                  R]4      R 4       tR=^^R=.^..^3R=.^.^R=.^..^3]P(                  ! R=.4      ]P(                  ! ^.4      ^R=.^..^3.t]P                  P                  R]4      R 4       tR tR tR t]P                  P                  RRERF.4      ]P                  P                  R. RGO4      ]P                  P                  RRR]P4                  .4      R 4       4       4       tR t]P                  P                  R. RHO4      R 4       t]P                  P                  R. RIO4      R 4       tRJR ltR  t ]P                  P                  R. RKO4      ]P                  P                  R!. RLO4      ]P                  P                  R"RR#.4      R$ 4       4       4       t!]P                  PD                  R% 4       t#R& t$R' t%R( t&]P                  P                  RRM4      R) 4       t'R* t(]P                  P                  R. RNO4      R+ 4       t)]P                  P                  R,^
]PT                  ! ^^4      R-R.3^d]P(                  ! R^.^^
..4      R/R03.4      R1 4       t+]P                  P                  R2. ROO4      R3 4       t,R4 t-R5 t.R6t/V t0R# )PTestMultivariateTi  r   r.  zx, loc, shape, df, ansc                Z    \        W#V^ R7      pVP                  V4      p\        Wu4       R# r   r   N)r"   r   r   )rZ   rf   r  r>   r  ansr   vals   &&&&&&  rC   test_pdf_correctness&TestMultivariateT.test_pdf_correctness&  s%    c"15hhqk!#+rE   c                    \        W#V^ R7      pVP                  V4      pVP                  V4      p\        \        P
                  ! V4      V4       R# rS  )r"   r   r   r   r<   r  )	rZ   rf   r  r>   r  rT  r   r)  r*  s	   &&&&&&   rC   test_logpdf_correct%TestMultivariateT.test_logpdf_correct,  s<    c"15xx{{{1~!"&&,5rE   c                    . ROp\         P                  ! V^R7      p\        P                  ! V4      p\        W#4       R# )rn  r&  N)
rn  r   r   rN   rt  rn  r   rt  r   rP   )r"   r   r#   r   )rZ   rf   rU  rT  s   &   rC   test_mvt_with_df_one_is_cauchy0TestMultivariateT.test_mvt_with_df_one_is_cauchy4  s.    -  q)jjm!#+rE   c                   R p\        ^ ^R^R7      pVP                  RR7      p\        V4      w  rEWQ8  g   Q h\        R^.^
R.R^
..R^*R7      pVP                  RR7      p\        V4      w  rEWQ8  P                  4       '       g   Q hR# )r   順 r  r   r   Nr   r   )r"   r   r$   r  )rZ   	P_VAL_MINr   r  r   rs  s   &     rC   &test_mvt_with_high_df_is_approx_normal8TestMultivariateT.test_mvt_with_high_df_is_approx_normal:  s    
 	avA6(((''"r1gR2r(';#%'(((''"##%%&%rE   zuses mockingreasonz'scipy.stats.multivariate_normal._logpdfc                T   \        ^ ^\        P                  ^R7      p\        V\        4      '       g   Q h\         P
                  ! ^ \        P                  R7       VP                  ^8X  g   Q h\         P                  ! ^ \        P                  R7       VP                  ^8X  g   Q hR# )r   r`  r&  N)r"   r<   r  r   r   r   
call_countr   )rZ   mockr   s   && rC   !test_mvt_with_inf_df_calls_normal3TestMultivariateT.test_mvt_with_inf_df_calls_normalL  sx     arvvA6$ :;;;;1(!###aBFF+!###rE   c                   ^p\         P                  ! V4      p\         P                  ! V4      pRp\         P                  ! V4      p\        W#V4      P	                  V4      p\         P
                  ! V4      '       g   Q h\        W#V4      P                  V4      p\         P
                  ! V4      '       g   Q h^p\         P                  P                  R4      pVP                  Wq34      p\        W#V4      P	                  V4      pVP                  V38X  g   Q h\        W#V4      P                  V4      pVP                  V38X  g   Q h\        \         P                  ! ^4      \         P                  ! ^4      ^4      P                  4       p\         P
                  ! V4      '       g   Q h^p	\        \         P                  ! ^4      \         P                  ! ^4      ^4      P                  V	R7      pVP                  V	38X  g   Q hR# )r         @l   I r   N)r<   r   rU   r"   r   isscalarr   r   r   r>   r   )
rZ   r   r  r>   r  rf   r?   	n_samplesr   r   s
   &         rC   test_shape_correctness(TestMultivariateT.test_shape_correctnessV  s    hhsmsHHSMS,003{{3S,33A6{{3 	ii##J/JJ	'(S,003		i\)*)S,33A6		i\)*) RXXa["&&)Q7;;={{3 RXXa["&&)Q7;;;F		dW$%$rE   c                    \        4       p\        VP                  ^ .4       \        VP                  ^..4       VP                  ^8X  g   Q hR# r   Nr"   r   r  r>   r  )rZ   r   s   & rC   test_default_arguments(TestMultivariateT.test_default_argumentsw  s<    TXXs#TZZ1#'1rE   Nz*loc, shape, df, loc_ans, shape_ans, df_ansc                    \        WVR 7      p\        VP                  V4       \        VP                  V4       VP                  V8X  g   Q hR# )ry  Nrs  rZ   r  r>   r  loc_ans	shape_ansdf_ansr   s   &&&&&&& rC   test_default_args#TestMultivariateT.test_default_args  s>     #r:TXXw'TZZ+6!"!rE   c                    \        WV4      p\        VP                  V4       \        VP                  V4       \        VP                  V4       R # r;   rs  rw  s   &&&&&&& rC   &test_scalar_list_and_ndarray_arguments8TestMultivariateT.test_scalar_list_and_ndarray_arguments  s:     c"-TXXw'TZZ+TWWf%rE   c           
        ^^..p\        \        \        3/ \        VR7      B  ^^.^^.^^..p\        \        \        3/ \        WR7      B  \        P
                  ! ^4      p\        P                  ! ^4      pRp\        \        \        3/ \        WVR7      B  ^ p\        \        \        3/ \        WVR7      B  R# )rN   )r  )r  r>   ry  Nr   )r  rR   r"   r9  r<   r   rU   )rZ   r  r>   r  s   &   rC   test_argument_error_handling.TestMultivariateT.test_argument_error_handling  s    1vhj$	'	'
 Q!Q!Q(j$	42	4
 hhqkq	j$	;b9	; j$	;b9	;rE   c                *   \         P                  P                  ^4      pVP                  ^R7      p\         P                  ! ^4      p\        W#^^R7      p\        W#^^R7      pVP                  ^
R7      pVP                  ^
R7      p\        Wg4       R# )r   r   r`  N)r<   r   r  r   rU   r"   r   r   )rZ   r   r  r>   r   dist2samples1samples2s   &       rC   r  &TestMultivariateT.test_reproducibility  sw    ii##A&kkqk!q	saa8saa899"9%99"9%X(rE   c                    \        ^ ^ .^ ^ .^ ^..^RR7      p\        \        P                  P                  \
        3/ VB  R# )r   F)r  r>   r  re   N)r9  r  r<   r   r%  r"   )rZ   rA   s   & rC   test_allow_singular%TestMultivariateT.test_allow_singular  s;    1qeQqE]qObii++^DtDrE   r   r   r  r  c                    \        \        P                  ! V4      \        P                  ! V4      V4      pVP	                  VR 7      pVP
                  W3,           8X  g   Q hR# )r   N)r"   r<   r   rU   r   r>   )rZ   r   r   r  r   r   s   &&&&  rC   test_rvsTestMultivariateT.test_rvs  sH     bhhsmRVVC["=hhDh!yyD7N***rE   c                .   \         P                  ! ^4      p\         P                  ! ^4      p^
p. RO. RO. RO. RO.p. RO. RO. RO. RO.p\         P                  ! . RO4      p\        P
                  ! WAW#VR7      p\        Ww^ ,          V,          4       R# rk  rn  )rZ   r   r   r  r6  r5  ro  r   s   &       rC   rp   TestMultivariateT.test_cdf_signs  sp    xx{ffQi	9i8	9i8.1!%%asAFVN23rE   c                (    V P                  V4       R # r;   cdf_against_mvn_testrZ   r   s   &&rC   $test_cdf_against_multivariate_normal6TestMultivariateT.test_cdf_against_multivariate_normal  s     	!!#&rE   c                *    V P                  ^R4       R# )rP   TNr  r  s   &&rC   -test_cdf_against_multivariate_normal_singular?TestMultivariateT.test_cdf_against_multivariate_normal_singular  s     	!!!T*rE   Fc           
     Z   \         P                  P                  R 4      p^p^
VP                  R	^VR7      ,          p\	        WW24      p^
VP                  R
^VR7      ,          \         P
                  ! VP                  VR7      4      ,          p^
VP                  R
^WA3R7      ,          ) V,           p^
VP                  R
^WA3R7      ,          V,           p	\        P                  P                  WVRVRVR7      p
\        P                  P                  WVRVR7      p\        WRR7       R# )   ]J>?a r   r  T)r  rW  re   r   )re   rW  Mb@?r-  Nr   r   )r<   r   r   r   r   signr   r.   r"   r   r   r   )rZ   r   r   r   r   r  r   r   r5  r6  r?   r@   s   &&&         rC   r  &TestMultivariateT.cdf_against_mvn_test  s   ii##O4B,, 73;;r13;//"''#**#*:N2OOR!222T9B11D8""&&q16: ' N''++AS89 , ;t,rE   c           	     d   \         P                  P                  R 4      p^p^ pVP                  ^
\         P                  ! V4      R7      p^p\
        P                  P                  WCW%\         P                  ) VR7      p\
        P                  P                  WEV\         P                  ! V4      4      p\
        P                  P                  WC\         P                  ! V4      4      p\        WgRR7       \         P                  ! \         P                  ! Wh,
          4      R8  4      '       g   Q hR# )r  )r   r  )rW  r   r  r-  r  N)r<   r   r   r   r$  r.   r"   r   r  rF  r   r   r  r  )	rZ   r   r   r   rf   r  r?   r@   	incorrects	   &        rC   test_cdf_against_univariate_t/TestMultivariateT.test_cdf_against_univariate_t  s    ii##O4JJBbggclJ3""&&qbffW47 ' 9ggkk!rwws|4JJNN1BGGCL9	t,vvbffS_-45555rE   r   r   Tc           
        V'       d   VR 8w  d   \         P                  ! R4       \        P                  P	                  V4      p^
VP                  R^VR7      ,          p\        WWC4      pVP                  V4      pVP                  V4      ) pVP                  V4      p	VP                  4       ^,          p
\        P                  P                  WWjVRR7      p\        P                  ! RR7      ;_uu_ 4        \        RW\        P                  V,          W,
          V4      ^ ,          pRRR4       \        VXR	R
R7       \        P                  P                  WWjVVRR7      p\        P                  ! RR7      ;_uu_ 4        \        RWW,
          W,
          V4      ^ ,          pRRR4       \        WRR
R7       R#   + '       g   i     L; i  + '       g   i     L3; i)   no z4Agreement with qsimvtv is not great in singular caser   T)r   re   r  )invalidr  Ng-C6*?r  r  r  )rW  r   re   rc  r   )rQ   r   r<   r   r   r   r   r.   r"   r   r  r8   r  r   )rZ   r   r   r   r   r  r   r   r5  r6  r  r?   r@   s   &&&&         rC   test_cdf_against_qsimvtv*TestMultivariateT.test_cdf_against_qsimvtv  sm   
 
*KKNOii##D)B,, 7zz#ZZ_JJsOZZ\A ""&&qc6: ' <[[**5"266!8QXsCAFC +St$7 ""&&qQ47 ' N[[**5"18QXsCAFC +t$7 +* +*s   92G #G G	G#	c           
       a	a
a ^p\         P                  P                  R4      p^
VP                  R^VR7      ,          p\	        WVRR7      o	VP                  V4      oVP                  V4      ) pVP                  V4      pVP                  4       ^,          o
\
        P                  P                  VSS	S
VVR7      pV	V
V3R lp\        WtV\
        P                  P                  WR7      R7      p\        WhP                  R	R
7       V	V
V3R lp\        Wt^ ,          V^ ,          V^,          V^,          V^,          V^,          4      p\        Wh^ ,          R	R
7       R# )rP   l   	!y r   T)r   )r   rW  c                 \   < \         P                  P                  V P                  SSS4      # r;   )r.   r"   r   r   )rf   r   r  r   s   &rC   	integrandITestMultivariateT.test_cdf_against_generic_integrators.<locals>.integrand2  s$    ''++ACCsB??rE   )r@  r   )qrngr  r  c                  \   < \         P                  P                  V R R R1,          SSS4      # )Nr   )r.   r"   r   )zyxr   r  r   s   *rC   r  r  8  s(    ''++C"ItS"EErE   Nr   )r<   r   r   r   r   r.   r"   r   r3   qmcHaltonr   integralr5   )rZ   r   r   r  r5  r6  r?   r  r@   r   r  r   s   &        @@@rC   $test_cdf_against_generic_integrators6TestMultivariateT.test_cdf_against_generic_integrators#  s    ii##N3#++b!#+.. t<zz#ZZ_JJsOZZ\A""&&q$Rc34 ' 6	@ yQUYY-=-=-=-NO\\5	F i1qtQqT1Q41qtDV$/rE   c                    \         P                  P                  R 4      p\         P                  ! . RO. R	O. R
O.4      pRp\        P
                  ! W#R7      pVP                  . ROVR7      pRp\        WVRR7       R# )l   Ja gWK?r>   r  r   g1%?r  r  N)go!@S<?^Ss@)r  gRP=@jT0@)r  r  gk`-3@r   )r<   r   r   r   r.   r"   r   r   )rZ   r   r   r  r   r?   r@   s   &      rC   test_against_matlab%TestMultivariateT.test_against_matlab>  sn     ii##J/hh???A B  ###5hhysh3t,rE   c                    R p\         P                  P                  V4      pVP                  ^R7      pVP                  ^R7      V,           p\         P                  ! ^4      pVP                  4       pW5V3p\         P                  P                  V4      p\         P                  P                  V4      p	\
        P                  ! VRV/ p
\        V
P                  V4      \        P                  ! V.VO5RV	/ 4       R# )l   2m r   r   r   N)	r<   r   r   r   rU   r.   r"   r   r   )rZ   r   r   r  rf   r>   r  rA   
rng_frozenrng_unfrozenr   s   &          rC   r  TestMultivariateT.test_frozenO  s    ii##D)kkqk!KKQK#%q	ZZ\BYY**40
yy,,T2##T;
;TXXa[#''LDL|L	NrE   c                  aa	a
a ^pR	p\         P                  P                  R4      oSP                  W3R7      pW3P                  ,          oSP                  V4      o
SP                  W!3,           4      pSP                  4       ^,          o	\        P
                  P                  VS
SS	SR7      pVV	V
V3R lp\         P                  ! VR
V4      p\        WWRRR7       R# )r   r  r   r   c                 l   < \        R SS\        P                  ) V ,          V S,
          S4      ^ ,          # )r  )r8   r<   r  )rf   r   r  r   r   s   &rC   _cdf_1d2TestMultivariateT.test_vectorized.<locals>._cdf_1dj  s+    E2sRVVGAIqvsCAFFrE   rc  r  r  Nre  r   )	r<   r   r   r   r.   r"   r   apply_along_axisr   )rZ   r   r   rw   rf   r?   r  r@   r   r  r   r   s   &       @@@@rC   test_vectorized!TestMultivariateT.test_vectorized^  s    ii##O4JJSJJ'##gzz#JJq6z"ZZ\A""&&q$Rc&J	G 	G !!'2q1t$7rE   c                L   \         P                  P                  R 4      p\        P                  P                  ^.R.V^,
          ,          ,           R7      p\        P                  ! VR7      P                  ^ .V,          VR7      p^V^,           ,          p\        WERR7       R# )r  r.  )r  )r>   r   r{  r  N)
r<   r   r   r   r   toeplitzr.   r"   r   r   )rZ   r   r   rw   r?   r@   s   &&    rC   test_against_analytical)TestMultivariateT.test_against_analyticalp  s|    ii##O4LL!!QC3%37*;$;!<""+//c	/L37mt,rE   c                    \         P                  ! ^^4      p\         P                  p\        P                  P                  WR7      p\        P                  P                  RV4      pW48X  g   Q hR# )rP   r  N)r<   rU   r  r.   r"   r   r   )rZ   r   r  mvt_entropymvn_entropys   &    rC   test_entropy_inf_df%TestMultivariateT.test_entropy_inf_dfx  sW    ffQlVV**222D//77cB)))rE   c                    \         P                  P                  R VR7      p\         P                  P                  VR7      p\	        W#RR7       R# )r   r  r&  r  r  N)r.   r"   r   rF  r   )rZ   r  r  	t_entropys   &&  rC   test_entropy_1d!TestMultivariateT.test_entropy_1d  s;    **222CGGOOrO*	U;rE   zdf, cov, ref, tolg}M@r.  gNfh@r  c                    \         P                  ! R4      p\        P                  ! WRV4      p\	        VP                  4       W4R7       R# )rO   r  Nr  )r<   r   r.   r"   r   r   )rZ   r  r   r@   tolr  mvts   &&&&&  rC   %test_entropy_vs_numerical_integration7TestMultivariateT.test_entropy_vs_numerical_integration  s3    
 hhuo""3R0s5rE   zdf, dim, ref, tolc                    \         P                  ! \        P                  ! V4      VR 7      p\	        VP                  4       W4R7       R# )r  r  N)r.   r"   r<   rU   r   r   )rZ   r  r   r@   r  r  s   &&&&& rC   test_extreme_entropy&TestMultivariateT.test_extreme_entropy  s/    F ""<s5rE   c                   \         P                  ! . R
O. RO. RO. RO. RO.4      pWP                  ,          pRp\        P                  P                  W#R7      p\        RVR7      P                  4       p\        WERR7       RpRp\        P                  P                  W&R7      p\        P                  P                  W'R7      p	\        WR	R7       R# )Q?@xDr  Nr$  r  r  i  i   r  )r  g
ףp=
?g\(\߿(\?gGz?)gGzg{GzgQ?ra  gQ)gQ?g)\(?gQѿg)\(ܿg(\?)g      gGzgq=
ףpg\(\?g)r  g{Gzg\(\?g{GzԿg(\?)r<   r   r   r.   r"   r   r   r   )
rZ   _Ar   r  mul_t_entropymul_norm_entropydf1df2	_entropy1	_entropy2s
   &         rC   test_entropy_with_covariance.TestMultivariateT.test_entropy_with_covariance  s     XX+-,,,
  44i ,,4434F.t=EEGeD ((00s0C	((00s0C		48rE   c                   \         P                  ! ^^^\        P                  R7      p\        P                  ! ^^^4      p\        W4       \        P                  P                  R4      pVP                  ^4      pVP                  R4      \        P                  ! ^4      ^,          ,           pVP                  V,           p\	        WER7      p\        WE\        P                  R7      pVP                  ^
4      p\        VP                  V4      VP                  V4      4       \        VP                  V4      VP                  V4      4       R# )rN   r&  l   18KJ.r   ry  Nrd  )r"   r   r<   r  r   r   r   r   rU   r   r   r   )	rZ   r?   r@   r   r   r   r  r  rf   s	   &        rC   test_logpdf_df_inf_gh19930,TestMultivariateT.test_logpdf_df_inf_gh19930  s    
 ##Aq!7!((Aq1! ii##L1zz!}jj 266!9Q;.eeckT3t266: EE"IQXXa[1a!%%(+rE   r   )
|	ߌ?v
2R?r  g0$H?r  r  gO`?gՒXO?g	ߌ,?g8N8?)gHP?gQI?go_?)g9m4?g=U?gˡE?)g$C?ghs?gǺ?)g!uq?g%C?gS㥛?)gOec?gz,C?g	h"l?r   )r   rN   2   )r   r.  r  )r.  r   r  )r  r  r   )gJ#R<g^<gL[<gN=<g`$<)NNNr   rN   rN   )NNr   r   rN   r   )r  rP   )rp   r   r   rP   )rO   rP   r   rp   )rN   rO   rp   )rP   r   rn  F)rO   rP   rp   r  )r  l   m, l   sO l   U iOfYl   O_ r  )rN   r  d   ))r  rN   gDdVW?r  )r  rN   gU?r  )r
  rN   g/+?r.  )r  rN   Z_2?r  )}Ô%ITrN   r  r  )r  r  gzg#.@r  )r  r  gD:f,@r  )r  r  1>`,@r  )r  r  r  r  )r  r  g8d?b@r  )r  r  g-YҺa@r.  )r  r  ZGra@r  )r  r  r  r  )1r   r   r   r   	PDF_TESTSrQ   r   r   rV  rY  r\  rb  thread_unsafer9   ri  ro  rt  DEFAULT_ARGS_TESTSr{  r<   r   ARGS_SHAPES_TESTSr~  r  r  r  r  r  rp  r  r  r  r  r  r  r  r  r  r  r  r  r  rU   r  r  r  r  r   r   r   s   @rC   rQ  rQ    s|     FFFFFFFFFF	
 
A FF	

 	
	
1%P %$$$$	
 	 %%%	
 	
	
)K@ID [[5yA, B,
 [[5yA6 B6,'$ [[n5
45$ 6 6$&B 	$ 	AA1vAA/?C	AAQFaVaV,<a@
QtaVq!fq!f%5q9
Qq1a&Aq6Aq6"2A6
Q1a&1a&!4!Q1a&1a&1A1E
Q1a&1a&!1q!f1v1v.>B	 [[I/1#1# 
QB41#"
sAtqcUA&	2$1#B41#: [[I.0&0&;2)E
 [[Vg|%<=[[UL1[[TBBFF#34+ 5 2 >+

4 [[UI.' /' [[UI.+ /+-$6 [[UM2[[V &J K[[Z%78 8K 382 [[0 04-"N8$ [[UF+- ,-* [[T<0< 1<& [[0!266!Q<1CUK"BHHsAhB-@$A/7896	96
 [[	
$6%$6(9<, ,rE   rQ  c                     a  ] tR tRt o ]P
                  P                  R^^.^^
.^R!3^^.^^
.^ ]P                  ) 3R"^.^^
.^]P                  ) 3^^.R#^
.^]P                  3^^.^^..R$R%.R#R&..^^.]P                  ]P                  .3R"^.R#^
.^]P                  3^^.^
^.^]P                  3^^.^
R'.^]P                  3^^.^^
.R(]P                  3^^.^^
.^]P                  ) 3.
4      R 4       t
R tR tR t]P
                  P                  R. R)O^3. R*O^ 3^ ^ .^ 3^ .^ 334      R 4       t]P
                  P                  R^.^.^^3^^.^^
.^R	3^^.^ ^..R'^	.^^...^^
.^^.^^..R
R.^ R..3]P                  ! . ]R7      ]P                  ! . ]R7      ^ . 3^^.^^.^^ 3. R+O. R,O^R3.4      R 4       t]P
                  P                  R^^.^^
.^
^..^R	R.3^.^..^.^..^^.RR.3^.^...^.^..^^.RR..3^.^..^....^^.RR...3.4      R 4       tR tR tR tR tR tR tR tR tR tR tR tRtV tR # )-TestMultivariateHypergeomi  zx, m, n, expectedc                N    \         P                  ! WV4      p\        WTR R7       R# )rx  r  N)r   r  r   rZ   rf   ru  r   r   valss   &&&&& rC   r"  %TestMultivariateHypergeom.test_logpmf  s     6 &,,Q15T2rE   c                   \         P                  ! ^^.^
^.^R7      p\        P                  ! ^^^^
R7      p\        WRR7       \         P                  ! ^^.^^
.^
R7      p\        P                  ! ^^^
^R7      p\        WRR7       R# )rP   )rf   ru  r   )r  r   r   r@  r  r  N)r   r'  r!   r   r(  s   &  rC   test_reduces_hypergeom0TestMultivariateHypergeom.test_reduces_hypergeom  sx     &))QFr1gC}}qB!r2.%))QFr2h"E}}qB"3.rE   c                    \        ^^.^R7      pVP                  R^{R7      p\        VP                  ^ 4      VP                  4       RR7       R# )rP   ru  r   r  r   r  r  Nr   r   r   r   rZ   r   r   s   &  rC   r  "TestMultivariateHypergeom.test_rvs"  s@     $q!f2ff$Sf1RWWYT:rE   c                    \        ^^.^^
..^^	.R7      pVP                  R^{R7      p\        VP                  ^ 4      VP                  4       RR7       R# )rP   r  r   r  r  Nr  rO   r  r  s   &  rC   test_rvs_broadcasting/TestMultivariateHypergeom.test_rvs_broadcasting)  sK    #1v2w&7Aq6Bff)#f6RWWYT:rE   zm, nc                    \         P                  ! W4      p\        P                  ! V4      pVP	                  4       pW$V^ 8g  &   \        W44       R# rr  )r   r   r<   r=   r  r   )rZ   ru  r   r?   res_exs   &&&  rC   test_rvs_gh16171*TestMultivariateHypergeom.test_rvs_gh16171.  s?    
 %((.JJqMqAvS!rE   g zl?gQ?gE|?g
y?r   gzp?c                N    \         P                  ! WV4      p\        WTR R7       R# r  r  Nr   r'  r   r  s   &&&&& rC   rC  "TestMultivariateHypergeom.test_pmf9  s     " &))!2T2rE   g ?r   r   c                N    \         P                  ! WV4      p\        WTR R7       R# r  r  r  s   &&&&& rC   rF  /TestMultivariateHypergeom.test_pmf_broadcastingM  s      &))!2T2rE   c                j    \         P                  ! . RO^R7      p. RO. RO. RO.p\        WRR7       R# )	rP   r  r  r  N)rP   r   r  )gf_?&BUп疈Cx@ؿ)r  ggs>d?ZsK)r  r  g35?r   r   r   )rZ   rJ  r5  s   &  rC   rK  "TestMultivariateHypergeom.test_covZ  s0    %))J"=6668 	.rE   c                X   \         P                  ! ^^	.^
^..^^.R7      pRR	.R	R..RR
.R
R...p\        WRR7       \         P                  ! ^.^..^^.R7      pR..R...p\        W4RR7       \         P                  ! ^^	.^^.R7      pRR	.R	R..RR.RR...p\        WVRR7       R# )r   r  g?g(\?r  r  r   g333333?Ngg(\g333333r  rN  s   &      rC   rS  /TestMultivariateHypergeom.test_cov_broadcastinga  s    %))aVb"X,>1b'J..0.%))aS1#J1a&A".%))QFq"g>.'"Wf$568.rE   c                    \         P                  ! ^
^.^R7      p\        P                  ! ^^^
R7      p\        WRR7       R# )r  r  r   r   r@  r  r  N)r   r  r!   r   )rZ   var0var1s   &  rC   test_var"TestMultivariateHypergeom.test_varp  s4    %))RGq9}}rQ"-.rE   c                   \         P                  ! ^
^.^^.R7      p\         P                  ! ^
^.^R7      p\         P                  ! ^
^.^R7      p\        V^ ,          VRR7       \        V^,          VRR7       \         P                  ! ^
^.^
^..^^.R7      pRR.RR..p\        WERR7       \         P                  ! ^.^
..^^
.R7      pR.R..p\        WgRR7       R# )r  r  r  r  g̍3eY?gI{?r   N)r   r  r   )rZ   r  r  var2var3var4var5var6s   &       rC   test_var_broadcasting/TestMultivariateHypergeom.test_var_broadcastingv  s    %))RG1v>%))RGq9%))RGq9QD1QD1%))b!Wr2h,?Aq6JI&8(<=.%))aS2$KAr7Crd|.rE   c                    \         P                  ! ^
^.^R7      p\        P                  ! ^^^
R7      p\        V^ ,          VRR7       \         P                  ! ^^.^
R7      pRR.p\        W4RR7       R# )r  r  r  r  r  Ng      @r  )r   r   r!   r   rZ   mean0ra  r4  mean3s   &    rC   rb  #TestMultivariateHypergeom.test_mean  sd    &++r1g;qB/a%d3&++r1g<j)40rE   c                p    \         P                  ! ^^.^
^..^^.R7      pRR.RR..p\        WRR7       R# )	rP   r  r  r  Nr  r  gUUUUUU@gUUUUUU@)r   r   r   )rZ   r,  ra  s   &  rC   re  0TestMultivariateHypergeom.test_mean_broadcasting  sC    &++1vAw.?Aq6JH%
I'>?40rE   c                b   \         P                  ! . RO^ R7      p\        V. RO4       \         P                  ! . RO^R7      p\        V\        P                  \        P                  \        P                  .4       \         P                  ! . RO. R	O.^R7      p\        V\        P                  \        P                  \        P                  .. R
O.RR7       \         P                  ! \        P                  ! . \        R7      ^ R7      p\        V. 4       \        VP                  R8H  4       R# )r   r  FFg<r  r   Nr   r   r   r   rN   r   r   rl  )r   r   r   r   )
r   r   r   r<   r  r   r   rc  r   r>   r+  s   &    rC   test_mean_edge_cases.TestMultivariateHypergeom.test_mean_edge_cases  s    &++i1=UL)&++i1=URVVRVVRVV45&++y).DJ 8,G"	$ '++bhhr.EKUBu$%rE   c                f   \         P                  ! . RO^ R7      p\        V. RORR7       \         P                  ! . R	O^R7      p\        V\        P
                  \        P
                  \        P
                  .4       \         P                  ! . R	O. R
O.^R7      p\        V\        P
                  \        P
                  \        P
                  .. RO.RR7       \         P                  ! \        P                  ! . \        R7      ^ R7      p\        V. 4       \        VP                  R8H  4       R# )r   r  gؗҜ<r  r2  r   Nr   r3  r4  rl  r5  )
r   r  r   r   r<   r  r   rc  r   r>   )rZ   r  r  r#  r$  s   &    rC   test_var_edge_cases-TestMultivariateHypergeom.test_var_edge_cases  s    %))I;l7%))I;TBFFBFFBFF34%))Y	,BaH7F"	$ &))BHHRs,CqIT2

e#$rE   c                   \         P                  ! . RO^R7      p. RO. RO. RO.p\        WRR7       \         P                  ! . RO^ R7      p. RO. RO. RO.p\        W44       \         P                  ! \        P
                  ! . \        R7      ^ R7      p\        P
                  ! . \        P                  R7      P                  ^ ^ 4      p\        WVRR7       \        VP                  R	8H  4       R# )
rN   r  r2  r  r   Nr4  r3  r   r  )r   r   r   r   r<   r   rc  r?  r  r   r>   )rZ   cov0rJ  rO  rP  rQ  rR  s   &      rC   test_cov_edge_cases-TestMultivariateHypergeom.test_cov_edge_cases  s    %))I;lL9/%))I;lL9T %))BHHRs,CqIxx"**-55a;/

f$%rE   c                   ^p. ROp. RO. RO. RO. RO. RO.p\         P                  ! V\        R7      p\        W!4      p\	        VP                  V4      \        P
                  ! W2V4      4       \	        VP                  V4      \        P                  ! W2V4      4       \	        VP                  4       \        P                  ! W!4      4       \	        VP                  4       \        P                  ! W!4      4       R# )	rh  r   N)r   rn  rk     ri  rj  rl  rm  ro  )	r<   r=   rc  r   r   r'  r  r  r   )rZ   r   ru  rf   
mhg_frozens   &    rC   r  %TestMultivariateHypergeom.test_frozen  s    M=<)JJq$+A1

q).221;	=
))!,.55aA>	@
(*@*D*DQ*JK
(*@*D*DQ*JKrE   c                   \        \        \        P                  ^^
^4       \        \        \        P                  ^^
.^4       \        \        \        P                  ^^.^
.^4       \        \        \        P                  RR.^
^.^4       \        \        \        P                  ^^.RR.^4       \        \        \        P                  ^^.^
^.R4       R# )rp   g      @rl  g      %@g      /@N)r  rR   r   r'  	TypeErrorr  s   &rC   test_invalid_params-TestMultivariateHypergeom.test_invalid_params  s    j"8"<"<aQGj"8"<"<a"qIj"8"<"<q!frdANi!7!;!;c3Z2h	#i!7!;!;aVTlA	'i!7!;!;aV2h	%rE   r   Ngrt  ro   iir   i)r   r   r  r   r   )r   r   r   r   r   r>  )rp   r   r   ) r   r   r   r   rQ   r   r   r<   r  r  r"  r  r  r  r  r   rc  rC  rF  rK  rS  r   r(  rb  re  r6  r9  r=  r  rE  r   r   r   s   @rC   r  r    s    [[ VaWa+VaWa"&&)!Wq"gq266'*Vb"Xq"&&)!fq!fR2s)4Vbffbff%' !Wr2h266*Wr1gr266*Wr2hBFF+VaWb"&&)VaWa"&&)+	
43543	/;;
 [[V	13
Qqc1X& "	" [[S1#q!VaWa+1v1v"a1a& 12W1v1v&+&I79 XXb$bhhr&=q"EVaVQ"	1j1	
 3! 3 [[Vq"gBx(!i-CDcA3Z1#saVb"X6sQCj\QC!:1vRz:cA3ZQC5'QFr2hZL9		
33////11
&%&L	% 	%rE   r  c                   h  a  ] tR tRt o R tR t]P                  P                  RR4      R 4       t	R t
]P                  P                  RR4      ]P                  P                  RR4      R	 4       4       t]P                  P                  R
R4      R 4       tR t]P                  P                  R
R4      R 4       t]P                  P                  R
R4      R 4       t]P                  P                  R
R4      R 4       t]P                  P                  R
R4      ]P                  P                  R. ^ .34      ]P                  P                  R. ^ .34      R 4       4       4       t]P                  P                  RR4      R 4       tR t]P                  P                  R
R4      R 4       tRtV tR# )TestRandomTablei  c                @    \         P                  P                  R 4      # )l   OfE)r<   r   r   r  s   &rC   get_rngTestRandomTable.get_rng  s    yy$$%788rE   c                D   R p\         P                  ! \        VR7      ;_uu_ 4        \        ^^..^^.4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        ^^.^^..4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        ^R
.^^.4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        ^^.^R.4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        ^^.^^ .4       RRR4       Rp\         P                  ! \        VR7      ;_uu_ 4        \        RR.. RO4       RRR4       R	p\         P                  ! \        VR7      ;_uu_ 4        \        ^^.. RO4       RRR4       ^^.p. ROp\        P                  ! ^^.. RO4      w  rEp\        W$4       \        W54       V\        P                  ! V4      8X  g   Q hR#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELe; i  + '       g   i     EL:; i  + '       g   i     EL; i  + '       g   i     L; i)z`row` must be one-dimensionalrI   Nz`col` must be one-dimensionalz*each element of `row` must be non-negativez*each element of `col` must be non-negativez'sums over `row` and `col` must be equalz(each element of `row` must be an integer @z(each element of `col` must be an integerr   r   )rN   rN   rO   )r  r  rN   rO   rN   rN   )rQ   r	   rR   r%   _process_parametersr   r<   r   )rZ   r[   ru  rv  r  r  r   s   &      rC   test_process_parameters'TestRandomTable.test_process_parameters  s   1]]:W551a&Aq6* 6 2]]:W55!Q1a&* 6 ?]]:W55!R1a&) 6 ?]]:W55!Q!R) 6 <]]:W55!Q!Q( 6 =]]:W55#sY/ 6 =]]:W55!Q/ 6 !f22Aq69EaSSBFF3KA 655 655 655 655 655 655 65sS   H'H+'H?&I%I'$I;#JH(	+H<	?I	I$	'I8	;J	J	zscale,methodc                    \         P                  ! ^^.4      V,          p\         P                  ! . RO4      V,          p\        pVP                  W4V^R7      pVP                  W4R^R7      p\	        Wg4       R# )rN   methodr   NrO  )r<   r   r%   r   r   )rZ   r  rU  ru  rv  ctr   gots   &&&     rC   test_process_rvs_method_on_None/TestRandomTable.test_process_rvs_method_on_None  sc     hh1v&hhy!E)66#66BffSdf;X#rE   c                    ^^.p. ROpRp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! WRR7       RRR4       R#   + '       g   i     R# ; i)rN   z$'foo' not recognized, must be one ofrI   foo)rU  NrO  )rQ   r	   rR   r%   r   )rZ   ru  rv  r[   s   &   rC   $test_process_rvs_method_bad_argument4TestRandomTable.test_process_rvs_method_bad_argument  sG    !f 9]]:W55Se4 6555s   AA#	r  r  c                  aaaa V P                  4       p^^.o. ROo\        P                  ! SSRRVR7      pV'       d   \        SS4      M\        p\        YR'       d   RMR4      oV'       g   SoVVV3R loV'       d   V3R lMSp\        P
                  ! V^ RR	7      w  rxV! V4      p	\        V	\        V4      ,          VR
R7       V! \        V^ ,          4      4      p
\        W^ ,          4       VP                  RVP                  R,          ,           4      pV! V4      p	V	P                  R8X  g   Q h\        V	P                  ^ ,          4       FN  p\        V	P                  ^,          4       F+  pWV3,          pWV3,          pV! V4      p\        VV4       K-  	  KP  	  . RO. RO.p\        \        P                  ! VRR7      S4       V! V4      p	V	^ 8X  g   Q h. RO. RO.p\        \        P                  ! VRR7      S4       V! V4      p	V	^ 8X  g   Q hRp\        P                  ! \         VR7      ;_uu_ 4        V! ^.4       RRR4       Rp\        P                  ! \         VR7      ;_uu_ 4        V! R..4       RRR4       Rp\        P                  ! \         VR7      ;_uu_ 4        V! \        P"                  ..4       RRR4       Rp\        P                  ! \         VR7      ;_uu_ 4        V! R..4       RRR4       Rp\        P                  ! \         VR7      ;_uu_ 4        V! . RO.4       RRR4       Rp\        P                  ! \         VR7      ;_uu_ 4        V! ^^.^^..4       RRR4       R#   + '       g   i     ELC; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)rO   r  boyettr   rU  r   r  r'  c                    < S! V SS4      # r;   r   )rf   rv  original_methodru  s   &rC   rU  /TestRandomTable.test_pmf_logpmf.<locals>.method)  s    &q#s33rE   c                 <   < \         P                  ! S! V 4      4      # r;   )r<   r  )rf   rU  s   &rC   rg   1TestRandomTable.test_pmf_logpmf.<locals>.<lambda>+  s    q	*rE   Tr   return_countsr   r  rj   r   z$`x` must be at least two-dimensionalrI   Nz%`x` must contain only integral valuesr  z)`x` must contain only non-negative valuesz"shape of `x` must agree with `row`z"shape of `x` must agree with `col`rN   rP   r   )r  r  )r   rN   rN   )rO   rN   rP   r   r  )rN   rO   rO   r   rM   )rK  r%   r   rr   r<   uniquer   r   r   r   r  r>   r  r   rQ   r	   rR   r  )rZ   r  r  r   r   objr'  
unique_rvscountsrs  p2rvs_ndr  r  pijrvijqijrf   r[   rv  rU  rb  ru  s   &&&                @@@@rC   test_pmf_logpmfTestRandomTable.test_pmf_logpmf  s    lln!fsCd&.SB )/l3$L#h59$O4/2*YYs$G
 
OCHf37 jm$%R1 Y267Kww)###qwwqz"A1771:&1gd|$iS#&	 ' # 	"RVVAB'-FAvv 	"RVVAB'-FAvv 9]]:W55H 6 :]]:W55#L 6 :]]:W55"&&
O 6 >]]:W55"K 6 7]]:W55 6 7]]:W55!QQ  65) 655 655 65 65 65 655sH   
N:N3N.:O3O-O'N	N+	.N>	O	O$	'O8	rU  c                   V P                  4       p^^.p. ROp\        P                  ! W4RVVR7      p\        P                  ! W44      p\	        \
        P                  ! V4      \
        P                  ! V4      4       \        VP                  ^ 4      VRR7       \	        VP                  RR7      \
        P                  ! VR	4      4       \	        VP                  R
R7      \
        P                  ! VR4      4       R# )rO   r  r`  ro  r-  r   Nrh  r   r  r   )r  rP   )	rK  r%   r   r   r   r<   r   r   broadcast_to)rZ   rU  r   ru  rv  r   r   s   &&     rC   test_rvs_meanTestRandomTable.test_rvs_meanh  s     lln!fsd6,/1  *RVVD\266#;/T5SWW"W%rsI'FGSWW"W%rsI'FGrE   c                   V P                  4       p^^.p. R	Op\        P                  ! W#RRVR7      p\        P                  ! W#RRVR7      p\        P                  ! V^ R7      p\        P                  ! V^ R7      p\        WgRR7       R# )
rO   r  r_  r`  	patefieldr   {Gz?r-  Nrh  )rK  r%   r   r<   r  r   )rZ   r   ru  rv  r  r  rJ  r5  s   &       rC   test_rvs_covTestRandomTable.test_rvs_covw  sy     lln!fuX-02u[-02vvd#vvd#.rE   c           
        ^^.p. ROp\         P                  ! W#VV P                  4       R7      pVP                  R	8X  g   Q h\         P                  ! W#^VV P                  4       R7      pVP                  R
8X  g   Q h\	        WE^ ,          4       \         P                  ! W#^ VV P                  4       R7      pVP                  R8X  g   Q h\         P                  ! W#^VV P                  4       R7      pVP                  R8X  g   Q h\         P                  ! W#RVV P                  4       R7      pVP                  R8X  g   Q h\        VP                  ^^^4      VRR7       Rp	\        P                  ! \        V	R7      ;_uu_ 4        \         P                  ! W#RVV P                  4       R7       RRR4       \        P                  ! \        V	R7      ;_uu_ 4        \         P                  ! W#\        P                  VV P                  4       R7       RRR4       R#   + '       g   i     Lu; i  + '       g   i     R# ; i)rO   rT  r`  r  r  z/`size` must be a non-negative integer or `None`rI   Nrh  re  rM   )r   rO   rP   )r  rO   rP   )r   rp   )r   rp   rO   rP   r   )r%   r   rK  r>   r   r   r  rQ   r	   rR   r<   r  )
rZ   rU  ru  rv  r   rv2rv3rv4rv5r[   s
   &&        rC   test_rvs_sizeTestRandomTable.test_rvs_size  s   !f cv+/<<>;xx6!!! sa,0LLN<yyI%%%RQ  sa,0LLN<yyI%%% sb,0LLN<yyJ&&&sfV,0LLN<yyL(((B1-s? D]]:W55SBv*.,,.: 6 ]]:W55SBFF6*.,,.: 65	 65 655s   )H7H/H,	/I 	c                    ^^.p. ROp\         pVP                  W#RVV P                  4       R7      p\        P                  ! V^ RR7      w  rgVP                  WbV4      p\        V\        V4      ,          VRR7       R# )	rO   r_  r`  Trf  rz  r  Nrh  )r%   r   rK  r<   ri  r'  r   r   )	rZ   rU  ru  rv  rV  r   rk  rl  rs  s	   &&       rC   test_rvs_methodTestRandomTable.test_rvs_method  sv     !fffSF6"&,,.  2  YYs$G
 FF:C(CHf48rE   c                    . ROp. ROp\        W#4      pVP                  RWP                  4       R7      p\        P                  ! R\        V4      \        V4      34      p. RO. RO. RO.VR&   \        WV4       R# )r   r  rT  .Nrm  )rN   r   r   r   )r   r   r   r   r%   r   rK  r<   r   r   r   rZ   rU  ru  rv  r@  r   r   s   &&     rC   test_rvs_with_zeros_in_col_row.TestRandomTable.test_rvs_with_zeros_in_col_row  si    "UU4\\^UD88T3s8SX67%%%' 	R"rE   Nrv  ru  c                    \        W#4      pVP                  ^
WP                  4       R7      p\        P                  ! ^
\        V4      \        V4      34      p\        WV4       R# )r  rT  Nr  r  s   &&&&   rC   test_rvs_with_edge_cases(TestRandomTable.test_rvs_with_edge_cases  sK     "UU2f<<>UB88RS3s845R"rE   r   c                   ^ RI Hu Hp \        P                  ! ^^.\        P
                  R7      p\        P                  ! . RO\        P
                  R7      p\        VRV 24      p\        P                  ! V4      pV! W4V^V P                  4       4      pVP                  ^\        V4      \        V4      38X  g   Q h\        P                  ! V4      V8X  g   Q hR# )r   Nr   	rvs_rcontrO  )scipy.stats._rcontr.   _rcontr<   r   int64rr   r   rK  r>   r   )rZ   r   r  ru  rv  r   ntotresults   &&      rC   test_rvs_rcontTestRandomTable.test_rvs_rcont  s     	,+hh1vRXX.hhy1f	!o.vvc{StQ7||3s8SX6666vvf~%%%rE   c                   ^^.p. ROp\        WV P                  4       R7      pVP                  4       p\         P                  ! W4      p\	        WSP                  4       4       \         P
                  ! WAV4      p\	        WSP                  V4      4       \         P                  ! WAV4      p\	        WSP                  V4      4       R# )rO   r   Nrh  )r%   rK  r   r   r   r'  r  )rZ   ru  rv  r@  r<  r   s   &     rC   r  TestRandomTable.test_frozen  s    !f7$$S.Xvvx(##F5XuuV}-&&vC8Xxx/0rE   c                    ^^.p. ROp\        W#V P                  4       R7      p\         P                  ! W#^
VV P                  4       R7      pVP                  ^
VR7      p\        WV4       R# )rO   r   r`  )r   rU  Nrh  )r%   rK  r   r   )rZ   rU  ru  rv  r@  r   rW  s   &&     rC   test_rvs_frozenTestRandomTable.test_rvs_frozen  s\    !f7##C2f15AeeFe+X#rE   r   ))rN   r_  )r  ry  )TF)r_  ry  )Nr_  ry  r.  )r   r   r   r   rK  rQ  rQ   r   r   rX  r\  rr  rv  r{  r  r  r  r  r  r  r  r   r   r   s   @rC   rI  rI    s    9" H [[^@B$B$5 [[X}5[[UM2L 3 6L\ [[X'>?H @H/ [[X'>?': @':R [[X'>?9 @9( [[X'>?	# @	# [[X'DE[[UR!I.[[UR!I.# / / F# [[S&)& *& 1  [[X'>?$ @$rE   rI  c                    V P                   pR V n         V P                  ! VR^/  \        P                  ! V 4      pV P                  ! VR^/ p\        P                  ! V4      pVP                  ! VR^/ p\        WF4       W n         R# )r  r   N)r   r   pickledumpsloadsr   )distfnrA   r6  r   r0	unpickledr1s   &&     rC   check_picklingr    sy    
 DF
JJ1VA	T	"	"BQI		%1	%B rE   z2uses numpy global random state and monkey-patchingrd  c                  *   \         P                  ! ^4      p RV R&   RV R&   \        R.\        \         P                  ! R.4      3.\
        ^
V 3.\        ^
V 3.\        ^. RO3.\        R.\        R..pV F  w  r#\        W#4       \        W#4       K  	  R# )	rP   r.  r   Nr  r-  r   r  r  )r<   rU   r   r   r   r   r   r   r   r   r7   r  )r  distsr  rA   s       rC   test_random_state_propertyr    s    FF1IEE$KE$K	b!	RXXrd^&'	2u+	b%[!	q/*+	d	d#E #F1v$ rE   c                     a  ] tR tRt o ]P
                  P                  R. R0O4      ]P
                  P                  R. R1O4      R 4       4       t]P
                  P                  R^^.4      ]P
                  P                  R. R2O4      R 4       4       tR t	R	 t
R
 t]P
                  P                  RR3R4.4      R 4       t]P
                  P                  R^ R.4      R 4       t]P
                  P                  R]P                  ]P                   .4      R 4       t]P
                  P                  R]P                  ]P                   .4      R 4       t]P
                  P                  R]P(                  ! . R5O4      ]P(                  ! . R5O4      RR3]P(                  ! . R6O4      ]P(                  ! . R7O4      RR3]P(                  ! . R5O4      ]P(                  ! . R5O4      ^dR3]P(                  ! . R6O4      ]P(                  ! . R7O4      ^dR3]P(                  ! . R5O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R.4      RR3]P(                  ! . R6O4      ]P(                  ! . R5O4      RR3]P(                  ! . R8O4      ]P(                  ! . R8O4      RR3]P(                  ! . R8O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R^ R.4      RR3]P(                  ! . R8O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R^ R.4      RR 3.	4      R! 4       t]P
                  P                  R]P(                  ! . R5O4      ]P(                  ! . R5O4      RR93]P(                  ! . R6O4      ]P(                  ! . R7O4      RR:3]P(                  ! . R5O4      ]P(                  ! . R5O4      ^dR"3]P(                  ! . R6O4      ]P(                  ! . R7O4      ^dR;3]P(                  ! . R5O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R.4      RR<3]P(                  ! . R6O4      ]P(                  ! . R5O4      RR#3]P(                  ! . R8O4      ]P(                  ! . R8O4      RR$3]P(                  ! . R8O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R^ R.4      RR=3]P(                  ! . R8O4      ]P(                  ! ]P*                  ! R4      ]P*                  ! R4      R^ R.4      RR>3.	4      R% 4       t]P
                  P                  R&. R?O4      R' 4       t]P
                  P                  R]P                  ]P                   .4      R( 4       tR) t]P
                  P                  R. R@O4      ]P
                  P                  R*. RAO4      R+ 4       4       tR, tR- tR. tR/tV t R# )BTestVonMises_Fisheri-  r   r   Nc                   \         P                  P                  R 4      p\         P                  ! V3^\         P                  ! V4      ,          4      p\        V^VR7      pVP                  V4      p\         P                  ! V4      \         P                  ! V4      rVP                  WxVR7      P                  p	VP                  V	8X  g   Q h\         P                  P                  VRR7      p
\        V
R4       R# r$  )r<   r   r   r
  r$  r'   r   r   rU   r   r>   r   r   r   )rZ   r   r   r   r  vmf_distr  r   r   r'  r(  s   &&&        rC   r!   TestVonMises_Fisher.test_samples.  s     ii##$78WWcWan-"2qs3,,t$HHSM266#;c000FLL}}...		wR0r"rE   kappac                    \         P                  P                  R 4      p\         P                  ! V3^\         P                  ! V4      ,          4      p\        WBVR7      pVP                  ^
4       R# )r%  r   N)r<   r   r   r
  r$  r'   r   )rZ   r   r  r   r  r  s   &&&   rC    test_sampling_high_concentration4TestVonMises_Fisher.test_sampling_high_concentration<  sO     ii##$78WWcWan-"237RrE   c                    \         P                  ! R4      pRp\        P                  ! \        VR7      ;_uu_ 4        \        V^4       RRR4       R#   + '       g   i     R# ; i)rO   z%'mu' must have one-dimensional shape.rI   Nr:  r<   rT   rQ   r	   rR   r'   rZ   r  r'  s   &  rC   test_two_dimensional_mu+TestVonMises_Fisher.test_two_dimensional_muE  s>    WWV_5]]:S11B" 2111   AA%	c                    \         P                  ! R4      pRp\        P                  ! \        VR7      ;_uu_ 4        \        V^4       RRR4       R#   + '       g   i     R# ; i)rO   z%'mu' must be a unit vector of norm 1.rI   Nr  r  r  s   &  rC   test_wrong_norm_mu&TestVonMises_Fisher.test_wrong_norm_muK  s>    WWU^5]]:S11B" 2111r  c                    \         P                  ! R4      pRp\        P                  ! \        VR7      ;_uu_ 4        \        V^4       RRR4       R#   + '       g   i     R# ; i)rN   z$'mu' must have at least two entries.rI   Nr<  r  r  s   &  rC   test_one_entry_mu%TestVonMises_Fisher.test_one_entry_muQ  s>    WWU^4]]:S11B" 2111r  c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        ^^ .V4       RRR4       R#   + '       g   i     R# ; i)z"'kappa' must be a positive scalar.rI   NrQ   r	   rR   r'   rZ   r  r'  s   && rC   test_kappa_validation)TestVonMises_Fisher.test_kappa_validationW  s5    2]]:S11QFE* 2111   A  A	r   c                    R p\         P                  ! \        VR7      ;_uu_ 4        \        ^^ .V4       RRR4       R#   + '       g   i     R# ; i)zFor 'kappa=0' the von Mises-Fisher distribution becomes the uniform distribution on the sphere surface. Consider using 'scipy.stats.uniform_direction' instead.rI   Nr  r  s   && rC   test_kappa_zero#TestVonMises_Fisher.test_kappa_zero]  s9     ]]:S11QFE* 2111r  rU  c                    \         P                  ! . RO4      pRp\        P                  ! \        VR7      ;_uu_ 4        V! V^^ .^4       RRR4       R#   + '       g   i     R# ; i)r   znThe dimensionality of the last axis of 'x' must match the dimensionality of the von Mises Fisher distribution.rI   Nr   r   r   r<   r   rQ   r	   rR   rZ   rU  rf   r'  s   &&  rC   test_invalid_shapes_pdf_logpdf2TestVonMises_Fisher.test_invalid_shapes_pdf_logpdfg  sK     HH[! ]]:S111q!fa  2111   AA'	c                    \         P                  ! R R.4      pRp\        P                  ! \        VR7      ;_uu_ 4        V! V^^ .^4       RRR4       R#   + '       g   i     R# ; i)r.  r   8'x' must be unit vectors of norm 1 along last dimension.rI   Nr  r  s   &&  rC   test_unnormalized_input+TestVonMises_Fisher.test_unnormalized_inputq  sK     HHc2YH]]:S111q!fa  2111r  zx, mu, kappa, referencerc  g0_?g7m0_?gLI/@gFK:h*7g\(\?rz  i  g3pB>g7Ks@go齿@gW+x\(?r  r   gS-c                T    \        W#4      P                  V4      p\        WTR R7       R# )r  r  N)r'   r   r   )rZ   rf   r  r  	referencer   s   &&&&& rC   test_pdf_accuracy%TestVonMises_Fisher.test_pdf_accuracy  s#    4 b(,,Q/U3rE   gJ8j#@g1VV@g|'@c                T    \        W#4      P                  V4      p\        WTR R7       R# )r.  r  N)r'   r   r   )rZ   rf   r  r  r  r   s   &&&&& rC   test_logpdf_accuracy(TestVonMises_Fisher.test_logpdf_accuracy  s#    4 !+22156rE   zdim, kappa, referencec                    \         P                  ! V3^\         P                  ! V4      ,          4      p\        WB4      P	                  4       p\        WSRR7       R# )rN   g+=r  N)r<   r
  r$  r'   r   r   )rZ   r   r  r  r  r   s   &&&&  rC   test_entropy_accuracy)TestVonMises_Fisher.test_entropy_accuracy  s?     WWcWan-!",4467rE   c                   Rp\         P                  P                  R4      p\        ^4      P	                  W#R7      p\         P
                  ! R^\         P                  ! ^4      ,          4      p^pV! WEV4      pVP                  V8X  g   Q h\        V^ ,          4       FC  p\        V^,          4       F*  p	V! WHV	R3,          WV4      p
\        WW3,          RR7       K,  	  KE  	  R# )	rO   r%  r   r   r  r  Nr:  r  )
r<   r   r   r&   r   r
  r$  r>   r  r   )rZ   rU  	testshaper   rf   r  r  
result_allr  r  current_vals   &&         rC   r  %TestVonMises_Fisher.test_broadcasting  s     	ii##$78a $$Y$AWWUAbggajL)A5)
9,,,y|$A9Q<($Q!QwZ;-=EJ ) %rE   c                j   \         P                  P                  R 4      p\         P                  ! ^ ^.4      p\         P                  ! V^,          V^ ,          4      p^p\        W$4      p\        W4R7      p\        ^4      P                  ^
VR7      p\         P                  ! VR,          VR,          4      p\        VP                  4       VP                  4       4       \        VP                  V4      VP                  V4      4       \        VP                  V4      VP                  V4      4       R# )r%  )r  r  r   N)r   rN   r   r   )r<   r   r   r   r0  r'   r)   r&   r   r   r   r   r   )	rZ   r   r  mu_angler  vmfvonmises_distvectorsr7  s	   &        rC   test_vs_vonmises_2d'TestVonMises_Fisher.test_vs_vonmises_2d  s     ii##$78XXq!f::beRU+b( X;#A&**2C*@GDM74=9--/?))&137773CD,,V4cjj6IJrE   zkappa, mu_tol, kappa_tolc                   \         P                  ! V3^\         P                  ! V4      ,          4      p\        WR4      p\         P                  P                  R4      pRpVP                  WR7      p	\        P                  ! V	4      w  r\         P                  ! VP                  V
4      4      p\        VRV^ R7       \        W+VR7       R# )rN   r%  r  r   r   r  r  N)r<   r
  r$  r'   r   r   r   r  arccosr  r   )rZ   r   r  mu_tol	kappa_tolr  r  r   rn  r  mu_fit	kappa_fitangular_errors   &&&&&        rC   test_fit_accuracy%TestVonMises_Fisher.test_fit_accuracy  s     WWcWan-"2-ii##$78	,,y,;+//8		"&&.1rQ?y9rE   c                    \         P                  ! R4      pRp\        P                  ! \        VR7      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)rP   z'x' must be two dimensional.rI   Nr  )r<   r   rQ   r	   rR   r'   r  rZ   rf   r'  s   &  rC   #test_fit_error_one_dimensional_data7TestVonMises_Fisher.test_fit_error_one_dimensional_data  sB    HHUO,]]:S11" 2111   AA/	c                    \         P                  ! R4      pRp\        P                  ! \        VR7      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)rP   r  rI   Nrd  )r<   rT   rQ   r	   rR   r'   r  r  s   &  rC    test_fit_error_unnormalized_data4TestVonMises_Fisher.test_fit_error_unnormalized_data  sB    GGFOH]]:S11" 2111r  c                
   \         P                  ! . RO4      p^p\        W4      p\        WRR7      pVP                  RR7      p\        P                  ! WRR7      pVP                  4       p\	        WV4       \	        WW4       R# )r   r  r   r   N)r   r   rN   )r<   r   r'   r   r   )rZ   r  r  r  r  r  r  r  s   &       rC   r-  ,TestVonMises_Fisher.test_frozen_distribution   si    XXi  +%bc:zzsz+""23? T T rE   r   )rO   rP   r   r   r<  )g  4&kCr  gꌠ9Y>)Fr   )rp   rP   )r   r   r   r  )r   r   r   )r   r   r   r   r   g[d6U?g1*?g=fNXg][,gmF&!geh))rP   rc  g?@)rP   r  gp&F)rp   rE  gT;ӷ&)r%  rN   goZ@)rO   rP   r   ))rN   ro  ro  )r  r  r  )r  {Gzt?rz  )r  r  rz  )!r   r   r   r   rQ   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   s   @rC   r  r  -  s    [[UL1[[V%9:
# ; 2
# [[UQF+[[W&89 : ,### [[Wr6l3+ 4+
 [[Wq"g.+ /+ [[X(;(;(7(>(>(@ A!A! [[X(;(;(7(>(>(@ A!A!$ [[6!xx5rxx7M#%79!xx4bhh|6L#%8:!xx5rxx7M"$68!xx4bhh|6L"$9;!xx5!xxr(JK#%:<  "xx4bhh|6L#%68!xx(<=!xx(<=#%79  "xx(<=!xxr)*B)0  1#%;=  "xx(<=!xxrwws|R)*B)0  1#%;=)>?243?24" [[6!xx5rxx7M#%8:!xx4bhh|6L#%8:!xx5rxx7M"$57!xx4bhh|6L"$68!xx5!xxr(JK#%8:  "xx4bhh|6L#%68!xx(<=!xx(<=#%79  "xx(<=!xxr)*B)0  1#%79  "xx(<=!xxrwws|R)*B)0  1#%8:);<273<27$ [[4:;
8;
8
 [[X(;(;(7(>(>(@ AKAKK [[UI.[[723
	:3 /	:##! !rE   r  c                   z  a  ] tR tRt o ]R 4       tR tR tR tR t	R t
]P                  P                  RR	R
.4      R 4       t]P                  P                  RRR.4      R 4       tR tR t]P                  P                  RR	R
.4      R 4       t]P                  P                  R. RO4      R 4       tRtV tR# )TestDirichletMultinomiali.  c                    \         P                  P                  R 4      pVP                  ^ ^d^R7      pVP	                  ^^V^3R7      pVP                  RR7      pW!W5V3# )   t7)r   r   r   )r<   r   r   r   r  r   )rZ   ru  r   rQ  rf   r   s   &&    rC   
get_params#TestDirichletMultinomial.get_params/  s_    ii##$56As+LLBaVL,EErENu""rE   c                   \         P                  P                  R 4      pVP                  ^ ^d^
4      pVP	                  ^ ^
^
4      p\         P
                  ! VRR7      p\        W$4      p\        VP                  V4      \        P                  ! W2V4      4       \        VP                  V4      \        P                  ! W2V4      4       \        VP                  4       \        P                  ! W$4      4       \        VP                  4       \        P                  ! W$4      4       \        VP                  4       \        P                  ! W$4      4       R# )r   r   Nr   )r<   r   r   r   r  r   r(   r   r  r'  r   r  r   )rZ   r   rQ  rf   r   r@  s   &     rC   r  $TestDirichletMultinomial.test_frozen7  s    ii##$56AsB'LLB#FF12!%+QXXa["7">">q"KLQUU1X4881EFQVVX499%CDQUUW377ABQUUW377ABrE   c                   \         P                  ! . RO4      p\         P                  ! V4      p\         P                  ! . RO4      p\        P                  ! WV4      p\        P
                  ! WV4      pRp\        WF4       \        V\         P                  ! V4      4       VP                  VP                  u;8X  d	   R8X  g   Q h Q h\         P                  P                  R4      pVP                  ^ ^d^
4      pVP                  ^ ^
^
4      p\         P                  ! VR	R7      p\        W24      P	                  V4      p\        P
                  ! WV4      pRp\        WF4       \        V\         P                  ! V4      4       R# )
rN   gp.U.?r   r   g+T<NrM   rP   r   rp   r   r   )r<   r   r   r(   r'  r  r   r  r>   r   r   r   r  )rZ   rf   r   rQ  r?   logresr@   r   s   &       rC   test_pmf_logpmf_against_R2TestDirichletMultinomial.test_pmf_logpmf_against_RE  s"   
 HHYFF1I##''!4&--a:!!s,yyFLL.B..... ii##$56AsB'LLB#FF12#E-11!4&--a:"!s,rE   c                z   V P                  ^4      w  rr4pV^,          p\        \        W44      P                  V4      ^ 4       \        \        W44      P	                  V4      \
        P                  ) 4       V P                  ^
4      w  rr4pVP                  ^
R7      R8  p\
        P                  ! WV,          ^,          4      WV&   \        \        W44      P                  V4      V,          ^ 4       \        \        W44      P	                  V4      V,          \
        P                  ) 4       \
        P                  ! \        W44      P                  V4      V( ,          ^ 8  4      '       g   Q h\
        P                  ! \        W44      P	                  V4      V( ,          \
        P                  ) 8  4      '       g   Q hR# )rN   r   r.  N)
r  r   r(   r'  r  r<   r  r   roundr  )rZ   r   ru  rQ  r   rf   r  s   &      rC   test_pmf_logpmf_support0TestDirichletMultinomial.test_pmf_logpmf_supportd  sN    #ooa0!	Q*5488;Q?*54;;A>H"oob1!JJBJ#%xxq!*5488;A>B*54;;A>qABFF7Kvv+E599!<aR@1DEEEEvv+E5<<Q?CrvvgMNNNNrE   c                   ^p^
.p\         P                  ! V.4      p\        W!4      p\        VP	                  V4      ^4       \        VP	                  V^,           4      ^ 4       \        VP                  V4      ^ 4       \        VP                  V^,           4      \         P                  ) 4       \        VP                  4       V4       \        VP                  4       ^ 4       \        VP                  4       ^ 4       R# )r   N
r<   r=   r(   r   r'  r  r  r   r  r   rZ   r   rQ  rf   r   s   &    rC   test_dimensionality_one0TestDirichletMultinomial.test_dimensionality_onet  s    JJsO$U.TXXa[!$TXXac]A&T[[^Q'T[[1%w/TYY[!$TXXZ#TXXZ#rE   c                B   ^ p\         P                  ! RR.4      p\         P                  ! ^ ^ .4      p\        W!4      p\        VP	                  V4      ^4       \        VP	                  V^,           4      ^ 4       \        VP                  V4      ^ 4       \        VP                  V^,           4      \         P                  ) 4       \        VP                  4       ^ ^ .4       \        VP                  4       ^ ^ .4       \        VP                  4       ^ ^ .^ ^ ..4       R# )r   r   Nr  r  s   &    rC   test_n_is_zero'TestDirichletMultinomial.test_n_is_zero  s    

B8$JJ1v$U.TXXa[!$TXXac]A&T[[^Q'T[[1%w/TYY[1a&)TXXZ!Q(TXXZ1a&1a&!12rE   method_namer'  r  c                
   V P                  ^d4      w  r#rEp\        \        WE4      V4      p\        \        P                  ! V.VP
                  O5!  V4      pV! V4      p	V! VP
                  ^ ,          4      p
\        W4       R# )r  Nr  rr   r(   r.   	betabinomr   r   rZ   r  r   ru  rQ  r   rf   rU  
ref_methodr?   r@   s   &&         rC   test_against_betabinom_pmf3TestDirichletMultinomial.test_against_betabinom_pmf  sj    "ooc2!.u8+FU__Q99;G
QiQ !rE   r   r  c                    V P                  ^d4      w  r#rEp\        \        WE4      V4      p\        \        P                  ! V.VP
                  O5!  V4      pV! 4       R,          p	V! 4       p
\        W4       R# )r  Nr  r  r  s   &&         rC   test_against_betabinom_moments7TestDirichletMultinomial.test_against_betabinom_moments  sa    "ooc2!.u8+FU__Q99;G
htnl!rE   c                   \         P                  P                  R 4      p^pVP                  ^^d4      pVP                  VR7      ^
,          p\	        WC4      pRpVP                  WFR7      pVP                  W7VR7      p\        VP                  4       \         P                  ! V^ R7      RR7       \        VP                  4       \         P                  ! V^ R7      RR7       VP                  4       P                  VP                  4       P                  u;8X  d
   V38X  g   Q h Q hVP                  4       p	V	P                  W"38X  g   Q h\        V	\         P                  ! VP                  4      RR7       \        \         P                  ! V	4      VP                  4       4       \         P                  ! \         P"                  P%                  V	4      ^ ,          ^ 8  4      '       g   Q hR# )	r   r   r_  r   r  r  r  rz  N)r<   r   r   r  r(   r   r   r   r   r  r>   r   r   r   rq   r  r   r   r   )
rZ   r   r   r   rQ  r   ru  rs  rf   r   s
   &         rC   r  %TestDirichletMultinomial.test_moments  s^   ii##$56LLC 


$r)$U. MM%M(OOAqO)		RWWQQ%7dC
BFF11$5DAyy{  DHHJ$4$4>>>>>>hhjyySJ&&&RVVACC[t4RWWS\488:.vvell'',Q/!34444rE   c                f   \         P                  ! . RO4      p\         P                  ! V4      p\         P                  ! . R	O4      pRp\        \        VR7      ;_uu_ 4        \
        P                  ! . ROW24       RRR4       \        \        VR7      ;_uu_ 4        \
        P                  ! . ROW24       RRR4       Rp\        \        VR7      ;_uu_ 4        \
        P                  ! V. ROV4       RRR4       \        \        VR7      ;_uu_ 4        \
        P                  ! V. ROV4       RRR4       Rp\        \        VR7      ;_uu_ 4        \
        P                  ! WR4       RRR4       \        \        VR7      ;_uu_ 4        \
        P                  ! WR
4       RRR4       \         P                  ! . RO4      p\         P                  ! . R	O4      pRp\        \        VR7      ;_uu_ 4        \
        P                  ! WVVP                  4       4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELd; i  + '       g   i     EL<; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)rN   z,`x` must contain only non-negative integers.rI   Nz*`alpha` must contain only positive values.z#`n` must be a non-negative integer.ǧH@z&`x` and `alpha` must be broadcastable.rM   r  r   )rN   r   rP   )rN   rN  rP   )rP   r   r   )rP   r   r   )rN   rO   rP   r   )r<   r   r   r  rR   r(   r  )rZ   x0n0alpha0textrf   rQ  s   &      rC   r\   .TestDirichletMultinomial.test_input_validation  s   XXi VVBZ)$=:T22!((V@ 3:T22!((fA 3 <:T22!((Y; 3:T22!((Z< 3 5:T22!((T: 3:T22!((R8 3 HH\"#7:T22!((1557; 32) 322222 322222 32222 322sT   "H(H<II$I8J8&J(H9	<I	I!	$I5	8J		J	J0	rU  c           	        \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! ^.^.^..4      p\         P                  ! . RO. RO.4      P                  R4      p\        \        V4      pV! WBV4      pVP
                  R	8X  g   Q h\        \        V4      4       F  p\        \        V4      4       Fy  p\        \        V4      4       F^  pWVWx3,          p	V! WF,          P                  4       W(,          P                  4       W7,          P                  4       4      p
\        W4       K`  	  K{  	  K  	  R# )
rP   Nr  r  rp   rp   r   r%  rn  r  rM   )rO   rO   rP   )rO   rN   rN   rP   )rO   rP   r   )
r<   r   r  rr   r(   r>   r  r   r   r   )rZ   rU  rQ  r   rf   r?   r  r  r  res_ijkr@   s   &&         rC   test_broadcasting_pmf.TestDirichletMultinomial.test_broadcasting_pmf  s    )Y	:FGHHqcA3_%HHi+,44\B.7Qq!yyI%%%s1vA3q6]s5z*A!Q'lG 1A1A1CQT\\^TC#G1 + # rE   c                   \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! ^.^.^..4      p\        \        V4      pV! W#4      pVR8w  d   VP                  R8X  g   Q hR'       g   Q h\        \        V4      4       Fd  p\        \        V4      4       FI  pWVV3,          pV! W',          P                  4       W6,          P                  4       4      p	\        W4       KK  	  Kf  	  R# )	rP   r   Nr  r  r*  r+  )rP   r   rP   )rP   r   rP   rP   )	r<   r   rr   r(   r>   r  r   r   r   )
rZ   r  rQ  r   rU  r?   r  r  r,  r@   s
   &&        rC   test_broadcasting_moments2TestDirichletMultinomial.test_broadcasting_moments  s    )Y	:FGHHqcA3_%.<U)4)=syyI%OO<OOs1vA3u:&d)UX--/@- ' rE   r   N)r   r  r   )r   r   r   r   rj  r  r  r  r  r  r  rQ   r   r   r  r  r  r\   r-  r0  r   r   r   s   @rC   r  r  .  s     # #C->O $3 [[]UH,=>" ?" [[]VUO<" ="5,<< [[Xx'892 :2 [[],BC
. D
.rE   r  c                   N  a  ] tR tRt o R tR tR tR tR t]	P                  P                  ]	P                  P                  ^
4      R 4       4       t]	P                  P                  R]P                   ]P"                  ]P$                  ]P&                  .4      R	 4       tR
tV tR# )TestNormalInverseGammai  c           	     z  a \         P                  P                  R 4      pVP                  ^4      w  r#rE\        P                  ! W#WE4      o\        P
                  ! ^V,          V^\         P                  ! WC,          V,          4      ,          R7      p\         P                  ! R^^4      p\        V3R l^ \         P                  V3R7      pVP                  V4      p	\        VP                  V	4       SP                  RVR7      p\        P                  ! V^ ,          VP                  4      w  rVR8  g   Q hR# )	   &( r  c                 &   < SP                  W4      # r;   r   )r6  rf   norm_inv_gammas   &&rC   rg   8TestNormalInverseGamma.test_marginal_x.<locals>.<lambda>      ^%7%7%>rE   rA   r  r   r   NrG  )r<   r   r   r.   normal_inverse_gammarF  r$  rZ  r/   r  r   r   r  r   ks_1sampr   )rZ   r   r  lmbdar5  r6  rF  rf   r?   r@   r   r1  r8  s   &           @rC   test_marginal_x&TestNormalInverseGamma.test_marginal_x  s     ii##J/**Q-133BqDGGAaCRqQ)?'?@ KKAr">266QRPTUeeAhc*   e# >NN3q61551	||rE   c                6  a \         P                  P                  R 4      pVP                  ^4      w  r#rE\        P                  ! W#WE4      o\        P
                  ! WER7      p\         P                  ! R^
^
4      p\        V3R l\         P                  ) \         P                  V3R7      pVP                  V4      p	\        VP                  V	4       SP                  RVR7      p\        P                  ! V^,          VP                  4      w  rVR8  g   Q hR# )r5  r  r   c                 &   < SP                  W4      # r;   r7  )rf   r6  r8  s   &&rC   rg   9TestNormalInverseGamma.test_marginal_s2.<locals>.<lambda>  r:  rE   r;  r  r   N)r<   r   r   r.   r<  r   rZ  r/   r  r   r   r  r   r=  r   )rZ   r   r  r>  r5  r6  	inv_gammar6  r?   r@   r   r1  r8  s   &           @rC   test_marginal_s2'TestNormalInverseGamma.test_marginal_s2  s     ii##J/**Q-133BqDNN1.	 [[b"%>wbU4mmBc*   e# >NN3q69==9	||rE   c                ~   \         P                  P                  R 4      pVP                  R4      R,
          w  r#rEVP                  RR7      R,
          w  rg\        P                  ! W#WE4      P                  Wg4      p\        P                  P                  WgW#WE4      p	\        V\         P                  ! V	4      4       R# )r5  r  r   N)r   r  )rO   r  )	r<   r   r   r.   r<  r   r   r   r  )
rZ   r   r  r>  r5  r6  rf   r6  r?   r@   s
   &         rC   test_pdf_logpdf&TestNormalInverseGamma.test_pdf_logpdf&  s    ii##J/**W-41


(4/((A9==aD((//r!GRVVC[)rE   c                   \         P                  P                  R 4      pVP                  ^4      w  r#rEVP                  ^4      w  rg\        P                  ! \         P
                  W4V4      P                  Wg4      p\        V\         P
                  4       \        P                  ! VRWE4      P                  Wg4      p\        V\         P
                  4       \        P                  ! W#^ V4      P                  Wg4      p\        V\         P
                  4       \        P                  ! W#VR4      P                  Wg4      p\        V\         P
                  4       \        P                  ! W#WE4      P                  VR4      p\        V^ 4       \        P                  ! VR\         P
                  .WE4      P                  VR4      p\        V\         P
                  4       \        P                  ! VRWE4      P                  4       p\        V\         P
                  \         P
                  34       \        P                  ! W#RV4      P                  4       p\        V\         P
                  \         P
                  34       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! W#VR4      P                  4        RRR4       R#   + '       g   i     R# ; i)r5  zDomain error in arguments...rI   Nr   )r<   r   r   r.   r<  r  r   r   r   r  rQ   r	   rR   r   )	rZ   r   r  r>  r5  r6  rf   r6  r?   s	   &        rC   test_invalid_and_special_cases5TestNormalInverseGamma.test_invalid_and_special_cases/  s   ii##J/**Q-1

1((1=AA!HS"&&!((R6::1AS"&&!((Aq9==aDS"&&!((Ar:>>qES"&&!((A9==aDS! ((b"&&\1@DDQKS"&&!((R6;;=S266266*+((B:>>@S266266*+]]:-KLL&&r!R8<<> MLLLs   "'KK$	c                   \         P                  P                  R 4      pVP                  ^4      pVP                  R4      ^,           pVP                  R4      pVP                  R4      pVP                  R	4      pVP                  R
4      p\        P                  ! WTW24      p\         P
                  ! WvWTW24      p	V	 U
u. uF  p
\         P                  ! V
4      NK  	  pp
VP                  Wv4      pVP                  V	^ ,          P                  8X  g   Q h\        VP                  4       \        P                  P                  ! V!  4       VP                  Wv4      pVP                  V	^ ,          P                  8X  g   Q h\        VP                  4       \        P                  P                  ! V!  4       \         P
                  ! WTW24      p	V	 U
u. uF  p
\         P                  ! V
4      NK  	  pp
VP                  4       pV^ ,          P                  V	^ ,          P                  8X  g   Q h\        V^ ,          P                  4       V^,          P                  4       3\        P                  P                  ! V!  4       VP                  4       pV^ ,          P                  V	^ ,          P                  8X  g   Q h\        V^ ,          P                  4       V^,          P                  4       3\        P                  P                  ! V!  4       Rp\         P                  P                  R4      pVP                  WR7      p\         P                  P                  R4      pRp\        P                  P                  ! VRVRV/ p\        V^ ,          P                  V4      V^,          P                  V4      3V4       R# u up
i u up
i )r5  l   Mr   r   r   N)rP   rN   )r   rN   rN   )rp   rN   rN   rN   )r   rN   rN   rN   rN   )r   rN   rN   rN   rN   rN   )r   rp   r   rP   rO   )r   x   )r<   r   r   r.   r<  broadcast_arraysrL  r   r>   r   r   r   r  r   r  )rZ   r   r6  r5  r>  r  r6  rf   r   broadcastedarrbroadcasted_raveledr?   r   r>   r@   s   &               rC   r  (TestNormalInverseGamma.test_broadcastingQ  s    ii##J/JJqMJJv"

9%ZZ%ZZ(JJ)*))"Q: ))!AA8CDrxx}DhhqoyyKN00000		22668KL	N kk! yyKN00000		2299;NO	Q ))"Q:8CDrxx}Diik1v||{1~33333QQ822779LM	O hhj1v||{1~33333QQ822668KL	N ii##M2hhDh3ii##M2((,,.A ? ?:=?Q.Au0EFLE E Es    OOc                6  a \         P                  P                  R 4      pVP                  ^4      w  r#rEV^,          p\        P                  ! W#WE4      oSP                  4       p\        V3R l\         P                  ) \         P                  ^ \         P                  4      p\        V^ ,          V^ ,          RR7       \        V3R l\         P                  ) \         P                  ^ \         P                  4      p\        V^,          V^ ,          RR7       R# )r5  c                 4   < SP                  W4      V,          # r;   r7  r6  rf   r   s   &&rC   rg   5TestNormalInverseGamma.test_moments.<locals>.<lambda>  s    DHHQOa$7rE   rx  r  c                 4   < SP                  W4      V ,          # r;   r7  rV  s   &&rC   rg   rW    s    DHHQOb$8rE   N)	r<   r   r   r.   r<  r   r4   r  r   )	rZ   r   r  r>  r5  r6  r?   r@   r   s	   &       @rC   r  #TestNormalInverseGamma.test_moments  s     ii##J/**Q-1	Q))"Q:iik7"&&"&&!RVVTAAT28266'2661bffUAAT2rE   r   c                   \         P                  R 8  d   \        P                  ! R4       \         P                  P                  R4      pVP                  ^^
^R7      P                  V4      w  r4rVrx\         P                  ! RV4      p	\        P                  ! WVWx4      p
V
P                  4       ^ ,          P                  V	8X  g   Q hV
P                  4       ^,          P                  V	8X  g   Q hV
P                  4       ^ ,          P                  V	8X  g   Q hV
P                  4       ^,          P                  V	8X  g   Q hV
P                  4       ^ ,          P                  V	8X  g   Q hV
P                  4       ^,          P                  V	8X  g   Q hV
P                  W44      P                  V	8X  g   Q hV
P!                  W44      P                  V	8X  g   Q hR# )2z*Scalar dtypes only respected after NEP 50.r5  r   r   N)r<   __version__rQ   r   r   r   r   astyperesult_typer.   r<  r   r   r   r  r   r   )rZ   r   r   rf   r6  r  r>  r5  r6  	dtype_outr   s   &&         rC   
test_dtype!TestNormalInverseGamma.test_dtype  sd   >>CKKDEii##J/!$Q!;!B!B5!Ir!NN3.	))"Q:xxz!}""i///xxz!}""i///yy{1~##y000yy{1~##y000xxz!}""i///xxz!}""i///{{1!''9444xx$$	111rE   r   N)r   r   r   r   r?  rE  rH  rK  r  rQ   r   r  	fail_slowr  r   r<   int32float16r  r?  r`  r   r   r   s   @rC   r3  r3    s     *,* ?D1Mf [[[[23  3 [[WrxxRZZ&TU2 V2rE   r3  r  )lri  r  dataclassesr   numpy.testingr   r   r   r   r   r   rQ   r	   r  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-   rL  r.   scipy.integrater/   r0   r1   r2   r3   r4   r5   scipy.specialr6   rD  common_testsr7   	data._mvtr8   unittest.mockr9   rD   rG   r   r   r  r  rn  r  r  r  r$  r  r  r  r  r  r  r  r  r"  r>  rQ  r  rI  r  r   r  r  r  r  r3  r   rE   rC   <module>rr     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1P-&i9 i9V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2rE   