
     h                       d Z ddlZddlmZmZmZmZmZmZ ddl	Z	ddl	m
Z ddlmZ ddlZddlZddlZddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 dd	lm1Z1m2Z2 dd
l3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: d Z; G d d          Z<d Z= G d d          Z> G d d          Z? G d d          Z@d ZA G d d          ZB G d d          ZC G d d          ZD G d d           ZE G d! d"          ZF G d# d$          ZG G d% d&          ZH G d' d(          ZI G d) d*          ZJ G d+ d,          ZK G d- d.          ZLd/ ZMd0 ZNdS )1z8
Test functions for multivariate normal distributions.

    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_equalassert_array_lessassert_)raises   )check_distribution_rvs)_PSD_lnB_cho_inv_batch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)_covariance
Covariance)romb)multigammaln)check_random_state_property)patchc                     t          j        |           t          j        |          }} t          | |g|R i | t          | j        |j                   d S N)npasarrayr   r   shape)resrefargskwargss       _/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/stats/tests/test_multivariate.pyassert_closer9   (   sU    z#
3CC.t...v...CI&&&&&    c                   "   e Zd Zd Zej        ej        j        ej        j        ej        j	        d dZ
 ej         ee
                    Z ej        g d          g dg dg dg ej        g d          g d	g d
g dgdZeedd         eg d         edd         dZej                            dedd                   d             Zej                            d ee                    ej                            de          d                         Zej                            dd e            ddg          ej                            d ee                    ej                            de          d                                     Zej                            d e            dg          ej                            de          d                         Zd Zej                            d          d             ZdS )TestCovariancec                    d}t          j        t          |          5  t          j        t          j        d                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        t          j        d          t          j        d                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        d           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          j	        t          j        d                     d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          j
        dt          j        d          f           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j
        t          j        d          df           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j
        g dt          j        d          f           d d d            d S # 1 swxY w Y   d S )Nz:The input `precision` must be a square, two-dimensional...match   z0`precision.shape` must equal `covariance.shape`.   )
covariancez7The input `diagonal` must be a one-dimensional array...alpacaz9The input `cholesky` must be a square, two-dimensional...z4The input `eigenvalues` must be a one-dimensional...z,The input `eigenvectors` must be a square...z9The shapes of `eigenvalues` and `eigenvectors` must be...r
   r@   rA   )pytestr	   
ValueErrorr)   CovViaPrecisionr1   oneseyeCovViaDiagonalCovViaCholeskyCovViaEigendecompositionselfmessages     r8   test_input_validationz$TestCovariance.test_input_validation0   s:   N]:W555 	4 	4'

333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 E]:W555 	I 	I'q		bfQiiHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I L]:W555 	1 	1&x000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 N]:W555 	3 	3&rwqzz222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 I]:W555 	H 	H0(BF1II1FGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H A]:W555 	I 	I0"'!**h1GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I N]:W555 	I 	I0)))RVAYY1GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is}   'AAA9;C  CC(D		DD1'E$$E(+E()GGG))HH"%H"+I>>JJc                 $    t          | d          S )NTallow_singular)r   )xs    r8   <lambda>zTestCovariance.<lambda>R   s    %)!D%A%A%A r:   )Diagonal	PrecisionCholeskyEigendecompositionPSDrD   )   r
   rA   )r
         )rA   r]      )r
   r   rA   )r[   r   )r_   r[   r   r   r   r   )diagonal full rankzgeneral full rankzdiagonal singularzgeneral singularr
   N)r   r_   rb   cov_type_namer_   c                    t          j        g d          }g d}t          t          d|           }| j        |         }t          t
          d|                                           } | ||                    } | ||                    }t          |          t          |          k    sJ t          |	                    |          |	                    |                     d S )NrD   )r@   r[   CovViafrom_)
r1   diaggetattrr)   _covariance_preprocessingr*   lowertyper   whiten)	rN   rc   ArT   cov_typepreprocessingfactoryr4   r5   s	            r8   test_factorieszTestCovariance.test_factories^   s    GIIIJJ;(@(@(@AA6}E*&Em.A.A.C.C&E&EFFgmmA&&''h}}Q''((CyyDII%%%%

1szz!}}55555r:   matrix_typec                    d| d| d}|| j         |         vrt          j        |           | j        |         }t	          t
          d|           }| j        |         }t          |d          } | ||                    }t          |j	        |j	                   t          |j        |j                   t          |j        t          j        |          j                   t          |j        t          j        |                     t          j                            d          }	|	                    d          }
|                    |
          }|
|j        z  }t          ||z  ||z             t)          |d	          r'd
|vr#t          |                    |          |
           |	                    d          }
|                    |
          }|
|j        z  }t          |dz                      d          |dz                      d                     t)          |d	          r)d
|vr't          |                    |          |
           d S d S d S )Nrf    does not support 	 matricesTrR      VGiVK rA   size	_colorizesingularr@   r]   rA   r@   r_   axis)
_cov_typesrE   skip	_matricesri   r)   rj   r   r9   log_pdetr   rankr3   r1   r2   rB   randomdefault_rngrm   Uhasattrcolorizesum)rN   rs   rc   rO   rn   ro   rp   psd
cov_objectrngrT   r4   r5   s                r8   test_covariancezTestCovariance.test_covariancel   sZ   M  [    <<<K   N;';(@(@(@AA6}E1T*** XmmA..//
Z(#,777Z_ch///Z%rz!}}':;;;Z*BJqMM::: i##$788JJAJ""#%iS3Yc	***:{++ 	6
+0M0M,,S111555 JJIJ&&""#%ic1f\\r\**S!VLLbL,A,ABBB:{++ 	6
+0M0M,,S11155555	6 	60M0Mr:   ry   r|   c                 z   d| d| d}|| j         |         vrt          j        |           | j        |         }t	          t
          d|           }| j        |         }g d} | ||                    }	t          }
t          ||d          }t          ||	d          }t          j	        
                    d          }|                    |||          }t          j	        
                    d          }|
                    ||	||	          }t          j	        
                    d          } |
||	|
                              |          }t          |	t
          j                  rEt          |t          j        |                     t          |t          j        |                     nDt!          |j        |j                   t!          |j        |j                   t          ||           t          |
                    |||	          |                    |                     t          |                    |          |                    |                     t          |
                    |||	          |                    |                     t          |                    |          |                    |                     t          |
                    ||	          |                                           t          |                                |                                           d S )Nrf   ru   rv   皙?皙?333333?TrR   rw   rx   ry   random_stateseed)r   rE   r   r   ri   r)   rj   r   r1   r   r   rvs
isinstance	CovViaPSDr9   squeezer   r3   pdflogpdfentropy)rN   ry   rs   rc   rO   rn   ro   rp   meanr   mvndist0dist1r   rT   x1x2s                    r8   test_mvn_with_covariancez'TestCovariance.test_mvn_with_covariance   s   M  [    <<<K   N;';(@(@(@AA6}EXmmA..//
!#D!DAAA#D*TJJJi##$788##D!$#77i##$788WWT:DsWCCi##$788Sz,,,00d0;;j+"788 	!RZ]]+++RZ]]++++17+++17+++R   SWWQj11599Q<<@@@UYYq\\599Q<<000SZZ444ell1ooFFFU\\!__ell1oo666S[[z22EMMOODDDU]]__emmoo66666r:   c                    d}| j         |         }t          t          d|           }| j        |         }g d} | ||                    }t          }	t	          ||d          }
t	          ||d          }t
          j                            d          }|                    |||          }t          |		                    |||          |
	                    |                     t          |	                    |          |
	                    |                     t          |	
                    |||          |

                    |                     t          |
                    |          |

                    |                     d S )Nra   rf   r   TrR   rw   rx   )r   ri   r)   rj   r   r1   r   r   r9   cdflogcdf)rN   ry   rc   rs   rn   ro   rp   r   r   r   r   r   r   rT   s                 r8   test_mvn_with_covariance_cdfz+TestCovariance.test_mvn_with_covariance_cdf   s[    +N;';(@(@(@AA6}EXmmA..//
!#D!DAAA#D*TJJJi##$788##D!$#77SWWQj11599Q<<@@@UYYq\\599Q<<000SZZ444ell1ooFFFU\\!__ell1oo66666r:   c                     d}t          j        t          |          5  t                       d d d            d S # 1 swxY w Y   d S )Nz7The `Covariance` class cannot be instantiated directly.r>   )rE   r	   NotImplementedErrorr*   rM   s     r8   test_covariance_instantiationz,TestCovariance.test_covariance_instantiation   s    K].g>>> 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>zignore::RuntimeWarningc                    t          j        g d          }|j        d         }t          j        |          }t	          j        t          d          5  t          ||                                           d d d            n# 1 swxY w Y   d}t           j	        
                    |          }t           j	        
                    |          }t          j        t           j                            |                    }t          ||          }|                    |          }	t          j        |||          }
t          |	|
           d S )N)r
   r@   g:0yEr   zThe input matrix must be...r>   l   .ypGw r   )r1   rh   r3   zerosrE   r	   rF   r   r   r   r   r*   from_eigendecompositionlinalgeighr   )rN   rn   nr   r   rng1rng2covrvr4   r5   s              r8   test_gh9942zTestCovariance.test_gh9942   sV   
 GMMM""GAJx{{ ]:-JKKK 	/ 	/a((,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ #y$$T**y$$T**01B1BCC s++ff$f''!%dCdCCCS#s   #BB	B)__name__
__module____qualname__rP   r1   rh   r   invcholeskyr   rj   arraylist_all_covariance_typesr   r   rE   markparametrizerr   r   tupler   r   r   filterwarningsr    r:   r8   r<   r<   .   s       I I I< .0W.0im-/Y-?79y~)B )B	!C !C %BHTT*C%D%DEE'.rwyyy'9'9'0yy)))YYY&G&-bgiii&8&8&0jj***iii%HJ JI )>'<QRR'@'<[[['I&;BCC&@B BJ
 [_.CCRC.HII6 6 JI6 []DDOO<<[_.CDD$6 $6 ED =<$6L [VdEEGGQ	%BCC[]DDOO<<[_.CDD#7 #7 ED =< DC#7J [Veeggy%9::[_.CDD7 7 ED ;:70  
 [ 899  :9  r:   r<   c                     t           j                            | |           }t          j                            |          \  }}}|S r0   )r1   r   randnscipyr   svd)r   Musvs        r8   _sample_orthonormal_matrixr      s7    
	1Alq!!GAq!Hr:   c                   D   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej                            d ej        d           ej        ddg          g          d             Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z&d! Z'd"S )#TestMultivariateNormalc                 f   t          j        d          }t          j        d          }t          t          t
          j        d||           t          t          t
          j        d||           t          t          t
          j        d||           t          t          t
          j        d||           d S )NrA   r@   r   r
   r   r
   r@   )r1   arangeidentityassert_raisesrF   r   r   r   )rN   mur   s      r8   test_input_shapez'TestMultivariateNormal.test_input_shape   s    Yq\\k!nnj"5"962sKKKj"5"99b#NNNj"5"962sKKKj"5"99b#NNNNNr:   c                 p   t           j                            d           d\  }}}t          j        |||          }t          |j        d           t           j                            d          }t           j                            d          }t          j        t           j                            d                    }t          j        |||          }t          |j        d           d\  }}}t          j	        |||          }t          |j        d           t           j                            d          }t           j                            d          }t          j        t           j                            d                    }t          j	        |||          }t          |j        d           d S )N  )      ?g333333?      @r   r[   )
r1   r   r   r   r   r   ndimr   absr   )rN   rT   r   r   r   r   s         r8   test_scalar_valuesz)TestMultivariateNormal.test_scalar_values  sX   
	t %4!%as33SXq!!! IOOAyq!!fRY__Q''((!%as33SXq!!! %4!%as33SXq!!! IOOAyq!!fRY__Q''((!%as33SXq!!!!!r:   c                    t           j                            d           t           j                            d          }t           j                            d          }t          j        t           j                            d                    }t          j        |||          }t          j        |||          }t          |t          j	        |                     d S Nr   r[   )
r1   r   r   r   r   r   r   r   r   logrN   rT   r   r   d1d2s         r8   test_logpdfz"TestMultivariateNormal.test_logpdf      
	tIOOAyq!!fRY__Q''(( '455 $Qc22BF2JJ'''''r:   c                    t           j                            d           t           j                            d          }t	          j        |          }t	          j        |          }t	          j        |d d          }t	          j        |d d          }t          |t          j        |                     t          |t          j        |                     d S Nr   r[   r
   )	r1   r   r   r   r   r   r   r   r   rN   rT   r   r   d3d4s         r8   test_logpdf_default_valuesz1TestMultivariateNormal.test_logpdf_default_values'       		tIOOA '** $Q'' '433 $Qa00BF2JJ'''BF2JJ'''''r:   c                    t           j                            d           t           j                            d          }t           j                            d          }t          j        t           j                            d                    }t          j        |||          }t          j        |||          }t          |t          j	        |                     d S r   )
r1   r   r   r   r   r   r   r   r   r   r   s         r8   test_logcdfz"TestMultivariateNormal.test_logcdf4  r   r:   c                    t           j                            d           t           j                            d          }t	          j        |          }t	          j        |          }t	          j        |d d          }t	          j        |d d          }t          |t          j        |                     t          |t          j        |                     d S r   )	r1   r   r   r   r   r   r   r   r   r   s         r8   test_logcdf_default_valuesz1TestMultivariateNormal.test_logcdf_default_values>  r   r:   c                 ~   t           j                            d           d}t           j                            |          }t	          d|dz             D ]h}t           j                            ||          }t          j        ||j                  }t          ||d          }t          |j	        j
        |           id S )Nr   r]   r
   TrR   )r1   r   r   r   rangedotTr   r   r   r   )rN   r   r   expected_rankr   r   distns          r8   	test_rankz TestMultivariateNormal.test_rankK  s    
	tyq!!"1a!e__ 	? 	?M	=11A&AC..C'c$GGGE).>>>>		? 	?r:   c           	         t          dd          D ]}t          j                            |          }t          d|          D ]}t          j                            ||          }t          j        ||j                  }t          j        ||f          }||d |d |f<   t          j        |          }|d |         |d |<   t          |          }t          j        |t          j        ||j                            }	t          j        ||          }
t          t          j        |          |d          }t          t          j        |          |d          }t          t          j        |          |	d          }t          |j
        j        |           t          |j
        j        |           t          |j
        j        |           |                    |d |                   }|                    |          }|                    |
          }t          ||           t          ||           |                    |d |                   }|                    |          }|                    |
          }t          ||           t          ||           |
|d d df         z   }|                    |          }|                    |          }t          |d           t          |t          j                    d S )Nr
   r[   TrR   r_           )r   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   inf)rN   r   zkr   cov_kkcov_nnrT   r   cov_rry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                          r8   test_degenerate_distributionsz4TestMultivariateNormal.test_degenerate_distributionsV  s   q! 0	6 0	6A	""A1a[[ .6 .6IOOAq))13 1a&))!'rr2A2v HQKK"1""1" /q1126&!##6#677F1aLL /rx{{F>BD D D.rx{{F>BD D D.rx{{F>BD D DX05q999X05q999X05q999!ae,,!a!a//////$OOAbqbE22	$OOA..	$OOA..		9555	9555 Qqqq"uX&ll622!)!8!8 [#...^bfW5555].60	6 0	6r:   c                 L   d}t          dd          D ]}t          d|          D ]}t          j        |          }t          |          d d d |f         }t          j        ||j                  }t          j        |||          }t          j        |||d          }t          |j
        |           t          j        |dk              sJ t          j        |||d          }	t          |	j
        |           t          j        |	t          j         k              sJ d S )	N
   r@   r\   r
   r   r   ry   T)r   r   rS   r   )r   r1   r   r   r   r   r   r   r   r   ry   allr   r   )
rN   r   r   rmnr   vrXr   r   s
             r8   test_degenerate_arrayz,TestMultivariateNormal.test_degenerate_array  s?    q! 	0 	0A1a[[ 0 0Xa[[.q11!!!RaR%8VAqs^^'+!DDD)-abb=AC C CSXq)))vcCi(((((,3ABBCGI I IV[!,,,vfw.//////0	0 	0r:   c                 f   d}d}d}t          j        ||z            }||z   }t          j        ||ft                    }t          j        ||           d|| d | d f<   t          t          j                            |          d           t          t          j                            |d |d |f                   t           j	                   t          t           j                            |d |d |f                   d|f           t          |          }t          |j        |           d S )Ng     @@d   r@   dtyper   r
   )r1   expr   floatfill_diagonalr   r   r   detr   r   slogdetr   r   )rN   large_total_lognposnzerolarge_entryr   r   r   s           r8   test_large_pseudo_determinantz4TestMultivariateNormal.test_large_pseudo_determinant  s-   
 !f_t3445Lh1vU+++
k*** !UFGGeVWW 	U\%%c**A...U\%%c%4%$,&788"&AAA	))#eteUdUl*;<<O,	. 	. 	. 3iio66666r:   c                    t           j                            d           d}t           j                            ||          }t          j        ||j                  }t           j                            |          }t           j                            dd|          }t          j        |||          }t          j        |||          }t          d          D ]}t          d          D ]p}	t          j        |||	f         ||          }
t          |
|||	f                    t          j        |||	f         ||          }
t          |
|||	f         d           qd S )Nr   r]   r@   rA   gMbP?rtol)r1   r   r   r   r   r   r   r   r   r   r   )rN   r   datar   r   r  desired_pdfdesired_cdfijactuals              r8   test_broadcastingz(TestMultivariateNormal.test_broadcasting  sM   
	t yq!$$fT46""yq!! IOOAq!$$ *-as;;)-as;;q 	E 	EA1XX E E,01a4$DDAaC(8999,01a4$DDAaC(8tDDDDDE	E 	Er:   c                 6   t          j        ddd          }d\  }}|dz  }t          j        |||          }t	          j        |||          }t          ||           t          j        |||          }t	          j        |||          }t          ||           d S )Nr   r@   r  )333333??      ?)r1   linspacer   r   r   r   r   )rN   rT   r   r   scaler   r   s          r8   test_normal_1Dz%TestMultivariateNormal.test_normal_1D  s     K1b!!	cSXau%% $Qc22BXau%% $Qc22Br:   c                    t          j        ddg          }t          j        ddgddgg          }d}d|dz
  z  }t          j        d	d|          }t          j        ||          \  }}t          j        ||d
f          }||d d d d d	f<   ||d d d d df<   t          j        |||          }	t          |	|d	          }
t          |	|d          }t          j        ||d	         |d         dz            }t          j        ||d         |d         dz            }t          |
|dd           t          ||dd           d S )Nr   g      @r3  r   333333?i  r\   r
   r   r@   r}   r   r   )locr5  )r
   r
   {Gz?r(  atol)
r1   r   r4  meshgridemptyr   r   r+   r   r   )rN   r   r   r   deltar   xvyvposr   margin_xmargin_ygauss_xgauss_ys                 r8   test_marginalizationz+TestMultivariateNormal.test_marginalization  sj    xc
##hS	C9-..QUK1a  Q""Bh1ay!!AAAqqq!GAAAqqq!G!%c455 U+++U+++ (1$q'Tc1ABBB(1$q'Tc1ABBB'4@@@@'4@@@@@@r:   c                    t           j                            d           t           j                            d          }t           j                            d          }t          j        t           j                            d                    }t          ||          }t          |                    |          t          j        |||                     t          |                    |          t          j        |||                     t          |	                    |          t          j	        |||                     t          |
                    |          t          j
        |||                     d S r   )r1   r   r   r   r   r   r   r   r   r   r   )rN   rT   r   r   norm_frozens        r8   test_frozenz"TestMultivariateNormal.test_frozen  s:   
	tIOOAyq!!fRY__Q''(()$44**,?,CAtS,Q,QRRR**1--+21dC@@	B 	B 	B**,?,CAtS,Q,QRRR**1--+21dC@@	B 	B 	B 	B 	Br:   rB   r@   r
   c                     t          j        d          }t          j        d          }t          ||          }t          j        |j        |          sJ t          j        |j        |          sJ d S )Nr@   r@   )r1   rH   rI   r   allcloser   r   )rN   rB   r   cov_should_berJ  s        r8   2test_frozen_multivariate_normal_exposes_attributeszITestMultivariateNormal.test_frozen_multivariate_normal_exposes_attributes  sh     wt}}q		)$
;;{;+T22222{;?M:::::::r:   c           
         t           j                            d           d}t           j                            ||          }t          j        ||j                  }t          j                            |          \  }}t          j	        |d          }d|d<   d|d<   t          j        |t          j        t          j
        |          |j                            }d}t          ||	          }t          |j        |	          }t          |j        t          j        t          j        |d d                                        t          |j         |j                   d S )
Nr   r^   r3        ?r   Hz>r_   h㈵>)cond)r1   r   r   r   r   r   r   r   r   fullrh   r   pinvr   r   r   r   )	rN   r   rT   r   r   r   rU  r   psd_pinvs	            r8   test_pseudodet_pinvz*TestMultivariateNormal.test_pseudodet_pinv  s    		tIOOAq!!fQnn|  %%1GAsOO!"fQrwqzz13//00 3T"""t,,, 	bfRVAcrcF^^&<&<=== 	x'899999r:   c                 L    g dg dg}t          t          t          |           d S )NrD   )r]   r[   r\   r   rF   r   rN   r   s     r8   test_exception_nonsquare_covz3TestMultivariateNormal.test_exception_nonsquare_cov-  s,    yy)))$j$,,,,,r:   c                     ddgdt           j        gg}t          t          t          |           ddgdt           j        gg}t          t          t          |           d S )Nr
   r   )r1   nanr   rF   r   r   )rN   cov_nancov_infs      r8   test_exception_nonfinite_covz3TestMultivariateNormal.test_exception_nonfinite_cov1  sT    q6Arv;'j$000q6Arv;'j$00000r:   c                 L    ddgddgg}t          t          t          |           d S )Nr
   r   r_   r[  r\  s     r8   test_exception_non_psd_covz1TestMultivariateNormal.test_exception_non_psd_cov7  s,    1v2wj$,,,,,r:   c                    t           j                            d           t           j                            d          }t           j                            d          }t          j        d          }t           j        j        }t          |t          ||           t          |t          j	        |||           t          |t          j
        |||           t          |t          j        |||           t          |t          j        |||           ddgddgg}d}t          j        t           j        j        |          5  t          |           d d d            d S # 1 swxY w Y   d S )	Nr   r[   )r[   r[   rR  r   z0When `allow_singular is False`, the input matrixr>   r   )r1   r   r   r   rH   r   LinAlgErrorr   r   r   r   r   r   rE   r	   )rN   rT   r   r   emsgs         r8   test_exception_singular_covz2TestMultivariateNormal.test_exception_singular_cov;  sx   
	tIOOAyq!!gfooI!a,dC888a,0!T3???a,3QcBBBa,0!T3???a,3QcBBB Bx"b"@]290<<< 	) 	)C((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   =EE"Ec                     t          j        g d          }t          j        ddd          }d|z  dz
  }|t          j        |          z   }t          j        |||g          j        }t          j        g dd          }t          j        g dg d	g d
gd          }t          j        |||          }t          ||d           t          j        g d          }	t          j        |||          }
t          |
|	d           t          j        g d          }t          j        ||g          j        }t          j        ddgd          }t          j        ddgddggd          }t          j        |||          }t          ||d           d S )N)g0Q-?gox'V?g[S, t?gDB?gc_.?r   r@   r[   rA   )r
   rA   r@   dr
   r@   r   )r@   r[   r3  )r   r3  rA   绽|=r=  )gwk:E]?g̙Z?g0?gL8?gAG*?gh㈵>)gIى?gG?gƏ)?gėh?gEE?r
   rT  )	r1   r   r4  cosr   r   r   r   r   )rN   r_pdfrT   r  r   r  r   r   r   r_cdfr   r_cdf2r2mean2cov2cdf2s                   r8   test_R_valuesz$TestMultivariateNormal.test_R_valuesN  s     6 6 6 7 7 K1a  EAIq		MHaAY!x			3''h			:::zzz:C@@!%as33U////  6 6 6 7 7 "%as33U....  3 3 3 4 4 Xq!f!Q%%x!Q!Q(#.."&r5$77f4000000r:   c                     t          j        d          }t          j        d          }t          ||d          }|                                }t	          |ddg           d S )Nr@   r@   r@   TrR   r   )r1   r   r   r   r   )rN   r   rB   modelsamples        r8   ,test_multivariate_normal_rvs_zero_covariancezCTestMultivariateNormal.test_multivariate_normal_rvs_zero_covariance  sY    x{{Xf%%
#D*TJJJVaV$$$$$r:   c                    d}d}t          j        t          j        |          d|          }t	          |j        ||f           t          j        d t          j        ddgddgg          |          }t	          |j        |df           t          dd          }|                    |          }t	          |j        |f           d S )	Ni,  r]   r
   r  r@   r   r   r   r   )r   r   r1   r   r   r3   r   )rN   Nrl  r|  r   s        r8   test_rvs_shapez%TestMultivariateNormal.test_rvs_shape  s     $(bhqkkqqIIIV\Aq6***$(d-/X2wQ6H-I-I./1 1 1 	V\Aq6***QA...qV\A5)))))r:   c                    t           j                            d           d}t           j                            |          }t           j                            ||          }t          j        ||j                  }d}t          j        |||          }t          t          j
        |j                  |d           t          |                    d          |d           d S )N  rA   i  r   r'  r   )r1   r   r   r   r   r   r   r   r   numpyr   r   )rN   r   r   r   r   ry   r|  s          r8   test_large_samplez(TestMultivariateNormal.test_large_sample  s     		tyq!!IOOAq!!fQnn$(sD99	&(++St<<<<A4888888r:   c                    t           j                            d           d}t           j                            |          }t           j                            ||          }t          j        ||j                  }t          ||          }t          |                                t          j        ||                     t           j	        
                    |          d         }d|t          j        dt           j        z            dz   z  t          j        t          j        |                    z   z  }t          ||                                           d S )Nr  rA   r   r3  r@   r
   )r1   r   r   r   r   r   r   r   r   r   eigr   pir   )rN   r   r   r   r   r   eigsdesireds           r8   test_entropyz#TestMultivariateNormal.test_entropy  s    
	tyq!!IOOAq!!fQnn s++ 	BJJLL*=*EdC*P*PQQQ y}}S!!!$1q25y 1 1A 56t9M9MMNGRZZ\\22222r:   c                     t          j        g d          }d}t          t          j        t	          |                    |           d S )Nr
   r
   r
   r3  )r1   r   r   r  r   )rN   alphar  s      r8   test_lnBzTestMultivariateNormal.test_lnB  s@    ##BF4;;//99999r:   c                    t           j                            d          }ddg}t          j        d          }|                    d          dz  dz
  }|                    d          dz  dz
  }t	          j        ||||          }t	          j        |||          }t	          j        |||          }t          j        |ddd	f         |dd	df         fd
          }	t          j        |dd	df         |ddd	f         fd
          }
t	          j        |	||          }t	          j        |
||          }||z   |z
  |z
  }t          ||           d S )N   FYc@Y r   r@   )r]   rA   r@   r\   rA   lower_limit.r
   r_   r}   )r1   r   r   rI   r   r   concatenater   )rN   r   r   r   abcdf1cdf2acdf2bab1ab2cdf2ab1cdf2ab2rw  s                 r8    test_cdf_with_lower_limit_arraysz7TestMultivariateNormal.test_cdf_with_lower_limit_arrays  sX   i##$7881vfQiiJJy!!!#a'JJy!!!#a'"&q$CCC#'455#'455naQqSk1S!A#X;7bAAAnaQqSk1S!A#X;7bAAA%)#tS99%)#tS99u}w&0d#####r:   c                    t           j                            d          }|                    d          }|                    d          }||j        z  }|                    d          dz  dz
  }|                    d          dz  dz
  }t	          j        ||||          }t	          ||                              ||          }t          j        t	          j        ||||                    }t          j        t	          ||                              ||                    }	t          ||d           t          ||d           t          |	|d           d S )	Nr  rA   )rA   rA   r@   rA   r\   r  g-C6?r'  )	r1   r   r   r   r   r   r  r   r   )
rN   r   r   r   r  r  r  rw  cdf3cdf4s
             r8   %test_cdf_with_lower_limit_consistencyz<TestMultivariateNormal.test_cdf_with_lower_limit_consistency  sJ   i##$788zz!}}jj  CEkJJvq 1$JJvq 1$"&q$CCC"4--11!1CCv)0D#1MMMNNv)$44;;A1;MMNNd....d....d......r:   c                    t          j        d          }t          j        d          }g dg dg dg dg}g dg dg dg dg}t          j        g d          }t	          j        ||||          }t          ||d         |z             d S )	NrA   r  r`   r
   r   r
   r   r
   r   )r
   r_   r_   r
   r  r   )r1   r   rI   r   r   r   r   )rN   r   r   r  r  expected_signsr   s          r8   test_cdf_signsz%TestMultivariateNormal.test_cdf_signs  s    x{{fQiiYY			999iii8YY			999iii8...11!%asBBBSVN233333r:   c                    t          j        dt          j        g d          z            }t          j        |          }d}t          j        t          |          5  t          j	        ddg|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ddg|           d d d            n# 1 swxY w Y   g d}t          j
        |g d|          }t          t          j
        ||          |           t          j
        |g d	|          }t          t          j
        |d|          |           d S )
Nr
   rD   z7`cov` represents a covariance matrix in 3 dimensions...r>   r   )r3  r3  r3  r`   rf  r  )r1   rh   r   r)   rG   rE   r	   rF   r   r   r   r   )rN   Pr   rO   rT   r5   s         r8   test_mean_covz$TestMultivariateNormal.test_mean_cov   s   GA+++,, 033
K]:W555 	< 	<'A
;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:W555 	4 	4A
333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 OO!%aJ??(,QJ???EEE!%aJ??(,QzBBBCHHHHHs$   BBB'CC
C
N)(r   r   r   r   r   r   r   r   r   r   r  r  r%  r/  r6  rH  rK  rE   r   r   r1   rI   r*   from_diagonalrP  rY  r]  rb  rd  rj  rx  r}  r  r  r  r  r  r  r  r  r   r:   r8   r   r      s3       O O O" " "6( ( (( ( (( ( (( ( (	? 	? 	?26 26 26h0 0 0,7 7 70E E E0     A A A2B B B [BF1II$J$aV,,	
 ; ; ;: : :4- - -1 1 1- - -) ) )&>1 >1 >1@% % %* * *"9 9 9"3 3 3$: : :$ $ $(/ / /$	4 	4 	4I I I I Ir:   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestMatrixNormalc           
      \   d}d}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }t          t          t
          t          j        d                     t          t          t
          |t          j        d          |           t          t          t
          ||t          j        d                     t          t          t
          |||           t          t          t
          |||           t          t          t
          |j        ||           t           j        j	        }t          |t
          j
        ||t          j        ||f                     t          |t
          j
        |t          j        ||f          |           t          |t
          ||t          j        ||f                     t          |t
          |t          j        ||f          |           d S )Nr]   rA   r   r3  ffffff?)r[   r]   rA   r  )r1   rV  r   r   rF   r   r   r   r   rg  r   rH   )rN   num_rowsnum_colsr   r   Vrh  s          r8   test_bad_inputzTestMatrixNormal.test_bad_input  s   GXh'--"+h'''"'8X2F*L*LL"+h'''"'8X2F*L*LL 	j-'1B1BCCCj-BHRLL!DDDj-Arx||DDDj-Aq999j-Aq999j-a;;;I!a*BGXx$899	; 	; 	;a*(H!566	; 	; 	; 	a1bgx6J.K.KLLLa27Hh3G+H+H!LLLLLr:   c                    d}d}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }t          j        ||f          }t          j        |df          }t          j        d|f          }t          j        |          }	t          j        |          }
t          j        d          }t	          t          j        |||          j        ||f           t	          t          j        |          j        ||f           t	          t          j        |	          j        |df           t	          t          j        |
          j        d|f           t	          t          j        ||          j        ||f           t	          t          j        ||          j        ||f           t	          t          j        ||          j        ||f           t	          t          |          j        |	           t	          t          |          j	        |
           t	          t          |	          j
        |           t	          t          |	          j	        |           t	          t          |
          j
        |           t	          t          |
          j        |           t	          t          ||          j	        |
           t	          t          ||          j        |	           t	          t          ||          j
        |           d S )Nr]   rA   r   r3  r  r
   r   rowcovcolcov)r   )r  )r  )r   r  )r   r  )r  r  )r1   rV  r   r   r   r   r   r3   r  r  r   )rN   r  r  r   r   r  ZZrZcIrIcI1s               r8   test_default_inputsz$TestMatrixNormal.test_default_inputs0  s:   GXh'--"+h'''"'8X2F*L*LL"+h'''"'8X2F*L*LLHh)**Xxm$$Xq(m$$[""[""[^^]&AaBBBH)	+ 	+ 	+]&A...4)	+ 	+ 	+]&a0006]	$ 	$ 	$]&a0006]	$ 	$ 	$]&Aa888>)	+ 	+ 	+]&Aa888>)	+ 	+ 	+]&a:::@)	+ 	+ 	+ 	]***12666]***12666]!,,,12666]!,,,3R888]!,,,12666]!,,,3R888]!444;R@@@]!444;R@@@]!A666;Q?????r:   c                 (   d}d}t          j        ||fd          }t          j        |d          }d}t          j        |d          }d}t          j        |          }t          j        |          }	t          t	          |||          j        d|z             t          t	          |||          j        d|	z             t          t	          |||          j        d|z             t          t	          |||          j        d|	z             d S )Nr]   rA   r   r   r   r  )r1   rV  r   r   r   r  r  )
rN   r  r  r   UvUsVvVsr  r  s
             r8   test_covariance_expansionz*TestMatrixNormal.test_covariance_expansionW  s*   GXx(#..WXs##WXs##[""[""]"R@@@GV	 	 	]"R@@@GV	 	 	]"R@@@GV	 	 	]"R@@@GV	 	 	 	 	r:   c                    t          dd          D ]m}t          dd          D ]X}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }t	          |||          }|                    d          }t	          j        |||d	          }t          ||           |                    d          }	|                    |	          }
t	          j        |	|||          }t          |
|           |                    |	          }t	          j        |	|||          }t          ||           Zod S )
Nr
   r[   r   r3  r  r  r   r   )r   r  r  r   )	r   r1   rV  r   r   r   r   r   r   )rN   r,  r-  r   r   r  frozenrvs1rvs2r  pdf1pdf2logpdf1logpdf2s                 r8   test_frozen_matrix_normalz*TestMatrixNormal.test_frozen_matrix_normalm  s   q 	/ 	/A1QZZ / /GQqE3''"+a..(27Aa5#+>+>>"+a..(27Aa5#+>+>>&AaBBBzztz44$(a!6:< < <T4(((JJDJ11zz!}}$(1QGGGT4((( --**'.qq1MMMWg....)/	/ 	/r:   c                    t          dd          D ]x}t          dd          D ]c}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }t	          |||          }|                    d          }|                    |          }|                    |          }	|j        	                                }
|j        	                                }t          j
        ||          }t          j        |
||	          }t          j        |
||	          }t          ||d
           t          |	|d
           ezd S )Nr
   r[   r   r3  r  r  r   r   r  rn  r'  )r   r1   rV  r   r   r   r   r   r   flattenkronr   r   )rN   r,  r-  r   r   r  r  r  r  r  vecXvecMr   r  r  s                  r8   test_matches_multivariatez*TestMatrixNormal.test_matches_multivariate  ss    q 	> 	>A1QZZ > >GQqE3''"+a..(27Aa5#+>+>>"+a..(27Aa5#+>+>>&AaBBBJJDJ11zz!}} --**s{{}}s{{}}gall*.t$CHHH-4T#NNNd7777u=====#>	> 	>r:   c           	      X   d}d}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }d}t          |||          }|                    |d	          }|                    |d
	          }	t          j        |t           j        d d d d d d f         |	t           j        d d d d d d f         fd          }
t          |
j        d|||f           |	                    |
          }t          |j        d|f           t          d          D ]M}t          |          D ];}t          j	        |
||f         |||          }t          ||||f         d           <Nd S )Nr]   rA   r   r3  r  r  r  r   r   i  r   r}   r@   rn  )r1   rV  r   r   r   r  newaxisr   r3   r   r   r   )rN   r  r  r   r   r  r  r  X1X2r  array_logpdfr,  r-  separate_logpdfs                  r8   test_array_inputz!TestMatrixNormal.test_array_input  s   GXh'--"+h'''"'8X2F*L*LL"+h'''"'8X2F*L*LLAa:::ZZQTZ22ZZQTZ22NBrz!!!AAAaaa/0BJqqq1114D1EFQOOOQWq!Xx8999}}Q''\'!Q000q 	K 	KA1XX K K"/"6q1vA>?#K #K #Kac1BEJJJJK	K 	Kr:   c                    d}d}t          j        ||fd          }dt          j        |          z  t          j        ||fd          z   }dt          j        |          z  t          j        ||fd          z   }d}t          |||          }|                    |d	          }t          j        |d
          }	t          |	|d           t          j        |                    ||z  |          j	                  }
t          |
|d           t          j        t          j
        |dd                              ||z  |          j	                  }t          ||d           d S )Nr]   rA   r   r3  r    r  r   r   r   r}   r   ro  r
   r@   )r1   rV  r   r   r   r   r   r   reshaper   swapaxes)rN   r  r  r   r   r  r  r  r  sample_meansample_colcovsample_rowcovs               r8   test_momentszTestMatrixNormal.test_moments  sb   GXh'--"+h'''"'8X2F*L*LL"+h'''"'8X2F*L*LLAa:::JJADJ11gaQ'''QS1111qyy8H==?@@qs3333r{1Qq119989(
8 M  MMNP Pqs333333r:   c           	      f   t          j        t          j        ddgddgg          t          j        ddgddgg          t          j        ddgddgg          t          j                            d          d	          }t          j        d
dgddggddgddggg          }t          ||           d S )Nr
   r@   rA   r]   r_   r[   r  r   )r   r  r  r   ry   g6?gǀgcϿ@g"'@gI2͖@g^jy%@gDn3@g|\3@)r   r   r1   r   r   r   r   )rN   r.  expecteds      r8   test_sampleszTestMatrixNormal.test_samples  s     "Aq6Aq6*++8aWr1g.//8aVaW-....q11
 
 
 8!23!124!23!1245
 
 	)))))r:   N)r   r   r   r  r  r  r  r  r  r  r  r   r:   r8   r  r    s        M M M4%@ %@ %@N  ,/ / /0> > >.K K K.4 4 4,* * * * *r:   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDirichletc           	         t           j                            d           t           j                            dd          }t           j                            dd|          }t          |          }t          |                                t          j        |                     t          |                                t          j        |                     t          |	                                t          j	        |                     d}t          |          D ]}t           j                            dd|          }|t          j        |          z  }t          |                    |d d                   t          j        |d d         |                     t          |                    |d d                   t          j        |d d         |                     d S Nr  r
       &.>r  r  r_   )r1   r   r   randintr   r   r   varr   r   r   r   r   r   rN   r   r  rl  	num_testsr,  rT   s          r8   test_frozen_dirichletz#TestDirichlet.test_frozen_dirichlet  s   
	tIa$$	!!&#q11eQUUWWimE22333QVVXXy~e44555QYY[[)"3E":":;;;	y!! 	L 	LA	!!&#q11ANAq"v	afe(D(DEEE!CRC&))9+;AcrcFE+J+JKKKK		L 	Lr:   c                 P   t           j                            d           t          j        g d          }t           j                            |d          }t          |j        d           t          t          t          j	        ||           t          t          t          j
        ||           t	          j	        |j        |           t	          j	        |j        d d         |           t	          j
        |j        |           t	          j
        |j        d d         |           d S )Nr  rR         @      @r^   rx   )r^   rA   r_   )r1   r   r   r   r   r   r3   r   rF   r   r   r   rN   r  rT   s      r8   "test_numpy_rvs_shape_compatibilityz0TestDirichlet.test_numpy_rvs_shape_compatibility  s    
	t))IA..QWf%%%j)-E:::j)"2Au===ac5!!!ac#2#h&&&e$$$SbS5)))))r:   c                 B   t           j                            d           g d}t           j                            t          j        d|          d          j        }t          t          t          j        ||           t          t          t          j	        ||           d S )Nr  )rR  r   r  r  r^   rx   
r1   r   r   r   maximumr   r   rF   r   r   r  s      r8   test_alpha_with_zerosz#TestDirichlet.test_alpha_with_zeros  s{    
	tI
4 7 7a@@Bj)-E:::j)"2Au=====r:   c                 B   t           j                            d           g d}t           j                            t          j        d|          d          j        }t          t          t          j        ||           t          t          t          j	        ||           d S )Nr  )rR  g       r  r  r^   rx   r  r  s      r8    test_alpha_with_negative_entriesz.TestDirichlet.test_alpha_with_negative_entries  s}    
	t   I
4 7 7a@@Bj)-E:::j)"2Au=====r:   c                    t          j        g d          }t          j        g d          }t          j        ||           t          j        ||           t          j        g d          }t          t          j        ||          d           t          t          j        ||          t          j        d                     d S )NrR  r  r        @r   r   r   r  )rR  rR  rR  rR  r\   )r1   r   r   r   r   r   r   r  s      r8   test_data_with_zerosz"TestDirichlet.test_data_with_zeros  s    ---..H)))**aE"""---..IM!U33Q777I,Q66q		BBBBBr:   c                     t          j        g d          }t          j        g d          }t          t          t          j        ||           t          t          t          j        ||           d S )N)rR  r3  r  r   r  r1   r   r   rF   r   r   r   r  s      r8   $test_data_with_zeros_and_small_alphaz2TestDirichlet.test_data_with_zeros_and_small_alpha  a    ---..H)))**j)-E:::j)"2Au=====r:   c                     t          j        g d          }t          j        g d          }t          t          t          j        ||           t          t          t          j        ||           d S )Nr  )r   皙r   r  r  r  s      r8   test_data_with_negative_entriesz-TestDirichlet.test_data_with_negative_entries  sa    ---..H***++j)-E:::j)"2Au=====r:   c                     t          j        g d          }t          j        g d          }t          t          t          j        ||           t          t          t          j        ||           d S )Nr  )r   皙?r   r  r  r  s      r8    test_data_with_too_large_entriesz.TestDirichlet.test_data_with_too_large_entries!  r  r:   c                     t          j        g d          }t          j        dd          }t          t          t
          j        ||           t          t          t
          j        ||           d S )Nr  )r@   r^   r^   g$I$I?r1   r   rV  r   rF   r   r   r   r  s      r8   test_data_too_deep_cz"TestDirichlet.test_data_too_deep_c'  sY    ))GIv&&j)-E:::j)"2Au=====r:   c                     t          j        ddgddgg          }t          j        dd          }t          t          t
          j        ||           t          t          t
          j        ||           d S )NrR  r  r  r   )r@   r@   r^         ?r  r  s      r8   test_alpha_too_deepz!TestDirichlet.test_alpha_too_deep-  sb    3*sCj122GIu%%j)-E:::j)"2Au=====r:   c                     t          j        g d          }t          j        dd          }t          j        ||           t          j        ||           d S )Nr  rA   r^   UUUUUU?)r1   r   rV  r   r   r   r  s      r8   test_alpha_correct_depthz&TestDirichlet.test_alpha_correct_depth3  sQ    ))GFE""aE"""""r:   c                     t          j        g d          }t          j        dd          }t          t          t
          j        ||           t          t          t
          j        ||           d S )Nr  r  r3  r  r  s      r8   test_non_simplex_dataz#TestDirichlet.test_non_simplex_data9  sY    ))GFE""j)-E:::j)"2Au=====r:   c                     t          j        g d          }t          j        dd          }t          t          t
          j        ||           t          t          t
          j        ||           d S )Nr  )r@   r^   r3  r  r  s      r8   test_data_vector_too_shortz(TestDirichlet.test_data_vector_too_short?  \    ---..GFE""j)-E:::j)"2Au=====r:   c                     t          j        g d          }t          j        dd          }t          t          t
          j        ||           t          t          t
          j        ||           d S )Nr  )r[   r^   r   r  r  s      r8   test_data_vector_too_longz'TestDirichlet.test_data_vector_too_longE  r  r:   c                     t          j        g d          }t          |          }g d}g d}t          |                                |           t          |                                |           d S )N)rR  皙?r   )gUUUUUU?g{Gz?gQ?r3  皙?r   )r1   r   r   r   r  r   )rN   r  rl  expected_varexpected_means        r8   test_mean_and_varzTestDirichlet.test_mean_and_varK  sl    ((e---'!!%%''<888!!&&((M:::::r:   c                    t          j        dg          }t          |          }t          |                                j        d           t          |                                j        d           t          |                    dg          j        d           t          |                    dg          j        d           d S )Nr   r   rR  )	r1   r   r   r   r   r   r  r   r   )rN   r  rl  s      r8   r   z TestDirichlet.test_scalar_valuesU  s    #e 	QVVXX]A&&&QUUWW\1%%%QUUB4[[%q)))QXXrd^^(!,,,,,r:   c                    t           j                            d           t           j                            dd          }t           j                            dd|          }t          |          }d}t          |          D ]x}t           j                            dd|          }|t          j        |          z  }t          |	                    |d d                   |	                    |                     yd S r  )
r1   r   r   r  r   r   r   r   r   r   r  s          r8    test_K_and_K_minus_1_calls_equalz.TestDirichlet.test_K_and_K_minus_1_calls_equal`  s     		tIa$$	!!&#q11e	y!! 	9 	9A	!!&#q11ANAafquuQxx8888	9 	9r:   c                    t           j                            d           t           j                            dd          }t           j                            dd|          }t          |          }d}d}d }t          |          D ]}t          |          D ]U}t           j                            dd|          }	|	t          j        |	          z  }	|t          j        ||	f          }S|	}V|	                    |j
                  }
d }|D ]1}|	                    |          }|t          j        ||          }/|}2t          |
|           d S )Nr  r
   r  r  r  r  r[   )r1   r   r   r  r   r   r   r   vstackr   r   appendr   )rN   r   r  rl  r  num_multiplexmr,  mrT   rmrsxsr  s                 r8   test_multiple_entry_callsz'TestDirichlet.test_multiple_entry_callso  sK   
	tIa$$	!!&#q11e	y!! 	. 	.A<((  I%%fc155RVAYY>B7++BBBBrtBB  EE"II>2q))BBBB%b"----!	. 	.r:   c                    t           j                            d           t           j                            ddd          }t	          |          }t          |d         |d                   }d}t          |          D ]q}t           j                            ddd          }|t          j        |          z  }t          |	                    |          |	                    |g                     rt          |
                                |
                                d                    t          |                                |                                d                    d S )Nr  r  r  r@   r   r
   r  )r1   r   r   r   r   r   r   r   r   r   r   r  )rN   r  rl  r  r  r,  rT   s          r8   test_2D_dirichlet_is_betaz'TestDirichlet.test_2D_dirichlet_is_beta  s   
	t	!!&#q11eq58$$	y!! 	6 	6A	!!&#q11ANAa!%%**5555AFFHHaffhhqk222AEEGGQUUWWQZ00000r:   N)r   r   r   r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r$  r   r'  r1  r3  r   r:   r8   r  r    s7       L L L$
* 
* 
*> > >> > >C C C> > >> > >> > >> > >> > ># # #> > >> > >> > >; ; ;	- 	- 	-9 9 9. . .:1 1 1 1 1r:   r  c                  P   t          j        ddg          } t          j        dgg          }t          t          t          | |           	 t	          | |           d S # t          $ r?}d}t          t          |          d t          |                   |           Y d }~d S d }~ww xY w)Nr   rR  zDimension mismatch)r1   r   r   rF   r   r   strlen)r   sigmarh  ri  s       r8   ,test_multivariate_normal_dimensions_mismatchr8    s     
3*		BHseWE*12u===
-B&&&&& - - -"SVVISXXI&,,,,,,,,,-s   
A 
B%&4B  B%c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestWishartc                 h   t          j        dd          }ddgt          j        d          t           j        d         t          j        dd          g}|D ]F}t          d|          }t	          |j        |           t	          |j        j        |j                   Gt          j        ddgddgg          }ddgt           j        d         t          j        ddgddgg          g}|D ]F}t          d|          }t	          |j        |           t	          |j        j        |j                   Gt          t          t          dt          j	        d                     t          dt          j	        d                     t          j        dd          }t          t          t          d|           d S )Nr
   r@   ndminr   r
   r@   r  rA   )
r1   r   r_r   r   r5  r3   r   rF   rI   )rN   
true_scalescalesr5  ws        r8   test_scale_dimensionsz!TestWishart.test_scale_dimensions  s    Xaq)))
CHQKKE!HHQa   
  	: 	:E5!!A*---
(89999 X!u !!u& ' '
 qEE#JHqee  
  	: 	:E5!!A*---
(89999 	j'1bfQii888 	RVAYY !$$$j'1e44444r:   c           
         ddgt          j        d          t           j        d         t          j        dd          t          j        dgd          g}t          dd          }|                    t          j        dd                    }|D ]%}t          |                    |          |           &g dt           j        d         t          j        g dd          g}t          dd          }|                    t          j        g dd                    }|D ]%}t          |                    |          |           &dddgt          j        d          t           j        d         t          j        ddgddgg          t          j        ddgddgg          d d d d t           j        f         g}t          dt          j        d                    }|                    t          j        ddgddgg          d d d d t           j        f                   }|D ]%}t          |                    |          |           &d S )Nr
   r@   r<  rA   rD   rz  r   )r1   r   r?  r   r   r   r  rI   )rN   r  rB  densityrT   s        r8   test_quantile_dimensionsz$TestWishart.test_quantile_dimensions  sQ   
 CHQKKE!HHQa   HaS"""
 AaLL%%!,,,-- 	, 	,Aq7++++ GGE%LHWWWA&&&
 AaLL%%22233 	, 	,Aq7++++
 qEHQKKE#JHqee  Hqee  aa"*n.	
 AbfQii  %%1Q%#$Q%") * **+!!AAAbj.: ; ; 	, 	,Aq7++++	, 	,r:   c           	         d}t          j        t          j        |          dz             }t          j        ||dz
  z  dz            |t          j        |d          <   t          j        |j        |          }g }t          d          D ]}t          j        t          j        |          |dz   dz  z             }t          j        ||dz
  z  dz            |t          j        |d          <   t          j        |j        |          }|                    |           t          j        |          j        }ddt          j	        ddd          fd||fg}|D ]"\  }}}t          ||          }t          |                                t          j        ||                     t          |                                t          j        ||                     t          |                                t          j        ||                     t          |                                t          j        ||                     t          |                    |          t          j        |||                     $d S 	Nr]   r
   r@   r_   r   r[   r  r   )r1   rh   r   tril_indicesr   r   r   r*  r   r4  r   r   r  r   moder   r   )	rN   dimr5  r  r,  rT   
parametersdfrB  s	            r8   rK  zTestWishart.test_frozen  s    	#q()),.IcSUmq6H,I,IbocR((()uw&& q 	 	A	#!ax/00A,.IcSUmq6H,I,IAbocR((()qsAAHHQKKKKHQKKM BKR++,N


 ) 	> 	>NRE""A'+b%"8"89997<E#:#:;;;7<E#:#:;;;gob%&@&@AAAq7;q"e#<#<====	> 	>r:   c                 &   t           j                            d           d}d}t          j        |          }t          j        dddt
                    }t          j        ddd          }|D ]!}t          ||          }t          |          }t          |
                                |
                                           t          |                                |                                           t          |                                |                                           t          |                    |          |                    |                     |                    |	          }	|f}
d
}t          d|
||	           #d S )N^   r
   r  r@   r  r   numrx   r;  r   )r1   r   r   rI   r   r  r4  r   r   r   r  r   r   r   r   r   )rN   snrL  r5  df_ranger  rN  rB  cr   r6   r  s               r8   test_1D_is_chisquaredz!TestWishart.test_1D_is_chisquared-  sN   
 		vs9QAU333KB2&&& 	= 	=BE""ARA AEEGGQUUWW---AFFHHaffhh///AIIKK555 AEE!HHaeeAhh/// %%R%..C5DE"64<<<<!	= 	=r:   c                 H   t           j                            d           d}d}d}t          j        t          j        d          dz             }t          j        d          |t          j        dd          <   t          j        |j        |          }t          j        |df          }|j                            |                              |          	                                }t          ||          }t          ||	          }t          |                                |                                           t          |                                |                                           t          |                                |                                           t          j        d
dd          }	t          |                    |	          |                    |	                     |                    |          }
|d|f}d}t'          d|||
           d S )NrP  rQ  r  r]   r
   r\   r_   rI  r5  r   rR  rx   r   r;  r   )r1   r   r   rh   r   rJ  r   r   rH   r   r   r   r   r  r   r   r4  r   r   r   )rN   rT  rN  rL  r5  lamdasigma_lamdarB  rV  r  r   r6   r  s                r8   test_is_scaled_chisquaredz%TestWishart.test_is_scaled_chisquaredL  s   
 		v	!Q''*,)A,,boa2&&&'uw&&Q  gkk%((,,U33;;==B$$;''' 	)))!&&((+++		QYY[[111 KB2&&&a!%%((+++ eeenn1[!vtUC88888r:   N)r   r   r   rC  rF  rK  rW  r\  r   r:   r8   r:  r:    sb        )5 )5 )5V/, /, /,b> > >@= = =>!9 !9 !9 !9 !9r:   r:  c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )TestMultinomialc                 .   t          j        ddd          }t          |dd           t          j        ddgd	d
dg          }t          |t          j        d           t          j        ddgd	ddg          }t          |t          j        d           d S )NrA   r]   r^   r   r  g&Mty:0yE>r'  rA   r]   r   r   r  rb   )r   logpmfr   r1   NAN)rN   vals1vals2vals3s       r8   test_logpmfzTestMultinomial.test_logpmfp  s    "5!Z881===="Aq61r2h77rvD1111"Aq61r1g66rvD111111r:   c                     t          j        ddd          }t          j        ddd          }t          ||d           t          j        dd	d
          }t          j        dd	d          }t          ||d           d S )Nr`  r^   ra  rA   r   rb  r'  )r\         r   r2  r\   r   )r   rc  r"   r   pmfrN   val1val2s      r8   test_reduces_binomialz%TestMultinomial.test_reduces_binomialz  s     !&!Z88|Aq#&&d....vr:66yB$$d......r:   c                     dg d}}ddddddd	dd
dd
}|D ].}t          t          j        |||          ||         d           /d S )NrA   )g      ?r  g      ?g     @?g     ?g      ?g      `?g     ?g      ?g      ?g      ?g      ?)
)r   r   rA   )r
   r   r@   )r@   r   r
   )rA   r   r   r   r  )r@   r
   r   )r   r@   r
   rm  )r   rA   r   +=ro  )r   r   rm  )rN   r   pr_valsrT   s        r8   test_RzTestMultinomial.test_R  s     $$$1([([([([([	B B
  	M 	MAKOAq!44fQieLLLLL	M 	Mr:   c                     t          j        ddgdz  dd          }t          j                            d          }|                     ddgdz  d          }t          ||           d S )NrA   r  r^   {   r   rx   )r   r   r1   r   RandomStater   )rN   sc_rvsrndmnp_rvss       r8   test_rvs_npzTestMultinomial.test_rvs_np  sk    TF1H13GGGy$$S))!!!dVAXA!66VV$$$$$r:   c                    t          j        ddd          }t          |dd           t          j        ddd	          }t          |d
d           t          j        ddgddggddgddgggdd          }t          |ddgddggd           t          j        dt          j                  }t          j        |dd	          }t          |t          j        g t          j                             t          j        ddgdd	          }t          |dd           t          j        g ddg d          }t          |dd           d S )N)r[   r[   r
   r
   rb  r'  r`  r^   ra  g5
?rA   r   rj  r_   	   rl  g*7?g<Wƌ?r   r@   r  r]   r@   rA   rA   r   r\   )gUUUUUU?r  r   gߦ?)r   rm  r   r1   r?  float64r   )rN   vals0re  rf  rT   rg  vals4vals5s           r8   test_pmfzTestMultinomial.test_pmf  s[   a..qt,,,,q(331====1Q%1"a1a&0A BA I 6A?dKKKKHU"*---1h//UBHRrz:::;;;1q(33qt,,,,			1.?.?.?@@~D999999r:   c                    t          j        ddgdddgddgg          }t          |dd	gd
           t          j        ddgddgddg          }t          |ddgd
           t          j        ddgddgggdddg          }t          |ddggd
           t          j        ddgdgdgggddg          }t          |dgdgggd
           t          j        ddgddggdggggddg          }t          |ddggggd
           d S )Nr
   r@   rA   r   r2  r   r  gv?g~jt?rb  r'  r]   r   )r   rm  r   )rN   r  re  rf  rg  r  s         r8   test_pmf_broadcastingz%TestMultinomial.test_pmf_broadcasting  sM   ARHr2h+?@@d|$7777AAR99ayt44441a&1a&!1 2ABx@@q	{6666A1#sr2h??$!T::::!Q!AQC5'RHEE4)T::::::r:   c                 j    t          j        dd          }g dg dg dg}t          ||d           d S )Nr[   )r   r   r3  )r  g333333ӿ      )g433333ӿg?      )r  r  g      ?rb  r'  r   r   r   rN   cov1rv  s      r8   test_covzTestMultinomial.test_cov  sR    q,//---------/ 	d......r:   c                 t   t          j        dddgddgg          }ddgddggddgddggg}t          ||d	
           t          j        ddgddg          }ddgddggddgddggg}t          ||d	
           t          j        ddgddgddgg          }ddgddggddgddggg}t          ||d	
           d S )Nr[   r   r2  r   r  g?gܿgrb  r'  r]   g
ףp=
?g
ףp=
׿r   r  r!  r8  gzG?gzGr1  g333333r  rN   r  rv  cov3cov4cov5cov6s          r8   test_cov_broadcastingz%TestMultinomial.test_cov_broadcasting  s   qB8b"X"677tdC[)RIRy+ABd....1vBx00ttSk*c4[4+,FGd....1vR2r(';<<8$x&9:8$x&9:<d......r:   c                 ~    t          j        dddg          }t          |t          j        dd          d           d S )Nr@   r   r  rb  r'  r   r   r   r"   )rN   ent0s     r8   r  zTestMultinomial.test_entropy  sA     "1r2h//emAr22>>>>>>r:   c           	      `   t          j        ddgddg          }t          |t          j        dd          t          j        dd          gd           t          j        ddgdd	gd
dgg          }t          |t          j        dd          t          j        dd
          gd           t          j        dgdggdd	gd
dgg          }t          |t          j        dd          t          j        dd
          gt          j        dd          t          j        dd
          ggd           d S )Nr@   rA   r   r   rb  r'  r^   rj  r  r!  r8  r  )rN   r  ent1ent2s       r8   test_entropy_broadcastingz)TestMultinomial.test_entropy_broadcasting  sK   "Aq6B844u}Q33U]1b5I5IJ	 	 	 	 "Aq6RHr2h+?@@u}Q33U]1b5I5IJ	 	 	 	 "QC!:R2r(/CDD-2&&a(<(<=-2&&a(<(<=?	 	 	 	 	 	r:   c                 \    t          j        dddg          }t          |ddgd           d S )Nr[   r   r  rR  r   rb  r'  r   r   r   rN   mean1s     r8   	test_meanzTestMultinomial.test_mean  s7     RH--d|$777777r:   c                 h    t          j        ddgddg          }t          |ddgddggd	
           d S )Nr[   r\   r   r  rR  r   g433333?g433333@rb  r'  r  r  s     r8   test_mean_broadcastingz&TestMultinomial.test_mean_broadcasting  sD     !Q"b22ttTl;$GGGGGGr:   c                    t           j                            d           d}d}g dg dg dg dg dg}t          j        |t           j        	          }t          ||          }t          |                    |          t          j        |||                     t          |                    |          t          j        |||                     t          |	                                t          j	        ||                     d S )
Nr      )r   r   r   r!  r   r   r   r  r   r   r
      r   r
   r
   r  r
   r
   r
   r  r
   r
   r@   rj  r  )
r1   r   r   r2   r  r   r   rm  rc  r   )rN   r   pvalsrT   	mn_frozens        r8   rK  zTestMultinomial.test_frozen  s    
	t ZZ


:::iii			BJq
+++5))		a((+/!Q*F*FGGG	((++[-?1e-L-LMMM	))++[-@E-J-JKKKKKr:   c                 *   d}t           j                            d          }|                    |          }d|d<   |t          j        |          z  }t          j        |          }t          j        |||          }t          j        |          sJ d S )NX   l   iRZY gKH9r_   )r1   r   r   r   rH   r   rc  isfinite)rN   r   r   rt  rT   rc  s         r8   test_gh_11860zTestMultinomial.test_gh_11860   s    
 i##$788JJqMM"	RVAYYGAJJ#Aq!,,{6"""""""r:   N)r   r   r   rh  rq  rv  r}  r  r  r  r  r  r  r  r  rK  r  r   r:   r8   r^  r^  o  s        2 2 2	/ 	/ 	/M M M"% % %: : :*; ; ; / / // / /? ? ?  8 8 8H H H
L 
L 
L# # # # #r:   r^  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestInvwishartc           	         d}t          j        t          j        |          dz             }t          j        ||dz
  z  dz            |t          j        |d          <   t          j        |j        |          }g }t          d          D ]}t          j        t          j        |          |dz   dz  z             }t          j        ||dz
  z  dz            |t          j        |d          <   t          j        |j        |          }|                    |           t          j        |          j        }ddt          j	        ddd          fd||fg}|D ]\  }}}t          ||          }t          |                                t          j        ||                     t          |                                t          j        ||                     t          |                                t          j        ||                     t          |                    |          t          j        |||                     d S rH  )r1   rh   r   rJ  r   r   r   r*  r   r4  r   r   r  r   rK  r   r   )	rN   rL  r5  r  r,  rT   rM  rN  iws	            r8   rK  zTestInvwishart.test_frozen  s   
 	#q()),.Ic3q5k!m,D,DbocR((()uw&& q 	 	A	#!ax/00A,.Ic3q5k!m,D,DAbocR((()qsAAHHQKKKKHQKKM BKR++,N


 ) 	E 	ENRB&&B:>"e#<#<===JOB$>$>???JOB$>$>???BFF1IIz~aU'C'CDDDD	E 	Er:   c                    t           j                            d           d}d}t          j        |          }t          j        dddt
                    }t          j        dd	d	
          }|D ]}t          ||          }t          |dz  d          }t          |
                                |
                                           t          |                                |                                           t          |                    |          |                    |                     |                    |          }	|dz  ddf}
d}t          d|
||	           d S )NrP  rQ  r
   r[      r@   r  r   r  rR  r3  rY  rx   r   r;  r   )r1   r   r   rI   r   r  r4  r   r   r   r  r   r   r   r   )rN   rT  rL  r5  rU  r  rN  r  igr   r6   r  s               r8   test_1D_is_invgammaz"TestInvwishart.test_1D_is_invgamma/  sE   
 		vs9QAU333KB2&&& 	A 	ABB&&B"Q$d+++B BFFHHbffhh///BGGIIrwwyy111 BFF1IIrvvayy111 &&b&//CqD!T?DE":tUC@@@@	A 	Ar:   c                    d}d}t          j        |          }d|d<   d|d<   t          ||          }t          ||          }t           j                            d           t          j        ||          }t           j                            d           |                                }t           j                            d           t          j        ||          }t           j                            d           |                                }	t           j                            d           t           j                            d          }
t           j        t           j        	                    |          t           j        	                    |dz
            t           j        	                    |d	z
            f         dz  }t          j
        |          }|
|t          j        |d
          <   t           j                            |          }|                    |          }t          j        ||j                  }t           j                            t           j                            |                    }|                    |          }t           j                            t          j        ||j                            }t#          ||           t#          ||           t#          ||           t#          |	|           d S )NrA   r  r3  r   r
   r   i rx   r
   r@   r_   rI  )r1   rI   r   r   r   r   r   normalr?  	chisquarerh   rJ  r   r   r   r   r   r   )rN   rL  rN  r5  rB  r  w_rvsfrozen_w_rvsiw_rvsfrozen_iw_rvscovariances	variancesrn   DDAmanual_w_rvsiDiDAmanual_iw_rvss                      r8   test_wishart_invwishart_2D_rvsz-TestInvwishart.test_wishart_invwishart_2D_rvsM  se    sc
c
 BE"" 		vB&&
	vuuww
	vE**
	v 		vi&&A&..EI##I1%%I1%%'
 		 GI(3"/#
$
$
$% Iu%%UU1XXvb"$'' Y	e 4 455ffQii	bfS#%&8&899 	|,,,l333...}55555r:   c                    t          j        g dg dg dg dg          }t          j        g dg dg dg dg          }t          j        ||g          }|                                }t          |           t          j        d          }t          |d	                             |d	                   |d
           t          |d                             |d                   |d
           dS )Regression test for gh-8844.r@   r
   r   r3  r
   r@   r3  r3  r   r3  rA   r
   r3  r3  r
   r@   )r@   r_   r   r3  )r_   r@   r3  r3  )r3  r3  r
   r]   r]   r   V瞯<ro  r
   N)r1   r   copyr   rI   r   r   )rN   a0a1r  ainvidents         r8   test_cho_inv_batchz!TestInvwishart.test_cho_inv_batch  s   X~~~'''%~~''') * * X(((%~~''') * * Hb"Xvvxxtq		!a))5u====!a))5u======r:   c                 z   t          j        g dg dg dg dg          }t          j        g dg dg dg dg          }d	}t          j        |||          }|j        d
         }t           j                            |          \  }}t           j                            |          \  }}t           j                            ||          }	|dz  |z  ||z  dz  t          j        d          z  z
  t          |dz  |          z
  ||z   dz   dz  |z  z
  d|	
                                z  z
  }
t          ||
           dS )r  r  r  r  r  )r  r^   rA   r
   )r^   r  r[   r
   )rA   r[   rj  r@   )r
   r
   r@   r  r\   r   r@   r
   r3  N)r1   r   r   r   r3   r   r   solver   r,   tracer   )rN   r  Psinuprobrt  siglogdetX	logdetPsir   r  s              r8   test_logpdf_4x4zTestInvwishart.test_logpdf_4x4  sa   Hnnn&&&$nn&&&( ) ) h$$$& ' '  B,,GAJy((++W**3//YIOOAs##T9$!tAvrvayy()"2a4++, Avz1nW,- !''))m	$
 	h'''''r:   N)r   r   r   rK  r  r  r  r  r   r:   r8   r  r    sg        E E E@A A A<96 96 96v> > >"( ( ( ( (r:   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestSpecialOrthoGroupc                 R   t           j                            d           t          j        d          }t          j        g dg dg dg          }t          ||           t           j                            d          }t          j        d|          }t          ||           d S )N  rA   )g(fg^A.g*B?)g:d?g2ugi}?)gR#xlF?g^`D?g?r   r   )r1   r   r   r   r   r   r   ry  )rN   rT   r  r   s       r8   test_reproducibilityz*TestSpecialOrthoGroup.test_reproducibility  s    
	s#A&&8CCCBBBAAAC D D 	"!X...y,,#,66#ALAAA!!X.....r:   c                    t          t          t          j        d            t          t          t          j        d           t          t          t          j        d           t          t          t          j        d           d S Nrz  r
   r   )r   rF   r   r   rN   s    r8   test_invalid_dimz&TestSpecialOrthoGroup.test_invalid_dim  s`    j"5"94@@@j"5"96BBBj"5"91===j"5"93?????r:   c                     d}t          |          }|                    d          }t          j        |d          }t          ||           d S )Nr^   r   r   )r   r   r   )rN   rL  r  r  r  s        r8   test_frozen_matrixz(TestSpecialOrthoGroup.test_frozen_matrix  sR    $S))zztz,,"&s>>>T4     r:   c                    d t          dd          D             }d |D             }t          |dgdz  d           |D ]G}t          t          j        ||j                  t          j        |j        d	                              Hd S )
Nc                 Z    g | ](}t          d           D ]}t          j        |          )S rA   )r   r   r   .0rL  r,  s      r8   
<listcomp>z<TestSpecialOrthoGroup.test_det_and_ortho.<locals>.<listcomp>  sN     ! ! !Qxx! ! "%c** ! ! ! !r:   r@   r  c                 L    g | ]!}t           j                            |          "S r   r1   r   r  r  rT   s     r8   r  z<TestSpecialOrthoGroup.test_det_and_ortho.<locals>.<listcomp>  s&    ---Q	a  ---r:   rR     vIh%<=r'  r   )r   r   r   r1   r   r   rI   r3   )rN   r0  detsrT   s       r8   test_det_and_orthoz(TestSpecialOrthoGroup.test_det_and_ortho  s    ! !q! ! !
 .-"---rd2gE2222  	: 	:A%bfQnn&(fQWQZ&8&8: : : :	: 	:r:   c                 6   d}d}d}t           j                            d           t          j        ||          dt          fdD                       fdD             }fd	|D             }t          |gt          |          z  |           d S )
Nr[   r  皙?r  rx   r9  r  )r
   r]   r  c              3   b   K   | ]'\  ft          fd D                       fV  (dS )c                 ,    g | ]}|                  S r   r   r  rT   ecers     r8   r  z=TestSpecialOrthoGroup.test_haar.<locals>.<genexpr>.<listcomp>  !    &=&=&=QquRy&=&=&=r:   Nsortedr  r  r  r0  s    @@r8   	<genexpr>z2TestSpecialOrthoGroup.test_haar.<locals>.<genexpr>  R      RRFBb"Xv&=&=&=&=&="&=&=&=>>?RRRRRRr:   c                 .    g | ]}D ]}||k    ||fS r   r   r  e0e1elss      r8   r  z3TestSpecialOrthoGroup.test_haar.<locals>.<listcomp>  .    AAAb#AABb"br:   c                 Z    g | ]'\  }}t          |         |                   d          (S r  r    r  p0p1projs      r8   r  z3TestSpecialOrthoGroup.test_haar.<locals>.<listcomp>  4    JJJRHT"XtBx003JJJr:   )r1   r   r   r   r   dictr   r6  	rN   rL  samplesks_probpairsks_testsr  r  r0  s	         @@@r8   	test_haarzTestSpecialOrthoGroup.test_haar  s     
	s $Sw777 +RRRRcRRRRRAAAACAAAJJJJEJJJ7)CJJ.99999r:   N)r   r   r   r  r  r  r  r  r   r:   r8   r  r    sb        
/ 
/ 
/@ @ @! ! !: : :: : : : :r:   r  c                   V    e Zd Zd Zd Zd Zd Zd Zej	        j
        d             ZdS )TestOrthoGroupc                 p   d}t           j                            |           t          j        d          }t          j        d|          }t          t           j                            |          d           t          j        g dg dg dg          }t          ||           t          ||           d S )Nr  rA   r   r_   )gm?gӠh"gEo?)g~7ݲC?g>Ŀg0J_ٿ)gݱ&ǿg 6qrg`X|[)
r1   r   r   r   r   r   r   r  r   r   )rN   r   rT   r   r  s        r8   r  z#TestOrthoGroup.test_reproducibility  s    
	tOA_QT222BIMM!,,b1118<<<======? @ @ 	"!X...!"h/////r:   c                    t          t          t          j        d            t          t          t          j        d           t          t          t          j        d           t          t          t          j        d           d S r  )r   rF   r   r   r  s    r8   r  zTestOrthoGroup.test_invalid_dim  sX    j+/4888j+/6:::j+/1555j+/377777r:   c                    d}t          |          }t          |d          }|                    d          }t          j        |d          }|                    d          }t          ||           t          ||           d S )Nr^   r   r   r   r
   rx   )r   r   r   rN   rL  r  frozen_seedr  r  rvs3s          r8   r  z!TestOrthoGroup.test_frozen_matrix  s    S!!!#D111zztz,,s666A&&T4   T4     r:   c           	         d t          dd          D             }t          j        d |D                       }t          t          j        |          t          j        |j                  d           t          dgdz  d	 |D                        t          d
 |D             dgdz             |D ]L}|D ]G}t          t          j	        ||j
                  t          j        |j        d                              HMd S )Nc                 F    g | ]fd t          d          D             S )c                 8    g | ]}t          j                  S r   )r   r   )r  r,  rL  s     r8   r  z@TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>.<listcomp>  s3     # # # s## # # #r:   r  )r   )r  rL  s    @r8   r  z5TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>  sP     & & &# # # #b		# # # & & &r:   r@   r  c                 &    g | ]}d  |D             S )c                 L    g | ]!}t           j                            |          "S r   r  r  s     r8   r  z@TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>.<listcomp>  s&    777q")--**777r:   r   )r  xxs     r8   r  z5TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>  s'    EEEB77B777EEEr:   r  r'  r   r  c                 `    g | ]+}t          j        |d k               d          j        d          ,S r   r1   nonzeror3   r  rl  s     r8   r  z5TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>#  s3    "O"O"OQ2:a!e#4#4Q#7#=a#@"O"O"Or:   c                 `    g | ]+}t          j        |d k               d          j        d          ,S r-  r.  r0  s     r8   r  z5TestOrthoGroup.test_det_and_ortho.<locals>.<listcomp>$  s3    GGGQ2:a!e,,Q/5a8GGGr:   )r   r1   r   r   fabsrH   r3   r   r   r   r   rI   )rN   r0  r  r+  rT   s        r8   r  z!TestOrthoGroup.test_det_and_ortho  s$   & &q& & &
 xEE"EEEFFrwtz':':GGGG
 	1#b&"O"O$"O"O"OPPPGG$GGG"bQQQ  	> 	>B > >)"&AC..*,&*<*<> > > >>	> 	>r:   c                 6   d}d}d}t           j                            d           t          j        ||          dt          fdD                       fdD             }fd	|D             }t          |gt          |          z  |           d S )
Nr[   r  r  i  rx   r  c              3   b   K   | ]'\  ft          fd D                       fV  (dS )c                 ,    g | ]}|                  S r   r   r  s     r8   r  z6TestOrthoGroup.test_haar.<locals>.<genexpr>.<listcomp>B  r  r:   Nr  r  s    @@r8   r  z+TestOrthoGroup.test_haar.<locals>.<genexpr>B  r	  r:   c                 .    g | ]}D ]}||k    ||fS r   r   r  s      r8   r  z,TestOrthoGroup.test_haar.<locals>.<listcomp>C  r  r:   c                 Z    g | ]'\  }}t          |         |                   d          (S r  r  r  s      r8   r  z,TestOrthoGroup.test_haar.<locals>.<listcomp>D  r  r:   )r1   r   r   r   r   r  r   r6  r  s	         @@@r8   r  zTestOrthoGroup.test_haar,  s     
	s_Sw/// +RRRRcRRRRRAAAACAAAJJJJEJJJ7)CJJ.99999r:   c                 8   t           j                            d           d }t          dd          D ]ed	fd	} ||          } |t          j        j        j                  }t          j                            ||          \  }}t          d|           fd S )
Nr  c                     t           j                            t           j                            | | f                    \  }}}t          j        ||          S Nrx   )r1   r   r   r   r  r   )rL  r   _sr   s       r8   random_orthoz<TestOrthoGroup.test_pairwise_distances.<locals>.random_orthoL  sB    y}}RY%5%5C:%5%F%FGGHAr16!Q<<r:   r@   r\   r  rn  c                      t          j         fdt          |          D                       }|t           j                            | ||j                  z  }|S )Nc                 l    g | ]0}t          j                                z
  dz            1S ))rL  r@   )r1   r   )r  _rL  r   s     r8   r  z\TestOrthoGroup.test_pairwise_distances.<locals>.generate_test_statistics.<locals>.<listcomp>R  sQ     " " " FCCCLLL333<<<7!;<<" " "r:   rx   )r1   r   r   r   r   r3   )r   r  epsstatsrL  s   `   r8   generate_test_statisticszHTestOrthoGroup.test_pairwise_distances.<locals>.generate_test_statisticsQ  sr     " " " " ""1XX" " "  
 **C45;*GGGr:   r  )r  rn  )
r1   r   r   r   r   rA  r   r   r    r   )rN   r<  rB  r  r.  _Drt  rL  s          @r8   test_pairwise_distancesz&TestOrthoGroup.test_pairwise_distancesG  s     		s	  	  	  A;; 	& 	&C      0/==H--ek.E.IJJFK((6::EBc1%%%%	& 	&r:   N)r   r   r   r  r  r  r  r  rE   r   slowrD  r   r:   r8   r  r    s        0 0 08 8 8
! 
! 
!> > >*: : :6 [& & & & &r:   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestRandomCorrelationc                    t           j                            d           d}t          j        |          }t          j        |d          }t          j        g dg dg dg dg          }t          ||           t          ||           d S )Nr  r3  r  r1  r   r   )rR  ѓ2ǿA?Ϳ)rJ  rR  4($?R}%?)rK  rM  rR  qTnƿ)rL  rN  rO  rR  )r1   r   r   r   r   r   r   )rN   r  rT   r   r  s        r8   r  z*TestRandomCorrelation.test_reproducibilityb  s    
	s!"4((#Ds;;;8AAA@@@@@@AAAC D D 	"!X...!"h/////r:   c                    t          t          t          j        d            t          t          t          j        d           t          t          t          j        d           t          t          t          j        dg           t          t          t          j        ddgddgg           t          t          t          j        ddg           t          t          t          j        g d           d S )	Ntestr   r
   r@   rA   r]   r  )r
   r@   r   )r   rF   r   r   r  s    r8   test_invalid_eigsz'TestRandomCorrelation.test_invalid_eigsn  s    j"4"8$???j"4"8&AAAj"4"8#>>>j"4"83%@@@j"4"8Aa5!A-HHHj"4"83*EEEj"4"8***EEEEEr:   c                 
   d}t          |          }t          |d          }t          j        |d          }|                    d          }|                                }t          ||           t          ||           d S )NrI  r  r   r   )r   r   r   )rN   r  r  r$  r  r  r%  s          r8   r  z(TestRandomCorrelation.test_frozen_matrixw  s    !#D))(C888!%d===zzsz++  T4   T4     r:   c                   
 d 
t           j                            d           
fdt          dd          D             }|                    g d           d |D             }d |D             }d	 |D             }d
 |D             }t          ||dd           d |D             }t          ||          D ]\  }}t          ||d           |D ]}	t          |	|	j        d           d S )Nc                 ,    | |z  t          |          z  S r0   )r   )r,  rh  s     r8   r   z3TestRandomCorrelation.test_definition.<locals>.norm  s    Q3s1vv:r:   rx  c                 d    g | ],} |t           j                            |                     -S )rx   )r1   r   r   )r  r,  r   s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s8    HHHqQ	))q)1122HHHr:   r@   r\   )r]   r   r   r   c                 4    g | ]}d gt          |          z  S )rR  )r6  r  rh  s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s$    ***SVV***r:   c                 6    g | ]}t          j        |          S r   )r   r   rX  s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s$    666A $Q''666r:   c                 p    g | ]3}t          j        t           j                            |                    4S r   )r1   r2  r   r  r  s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s0    666a	a(())666r:   c                 6    g | ]}t          j        |          S r   )r1   prodrX  s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s     ///Qbgajj///r:   r  r<  c                 6    g | ]}t          j        |          S r   )r1   rh   r  s     r8   r  z9TestRandomCorrelation.test_definition.<locals>.<listcomp>  s     ((((((r:   r'  )r1   r   r   r   r*  r   zipr   )rN   r  rH   r0  r  
dets_knowndiagsr  r  rT   r   s             @r8   test_definitionz%TestRandomCorrelation.test_definition  sC   	 	 	 		sHHHHE!QKKHHHIII**T***66666 762666//$///
ju5AAAA )(R(((t$$ 	. 	.DAqAqu-----  	0 	0AAqs/////	0 	0r:   c           	         t          j        ddgddggt                    }t          j        |          }t          |t          j        ddgddgg                     t          j        d          5  t          j        ddgddgg          }t          j        ddgdt          j        dd          ggt                    }t          j        |                                          }t          ||j	        
                    |          
                    |                     t          j        d	dgdd
ggt                    }t          j        |                                          }t          ||j	        
                    |          
                    |                     d d d            n# 1 swxY w Y   t          j        ddgddggt                    }t          j        |                                          }t          |d         d           t          j        ddgddggt                    }t          j        |                                          }t          |d         d           d S )Nr   r   r
   r  ignore)overr_   gu <7~r2  r  r@   r9  gMk   @)r1   r   r  r   _to_corrr   errstate	nextafterr  r   r   )rN   r-  gm0s       r8   test_to_corrz"TestRandomCorrelation.test_to_corr  sU    HsAhA'u555'**28aVaX$677888
 [h''' 		3 		31a&2q'*++AE1:2<1+=+='>?uMMMB"+BGGII66AAqswwr{{q11222C<%6eDDDB"+BGGII66AAqswwr{{q11222		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 X1v1v&e444'		22#""" X!}q!f-U;;;'		22#"""""s   3D2F11F58F5N)r   r   r   r  rR  r  ra  rj  r   r:   r8   rG  rG  a  sc        
0 
0 
0F F F
! 
! 
!"0 "0 "0H# # # # #r:   rG  c                   >   e Zd Zej                            dddg          ej                            dg d          d                         Zej                            dg d          d             Zd	 Zej                            dg d
          d             Z	dS )TestUniformDirectionrL  r
   rA   ry   )Nr
   r[   )r[   r]   c                    t           j                            d          }t          ||          }|                    |          }t          j        |          t          j        |          }}|                    |||          j        }|j        |k    sJ t           j	        
                    |d          }	t          |	d           d S )Nl   Sid)_i4 r   rx   r_   r}   rR  )r1   r   r   r(   r   r   rI   r   r3   r   r   r   )
rN   rL  ry   r   uniform_direction_distr  r   r   expected_shapenormss
             r8   r  z!TestUniformDirection.test_samples  s     i##$788!23S!A!A!A(,,T22HSMM26#;;c00s0FFL}....	wR00r"""""r:   )Nr   rz  r   c                     d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )NzMDimension of vector must be specified, and must be an integer greater than 0.r>   )rE   r	   rF   r(   r   )rN   rL  rO   s      r8   r  z%TestUniformDirection.test_invalid_dim  s    <]:W555 	' 	'!#&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A  AAc                 
   d}t          |          }t          |d          }|                    d          }t          j        |d          }|                                }t          ||           t          ||           d S )Nr[   r  r   r   )r(   r   r   r#  s          r8   test_frozen_distributionz-TestUniformDirection.test_frozen_distribution  s    "3'''#666zzsz++ $Ss;;;  T4   T4     r:   )r@   r[   rj  c                 (   t           j                            d          }t          ||          }|                    d          \  }}|||z  |z  z  }|t           j                            |          z  }t          ||z  dd           |                    d          }||z  }||z  }t          j        ||          }	|	t           j	        z  }	|	dt           j	        z  z  }	t                      }
t          |	|
j                  }|j        d	k    sJ d S )
Nl   @9Y sr   r@   rx   r   rs  ro  '  r  )r1   r   r   r(   r   r   r   r   arctan2r  r   r!   r   pvalue)rN   rL  r   spherical_distv1v2r  s1s2anglesuniform_distkstest_results               r8   test_uniformz!TestUniformDirection.test_uniform  s   i##$788*3S999###++B
b2gl
binnR   R//// $$%$00r\r\B## 	"%!BE'yyv|'788#d******r:   N)
r   r   r   rE   r   r   r  r  rs  r  r   r:   r8   rl  rl    s        [UQF++[V%9%9%9::	# 	# ;: ,+	# [U$:$:$:;;' ' <;'
! 
! 
! [UIII..+ + /.+ + +r:   rl  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestUnitaryGroupc                    t           j                            d           t          j        d          }t          j        dd          }t          j        g dg dg dg          }t          ||           t          ||           d S )Nr  rA   r   )y~p?yZ?y뉦?ĭ?y8Z?&4?)yEHξr?8i?ye??+ݓݿyu=ٿB۽'?)yqXQÿ?yN6ҿzܷy! 8l?2W'?)r1   r   r   r   r   r   r   )rN   rT   r   r  s       r8   r  z%TestUnitaryGroup.test_reproducibility  s    
	sa  qs3338YYYXXX[[[] ^ ^ 	"!X...!"h/////r:   c                    t          t          t          j        d            t          t          t          j        d           t          t          t          j        d           t          t          t          j        d           d S r  )r   rF   r   r   r  s    r8   r  z!TestUnitaryGroup.test_invalid_dim  s\    j-"3T:::j-"3V<<<j-"3Q777j-"3S99999r:   c                    d}t          |          }t          |d          }|                    d          }t          j        |d          }|                    d          }t          ||           t          ||           d S )Nr^   r  r   r   r
   rx   )r   r   r   r#  s          r8   r  z#TestUnitaryGroup.test_frozen_matrix  s    s###Cc222zzsz++ 3777A&&T4   T4     r:   c                     d t          dd          D             }|D ][}t          t          j        ||                                j                  t          j        |j        d                   d           \d S )Nc                 Z    g | ](}t          d           D ]}t          j        |          )S r  )r   r   r   r  s      r8   r  z3TestUnitaryGroup.test_unitarity.<locals>.<listcomp>   sN     ! ! !Qxx! ! $$ ! ! ! !r:   r@   r  r   r  ro  )r   r   r1   r   conjr   rI   r3   )rN   r0  rT   s      r8   test_unitarityzTestUnitaryGroup.test_unitarity  s    ! !q! ! !
  	S 	SABF1affhhj1126!'!*3E3EERRRRR	S 	Sr:   c                    d}d}t           j                            d           t          j        ||          }t          j        d |D                       }t          j        |j        |j                  }t          |
                                t          t           j         dt           j        z            j                  }t          |j        dk               d S )Nr[   r  r  rx   c                 L    g | ]!}t           j                            |          "S r   )r   r   eigvalsr  s     r8   r  z.TestUnitaryGroup.test_haar.<locals>.<listcomp>4  s(    >>>a%,..q11>>>r:   r@   r  )r1   r   r   r   r   r)  rv  imagrealr!   ravelr   r  r   r   rw  )rN   rL  r  r0  r  rT   r4   s          r8   r  zTestUnitaryGroup.test_haar(  s    
 
	ss111 y>>2>>>??Jty$),,QWWYY"% 8 8 <==
T!"""""r:   N)r   r   r   r  r  r  r  r  r   r:   r8   r  r     sb        
0 
0 
0: : :
! 
! 
!S S S# # # # #r:   r  c                      e Zd Zddgddgddgddgddgddgddgddgddgddgg
ddgddgddggdg dfg dg d	g d
g dg dgg dg dg dg dgdg dfgZej                            de          d             Zej                            de          d             Zd Z	d Z
 ed          d             Zd Zd ZdddddgddggdddgddgddggdfdddgddggdddgddgddggdfddgddddgddgddggdfddgddddgddgddggdfddgddgddggdddgddgddggdfddgddgddggdddgddgddggdfgZej                            d e          d!             Zd"ddd"gdggdfd"gdgdd"gdggdf ej        d"g           ej        dg          dd"gdggdfgZej                            d e          d#             Zd$ Zd% Zd& Zej                            d'd(d)g          ej                            d*g d+          ej                            d,d-d.ej        g          d/                                     ZdS )0TestMultivariateTr
   r@   r]   rA   r[   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
   2   )rR  r3  r  )r3  rR  r  )r  r  rR  rj  )gJ#R<g^<gL[<gN=<g`$<zx, loc, shape, df, ansc                 v    t          |||d          }|                    |          }t          ||           d S Nr   r   )r$   r   r   )rN   rT   r:  r3   rN  ansdistvals           r8   test_pdf_correctnessz&TestMultivariateT.test_pdf_correctness  s=    c5"1555hhqkk!#s+++++r:   c                     t          |||d          }|                    |          }|                    |          }t          t	          j        |          |           d S r  )r$   r   r   r   r1   r   )	rN   rT   r:  r3   rN  r  r  ro  rp  s	            r8   test_logpdf_correctz%TestMultivariateT.test_logpdf_correct  sT    c5"1555xx{{{{1~~!"&,,55555r:   c                     g d}t          j        |d          }t          j        |          }t          ||           d S )N)
r  r^   r]   r
   r  r   r  r_   rA   r
   rN  )r$   r   r%   r   )rN   rT   r  r  s       r8   test_mvt_with_df_one_is_cauchyz0TestMultivariateT.test_mvt_with_df_one_is_cauchy  sE    --- q)))jmm!#s+++++r:   c                 J   d}t          dddd          }|                    d          }t          |          \  }}||k    sJ t          ddgd	d
gd
d	ggdd          }|                    d          }t          |          \  }}||k                                    sJ d S )Nr   r   r
   順 rN  r   rx   rb   rA   r  r_   *   )r$   r   r&   r  )rN   	P_VAL_MINr  r  r?  rt  s         r8   &test_mvt_with_high_df_is_approx_normalz8TestMultivariateT.test_mvt_with_high_df_is_approx_normal  s    
 	avA666((('''""1Ir1gR2r(';#%' ' '((('''""1Y##%%&&%&&r:   z'scipy.stats.multivariate_normal._logpdfc                 "   t          ddt          j        d          }t          |t                    sJ t          j        dt          j                   |j        dk    sJ t          j        dt          j                   |j        dk    sJ d S )Nr   r
   r^   r  r  r@   )r$   r1   r   r   r   r   
call_countr   )rN   mockr  s      r8   !test_mvt_with_inf_df_calls_normalz3TestMultivariateT.test_mvt_with_inf_df_calls_normal  s    arvA666$ :;;;;;1((((!####aBF++++!######r:   c                    d}t          j        |          }t          j        |          }d}t          j        |          }t          |||                              |          }t          j        |          sJ t          |||                              |          }t          j        |          sJ d}t           j                            ||f          }t          |||                              |          }|j        |fk    sJ t          |||                              |          }|j        |fk    sJ t          t          j        d          t          j        d          d          	                                }t          j        |          sJ d}t          t          j        d          t          j        d          d          	                    |          }|j        |fk    sJ d S )Nr]         @r^   r
   rx   )
r1   r   rI   r$   r   isscalarr   r   r3   r   )	rN   rL  r:  r3   rN  rT   r4   	n_samplesry   s	            r8   test_shape_correctnessz(TestMultivariateT.test_shape_correctness  s    hsmmsHSMMS%,,0033{3S%,,33A66{3 	Ii-..S%,,0033	i\))))S%,,33A66	i\)))) RXa[["&))Q77;;=={3 RXa[["&))Q77;;;FF	dW$$$$$$r:   c                     t                      }t          |j        dg           t          |j        dgg           |j        dk    sJ d S )Nr   r
   r$   r   r:  r3   rN  )rN   r  s     r8   test_default_argumentsz(TestMultivariateT.test_default_arguments  sJ    TXs###TZ1#'''1r:   )NNNr   r
   r
   )NNr^   r   r
   r^   Nr^   z*loc, shape, df, loc_ans, shape_ans, df_ansc                     t          |||          }t          |j        |           t          |j        |           |j        |k    sJ d S )Nr:  r3   rN  r  rN   r:  r3   rN  loc_ans	shape_ansdf_ansr  s           r8   test_default_argsz#TestMultivariateT.test_default_args  sS    #Ur:::TXw'''TZ+++6!!!!!!r:   r_   c                     t          |||          }t          |j        |           t          |j        |           t          |j        |           d S r0   r  r  s           r8   &test_scalar_list_and_ndarray_argumentsz8TestMultivariateT.test_scalar_list_and_ndarray_arguments  sO    c5"--TXw'''TZ+++TWf%%%%%r:   c           	         ddgg}t          t          t          fi t          |           ddgddgddgg}t          t          t          fi t          ||           t	          j        d          }t	          j        d          }d}t          t          t          fi t          |||           d}t          t          t          fi t          |||           d S )	Nr
   )r:  r@   rA   )r:  r3   r_   r  r   )r   rF   r$   r  r1   r   rI   )rN   r:  r3   rN  s       r8   test_argument_error_handlingz.TestMultivariateT.test_argument_error_handling  s   1vhj$	' 	'	' 	' 	'
 Q!Q!Q(j$	4 	4E222	4 	4 	4
 hqkkq		j$	; 	;Eb999	; 	; 	; j$	; 	;Eb999	; 	; 	; 	; 	;r:   c                 \   t           j                            d          }|                    d          }t          j        d          }t          ||dd          }t          ||dd          }|                    d          }|                    d          }t          ||           d S )Nr]   rA   rx   r@   r  r  )r1   r   ry  r   rI   r$   r   r   )rN   r   r:  r3   r   dist2samples1samples2s           r8   r  z&TestMultivariateT.test_reproducibility	  s    i##A&&kkqk!!q		sEaa888sEaa88899"9%%99"9%%Xx(((((r:   c                     t          ddgddgddggdd          }t          t          j        j        t
          fi | d S )Nr   r
   F)r:  r3   rN  rS   )r  r   r1   r   rg  r$   )rN   r6   s     r8   test_allow_singularz%TestMultivariateT.test_allow_singular	  sK    1qeQqE]qOOObi+^DDtDDDDDr:   ry   )r  rA   )r[   r\   r]   rA   rL  )r@   rA   r]   r[   rN  rR  r  c                     t          t          j        |          t          j        |          |          }|                    |          }|j        ||fz   k    sJ d S r:  )r$   r1   r   rI   r   r3   )rN   ry   rL  rN  r  r   s         r8   test_rvszTestMultivariateT.test_rvs	  sW     bhsmmRVC[["==hhDh!!yDC7N******r:   )r   r   r   	PDF_TESTSrE   r   r   r  r  r  r  r.   r  r  r  DEFAULT_ARGS_TESTSr  r1   r   ARGS_SHAPES_TESTSr  r  r  r  r   r  r   r:   r8   r  r  :  sm        FFFFFFFFFF	
 
A FF	

 	
	
 	
 	
1%P %$$$$$$$$$$$$$$	
 	 %$$%%%%%%	
 	
	
 	
 	
)K@ID [5yAA, , BA,
 [5yAA6 6 BA6, , ,' ' '$ U455$ $ 65$& & &@   	$ 	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	 [IK]^^# # _^# 
QB41#"
sAtqcUA&	2$1#B41#: [IK\]]& & ^]&; ; ;2) ) )E E E
 [Vg|%<==[ULLL11[TBBF#344+ + 54 21 >=+ + +r:   r  c                   D   e Zd Zej                            dddgddgddfddgddgdej        fd	dgddgdej        fddgd
dgdej        fddgddggddgd
dggddgej        ej        gfd	dgd
dgdej        fddgddgdej        fddgddgdej        fddgddgdej        fddgddgdej        fg
          d             Z	d Z
d Zd Zej                            dg ddfg ddfddgdfdgdff          d             Zej                            ddgdgddfddgddgddfddgddggddgddgggddgddgddggdd gdd!ggf ej        g ej                   ej        g ej                  dg fddgddgddfg d"g d#d$d%fg          d&             Zej                            dddgddgdd'ggddd(gfdgdggdgdggddgd)d*gfdgdgggdgdggddgd)d*ggfdgdggdggggddgd)d*gggfg          d+             Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7S )8TestMultivariateHypergeomzx, m, n, expectedrA   r]   r[   r  r^   gr   r  r
   r@   re   iir  r  r_   ic                 V    t          j        |||          }t          ||d           d S )Ngư>r'  )r   rc  r   rN   rT   r-  r   r  valss         r8   rh  z%TestMultivariateHypergeom.test_logpmf)	  s3    6 &,Q155hT222222r:   c                    t          j        ddgddgd          }t          j        dddd          }t          ||d	
           t          j        ddgddgd          }t          j        dddd          }t          ||d	
           d S )NrA   r
   r  r[   r]   )rT   r-  r      )r   r   r   r  rb  r'  r^      )r   rm  r#   r   rn  s      r8   test_reduces_hypergeomz0TestMultivariateHypergeom.test_reduces_hypergeomG	  s     &)QFr1gCCC}qB!r222d....%)QFr2h"EEE}qB"333d......r:   c                     t          ddgd          }|                    dd          }t          |                    d          |                                d	
           d S )NrA   r[   r]   r-  r   r  rx  r   r   r;  r'  r   r   r   r   rN   r   r   s      r8   r  z"TestMultivariateHypergeom.test_rvsR	  s\     $q!f222ff$Sf11RWWYYT::::::r:   c                     t          ddgddggddg          }|                    dd	          }t          |                    d
          |                                d           d S )NrA   r[   r  r]   r  r  r  r@   rx  r   r   r;  r'  r  r  s      r8   test_rvs_broadcastingz/TestMultivariateHypergeom.test_rvs_broadcastingY	  sg    #1v2w&7Aq6BBBff)#f66RWWYYT::::::r:   zm, n)r   r   r  r   r   )r   r   r   r   r   c                     t          j        ||          }t          j        |          }|                                }|||dk    <   t          ||           d S )Nr   )r   r   r1   r2   r  r   )rN   r-  r   r4   res_exs        r8   test_rvs_gh16171z*TestMultivariateHypergeom.test_rvs_gh16171^	  sS    
 %(A..JqMMqAvS&!!!!!r:   g zl?rj  r  gQ?gE|?g
y?r  )r[   r\   r^   r\   gzp?c                 V    t          j        |||          }t          ||d           d S NrS  r'  r   rm  r   r  s         r8   r  z"TestMultivariateHypergeom.test_pmfi	  s3    " &)!Q22hT222222r:   r  g ?rR  r   c                 V    t          j        |||          }t          ||d           d S r  r  r  s         r8   r  z/TestMultivariateHypergeom.test_pmf_broadcasting}	  s3     &)!Q22hT222222r:   c                 p    t          j        g dd          }g dg dg dg}t          ||d           d S )	N)rA   r^   r  r  r  )gf_?&BUп疈Cx@ؿ)r  ggs>d?ZsK)r  r  g35?rb  r'  r   r   r   r  s      r8   r  z"TestMultivariateHypergeom.test_cov	  sZ    %)JJJ"===6666666668 	d......r:   c                 j   t          j        ddgddggddg          }dd	gd	dggd
dgdd
ggg}t          ||d           t          j        dgdggddg          }dggdggg}t          ||d           t          j        ddgddg          }dd	gd	dggddgddggg}t          ||d           d S )Nr^   r  r  r  rj  r  r  g?gg(\?g(\rb  r'  r]   r[   r   g333333?g333333r  r  s          r8   r  z/TestMultivariateHypergeom.test_cov_broadcasting	  s   %)aVb"X,>1b'JJJ..0d....%)aS1#J1a&AAA"d....%)QFq"g>>>.'"Wf$568d......r:   c                     t          j        ddgd          }t          j        ddd          }t          ||d           d S )	Nr  r[   r]   r  r  r   r   r  rb  r'  )r   r  r#   r   )rN   var0var1s      r8   test_varz"TestMultivariateHypergeom.test_var	  sL    %)RGq999}rQ"---d......r:   c                    t          j        ddgddg          }t          j        ddgd          }t          j        ddgd          }t          |d         |d           t          |d	         |d           t          j        ddgdd
ggddg          }ddgddgg}t          ||d           t          j        dgdggddg          }dgdgg}t          ||d           d S )Nr  r[   r]   rj  r  r   rb  r'  r
   rk  g̍3eY?gI{?r   )r   r  r   )rN   r  r  var2var3var4var5var6s           r8   test_var_broadcastingz/TestMultivariateHypergeom.test_var_broadcasting	  s   %)RG1v>>>%)RGq999%)RGq999QD1111QD1111%)b!Wr2h,?Aq6JJJI&8(<=d....%)aS2$KAr7CCCrd|d......r:   c                     t          j        ddgd          }t          j        ddd          }t          |d         |d	           t          j        d
dgd          }ddg}t          ||d	           d S )Nr  r[   r]   r  r  r  r   rb  r'  r  rj  g      @r   )r   r   r#   r   rN   mean0r  ru  mean3s        r8   r  z#TestMultivariateHypergeom.test_mean	  s    &+r1g;;;qB///a%d3333&+r1g<<<j)u4000000r:   c                 v    t          j        ddgddggddg          }ddgd	d
gg}t          ||d           d S )NrA   r[   r  r]   rj  r  r   r   gUUUUUU@gUUUUUU@rb  r'  )r   r   r   )rN   r  r  s      r8   r  z0TestMultivariateHypergeom.test_mean_broadcasting	  sW    &+1vAw.?Aq6JJJH%
I'>?u4000000r:   c                 H   t          j        g dd          }t          |g d           t          j        g dd          }t          |t          j        t          j        t          j        g           t          j        g dg dgd          }t          |t          j        t          j        t          j        gg dgd	
           t          j        t          j        g t          j                  d          }t          |g            t          |j	        dk               d S )Nr`   r   r  r   r   r   r
   r   r   r@   r  )rR  r   rR  FFg<r'  r-  )
r   r   r   r1   r_  r   r   int_r   r3   r  s        r8   test_mean_edge_casesz.TestMultivariateHypergeom.test_mean_edge_cases	  s   &+iii1===ULLL)))&+iii1===URVRVRV4555&+yyy))).DJJJ 8,,,G"	$ 	$ 	$ 	$ '+bhr27.C.CqIIIUBu$%%%%%r:   c                 L   t          j        g dd          }t          |g dd           t          j        g dd          }t          |t          j        t          j        t          j        g           t          j        g dg d	gd          }t          |t          j        t          j        t          j        gg dgd
           t          j        t	          j        g t          j                  d          }t          |g            t          |j	        dk               d S )Nr`   r   r  r  gؗҜ<r'  r  r@   r  r  r-  )
r   r  r   r   r1   r_  r   r  r   r3   )rN   r  r  r  r  s        r8   test_var_edge_casesz-TestMultivariateHypergeom.test_var_edge_cases	  s   %)III;;;lll7777%)III;;;TBFBFBF3444%)YYY			,BaHHH7F"	$ 	$ 	$ 	$ &)BHR,A,AQGGGT2
e#$$$$$r:   c                    t          j        g dd          }g dg dg dg}t          ||d           t          j        g dd          }g dg dg dg}t          ||           t          j        t	          j        g t          j                  d          }t	          j        g t          j        	                              dd          }t          ||d           t          |j
        d
k               d S )Nr  r
   r  r  r  r'  r`   r   r  r9  )r   r   r   r   r1   r   r  float_r  r   r3   )rN   cov0r  r  r  r  r  s          r8   test_cov_edge_casesz-TestMultivariateHypergeom.test_cov_edge_cases	  s   %)III;;;lllLLL9d////%)III;;;lllLLL9T4   %)BHR,A,AQGGGx"),,,44Q::d////
f$%%%%%r:   c                    t           j                            d           d}g d}g dg dg dg dg dg}t          j        |t           j        	          }t          ||          }t          |                    |          t          j        |||                     t          |                    |          t          j        |||                     t          |	                                t          j	        ||                     t          |
                                t          j
        ||                     d S )
Nr   r  )r^   r  r     r  r  r  r  r  r  )r1   r   r   r2   r  r   r   rm  rc  r  r   )rN   r   r-  rT   
mhg_frozens        r8   rK  z%TestMultivariateHypergeom.test_frozen	  s/   
	tNN]]MMM===\\<<<)Jq(((+Aq11

q)).21a;;	= 	= 	=
))!,,.5aA>>	@ 	@ 	@
((*@*DQ*J*JKKK
((*@*DQ*J*JKKKKKr:   c                    t          t          t          j        ddd           t          t          t          j        ddgd           t          t          t          j        ddgdgd           t          t          t          j        ddgddgd           t          t          t          j        ddgddgd           t          t          t          j        ddgddgd           d S )	Nr[   r  r]   g      @r  r  g      %@g      /@)r   rF   r   rm  	TypeErrorr  s    r8   test_invalid_paramsz-TestMultivariateHypergeom.test_invalid_params 
  s    j"8"<aQGGGj"8"<a"qIIIj"8"<q!frdANNNi!7!;c3Z2h	# 	# 	#i!7!;aVTlA	' 	' 	'i!7!;aV2h	% 	% 	% 	% 	%r:   N)r   r   r   rE   r   r   r1   NINFr_  rh  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  rK  r	  r   r:   r8   r  r  (	  sN       [ VaWa+VaWa)!Wq"gq"'*Vb"Xq"&)!fq!fR2s)4Vbfbf%' !Wr2h26*Wr1gr26*Wr2hBF+VaWb"&)VaWa)+	
 43 35 43	/ 	/ 	/; ; ;; ; ;
 [V			13
Qqc1X&  " "	 " [S1#q!VaWa+1v1v"a1a& 12W1v1v&+&I79 RXb"'""HBHR$9$91bAVaVQ"YY			1j1	
  3 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 3/ / // / // / // / /1 1 11 1 1
& & &% % %& & &L L L 	% 	% 	% 	% 	%r:   r  c                      e Zd Zd Zd Zej                            dd          d             Zd Z	ej                            dd          ej                            d	d          d
                         Z
ej                            dd          d             Zd Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Zej                            dd          ej                            dg dgf          ej                            dg dgf          d                                     Zej                            dd          d             Zd Zej                            dd          d             ZdS )TestRandomTablec                 @    t           j                            d          S )Nl   OfE)r1   r   r   r  s    r8   get_rngzTestRandomTable.get_rng
  s    y$$%7888r:   c                    d}t          j        t          |          5  t          ddggddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ddgddgg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ddgddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ddgdd	g           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          ddgddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ddgg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ddgg d           d d d            n# 1 swxY w Y   ddg}g d}t          j        ddgg d          \  }}}t          ||           t          ||           |t          j        |          k    sJ d S )Nz`row` must be one-dimensionalr>   r
   r@   z`col` must be one-dimensionalz*each element of `row` must be non-negativer_   z*each element of `col` must be non-negativerb   z'sums over `row` and `col` must be equalr   z(each element of `row` must be an integerg @)r
   r
   r@   z(each element of `col` must be an integer)r  r  r
   rA   r@   r
   r
   )rE   r	   rF   r'   _process_parametersr   r1   r   )rN   rO   rowcolr  rV  r   s          r8   test_process_parametersz'TestRandomTable.test_process_parameters
  s6   1]:W555 	+ 	+1a&Aq6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 2]:W555 	+ 	+!Q1a&***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ?]:W555 	* 	*!R1a&)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ?]:W555 	* 	*!Q!R)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* <]:W555 	) 	)!Q!Q(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) =]:W555 	0 	0#sYYY///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 =]:W555 	0 	0!Q///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 !fii2Aq6999EE1aS!S!BF3KKs}   A  AA(B

BB2CCC;DD #D E%%E),E)F..F25F2G77G;>G;zscale,method))r
   boyett)r  	patefieldc                     t          j        ddg          |z  }t          j        g d          |z  }t          }|                    |||d          }|                    ||d d          }t	          ||           d S )Nr
   rA   r  methodr   )r1   r   r'   r   r   )rN   r5  r  r  r  ctr  gots           r8   test_process_rvs_method_on_Nonez/TestRandomTable.test_process_rvs_method_on_None4
  s     h1v&hyyy!!E)66#s66BBffS#df;;Xs#####r:   c                     ddg}g d}d}t          j        t          |          5  t          j        ||d           d d d            d S # 1 swxY w Y   d S )Nr
   rA   r  z$'foo' not recognized, must be one ofr>   foo)r  )rE   r	   rF   r'   r   )rN   r  r  rO   s       r8   $test_process_rvs_method_bad_argumentz4TestRandomTable.test_process_rvs_method_bad_argument@
  s    !fii 9]:W555 	5 	5S#e4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AAAr  )TFr   c                 n   |                                  }ddgg dt          j        dd|          }|rt                    nt          }t          ||rdnd          |s	fd	|rfd
n}t	          j        |dd          \  }} ||          }	t          |	t          |          z  |d            |t          |d                             }
t          |
|	d                    |
                    d|j        dd          z             } ||          }	|	j        dk    sJ t          |	j        d                   D ]N}t          |	j        d                   D ]1}|	||f         }|||f         } ||          }t          ||           2Og dg dg}t          t	          j        |d                      ||          }	|	dk    sJ g dg dg}t          t	          j        |d                      ||          }	|	dk    sJ d}t          j        t           |          5   |dg           d d d            n# 1 swxY w Y   d}t          j        t           |          5   |dgg           d d d            n# 1 swxY w Y   d}t          j        t           |          5   |t          j        gg           d d d            n# 1 swxY w Y   d}t          j        t           |          5   |dgg           d d d            n# 1 swxY w Y   d}t          j        t           |          5   |g dg           d d d            n# 1 swxY w Y   d }t          j        t           |          5   |ddgd!d"gg           d d d            d S # 1 swxY w Y   d S )#Nr@   r\   r
   rA   r]   r  r  ry   r  r   rc  rm  c                      |           S r0   r   )rT   r  original_methodr  s    r8   r  z/TestRandomTable.test_pmf_logpmf.<locals>.methodZ
  s    &q#s333r:   c                 >    t          j         |                     S r0   )r1   r  )rT   r  s    r8   rU   z1TestRandomTable.test_pmf_logpmf.<locals>.<lambda>\
  s    q		** r:   r   Tr~   return_countsr   r'  )r  r  r
   )r   r
   r
   )r@   r
   rA   r_   r}   r   )r
   r@   r@   rb   z$`x` must be at least two-dimensionalr>   z%`x` must contain only integral valuesr  z)`x` must contain only non-negative valuesz"shape of `x` must agree with `row`rD   z"shape of `x` must agree with `col`rA   r]   )r  r'   r   ri   r1   uniquer   r6  r   r   r  r3   r   r   rE   r	   rF   r_  )rN   r  r   r   r   objrm  
unique_rvscountsrt  p2rvs_ndr,  r-  pijrvijqijrT   rO   r  r  r$  r  s                      @@@@r8   test_pmf_logpmfzTestRandomTable.test_pmf_logpmfI
  s    llnn!fiisCd&.SB B B )/@l3$$$L#8hh599 	4$O4 4 4 4 4 4 4/2>*****Ys$GGG
F C
OOCHHf37777 Sjm$$%%R1 Y122677CKKw)####qwqz"" 	' 	'A171:&& ' '1gad|c$iiS#&&&&	' YY			"RVAB'''---CFFAvvvv YY			"RVAB'''---CFFAvvvv 9]:W555 	 	CHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 :]:W555 	 	C#LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 :]:W555 	 	C"&
OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 >]:W555 	 	C"KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7]:W555 	 	C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7]:W555 	 	C!QQ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   7III8JJJ:KK"%K"L  L$'L$M##M'*M'N**N.1N.r  )r  r  c                 (   |                                  }ddg}g d}t          j        ||d||          }t          j        ||          }t	          t          j        |          t          j        |                     t          |                    d          |d           t	          |                    d	
          t          j        |d                     t	          |                    d
          t          j        |d                     d S )Nr@   r\   r!  r  r"  r   r  ro  r_   r}   r  rb   )r  rA   )	r  r'   r   r   r   r1   r   r   broadcast_to)rN   r  r   r  r  r   r   s          r8   test_rvs_meanzTestRandomTable.test_rvs_mean
  s     llnn!fiisCd6,/1 1 1 c**RVD\\26#;;///T5555SWW"W%%rsI'F'FGGGSWW"W%%rsI'F'FGGGGGr:   c                    |                                  }ddg}g d}t          j        ||dd|          }t          j        ||dd|          }t          j        |d	          }t          j        |d	          }t          ||d
           d S )Nr@   r\   r!  ru  r  r"  r  r   r}   {Gz?ro  )r  r'   r   r1   r  r   )rN   r   r  r  r  r  r  rv  s           r8   test_rvs_covzTestRandomTable.test_rvs_cov
  s     llnn!fiiSuX-02 2 2Su[-02 2 2vd###vd###d......r:   c           	      P   ddg}g d}t          j        ||||                                           }|j        dk    sJ t          j        ||d||                                           }|j        dk    sJ t	          ||d	                    t          j        ||d	||                                           }|j        d
k    sJ t          j        ||d||                                           }|j        dk    sJ t          j        ||d||                                           }|j        dk    sJ t          |                    ddd          |d           d}	t          j        t          |	          5  t          j        ||d||                                            d d d            n# 1 swxY w Y   t          j        t          |	          5  t          j        ||t          j        ||                                            d d d            d S # 1 swxY w Y   d S )Nr@   r\   r!  r  r  r
   r"  rD   r   )r   r@   rA   r  )r  r@   rA   )r]   r[   )r]   r[   r@   rA   rA   r  r'  z/`size` must be a non-negative integer or `None`r>   r_   )r'   r   r  r3   r   r   r  rE   r	   rF   r1   r_  )
rN   r  r  r  r   rv2rv3rv4rv5rO   s
             r8   test_rvs_sizezTestRandomTable.test_rvs_size
  s   !fii c3v+/<<>>; ; ;x6!!!! sCa,0LLNN< < <yI%%%%RQ    sCa,0LLNN< < <yI%%%% sCb,0LLNN< < <yJ&&&&sCfV,0LLNN< < <yL((((B1--s???? D]:W555 	: 	:S#Bv*.,,..: : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ]:W555 	: 	:S#BF6*.,,..: : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s$   :,F22F69F66HH"Hc                 "   ddg}g d}t           }|                    ||d||                                           }t          j        |dd          \  }}|                    |||          }t          |t          |          z  |d	
           d S )Nr@   r\   r!  r  r"  r   Tr&  r6  r'  )r'   r   r  r1   r(  rm  r   r6  )	rN   r  r  r  r  r   r*  r+  rt  s	            r8   test_rvs_methodzTestRandomTable.test_rvs_method
  s     !fiiffS#F6"&,,..  2 2  Ys$GGG
F FF:sC((CHHf4888888r:   c                 (   g d}g d}t          ||          }|                    d||                                           }t          j        dt          |          t          |          f          }g dg dg dg|d<   t          ||           d S )Nr  )r
   r   r   r   r  r  )r   r   r   r   .r'   r   r  r1   r   r6  r   rN   r  r  r  rl  r   r  s          r8   test_rvs_with_zeros_in_col_rowz.TestRandomTable.test_rvs_with_zeros_in_col_row
  s    iillc""UU4T\\^^UDD8T3s88SXX677%%%' 	R"""""r:   )Nr  r  r  r   r  c                     t          ||          }|                    d||                                           }t          j        dt          |          t          |          f          }t          ||           d S )Nr  r  rA  rB  s          r8   test_rvs_with_edge_casesz(TestRandomTable.test_rvs_with_edge_cases  sj     c""UU2f4<<>>UBB8RS3s88455R"""""r:   r   r>  c                    dd l mc m} t          j        ddgt          j                  }t          j        g dt          j                  }t          |d|           }t          j        |          } ||||d|                                           }|j	        dt          |          t          |          fk    sJ t          j        |          |k    sJ d S )Nr   r
   rA   r  r  	rvs_rcont)scipy.stats._rcontrA  _rcontr1   r   int64ri   r   r  r3   r6  )rN   r   rI  r  r  r   ntotresults           r8   test_rvs_rcontzTestRandomTable.test_rvs_rcont
  s     	,++++++++h1vRX...hyyy111fo!oo..vc{{S#tQ77|3s88SXX66666vf~~%%%%%%r:   c                    ddg}g d}t          |||                                           }|                                }t          j        ||          }t	          ||                                           t          j        |||          }t	          ||                    |                     t          j        |||          }t	          ||                    |                     d S )Nr@   r\   r!  r   )r'   r  r   r   r   rm  rc  )rN   r  r  rl  r|  r  s         r8   rK  zTestRandomTable.test_frozen  s    !fiic777$S#..Xqvvxx(((#FC55XquuV}}---&vsC88Xqxx//00000r:   c                    ddg}g d}t          |||                                           }t          j        ||d||                                           }|                    d|          }t          ||           d S )Nr@   r\   r!  r   r  r"  )ry   r  )r'   r  r   r   )rN   r  r  r  rl  r  r  s          r8   test_rvs_frozenzTestRandomTable.test_rvs_frozen+  s    !fiic777#C2f15A A AeeFe++Xs#####r:   N)r   r   r   r  r  rE   r   r   r  r  r1  r4  r7  r=  r?  rC  rE  rM  rK  rP  r   r:   r8   r  r  
  s       9 9 9"  "  " H [^@B B$ $B B$5 5 5 [X}55[UM22L L 32 65L\ [X'>??H H @?H/ / / [X'>??': ': @?':R [X'>??9 9 @?9( [X'>??	# 	# @?	# [X'DEE[UR!I..[UR!I..# # /. /. FE# [S&))& & *)& 1 1 1  [X'>??$ $ @?$ $ $r:   r  c                     | j         }d| _          | j        |ddi t          j        |           } | j        |ddi}t          j        |          } |j        |ddi}t          ||           || _         d S )Nr   ry   rj  )r   r   pickledumpsloadsr   )distfnr6   r{  r   r0	unpickledr1s          r8   check_picklingrY  6  s    
 DFFJ1VA	T	"	"	"BQI		%1	%	%BR Fr:   c                  >   t          j        d          } d| d<   d| d<   t          dgt          t          j        dg          fgt
          d| fgt          d| fgt          dg d	fgt          d
gt          d
gg}|D ]%\  }}t          ||           t          ||           &d S )NrA   r3  r   r  r   rR  r  r[   r   rM  )r1   rI   r   r   r   r   r   r   r   r   r-   rY  )r5  distsrU  r6   s       r8   test_random_state_propertyr\  J  s    F1IIEE$KE$K	b!	RXrd^^&'	2u+	b%[!	q///*+	d	d#E  % %#FD111vt$$$$% %r:   )O__doc__rR  numpy.testingr   r   r   r   r   r   rE   r	   r   test_continuous_basicr   r  r1   scipy.linalgr   scipy.stats._multivariater   r   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*   scipy.integrater+   scipy.specialr,   common_testsr-   unittest.mockr.   r9   r<   r   r   r  r  r8  r:  r^  r  r  r  rG  rl  r  r  r  r  rY  r\  r   r:   r8   <module>rg     s    7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7  * * * * * * 9 9 9 9 9 9         C C C C C C C C C C C C: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 0 / / / / / / /             & & & & & & 5 5 5 5 5 5      ' ' 'B B B B B B B BJ  XI XI XI XI XI XI XI XIvE* E* E* E* E* E* E* E*P~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1B- - -&}9 }9 }9 }9 }9 }9 }9 }9~]# ]# ]# ]# ]# ]# ]# ]#~a( a( a( a( a( a( a( a(HC: C: C: C: C: C: C: C:Jh& h& h& h& h& h& h& h&Td# d# d# d# d# d# d# d#N6+ 6+ 6+ 6+ 6+ 6+ 6+ 6+p7# 7# 7# 7# 7# 7# 7# 7#tk+ k+ k+ k+ k+ k+ k+ k+\a% a% a% a% a% a% a% a%Hh$ h$ h$ h$ h$ h$ h$ h$T	  (% % % % %r:   