o
    1ήc                    @   s,  d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZ ee Zd ddddd	d
dddddddddddg dddddddddgZejdddgddd ZG dd dZG d d! d!ZG d"d# d#ZG d$d% d%ZG d&d' d'ZG d(d) d)ZG d*d+ d+Z G d,d- d-Z!G d.d/ d/Z"G d0d1 d1Z#ej$%d2ed3d4 Z&d5d6 Z'd7d8 Z(d9d: Z)ej$%d;d<d<ggej$%dddgd=d> Z*ej$%d?d@dAgdBdC Z+ej$%d?d@dAgej$%dDdEdFgej$%dGej,ejgdHdI Z-dS )J    N)LinAlgError)	assert_assert_raisesassert_equalassert_allcloseassert_warnsassert_no_warningsassert_array_equalassert_array_almost_equalsuppress_warnings)	GeneratorMT19937SeedSequenceRandomState
   @bb1636883c2707b51c5b7fc26c6927af4430f2e0785a8c7bc886337f919f9edf	   )
key_sha256pos@ff682ac12bb140f2d72fba8d3506cf4e46817a0db27aae1683867629031d8d55iV  )seedstepsinitialjumpedi$<i8  @16b791a1e04886ccbbb4d448d6ff791267dc458ae599475d08d5cced29d11614i7  @a0110a2cf23b56be0feaed8f787a7fc84bef0cb5623003d75b26bdfa1c18002ci  )i|2iEm:iS43i5  i  @d306cf01314d51bd37892d874308200951a35265ede54d200f1e065004c3e9eai  @0e00ab449f01a5195a83b4aee0dfbc2ce8d46466a640b92e33977d2e42f777f8i  moduleTF)scopeparamsc                 C   s   | j S N)param)request r$   P/tmp/pip-target-vg8gfxp4/lib/python/numpy/random/tests/test_generator_mt19937.pyendpoint&   s   r&   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSeedc                 C   s<   t td}t|dd t td}t|dd d S )Nr           D  )r   r   r   integersselfsr$   r$   r%   test_scalar,   s   zTestSeed.test_scalarc                 C   s   t ttd}t|dd t ttd}t|dd t tdg}t|dd t tdg}t|dd d S )Nr   r(   i  r   r)   r*   r+   )r   r   ranger   r,   nparanger-   r$   r$   r%   
test_array2   s   zTestSeed.test_arrayc                 C   s    t td}t|dd d S )Nr      iz)r   r   r   
random_rawr-   r$   r$   r%   test_seedsequence<   s   zTestSeed.test_seedsequencec                 C   s   t ttd t ttd d S )N      r   	TypeErrorr   
ValueErrorr.   r$   r$   r%   test_invalid_scalar@   s   zTestSeed.test_invalid_scalarc                 C   s0   t ttdg t ttdg t ttg d d S )Nr8   r9   )r5           r:   r=   r$   r$   r%   test_invalid_arrayE   s   zTestSeed.test_invalid_arrayc                 C   s   t ttt d S r!   )r   r<   r   r   r=   r$   r$   r%   test_noninstantized_bitgenK   s   z#TestSeed.test_noninstantized_bitgenN)	__name__
__module____qualname__r0   r4   r7   r>   rA   rB   r$   r$   r$   r%   r'   +   s    
r'   c                   @   s   e Zd Zdd Zdd ZdS )TestBinomialc                 C   sB   t jddd}dD ]}ttd|dk tt||| q	d S )N   intdtype)r         ?r5   r   )r2   zerosr   randombinomialr	   )r.   rL   pr$   r$   r%   test_n_zeroP   s
   zTestBinomial.test_n_zeroc                 C   s   t ttjdtj d S )Nr5   )r   r<   rM   rN   r2   nanr=   r$   r$   r%   test_p_is_nanY   s   zTestBinomial.test_p_is_nanN)rC   rD   rE   rP   rR   r$   r$   r$   r%   rF   O   s    	rF   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestMultinomialc                 C   s   t dddg d S )Nd   皙?皙?rM   multinomialr=   r$   r$   r%   
test_basic_      zTestMultinomial.test_basicc                 C   s   t dg d d S )NrT   )rU   rV           r[   r[   rW   r=   r$   r$   r%   test_zero_probabilityb   rZ   z%TestMultinomial.test_zero_probabilityc                 C   sZ   t dtdd  kodk n   tddd}t td|k t t|dk  d S )Nr9      )r   rM   r,   r2   allr.   xr$   r$   r%   test_int_negative_intervale   s   $z*TestMultinomial.test_int_negative_intervalc                 C   s   ddg}t td|tdjd t td|tdjd t td|tdjd t td|ddgjd t td|djd t td|tdjd tttjd|t	d d S )NrK   r5   r5   rG   rG   rG   rG   rG   rG   rG   )
r   rM   rX   r2   uint32shapearrayr   r;   floatr.   rO   r$   r$   r%   	test_sizek   s   zTestMultinomial.test_sizec                 C   s,   t ttjdddg t ttjdddg d S )NrT   皙?rU   皙?r   r<   rM   rX   r=   r$   r$   r%   test_invalid_proby   s   z!TestMultinomial.test_invalid_probc                 C   s2   t ttjdddg t ttjdgd ddg d S )Nr9   rV   rU   r   ro   r=   r$   r$   r%   test_invalid_n}   s   zTestMultinomial.test_invalid_nc                 C   sx   t d}|t |dd d  }|dd d }ttd}|jd|d}ttd}|jdt |d}t|| d S )Ng      .@r5      ۠iUrT   )pvals)r2   r3   sumr   r   rX   ascontiguousarrayr	   )r.   rO   rt   rM   
non_contigcontigr$   r$   r%   test_p_non_contiguous   s   
z%TestMultinomial.test_p_non_contiguousc                 C   sp   t jg dt jd}||  }ttd}d}tjt|d |	d| W d    d S 1 s1w   Y  d S )N)
Gz?rz   &.>r{   r{   r{   r{   r{   r{   r{   rI   rs   z-[\w\s]*pvals array is cast to 64-bit floatingmatchr5   )
r2   rh   float32ru   r   r   pytestraisesr<   rX   )r.   ra   rt   rM   r}   r$   r$   r%   test_multinomial_pvals_float32   s   
"z.TestMultinomial.test_multinomial_pvals_float32N)rC   rD   rE   rY   r\   rb   rk   rp   rq   ry   r   r$   r$   r$   r%   rS   ^   s    
rS   c                   @   s   e Zd Zdd Zdd Zejdddgdd	 Zejd
g dejdddgejdg ddd Z	dd Z
dd Zdd ZdS )TestMultivariateHypergeometricc                 C   
   d| _ d S )Ni_ r   r=   r$   r$   r%   setup_method      
z+TestMultivariateHypergeometric.setup_methodc                 C   s   t ttjdd t ttjg dd t ttjg dd t ttjg dd t ttjg d t ttjdd	gd
dd ttj}|j}||jj	 }t ttj|d d	gd
dd d S )Nr      )rG   rr   r   r9   )r9   rG   rr   rG   r5   iɚ;e   r^   	marginalsrT   count)
r   r<   rM   multivariate_hypergeometricr2   iinfoint64maxrJ   itemsize)r.   
int64_info	max_int64max_int64_indexr$   r$   r%   test_argument_validation   s0   z7TestMultivariateHypergeometric.test_argument_validationmethodr   r   c                 C   s
  t t| j}|jg dd|d}t|g d |jg d|d}t|g  |jg dd|d}t|tjdtjd |jg dd|d}t|g d |jg d	d
|d}t|g d g d}|j|t||d}t|| |jg ddd
|d}t|g dgd
  d S )N)r   r   r   r   r   r5   sizer   )r5   r   rI   r5   rG   rr   )r   r   r   rr   )rr   r   r   )r5   r5   r   r5   r5   rr   r   r^      )	r   r   r   r   r	   r2   emptyr   ru   )r.   r   rM   ra   colorsr$   r$   r%   test_edge_cases   s(   

z.TestMultivariateHypergeometric.test_edge_casesnsample)      -   7   r   )r^   rG   rr   iI c                 C   s   t t| j}tg d}|j||||d}t|tr#|f|j }n||j }t	|j| t
|dk  t
||k  t|jddtj||td t|trj|dkrlt|jdd|| |  dd	d
 d S d S d S )N)r   r^      r   r   r   r9   axis)
fill_valuerJ   順 MbP?g{Gzt?)rtolatol)r   r   r   r2   rh   r   
isinstancerH   rg   r   r   r_   r	   ru   fullr   mean)r.   r   r   r   rM   r   sampleexpected_shaper$   r$   r%   test_typical_cases   s(   



z1TestMultivariateHypergeometric.test_typical_casesc                 C   sZ   t t| j}|jg ddddd}tg dg dg dg dg dg}t|| d S )Nr   r^   r   r   )rG   r5   rG   r5   r5   rr   rG   r   rr   r   r   r   r   r2   rh   r	   r.   rM   r   expectedr$   r$   r%   test_repeatability1   s   
z2TestMultivariateHypergeometric.test_repeatability1c                 C   sZ   t t| j}|jg ddddd}tg dg dg dg dg d	g}t|| d S )
Nr      2   r   r^   r   r   )r         )      r   )r         )r      r   r   r   r$   r$   r%   test_repeatability2     
z2TestMultivariateHypergeometric.test_repeatability2c                 C   sZ   t t| j}|jg ddddd}tg dg dg dg dg d	g}t|| d S )
Nr   r   r^   r   r   )rG   rr   r   )r^   rr   r   )rG   r^   r^   )r5   r^      r   r   r$   r$   r%   test_repeatability3  r   z2TestMultivariateHypergeometric.test_repeatability3N)rC   rD   rE   r   r   r   markparametrizer   r   r   r   r   r$   r$   r$   r%   r      s    !
"r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestSetStatec                 C   sT   d| _ tt| j | _| jj| _| jj| _| jd | jd d | jd d f| _d S )NIbit_generatorstatekeyr   )r   r   r   rgr   r   legacy_stater=   r$   r$   r%   r     s   


zTestSetState.setup_methodc                 C   s<   | j jdd}| j| j_| j jdd}tt||k d S Nrr   r   )r   standard_normalr   r   r   r2   r_   )r.   oldnewr$   r$   r%   test_gaussian_reset$  s   
z TestSetState.test_gaussian_resetc                 C   sL   | j   | jj}| j jdd}|| j_| j jdd}tt||k d S r   )r   r   r   r   r   r2   r_   )r.   r   r   r   r$   r$   r%    test_gaussian_reset_in_media_res+  s   
z-TestSetState.test_gaussian_reset_in_media_resc                 C   s   | j dd d S NrK   )r   negative_binomialr=   r$   r$   r%   test_negative_binomial6  s   z#TestSetState.test_negative_binomialN)rC   rD   rE   r   r   r   r   r$   r$   r$   r%   r     s
    	r   c                   @   s\  e Zd ZejZeejej	ej
ejejejejejg	Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zejddeg dfdeg dfdeg dfgdd Z d d! Z!d"d# Z"d$d% Z#d&d' Z$d(d) Z%d*d+ Z&d,d- Z'ejj(ejd.d/d0ejd1fd/d2ej	d3fd4d5ej
d6fd7d8ejd9fgd:d; Z)d<S )=TestIntegersc                 C   s   t t| jd|td d S Nr5   r&   rJ   )r   r;   rfuncri   )r.   r&   r$   r$   r%   test_unsupported_typeC  s   z"TestIntegers.test_unsupported_typec              	   C   s   | j D ]}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}tt| j|d |||d tt| j||d ||d tt| j||||d tt| jdd||d tt| j|d g|||d tt| j|g|d g||d tt| j|g|g||d tt| jddg||d qd S Nr   rG   r5   r   	itypeboolr2   r   minr   r   r<   r   r.   r&   dtlbndubndr$   r$   r%   test_bounds_checkingF  s:   
z!TestIntegers.test_bounds_checkingc              	   C   s   | j D ]_}|tu rdnt|j}|tu rdnt|j|  }tt| j|d gd |gd ||d tt| j|gd |d gd ||d tt| j||gd ||d tt| jdgd d||d qd S r   r   r   r$   r$   r%   test_bounds_checking_array]  s    
z'TestIntegers.test_bounds_checking_arrayc              	   C   s.  | j D ]}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}| }|d }t| j||| d||d| t| j|g|| d||d| |}t| j||| d||d| t| j||| gd||d| || d }t| j||| d||d| t| j|g|| gd||d| qd S )Nr   rG   r5   r(   r   r&   rJ   r   r   r2   r   r   r   r   r   )r.   r&   r   r   r   is_opentgtr$   r$   r%   test_rng_zero_and_extremesk  sN   
z'TestIntegers.test_rng_zero_and_extremesc                 C   s  d}| j D ]}|tu rdnt|j}|tu rdnt|jd }|r'|d n|}|d }t| j|g|d g||d| t| j|g| |d g| |d| t| j|g| |d g| ||d| |}t| j|g|d g||d| t| j|g| |d g| |d| t| j|g| |d g| ||d| || d }t| j|g|d g||d| t| j|g| |d g| |d| t| j|g| |d g| ||d| qd S )Nr(   r   rG   r5   r   rJ   rI   r   )r.   r&   r   r   r   r   r   r$   r$   r%    test_rng_zero_and_extremes_array  sl   
z-TestIntegers.test_rng_zero_and_extremes_arrayc                 C   s   | j D ]C}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}z| j||||d W q tyF } ztdt	| d }~ww d S Nr   rG   r5   r   zMNo error should have been raised, but one was with the following message:

%s
r   r   r2   r   r   r   r   	ExceptionAssertionErrorstrr.   r&   r   r   r   er$   r$   r%   test_full_range  s   
zTestIntegers.test_full_rangec                 C   s   | j D ]G}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}z| j|gd |g||d W q tyJ } ztdt	| d }~ww d S r   r   r   r$   r$   r%   test_full_range_array  s   
z"TestIntegers.test_full_range_arrayc              	   C   s   t t }| jdd  D ]#}dD ]}| jd|| d||d}t| |k  t| dk qq| jdd| d|td}t| dk  t| dk d S )Nr5   )r   r      rG   i   r   r   )r   r   r   r   r   r   r   r   )r.   r&   rM   r   r   valsr$   r$   r%   test_in_bounds_fuzz  s   
z TestIntegers.test_in_bounds_fuzzc           
      C   s   | j D ]h}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}d}ttd}|j|||||d}ttd}|j|g|g|||d}ttd}|j|g| |g| |||d}	t	|| t	||	 qd S )Nr   rG   r5   r(     r   )
r   r   r2   r   r   r   r   r   r,   r	   )
r.   r&   r   r   r   r   rM   scalarscalar_arrayrh   r$   r$   r%   test_scalar_array_equiv  s,   

z$TestIntegers.test_scalar_array_equivc              
   C   s   dddddddddd	}| j dd  D ];}ttd}tjd	kr-|jd
d| d||d}n|jd
d| d||d }t|	 }t
|t|j |k qttd}|jd
d| d|tdtj}t|	 }t
|ttj |k d S )N@053594a9b82d656f967c54869bc6970aa0358cf94ad469c81478459c6a90eee3@54de9072b6ee9ff7f20b58329556a46a447a8a29d67db51201bf88baa6e4e5d4@d3a0d5efb04542b25ac712e50d21f39ac30f312a5052e9bbb1ad3baa791ac84b@14e224389ac4580bfbdccb5697d6190b496f91227cf67df60989de3d546389b1@0e203226ff3fbbd1580f15da4621e5f7164d0d8d6b51696dd42d004ece2cbec1)	r   int16int32r   int8uint16rf   uint64uint8r5   r   littler   r   r(   r   rG   )r   r   r   sys	byteorderr,   byteswaphashlibsha256	hexdigestr   r2   rJ   namer   viewr  )r.   r&   r   r   rM   valresr$   r$   r%   test_repeatability  s>   

zTestIntegers.test_repeatabilityc                 C   s   | j D ]k}|ttjfv rdnt|j}|ttjfv rdnt|jd }|r+|d n|}ttd}|j	||d||d}ttd}|j	|gd |||d}t
|| ttd}|j	|gd |gd ||d}t
|| qd S )Nr   rG   r5   r   r(   r   r   )r   r   r2   bool_r   r   r   r   r   r,   r	   )r.   r&   r   r   r   rM   r  val_bcr$   r$   r%   test_repeatability_broadcasting
  s&   
"
z,TestIntegers.test_repeatability_broadcastingzbound, expectedr*   )iui,YQiXgi$#Pl   bA i{El   /Yi r@   )ui,YQXgi%#Pl   bA i|El   0Yi        )r  r  l   bA l   1Yi i{,miuHl   HM c                 C   sJ   d t |fD ]}ttd}|j||d}t||d ur|n|d  qd S )Nr   r   r   )lenr   r   r,   r   )r.   boundr   r   rM   ra   r$   r$   r%   !test_repeatability_32bit_boundary!  s
   
z.TestIntegers.test_repeatability_32bit_boundaryc              
   C   s   t g dg dg dgg dg dg dgg dg dg d	gg d
g dg dgg dg dg dgg}dD ]%}ttd}|jdgdgdggg d|d}t||d urY|n|d  q9d S )N)i
`l   Y/ i0b)i)H{TiP-iTq)l   C iZ'l   !g )l   k40 l   n2c l   DBJ )i|(iy+l   _&A )ip@GiG^l   J|xK )l   
f l   Dmv l   E"g )i>{l   wT2L iJQ)iQ//itLol   k )i\siJi)i=l   }D l   E9l )l   
+x i#Jl   b )i0i7Ol   rn )ixiiAi.t)l   q/q i;-/i)N)r^   rr   rr   i90  r9   r   r5   )r*   r@   r  r   )r2   rh   r   r   r,   r	   )r.   desiredr   rM   ra   r$   r$   r%   .test_repeatability_32bit_boundary_broadcasting0  s:   
z;TestIntegers.test_repeatability_32bit_boundary_broadcastingc              
   C   s2  t jddd fdddft jdi}|D ]}|| D ]}}|\}}|| }t |gd g}t |gd }tttj||||d	 tttj||||d	 tttj||||d	 tttj||||d	 t j|gd gtd
}	t j|gd td
}
tttj|	|||d	 tttj||
||d	 tttj|	|
||d	 qqd S )Nr   rG   A   )r9               r   r   r   r   ))r   l            )l         r#  r$  r%  )        r&  r   r   rI   )	r2   r	  r   rh   r   r<   rM   r,   object)r.   r&   configsrJ   configlowhighlow_ahigh_alow_ohigh_or$   r$   r%   &test_int64_uint64_broadcast_exceptionsG  sD   z3TestIntegers.test_int64_uint64_broadcast_exceptionsc                 C   sd   t j}t t jj}t t t jj}t t t jjd | }tj||||d}t|| d S r   )r2   r   r   r   r	  rM   r,   r   )r.   r&   r   r   r   r   actualr$   r$   r%   test_int64_uint64_corner_casec  s   z*TestIntegers.test_int64_uint64_corner_casec                 C   s
  | j D ]<}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}|tu r.tjn|}| j||||d}t|j	| qtt
tjjfD ];}|tu rOdnt|j}|tu r[dnt|jd }|ri|d n|}| j||||d}t|dr{J tt|| qGd S )Nr   rG   r5   r   rJ   )r   r   r2   r   r   r   r  r   r   rJ   rH   compatlonghasattrtyper.   r&   r   r   r   r   r$   r$   r%   test_respect_dtype_singletonz  s   
z)TestIntegers.test_respect_dtype_singletonc                 C   s   | j D ]S}|tu rdnt|j}|tu rdnt|jd }|r%|d n|}|tu r.tjn|}| j|g|g||d}t|j	| | j|gd |gd ||d}t|j	| qd S r   )
r   r   r2   r   r   r   r  r   r   rJ   r7  r$   r$   r%   test_respect_dtype_array  s   
z%TestIntegers.test_respect_dtype_arrayc                 C   s   | j D ]M}| jddd||d}|jdksJ |j|ksJ | jddd||djdks,J ttjddddjd ttjddddjd ttjddddjd qd S )Nr   rr   r   r   r   r   r   r   )r   r   rg   rJ   r   rM   r,   )r.   r&   r   r   r$   r$   r%   test_zero_size  s   
zTestIntegers.test_zero_sizec                 C   sT   t jdkrdnd}tt tjddd|d W d    d S 1 s#w   Y  d S )Nbigz<i4z>i4r      r   r   )r  r  r   r   r<   rM   r,   )r.   other_byteord_dtr$   r$   r%   test_error_byteorder  s   "z!TestIntegers.test_error_byteorderzsample_size,high,dtype,chi2maxi@KL r^   g     @_@r   g     b@i i	  g     ȩ@i  g     d@c           
      C   sN   t j|||d}tj|dd\}}|| }|| d |  }	|	|k s%J d S )Nr   T)return_countsrG   )rM   r,   r2   uniqueru   )
r.   sample_sizer+  rJ   chi2maxsamplesvaluescountsr   chi2r$   r$   r%   $test_integers_small_dtype_chisquared  s
   
z1TestIntegers.test_integers_small_dtype_chisquaredN)*rC   rD   rE   rM   r,   r   r   r2   r  r
  r  r  r  rf   r   r	  r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   rh   r  r!  r0  r2  r8  r9  r=  rA  slowrK  r$   r$   r$   r%   r   <  sP    #
	r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejdejejfejejfgdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Z d.d/ Z!d0d1 Z"d2d3 Z#d4d5 Z$d6d7 Z%d8d9 Z&d:d; Z'd<d= Z(d>d? Z)d@dA Z*dBdC Z+dDdE Z,ejdFe-e.gejdGdHe/g dIg dJgfdKe/g dLg dMgfdNe/g dOg dPgfgdQdR Z0dSdT Z1dUdV Z2ejdWdXdYgdZd[ Z3d\d] Z4d^d_ Z5d`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=ejj>dpdq Z?drds Z@dtdu ZAdvdw ZBdxdy ZCdzd{ ZDd|d} ZEd~d ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPejdeQdddejRdgdd ZSdd ZTejdg ddd ZUejdg ddd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd ZfddĄ ZgddƄ ZhddȄ Ziddʄ Zjdd̄ Zkdd΄ ZlddЄ Zmdd҄ ZnddԄ Zoddք Zpdd؄ Zqddڄ Zrdd܄ Zsddބ Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{ejdddgdd Z|ejddej} dej}dgejdg ddd Z~dd Zdd Zdd Zdd  ZdHS (  TestRandomDistc                 C   r   )Nr   r   r=   r$   r$   r%   r     r   zTestRandomDist.setup_methodc                 C   H   t t| j}|jdddd}tddgddgd	d
gg}t|| d S )Nc   rr   rG   r   )   %   ir   r   r   r,   r2   rh   r	   r.   rM   r1  r   r$   r$   r%   test_integers  s   zTestRandomDist.test_integersc                 C   sR   t t| j}|jdddtjd}tjddgddgd	d
ggtjd}t|| d S )Nr   rP  rQ  r   r      F   D   r   rT  rI   )r   r   r   r,   r2   rf   rh   r	   rX  r$   r$   r%   test_integers_masked  s   "z#TestRandomDist.test_integers_maskedc                 C   sJ   t t| j}|jddddd}tddgdd	gd
dgg}t|| d S )NrO  rP  rQ  T)r   r&   rR  rS  rT  &   rV  irW  rX  r$   r$   r%   test_integers_closed  s   z#TestRandomDist.test_integers_closedc                 C   s:   t jtdjtdjdd}tdj}t|| d S )NlTr&   )rM   r,   r2   r   r   r   )r.   r1  r   r$   r$   r%   test_integers_max_int  s
   z$TestRandomDist.test_integers_max_intc                 C   sn   t t| j}|d}tddgddgddgg}t||dd	 t t| j}| }t||d
 dd	 d S )NrQ  gG0Ը?gæ?g2?gu	A?gH
>H?g;dE?r   decimalr%  r   r   r   rM   r2   rh   r
   rX  r$   r$   r%   test_random  s   

zTestRandomDist.test_randomc                 C   sF   t t| j}|d}tddgddgddgg}t||dd	 d S )
NrQ  CԸ?gP?gtX?g81
A?grO>H?g88dE?r   rc  re  rX  r$   r$   r%   test_random_float  s   

z TestRandomDist.test_random_floatc                 C   s2   t t| j}|jtjd}d}t||dd d S )NrI   rg  r   rc  )r   r   r   rM   r2   r~   r
   rX  r$   r$   r%   test_random_float_scalar  s   z'TestRandomDist.test_random_float_scalarzdtype, uint_view_typec                 C   sP   t t| j}|jd|d}t||d@ }d|  k r#dk s&J  J d S )Nr   rI   r5   i$^  i,e  )r   r   r   rM   r2   count_nonzeror  )r.   rJ   uint_view_typerM   r   num_ones_in_lsbr$   r$   r%   test_random_distribution_of_lsb  s    z.TestRandomDist.test_random_distribution_of_lsbc                 C   s   t ttjdd d S )Nr  rI   )r   r;   rM   r=   r$   r$   r%   test_random_unsupported_type  rZ   z+TestRandomDist.test_random_unsupported_typec                 C   s<   t t| j}|dd}tjg dtjd}t|| d S )Nr   )r   r   rG   rG   rI   r   r   r   choicer2   rh   r   r	   rX  r$   r$   r%   test_choice_uniform_replace  s   z*TestRandomDist.test_choice_uniform_replacec                 C   sD   t t| j}|jddg dd}tjg dtjd}t|| d S )Nr   )皙?rr  皙?rs  rO   )r   r5   r   r5   rI   ro  rX  r$   r$   r%   test_choice_nonuniform_replace  s   z-TestRandomDist.test_choice_nonuniform_replacec                 C   sl   t t| j}|jdddd}tjg dtjd}t|| |jddddd}tjdtjd}t|| d S )Nr   rr   Freplacer   rI   )rw  shuffle)	r   r   r   rp  r2   rh   r   r	   r3   rX  r$   r$   r%   test_choice_uniform_noreplace  s   
z,TestRandomDist.test_choice_uniform_noreplacec                 C   sF   t t| j}|jdddg dd}tjg dtjd}t|| d S )Nr   rr   F)rs  333333?rK   rs  rw  rO   )r   rG   rr   rI   ro  rX  r$   r$   r%    test_choice_nonuniform_noreplace'  s   z/TestRandomDist.test_choice_nonuniform_noreplacec                 C   s:   t t| j}|g dd}tg d}t|| d S )N)abcdr   )r}  r}  r  r  r   r   r   rp  r2   rh   r	   rX  r$   r$   r%   test_choice_noninteger-  s   z%TestRandomDist.test_choice_nonintegerc                 C   s\   t t| j}|ddgddgddgddggd}tddgddgddgg}t|| d S )	Nr   r5   rG   rr   r   r^   r   r   r  rX  r$   r$   r%   )test_choice_multidimensional_default_axis3  s   $z8TestRandomDist.test_choice_multidimensional_default_axisc                 C   s^   t t| j}|jddgddgddgddggddd	}tdgdgdgdgg}t|| d S )
Nr   r5   rG   rr   r   r^   r   r   r   r  rX  r$   r$   r%   (test_choice_multidimensional_custom_axis9  s   (z7TestRandomDist.test_choice_multidimensional_custom_axisc                 C   s  t j}tt|dd tt|dd tt|g d tt|g ddddgddggd tt|ddgdg d	d tt|ddgdd
dgd tt|ddgdddgd tt|g dddd tt|g dddd tt|g dddd tt|g dddd tt|g dddg dd d S )Nr9   rr         @)r5   rG   rr   r         ?rt  r5   rG   )rr  rr  rU   rl   rm   rr  r   r   Frv  r?   )r9   )r9   r5   )r5   r   r   r{  )rM   rp  r   r<   )r.   r   r$   r$   r%   test_choice_exceptions?  s"   
z%TestRandomDist.test_choice_exceptionsc              	   C   s   ddg}t ttjddd t ttjddd t ttjdd|d t ttjdd|d t ttjddgdd t tjd gddd u  tddg}tjdtd	}||d
< t tj|dd|u  t }t ttjd|dd  t ttjd|dd  t ttjd|d|d  t ttjd|d|d  t ttjddg|dd  t tjd g|ddj	d
k tddg}tjdtd	}||d
< t tj||dd
 |u  d}g d}ttjd|ddj| ttjd|ddj| ttjd|d|dj| ttjd|d|dj| ttjtd|ddj| ttjd
d
ddjd ttjd
dd
djd ttjddd
djd ttjd
d
djd ttjg ddjd ttjddgddjd tttjg d d S )Nrs  rn   rG   Trv  Fr{  r5   rI   r   r   )rs  rs  rs  rs  rr  rU   r   r:  r   r;  r<  r   r}  r~  )r   r2   isscalarrM   rp  rh   r   r'  tuplendimitemr   rg   r3   r,   r   r<   )r.   rO   r}  arrr/   r$   r$   r%   test_choice_return_shapeQ  sL    z'TestRandomDist.test_choice_return_shapec                 C   s,   t g d}g d}tttj||d d S )N)*   r5   rG   )NNNrt  )r2   rh   r   r<   rM   rp  )r.   r}  rO   r$   r$   r%   test_choice_nan_probabilities  s   z,TestRandomDist.test_choice_nan_probabilitiesc              	   C   s   t dd }d|dd d< tt| j}|jdd|d d d d}tt| j}|jddt |d d d d}t|| d S )Nr   r^   r  r5   rG   rr   rt  )r2   onesr   r   r   rp  rv   r	   )r.   rO   rM   rw   rx   r$   r$   r%   test_choice_p_non_contiguous  s    z+TestRandomDist.test_choice_p_non_contiguousc                 C   s   t dd }tdd}|jt jksJ tjdddd}|jt jks%J tjdd|d}|jt jks5J tjdd|dd}|jt jksFJ d S )Nr   g      @rG   Frv  rt  )rO   rw  )r2   r  rM   rp  rJ   r   )r.   rO   r1  r$   r$   r%   test_choice_return_type  s   z&TestRandomDist.test_choice_return_typec                 C   sZ   d}t t| j}|jdddd}tjdkr| }t|	t
j }t||k d S )N@4266599d12bfcfb815213303432341c06b4349f5455890446578877bb322e222'  rB  Frv  r  )r   r   r   rp  r  r  r  r  r  r  r2   r  r  r   )r.   choice_hashrM   r1  r  r$   r$   r%   test_choice_large_sample  s   
z'TestRandomDist.test_choice_large_samplec                 C   s*   t t| j}|d}d}t|| d S )Nr   s
   	8%)r   r   r   bytesr   rX  r$   r$   r%   
test_bytes  s   
zTestRandomDist.test_bytesc                 C   s   dd dd dd dd dd dd dd d	d d
d dd dd fD ]!}t t| j}|g d}|| |}|g d}t|| q#d S )Nc                 S   s
   t g S r!   )r2   rh   ra   r$   r$   r%   <lambda>  s   
 z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r!   r$   r  r$   r$   r%   r    s    c                 S      t | t jS r!   )r2   asarrayastyper  r  r$   r$   r%   r        c                 S   r  r!   )r2   r  r  r~   r  r$   r$   r%   r    r  c                 S   r  r!   )r2   r  r  	complex64r  r$   r$   r%   r    r  c                 S   s   t | tS r!   )r2   r  r  r'  r  r$   r$   r%   r        c                 S   s   dd | D S )Nc                 S      g | ]}||fqS r$   r$   .0ir$   r$   r%   
<listcomp>      ATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r$   r  r$   r$   r%   r    s    c                 S   s   t dd | D S )Nc                 S   s   g | ]}||gqS r$   r$   r  r$   r$   r%   r    r  r  )r2   r  r  r$   r$   r%   r    r  c                 S   s   t | | gjS r!   )r2   vstackTr  r$   r$   r%   r    r  c                 S   s*   t dd | D dtfdtfgt jS )Nc                 S   r  r$   r$   r  r$   r$   r%   r    r  r  r}  r~  )r2   r  rH   r  recarrayr  r$   r$   r%   r    s    
c                 S   s(   t dd | D dtdfdt jdfgS )Nc                 S   r  r$   r$   r  r$   r$   r%   r    r  r  r}  r5   r~  )r2   r  r'  r  r  r$   r$   r%   r    s
    

r5   rG   rr   r   r^   r   r   r   r   r   
r   r5   r   r   r   r^   rr   r   rG   r   )r   r   r   rx  r	   )r.   convrM   alistr1  r   r$   r$   r%   test_shuffle  s&   
zTestRandomDist.test_shufflec                 C   s   t t| j}tdd}|j|dd tg dg dg dg dg}t|| t t| j}tdd}|j|d	d t|| d S )
Nr   r   r   r5   r   r   rr   r5   rG   r   r   r^   r   r      r   r   r   r   r   r   r9   )	r   r   r   r2   r3   reshaperx  rh   r	   rX  r$   r$   r%   test_shuffle_custom_axis  s   

z'TestRandomDist.test_shuffle_custom_axisc                 C   sT   t t| j}tg d}dD ]}tg d}|j||d t|| qd S )N)r   r   )r   r5   r   )r   r   r   r2   rh   r  rx  r	   )r.   rM   r   r   r1  r$   r$   r%   test_shuffle_custom_axis_empty  s   z-TestRandomDist.test_shuffle_custom_axis_emptyc                 C   s^   t ddd}| }tt| j}|j|dd tt| j}||j t	|| d S )Nr   rG   r   r5   r   )
r2   r3   r  copyr   r   r   rx  r  r	   )r.   y1y2rM   r$   r$   r%   test_shuffle_axis_nonsquare  s   z*TestRandomDist.test_shuffle_axis_nonsquarec                 C   s   t jt tddd d d}t jt dd d d}| }| }tdD ]2}t| t	t
|j|j  t
|j|j   t| t	t
|j|j  t
|j|j   q+d S )Nr   )r^   r   rr   r5   r9   r   )r2   mamasked_valuesr  r1   r3   r  rM   rx  r   sorteddatamask)r.   r}  r~  a_origb_origr  r$   r$   r%   test_shuffle_masked  s   "
 
 z"TestRandomDist.test_shuffle_maskedc                 C   s   t t| j}td}ttj|j|d tdd}ttj|j|d tt	|j|t
ddd  g dg dg}tt|j|d td}tt	|j| td	}ttj|j|d d S )
Nr   r5   r   rr   rr   rr   rG   r   )r   r^   r   rQ  )r   r   r   r2   r3   r   	AxisErrorrx  r  r;   sliceNotImplementedErrorrh   r  r.   rM   r  r$   r$   r%   test_shuffle_exceptions  s   


z&TestRandomDist.test_shuffle_exceptionsc                 C   s^   t t| j}td}d|j_tjt	dd |
| W d    d S 1 s(w   Y  d S )Nr^   F	read-onlyr|   )r   r   r   r2   rL   flags	writeabler   r   r<   rx  )r.   rM   r}  r$   r$   r%   test_shuffle_not_writeable  s   
"z)TestRandomDist.test_shuffle_not_writeablec           	      C   s   t t| j}g d}||}g d}t|| t t| j}tg dj}||}t|t|j d}ttj	|j| d}ttj	|j| t t| j}d}g d}||}t|| d S )Nr  r  abcdg333333?r   )
rr   r   r   r   r   r   rG   r^   r5   r   )
r   r   r   permutationr	   r2   
atleast_2dr  r   r  )	r.   rM   r  r1  r   arr_2d	bad_x_strbad_x_floatinteger_valr$   r$   r%   test_permutation  s$   



zTestRandomDist.test_permutationc                 C   s   t dd}t g dg dg dg dg}tt| j}|j|dd}t|| tt| j}|j|d	d}t|| d S )
Nr   r  r  r  r  r  r5   r   r9   )	r2   r3   r  rh   r   r   r   r  r	   )r.   r}  r   rM   r1  r$   r$   r%   test_permutation_custom_axis  s   

z+TestRandomDist.test_permutation_custom_axisc                 C   sh   t t| j}td}ttj|j|d tdd}ttj|j|d tt	|j|t
ddd  d S )Nr   r5   r   r  rr   rG   )r   r   r   r2   r3   r   r  r  r  r;   r  r  r$   r$   r%   test_permutation_exceptions,  s   
z*TestRandomDist.test_permutation_exceptionsrJ   zaxis, expectedN)rr   r   r   r   r   r  )r   r   rG   r^   r5   r   r   )r   r5   rG   r   r   r  )r   r   r   rr   r   r^   r5   )r^   rr   r   r   rG   r5   )r  r   r   r   r   r   c                 C   s   t t| j}tddd|}|j|||d t|| t t| j}tddd|}|j||d}|j	|ksAJ t|| d S )Nr   rG   r   r   outr   )
r   r   r   r2   r3   r  r  permutedr	   rJ   )r.   rJ   r   r   rM   ra   yr$   r$   r%   test_permuted4  s   	
zTestRandomDist.test_permutedc                 C   s   t t| j}tddd}| }|d d d d df }|j|d|d}tg dg dg}t	|| ||d d d d df< t	|| d S )	N   rG   r  rr   r5   r  )r   r   rr   r   )r   r   r  r   )
r   r   r   r2   r3   r  r  r  rh   r	   )r.   rM   x0x1ra   r  r   r$   r$   r%   test_permuted_with_stridesH  s   

z)TestRandomDist.test_permuted_with_stridesc                 C   s   t g }t|g  d S r!   )rM   r  r	   )r.   r  r$   r$   r%   test_permuted_emptyU  s   
z"TestRandomDist.test_permuted_emptyoutshaper   r^   c                 C   s`   t g d}t j||jd}tjtdd tj||d W d    d S 1 s)w   Y  d S )Nr   rI   z
same shaper|   r  )	r2   rh   rL   rJ   r   r   r<   rM   r  )r.   r  r}  r  r$   r$   r%   "test_permuted_out_with_wrong_shapeY  s
   "z1TestRandomDist.test_permuted_out_with_wrong_shapec                 C   s^   t jdt jd}t d}tjtdd tj|d|d W d    d S 1 s(w   Y  d S )N)rr   r^   rI   zCannot castr|   r5   r  )	r2   rL   r  r  r   r   r;   rM   r  )r.   r  ra   r$   r$   r%   !test_permuted_out_with_wrong_type`  s
   
"z0TestRandomDist.test_permuted_out_with_wrong_typec                 C   sV   t d}d|j_tjtdd tj|d|d W d    d S 1 s$w   Y  d S )N)rG   r^   Fr  r|   r5   r  )	r2   rL   r  r  r   r   r<   rM   r  r`   r$   r$   r%   test_permuted_not_writeablef  s
   
"z*TestRandomDist.test_permuted_not_writeablec                 C   L   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )Nrs  rn   rQ  r   gW<$=g^
=g/:Ћ?gG!Gc>g'`2?gU?r   rc  )r   r   r   betar2   rh   r
   rX  r$   r$   r%   	test_betal  s   zTestRandomDist.test_betac                 C   sp   t t| j}|jdddd}tddgddgdd	gg}t|| t t| j}|dd}d}t|| d S )
NgZd;Y@gv/?rQ  r   r  rT  0   ,   r   )r   r   r   rN   r2   rh   r	   rX  r$   r$   r%   test_binomialu  s   

zTestRandomDist.test_binomialc                 C   J   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr   rQ  r   gmE~@@g
1ςC@grӳL@gm%xL@g<kQK@gtK@r   rc  )r   r   r   	chisquarer2   rh   r
   rX  r$   r$   r%   test_chisquare     
zTestRandomDist.test_chisquarec                 C   s   t t| j}tddg}|j|dd}t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 tddg}tt|j| t t| j}tddg}||}t||d dd d S )NI<I@EZC@rQ  r   g28\h?gɎG/?gAp?g|);?gLX?gfOh?g됷W?g(ސP?gz$Q?gmWt ?g搝K?g4hz?r   rc  HzG?缉ؗҜr%  )	r   r   r   r2   rh   	dirichletr
   r   r<   )r.   rM   alphar1  r   	bad_alphar$   r$   r%   test_dirichlet  s(   

zTestRandomDist.test_dirichletc                 C   s   t ddg}tt|t djd tt|t djd tt|t djd tt|ddgjd tt|djd tt|t djd tttj|t	d d S )Nr  r  r5   rc   rG   rd   re   )
r2   rh   r   rM   r  rf   rg   r   r;   ri   rj   r$   r$   r%   test_dirichlet_size  s   z"TestRandomDist.test_dirichlet_sizec                 C   s   t ddg}tttj| tttjddgg tttjdgdgg tttjdgdggdgdggg tttjt ddgddgg d S )Nr  r  r^   r5   )r2   rh   r   r<   rM   r  )r.   r  r$   r$   r%   test_dirichlet_bad_alpha  s   "$z'TestRandomDist.test_dirichlet_bad_alphac                 C   sh   t g d}|d d d }tt| j}|j|dd}tt| j}|jt |dd}t|| d S )N)r  g      r  rG   rQ  r   )r2   rh   r   r   r   r  rv   r
   )r.   r}  r  rM   rw   rx   r$   r$   r%   #test_dirichlet_alpha_non_contiguous  s   z2TestRandomDist.test_dirichlet_alpha_non_contiguousc                 C   sx   d}|t ddg }tt| j}|j|dd}t 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 d S )	Nr{         ?r   rQ  r   r[   r   rc  )r2   rh   r   r   r   r  r
   )r.   epsr  rM   r1  r   r$   r$   r%   test_dirichlet_small_alpha  s    z)TestRandomDist.test_dirichlet_small_alphac                 C   sT   t g d}||  }tt| j}|j|dd}|jdd}t||dd d S )N)g{Gz?g{Gz?gQ?i -1r   r   r   r   )r   )	r2   rh   ru   r   r   r   r  r   r   )r.   r  
exact_meanrM   r   sample_meanr$   r$   r%   %test_dirichlet_moderately_small_alpha  s   z4TestRandomDist.test_dirichlet_moderately_small_alphac                 C   r  )Ng8EGr?rQ  r   gvM?g?g#c?gQ:N?gAP?gE_9@r   rc  )r   r   r   exponentialr2   rh   r
   rX  r$   r$   r%   test_exponential  r  zTestRandomDist.test_exponentialc                 C   &   t tjddd tttjdd d S Nr   scale       )r   rM   r  r   r<   r=   r$   r$   r%   test_exponential_0     z!TestRandomDist.test_exponential_0c                 C   r  )Nr   M   rQ  r   g}(Ҍ?gi?g=r?g]hDA?gjӨ?g8k*u?r   rc  )r   r   r   fr2   rh   r
   rX  r$   r$   r%   test_f     
zTestRandomDist.test_fc                 C   r  )Nr^   rr   rQ  r   g,שn'@gt@g<e2@g1a3@g3r
y-2@gs1-2@r   rc  )r   r   r   gammar2   rh   r
   rX  r$   r$   r%   
test_gamma  r  zTestRandomDist.test_gammac                 C   s*   t tjdddd tttjddd d S )Nr   )rg   r	  r
  )r   rM   r  r   r<   r=   r$   r$   r%   test_gamma_0  s   zTestRandomDist.test_gamma_0c                 C   sF   t t| j}|jddd}tddgddgddgg}t|| d S )N_c97ݚ?rQ  r   r5   r  r   r   )r   r   r   	geometricr2   rh   r	   rX  r$   r$   r%   test_geometric     
zTestRandomDist.test_geometricc                 C   s   t ttjd t ttjdgd  t ttjd t ttjdgd  tjdd t ttjtj t ttjtjgd  W d    d S 1 sGw   Y  d S )Nrl   r   rm   ignoreinvalid)r   r<   rM   r  r2   errstaterQ   r=   r$   r$   r%   test_geometric_exceptions  s   "z(TestRandomDist.test_geometric_exceptionsc                 C   r  )Nr         @rQ  locr	  r   gA7G@g1Fiҿgei@g_Cg0cPg`(_տr   rc  )r   r   r   gumbelr2   rh   r
   rX  r$   r$   r%   test_gumbel  r  zTestRandomDist.test_gumbelc                 C   r  r  )r   rM   r   r   r<   r=   r$   r$   r%   test_gumbel_0  r  zTestRandomDist.test_gumbel_0c                 C   s   t t| j}|jddddd}tddgddgddgg}t|| |jdd	d
dd}tg d}t|| |jdd	ddd}tg d}t|| |jd	dd
dd}tg d}t|| |jd	dddd}tg d}t|| d S )Ng333333$@g      @r   rQ  r   r   r   r^   r   rr   r   )rr   rr   rr   rr   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   hypergeometricr2   rh   r	   rX  r$   r$   r%   test_hypergeometric  s&   




z"TestRandomDist.test_hypergeometricc                 C   r  )Nr  r  rQ  r  g6@	ga@bDA"?g*[r{g>K?g(?g<?r   rc  )r   r   r   laplacer2   rh   r
   rX  r$   r$   r%   test_laplace.  r  zTestRandomDist.test_laplacec                 C   r  r  )r   rM   r%  r   r<   r=   r$   r$   r%   test_laplace_06  r  zTestRandomDist.test_laplace_0c                 C   r  )Nr  r  rQ  r  gbZgHʊg$>?g>&gQh@g%?n?gĉ8|?r   rc  )r   r   r   logisticr2   rh   r
   rX  r$   r$   r%   test_logistic:  r  zTestRandomDist.test_logisticc                 C   r  )Nr  r  rQ  )r   sigmar   gܒx?gk*+@g<Ҿ?g
@g5a@g%jz(@r   rc  )r   r   r   	lognormalr2   rh   r
   rX  r$   r$   r%   test_lognormalB  r  zTestRandomDist.test_lognormalc                 C   s&   t tjddd tttjdd d S )Nr   )r*  r5   r
  )r   rM   r+  r   r<   r=   r$   r$   r%   test_lognormal_0J  r  zTestRandomDist.test_lognormal_0c                 C   sF   t t| j}|jddd}tddgddgdd	gg}t|| d S )
Ngƀ@?rQ  )rO   r   r   r   rr      r^   r5   )r   r   r   	logseriesr2   rh   r	   rX  r$   r$   r%   test_logseriesN  r  zTestRandomDist.test_logseriesc                 C   s$   t t| j}|ddksJ d S )Nr   r5   )r   r   r   r/  r.   rM   r$   r$   r%   test_logseries_zeroV  s   z"TestRandomDist.test_logseries_zerovaluer[   r9   r  g      @c              	   C   s  t t| j}tjddp tt || W d    n1 s#w   Y  tt |t	|gd  W d    n1 sCw   Y  tt |t	|gd d d d  W d    n1 shw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr  r  r   rG   )
r   r   r   r2   r  r   r   r<   r/  rh   )r.   r3  rM   r$   r$   r%   test_logseries_exceptionsZ  s   ""z(TestRandomDist.test_logseries_exceptionsc                 C   sf   t t| j}|jddgd dd}tg dg dgg dg d	gg d
g dgg}t|| d S )Nr   UUUUUU?r   rQ  r   )r5   r^   r5   r   r   rr   )r   rG   r   rG   r   rG   )r^   rr   rG   r   rr   r5   )r   r   r   rG   rr   r   )r   rr   r5   r^   rr   rG   )r^   r^   rr   r5   rG   r   )r   r   r   rX   r2   rh   r	   rX  r$   r$   r%   test_multinomialg  s   
zTestRandomDist.test_multinomialr   )svdeighcholeskyc                 C   s  t t| j}d}ddgddgg}d}|j||||d}t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 |j|||d}tddg}t||dd ddg}ddgddgg}tt|j||dd ddgddgg}t	t
|j|| t	t
|j||dd tt|j||dd t|j||dd tt|j||dd tt|j||ddd ddgddgg}|dv r|j||d|d}t|d |d  d!d n
tt|j||dd tjdd"gd"dggtjd#}t }	|j|||d |	t
}
t|
dksJ W d    n	1 sw   Y  td}td}tt|j||d$d tt|jtd%| tt|j|td tt|j|td& d S )'N)r  r   r5   r   rQ  r   gtg$&@g&بO=g!$@gDo?g\&@g,R{?g
f!@g?ժ?gT^o#@g`R?gP'@r   rc  gl?g$("@rG   raise)check_validr8  r9  r  )r;  r   )r7  r8  r   ).r   ).r5   r   rs  rI   other)rG   r5   r5   rr   )r   r   r   multivariate_normalr2   rh   r
   r   r<   r   RuntimeWarningr   r   r~   r   recordr  rL   eyer   )r.   r   rM   r   covr   r1  r   rG  supwmur$   r$   r%   test_multivariate_normalr  s   








z'TestRandomDist.test_multivariate_normalc           	      C   s   t t| j}d}tddg}tddgddgg}|j|||f|d}|| }|j| |d  }tt|	ddk sAJ tt|| dk sOJ d S )Nr(   r5   rG   r   r?   rs  rU   )
r   r   r   r2   rh   r=  r  r_   absr   )	r.   r   rM   n_sr   rA  r/   s_centercov_empr$   r$   r%   $test_multivariate_normal_basic_stats  s    z3TestRandomDist.test_multivariate_normal_basic_statsc                 C   rN  )NrT   g|Pk?rQ  )nrO   r   i  i  i  i  iX  i  )r   r   r   r   r2   rh   r	   rX  r$   r$   r%   r     s   
z%TestRandomDist.test_negative_binomialc                 C   s\   t jdd tttjdt j tttjdt jgd  W d    d S 1 s'w   Y  d S )Nr  r  rT   r   )r2   r  r   r<   rM   r   rQ   r=   r$   r$   r%   !test_negative_binomial_exceptions  s   

"z0TestRandomDist.test_negative_binomial_exceptionsc                 C   s:   t t tdd}W d    d S 1 sw   Y  d S Nr5   r   )r   r<   rM   r   r`   r$   r$   r%   #test_negative_binomial_p0_exception  s   
"z2TestRandomDist.test_negative_binomial_p0_exceptionc                 C   sV   t jdd tttjdd tttjdgdg W d    d S 1 s$w   Y  d S )Nr  r  r#  rs  )r2   r  r   r<   rM   r   r=   r$   r$   r%   .test_negative_binomial_invalid_p_n_combination  s   "z=TestRandomDist.test_negative_binomial_invalid_p_n_combinationc                 C   s   t t| j}|jdddd}tddgddgdd	gg}t||d
d |jdddd}tddgddgddgg}t||d
d t t| j}|jdddd}tddgddgddgg}t||d
d d S )Nr^   rQ  )dfnoncr   gs؀3J?gugو/@gNJm+@gA}-4@gq=&@gjhn@r   rc  rK   rU   gZօDN?gE!X&?gt%T?gQ)V?g5Zlf?gΎ{?r   gmK?gZ?g%yKY@g@W@gĈ{>@g&BB=@)r   r   r   noncentral_chisquarer2   rh   r
   rX  r$   r$   r%   test_noncentral_chisquare  s(   


z(TestRandomDist.test_noncentral_chisquarec                 C   N   t t| j}|jddddd}tddgdd	gd
dgg}t||dd d S )Nr^   rG   r5   rQ  )dfnumdfdenrQ  r   gHP
?gn?g%f?gch?gzƎ?g]?:?r   rc  )r   r   r   noncentral_fr2   rh   r
   rX  r$   r$   r%   test_noncentral_f     

z TestRandomDist.test_noncentral_fc                 C   s2   t t| j}|jddtjd}t|sJ d S )Nr^   rG   )rU  rV  rQ  )r   r   r   rW  r2   rQ   isnanr.   rM   r1  r$   r$   r%   test_noncentral_f_nan  s   z$TestRandomDist.test_noncentral_f_nanc                 C   r  )Nr  r  rQ  r  g?`xg\P@g/7u g0aj?gi%?gog@r   rc  )r   r   r   normalr2   rh   r
   rX  r$   r$   r%   test_normal  r  zTestRandomDist.test_normalc                 C   r  r  )r   rM   r]  r   r<   r=   r$   r$   r%   test_normal_0  r  zTestRandomDist.test_normal_0c                 C   sN   t t| j}|jddd}tddgddgdd	gg}tjj||d
d d S )Nr  rQ  r}  r   gá?gƫh@gi`>?g0"&Agc@g=fAr   )nulp)r   r   r   paretor2   rh   testingassert_array_almost_equal_nulprX  r$   r$   r%   test_pareto  s   
	zTestRandomDist.test_paretoc                 C   sF   t t| j}|jddd}tddgddgddgg}t|| d S )Nr  rQ  )lamr   r   )r   r   r   poissonr2   rh   r	   rX  r$   r$   r%   test_poisson   r  zTestRandomDist.test_poissonc                 C   s   t dj}d}tttj| tttj|gd  tttj| tttj|gd  t jdd tttjt j tttjt jgd  W d    d S 1 sOw   Y  d S )Nr   r9   r   r  r  )	r2   r   r   r   r<   rM   rg  r  rQ   )r.   lambiglamnegr$   r$   r%   test_poisson_exceptions(  s   "z&TestRandomDist.test_poisson_exceptionsc                 C   r  )Nr  rQ  r`  gZ >g?gÄ(=g҇?gŚE?gߢH?r   rc  )r   r   r   powerr2   rh   r
   rX  r$   r$   r%   
test_power3  r  zTestRandomDist.test_powerc                 C   r  )Nr   rQ  )r	  r   gry@gtQP0@gAI_@g@u81@g	G0@g"wc5@r   rc  )r   r   r   rayleighr2   rh   r
   rX  r$   r$   r%   test_rayleigh;  r  zTestRandomDist.test_rayleighc                 C   r  r  )r   rM   rn  r   r<   r=   r$   r$   r%   test_rayleigh_0C  r  zTestRandomDist.test_rayleigh_0c                 C   H   t t| j}|jdd}tddgddgddgg}t||d	d
 d S )NrQ  r   gH1gW|3
g\?gLeg5P	gFA?r   rc  )r   r   r   standard_cauchyr2   rh   r
   rX  r$   r$   r%   test_standard_cauchyG     
z#TestRandomDist.test_standard_cauchyc                 C   r  )NrQ  invr   ga\5?gr7k?g8PC*?g5$[?gW3T?g*?r   rc  )r   r   r   standard_exponentialr2   rh   r
   rX  r$   r$   r%   test_standard_exponentialO  r  z(TestRandomDist.test_standard_exponentialc                 C      t ttjtjd d S NrI   )r   r;   rM   rv  r2   r  r=   r$   r$   r%   #test_standard_expoential_type_errorW     z2TestRandomDist.test_standard_expoential_type_errorc                 C   r  )Nrr   rQ  rg   r   gΈ̏&?gTϿ?g1n21@gDb<z@gBv@gc^@r   rc  r   r   r   standard_gammar2   rh   r
   rX  r$   r$   r%   test_standard_gammaZ  r  z"TestRandomDist.test_standard_gammac                 C   s4   t t| j}|jdtjd}d}t||dd d S )Nrr   rI   g   d@r   rc  )r   r   r   r~  r2   r~   r
   rX  r$   r$   r%   !test_standard_gammma_scalar_floatb  s   z0TestRandomDist.test_standard_gammma_scalar_floatc                 C   r  )Nrr   rQ  r|  gf&?gMO?g1@g):@g@g;i@r^   rc  r}  rX  r$   r$   r%   test_standard_gamma_floath  r  z(TestRandomDist.test_standard_gamma_floatc                 C   s   t jdt jd}tt| j}|jd|t jd t jddgddgd	d
ggt jd}t||dd tt| j}|jd|dt jd t||dd d S )NrQ  rI         $@r  rJ   gM»L$@ga {@gN]"@gPS")@g_+@gmB@r^   rc  r  r   rJ   )	r2   rL   r~   r   r   r   r~  rh   r
   )r.   r1  rM   r   r$   r$   r%   test_standard_gammma_float_outp  s   
z-TestRandomDist.test_standard_gammma_float_outc                 C   s   t ttjddd d S )Nr  r  rI   )r   r;   rM   r~  r=   r$   r$   r%    test_standard_gamma_unknown_type}  s   

z/TestRandomDist.test_standard_gamma_unknown_typec                 C   s6   t d}tttjdd|d tttjdd|d d S )Nr   r  r   )r   r  )r   r5   )r2   rL   r   r<   rM   r~  )r.   r  r$   r$   r%   test_out_size_mismatch  s   

z%TestRandomDist.test_out_size_mismatchc                 C   r  )Nr   )rg   r
  )r   rM   r~  r   r<   r=   r$   r$   r%   test_standard_gamma_0  r  z$TestRandomDist.test_standard_gamma_0c                 C   rq  )NrQ  r   g
bYg? ?gGH{Lgz\?gc`+?gT}?r   rc  )r   r   r   r   r2   rh   r
   rX  r$   r$   r%   test_standard_normal  rt  z#TestRandomDist.test_standard_normalc                 C   rx  ry  )r   r;   rM   r   r2   r  r=   r$   r$   r%   %test_standard_normal_unsupported_type  r{  z4TestRandomDist.test_standard_normal_unsupported_typec                 C   r  )Nr   rQ  )rP  r   gV1g	|ڙ(?g-?g NhڿgMc?g!uLM r   rc  )r   r   r   
standard_tr2   rh   r
   rX  r$   r$   r%   test_standard_t  r  zTestRandomDist.test_standard_tc                 C   rT  )Ng{Gz@g(\u$@gףp=
W4@rQ  )leftmoderightr   gEpw@g4DC+@gŋ@g/,@gkuR*@gHNPcr+@r   rc  )r   r   r   
triangularr2   rh   r
   rX  r$   r$   r%   test_triangular  rY  zTestRandomDist.test_triangularc                 C   r  )NGz?gGz%@rQ  )r*  r+  r   gm2@gJaD@g: @g
Q @g@T{e@gb@r   rc  r   r   r   uniformr2   rh   r
   rX  r$   r$   r%   test_uniform  r  zTestRandomDist.test_uniformc                 C   s   t dj}t dj}tj}tt|t j d tt|dt j tt||| tt|t j gdg tt|dgt jg tjt 	|d|d d d S )Nri   r   r5   g ؅W4vC)r*  r+  )
r2   finfor   r   rM   r  r   OverflowErrorinf	nextafter)r.   fminfmaxfuncr$   r$   r%   test_uniform_range_bounds  s   z(TestRandomDist.test_uniform_range_boundsc                 C   sn   t j}|dd}t|d |dtjgdtjg}t|dtjg |dgdggddg}t|dtd  d S )N      ?r[   g
ףp= @re   )rM   r  r   r2   pirL   )r.   r  resultr$   r$   r%   test_uniform_zero_range  s   

z&TestRandomDist.test_uniform_zero_rangec                 C   sH   t j}tt|dd tt|ddgddg tt|ddgddggd d S )NrG   r5   r   rr   )rM   r  r   r<   )r.   r  r$   r$   r%   test_uniform_neg_range  s   z%TestRandomDist.test_uniform_neg_rangec                 C   sj   G dd dt j}t d|}tttj|| G dd dt j}t d|}tttj|dd d S )Nc                   @      e Zd Zdd ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc                 S      t r!   r;   r=   r$   r$   r%   	__float__     zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)rC   rD   rE   r  r$   r$   r$   r%   ThrowingFloat      r  r  c                   @   r  )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   r  r!   r  r=   r$   r$   r%   __int__  r  zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)rC   rD   rE   r  r$   r$   r$   r%   ThrowingInteger  r  r  r5   )	r2   ndarrayrh   r  r   r;   rM   r  r#  )r.   r  throwing_floatr  throwing_intr$   r$   r%   !test_scalar_exception_propagation  s   
z0TestRandomDist.test_scalar_exception_propagationc                 C   r  )Nr  p=
ף?rQ  rD  kappar   gLA?gxyw@gzVR?gpE ?g8&Aпgv @r   rc  )r   r   r   vonmisesr2   rh   r
   rX  r$   r$   r%   test_vonmises  r  zTestRandomDist.test_vonmisesc                 C   s4   t t| j}|jdddd}tt|  d S )Nr[   gg5_PG>i@B r  )r   r   r   r  r   r2   isfiniter_   r.   rM   rr$   r$   r%   test_vonmises_small  s   z"TestRandomDist.test_vonmises_smallc                 C   s0   t t| j}|jdtjd}tt| d S )Nr[   )rD  r  )r   r   r   r  r2   rQ   r   rZ  r  r$   r$   r%   test_vonmises_nan  s   z TestRandomDist.test_vonmises_nanr  g     @  4&kCc                 C   st   t t| j}t|j}|jj}|jd|dd}||j_|jd|dd}|dk r/t|| d S t	||ks8J d S )Nr   r   r   g    .A)
r   r   r   r   r   r   r  r   r2   r_   )r.   r  rM   rsr   random_state_valsgen_valsr$   r$   r%   test_vonmises_large_kappa  s   
z(TestRandomDist.test_vonmises_large_kapparD  g      gg	@)r{   gư>r5   g     @@r  c                 C   sF   t t| j}|||d}tt|tj kot|tjk d S )Nr   )r   r   r   r  r   r2   r_   r  )r.   rD  r  rM   r  r$   r$   r%   test_vonmises_large_kappa_range  s   *z.TestRandomDist.test_vonmises_large_kappa_rangec                 C   r  )Nr  r  rQ  )r   r	  r   g*س2?gt	@g;S@g\ F@gxF @g6b?r   rc  )r   r   r   waldr2   rh   r
   rX  r$   r$   r%   	test_wald  r  zTestRandomDist.test_waldc                 C   r  )Nr  rQ  r`  gnJZ?g*/F?gs(RY?g]'%?g,qD?g8 ?r   rc  )r   r   r   weibullr2   rh   r
   rX  r$   r$   r%   test_weibull  r  zTestRandomDist.test_weibullc                 C   s<   t t| j}t|jdddtd tt|jdd d S )Nr   r   r`  r
  )r}  )	r   r   r   r   r  r2   rL   r   r<   r1  r$   r$   r%   test_weibull_0  s   zTestRandomDist.test_weibull_0c                 C   sF   t t| j}|jddd}tddgddgddgg}t|| d S )	Nr  rQ  r`  r5   r   ic  ib  rG   )r   r   r   zipfr2   rh   r	   rX  r$   r$   r%   	test_zipf"  r  zTestRandomDist.test_zipf)rC   rD   rE   r   rY  r]  r_  rb  rf  rh  ri  r   r   r   r2   r~   rf   float64r	  rm  rn  rq  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rH   r'  rh   r  r  r  r  r  r  r  r  r  r  r  r  r  r   rL  r  r  r  r  r  r  r  r  r!  r"  r$  r&  r'  r)  r,  r-  r0  r2  r  rQ   r4  r6  rE  rJ  r   rL  rN  rO  rS  rX  r\  r^  r_  re  rh  rk  rm  ro  rp  rs  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r$   r$   r%   rM    s   


		.			
	

		

I
			
rM  c                	   @   sT  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"e#j$%dAdBe&'dBdBge&'dBggdBggggdCdD Z(dEdF Z)dGdH Z*dIS )JTestBroadcastc                 C   r   )Ni[r   r=   r$   r$   r%   r   .  r   zTestBroadcast.setup_methodc                 C   s   t t| j}dg}dg}|j}tg d}t t| j}||d |}t||dd t t| j}|||d }t||dd d S )Nr   r5   )g4
7^?gF]
"?g .?rr   r   rc  r  )r.   rM   r*  r+  r  r   r1  r$   r$   r%   r  2  s   zTestBroadcast.test_uniformc                 C   s   dg}dg}dg}t t| j}tg d}t t| j}||d |}t||dd tt|j|d | t t| j}|j}|||d }t||dd tt|||d  d S )Nr   r5   r9   )gw-Dؿgn0_x?gʊ;<.?rr   r   rc  )	r   r   r   r2   rh   r]  r
   r   r<   )r.   r  r	  	bad_scalerM   r   r1  r]  r$   r$   r%   r^  A  s   zTestBroadcast.test_normalc           	      C   s   dg}dg}dg}dg}t g d}tt| j}|j}||d |}t||dd tt||d | tt||d | tt| j}|||d }t||dd d S )	Nr5   rG   r9   r?   )gf8?g%eo?g$q??rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   )	r.   r}  r~  bad_abad_br   rM   r  r1  r$   r$   r%   r  S  s   zTestBroadcast.test_betac                 C   Z   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S Nr5   r9   )g`ʄ?gE]?g?rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   r.   r	  r  r   rM   r1  r$   r$   r%   r  e     zTestBroadcast.test_exponentialc                 C   s\   dg}dg}t g d}tt| j}|j}||d }t||dd tt||d  d S r  )	r2   rh   r   r   r   r~  r
   r   r<   )r.   rg   	bad_shaper   rM   	std_gammar1  r$   r$   r%   r  o  s   z!TestBroadcast.test_standard_gammac           	      C      dg}dg}dg}dg}t g d}tt| j}|j}||d |}t||dd tt||d | tt||d | tt| j}|j}|||d }t||dd tt|||d  tt|||d  d S )	Nr5   rG   r9   r?   )g3ʄ?gJE]?g?rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   )	r.   rg   r	  r  r  r   rM   r  r1  r$   r$   r%   r  z  "   zTestBroadcast.test_gammac           	      C   r  )	Nr5   rG   r9   r?   )gM3B?gybi@g0?rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   )	r.   rU  rV  	bad_dfnum	bad_dfdenr   rM   r  r1  r$   r$   r%   r    r  zTestBroadcast.test_fc              	   C   s  dg}dg}dg}dg}dg}dg}t g d}tt| j}|j}	|	|d ||}
t|
|dd	 t t |	||t j	gd sDJ t
t|	|d || t
t|	|d || t
t|	|d || tt| j}|j}	|	||d |}
t|
|dd	 t
t|	||d | t
t|	||d | t
t|	||d | tt| j}|j}	|	|||d }
t|
|dd	 t
t|	|||d  t
t|	|||d  t
t|	|||d  d S )
NrG   rr   r   r   r9   r?   )gŜ,n1 @g!6)@g9?r   rc  )r2   rh   r   r   r   rW  r
   r_   rZ  rQ   r   r<   )r.   rU  rV  rQ  r  r  bad_noncr   rM   nonc_fr1  r$   r$   r%   rX    s:   $zTestBroadcast.test_noncentral_fc                 C   s@   t t| j}tddg}|jddddd}t||dd d S )NgZ\#?gDqw?rn   rG   r   r   rc  )r   r   r   r2   rh   rW  r
   )r.   rM   r   r1  r$   r$   r%   test_noncentral_f_small_df  s   z(TestBroadcast.test_noncentral_f_small_dfc                 C   r  )Nr5   r9   )gC{?g7Q#?g%h1T@rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   r.   rP  bad_dfr   rM   r1  r$   r$   r%   r    r  zTestBroadcast.test_chisquarec           	      C   r  )	Nr5   rG   r9   r?   )g-S?g[@gr3/.?rr   r   rc  )	r2   rh   r   r   r   rR  r
   r   r<   )	r.   rP  rQ  r  r  r   rM   nonc_chir1  r$   r$   r%   rS    r  z'TestBroadcast.test_noncentral_chisquarec                 C   r  )Nr5   r9   )g>Qg{g,e?rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   r  r$   r$   r%   r    r  zTestBroadcast.test_standard_tc                 C   s   dg}dg}dg}t g d}tt| j}||d |}t||dd tt|j|d | tt| j}|||d }t||dd tt|j||d  d S )NrG   r5   r9   )gD()@g,)ʸ@gPorr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   )r.   rD  r  	bad_kappar   rM   r1  r$   r$   r%   r    s   zTestBroadcast.test_vonmisesc                 C   r  )Nr5   r9   )g/h?gcE?g/gV?rr   r   rc  )	r2   rh   r   r   r   rb  r
   r   r<   r.   r}  r  r   rM   r1  r$   r$   r%   re    r  zTestBroadcast.test_paretoc                 C   r  r  )	r2   rh   r   r   r   r  r
   r   r<   r  r$   r$   r%   r    r  zTestBroadcast.test_weibullc                 C   r  )Nr5   r9   )gT?gʥ?gKܮc?rr   r   rc  )	r2   rh   r   r   r   rl  r
   r   r<   r  r$   r$   r%   rm    r  zTestBroadcast.test_powerc                 C      dg}dg}dg}t g d}tt| j}|j}||d |}t||dd tt||d | tt| j}|j}|||d }t||dd tt|||d  d S )Nr   r5   r9   )gh&BgsgR#?rr   r   rc  )	r2   rh   r   r   r   r%  r
   r   r<   )r.   r  r	  r  r   rM   r%  r1  r$   r$   r%   r&  $     zTestBroadcast.test_laplacec                 C   r  )Nr   r5   r9   )gs4?g$Cw%T?gտrr   r   rc  )	r2   rh   r   r   r   r   r
   r   r<   )r.   r  r	  r  r   rM   r   r1  r$   r$   r%   r!  6  r  zTestBroadcast.test_gumbelc                 C   s   dg}dg}dg}t g d}tt| j}||d |}t||dd tt|j|d | tt| j}|||d }t||dd tt|j||d  t	|dd	d d S )
Nr   r5   r9   )g$DgXPg,?rr   r   rc  r  r[   )
r2   rh   r   r   r   r(  r
   r   r<   r   )r.   r  r	  r  r   rM   r1  r$   r$   r%   r)  H  s   zTestBroadcast.test_logisticc                 C   s   dg}dg}dg}t g d}tt| j}|j}||d |}t||dd tt||d | tt| j}|||d }tt|j||d  d S )Nr   r5   r9   )g c?gu@gVQ?rr   r   rc  )	r2   rh   r   r   r   r+  r
   r   r<   )r.   r   r*  	bad_sigmar   rM   r+  r1  r$   r$   r%   r,  Y  s   zTestBroadcast.test_lognormalc                 C   r  )Nr5   r9   )gs(?g4mK?gVk+?rr   r   rc  )	r2   rh   r   r   r   rn  r
   r   r<   r  r$   r$   r%   ro  i  s   zTestBroadcast.test_rayleighc                 C   s   dg}dg}dg}dg}t g d}tt| j}||d |}t||dd tt|j|d | tt|j|d | tt| j}|||d }t||dd tt|j||d  tt|j||d  d S )	NrK   r5   r   r?   )gk7Z?g*}z9?gc-	?rr   r   rc  )	r2   rh   r   r   r   r  r
   r   r<   )r.   r   r	  bad_meanr  r   rM   r1  r$   r$   r%   r  w  s   zTestBroadcast.test_waldc                 C   s  dg}dg}dg}dg}dg}|d \}}t g d}tt| j}	|	j}
|
|d ||}t||dd tt|
|d || tt|
|d || tt|
|d || tt| j}	|	j}
|
||d |}t||dd tt|
||d | tt|
||d | tt|
||d | tt| j}	|	j}
|
|||d }t||dd tt|
|||d  tt|
|||d  tt|
|||d  tt|
dd	d
 tt|
ddd
 tt|
ddd d S )Nr5   rr   rG   r   )gR8T>?gK?g;>h@r   rc  r  r[   g      4@g      9@)	r2   rh   r   r   r   r  r
   r   r<   )r.   r  r  r  bad_left_onebad_mode_onebad_left_twobad_mode_twor   rM   r  r1  r$   r$   r%   r    sJ   
zTestBroadcast.test_triangularc           
      C   s   dg}dg}dg}dg}dg}t g d}tt| j}|j}||d |}	t|	| tt||d | tt||d | tt||d | tt| j}|||d }	t|	| tt|||d  tt|||d  tt|||d  d S )Nr5   rK   r9   r  r   r   r5   rr   )	r2   rh   r   r   r   rN   r	   r   r<   )
r.   rK  rO   bad_n	bad_p_one	bad_p_twor   rM   binomr1  r$   r$   r%   r    s&   

zTestBroadcast.test_binomialc           
      C   s   dg}dg}dg}dg}dg}t jg dt jd}tt| j}|j}||d |}	t|	| tt	||d | tt	||d | tt	||d | tt| j}|j}|||d }	t|	| tt	|||d  tt	|||d  tt	|||d  d S )Nr5   rK   r9   r  )r   rG   r5   rI   rr   )
r2   rh   r   r   r   r   r   r	   r   r<   )
r.   rK  rO   r  r  r  r   rM   	neg_binomr1  r$   r$   r%   r     s(   

z$TestBroadcast.test_negative_binomialc           	      C   sx   dg}dg}t g d}tt| j}|j}|d g}|j}||d }t|| tt	||d  tt	||d  d S )Nr5   r9   )r   r   rr   rG   rr   )
r2   rh   r   r   r   _poisson_lam_maxrg  r	   r   r<   )	r.   rf  bad_lam_oner   rM   max_lambad_lam_tworg  r1  r$   r$   r%   rh    s   

zTestBroadcast.test_poissonc                 C   s   dg}dg}t g d}tt| j}|j}||d }t|| tt||d  t j	dd tt|t j
 tt|ddt j
g W d    d S 1 sMw   Y  d S )NrG   r   )r5   r   r5   rr   r  r  )r2   rh   r   r   r   r  r	   r   r<   r  rQ   )r.   r}  r  r   rM   r  r1  r$   r$   r%   r    s   
"zTestBroadcast.test_zipfc                 C   n   dg}dg}dg}t g d}tt| j}|j}||d }t|| tt||d  tt||d  d S )NrK   r9   r  r   rr   )	r2   rh   r   r   r   r  r	   r   r<   )r.   rO   r  r  r   rM   r  r1  r$   r$   r%   r       
zTestBroadcast.test_geometricc                 C   s2  dg}dg}dg}dg}dg}dg}dg}t g d}tt| j}	|	|d ||}
t|
| tt|	j|d || tt|	j|d || tt|	j|d || tt|	j|d || tt| j}	|	||d |}
t|
| tt|	j||d | tt|	j||d | tt|	j||d | tt|	j||d | tt| j}	|	j}||||d }
t|
| tt||||d  tt||||d  tt||||d  tt||||d  tt|ddd	 tt|ddd	 tt|ddd tt|ddd
 tt|ddd	 tt|ddd tt|dddgd d S )Nr5   rG   r9   r?   r   r  rr   r   r   r   i   @i  l        r   i    r(   )	r2   rh   r   r   r   r#  r	   r   r<   )r.   ngoodnbadr   	bad_ngoodbad_nbadbad_nsample_onebad_nsample_twor   rM   r1  	hypergeomr$   r$   r%   r$  	  sJ   


z!TestBroadcast.test_hypergeometricc                 C   r  )NrK   rG   r9   )r5   r5   r5   rr   )	r2   rh   r   r   r   r/  r	   r   r<   )r.   rO   r  r  r   rM   r/  r1  r$   r$   r%   r0  8	  r  zTestBroadcast.test_logseriesc                 C   sn  t t| j}|jddgdgd dd}tjg dg dgg d	g d
gg dg dggtjd}t|| t t| j}|ddgdgd }tjg dg dgtjd}t|| t t| j}|ddgdgd gd }tjg dg dgtjd}t|| t t| j}|dgdggdgd gd }tjg dg dgg dg d
ggtjd}t|| d S )Nr^   r   r5  r   rQ  r   )r   r   rG   r5   rG   r   )rG   rr   r   r   rG   rr   )r5   r   r5   r   rG   r5   )r   rG   rG   r5   r   r   )r   rG   r   r5   rG   r   )rr   rG   rr   rr   r   r^   rI   rG   )r   r   rG   r5   r5   r5   )r   rG   rr   rr   r^   rr   )r   r   r   rX   r2   rh   r   r	   rX  r$   r$   r%   r6  E	  sV   





 
zTestBroadcast.test_multinomialrK  r   c                 C   sH  t t| j}tdgd }|||}t|trt n|j	}|d }|j	|ks+J t
||g}|||}t||j	d d d }|j	|ksLJ t
|g|gg}|||}t||j	d d }|j	|d ksoJ |j||d| d}|j	d| d ksJ tt |j||dd}W d    d S 1 sw   Y  d S )Nr  r   )r   r9   rQ  r   )r5   r5   r5   r5   r5   r5   )r   r   r   r2   rh   rX   r   rH   r  rg   r  broadcast_shapesr   r   r<   )r.   rK  rM   rt   r1  n_shaper   r$   r$   r%   test_multinomial_pval_broadcastd	  s&   "z-TestBroadcast.test_multinomial_pval_broadcastc                 C   sF   t t| j}dgd dgd g}tt|jd| tt|jdd d S )Nr5  r   r  r5   rK   )r   r   r   r   r<   rX   )r.   rM   rt   r$   r$   r%   test_invalid_pvals_broadcast	  s   z*TestBroadcast.test_invalid_pvals_broadcastc                 C   s   t t| j}|tdddgd }|jdksJ |dtd}|jdks+J |tddtd	}|jd	ks?J d S )
N)r   r   r   i8r5  r   )r   r   r   r   r   )r   r   r   )rr   r   r   )rr   r   r   r   )r   r   r   rX   r2   r   rg   r[  r$   r$   r%   test_empty_outputs	  s   z TestBroadcast.test_empty_outputsN)+rC   rD   rE   r   r  r^  r  r  r  r  r  rX  r  r  rS  r  r  re  r  rm  r&  r!  r)  r,  ro  r  r  r  r   rh  r  r  r$  r0  r6  r   r   r   r2   rh   r  r  r  r$   r$   r$   r%   r  +  sP    
#




(-

r  c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestThreadc                 C   s   t d| _d S )Nr   )r1   seedsr=   r$   r$   r%   r   	  s   zTestThread.setup_methodc                    s   ddl m  tt| jf| }tt| jf| } fddt| j|D }dd |D  dd |D  t| j|D ]\}}tt|| q>t	 j
jdkr`tjdkr`t|| d S t|| d S )	Nr   )Threadc                    s(   g | ]\}} t t||fd qS ))targetargs)r   r   )r  r/   or  functionr$   r%   r  	  s    z-TestThread.check_function.<locals>.<listcomp>c                 S      g | ]}|  qS r$   )startr  ra   r$   r$   r%   r  	  r  c                 S   r  r$   )joinr
  r$   r$   r%   r  	  r  r   win32)	threadingr  r2   r   r  r  zipr   r   intprJ   r   r  platformr
   r	   )r.   r  szout1out2tr/   r  r$   r  r%   check_function	  s   
zTestThread.check_functionc                 C      dd }| j |dd d S )Nc                 S   s   | j dd|d< d S )Nr  r   .)r]  r   r  r$   r$   r%   
gen_random	  rZ   z*TestThread.test_normal.<locals>.gen_random)r  r  r  r.   r  r$   r$   r%   r^  	     zTestThread.test_normalc                 C   r  )Nc                 S   s   | j tdd|d< d S )NrT   r(   r  .)r  r2   r  r  r$   r$   r%   r  	  s   z'TestThread.test_exp.<locals>.gen_randomr  r  r  r  r$   r$   r%   test_exp	  r  zTestThread.test_expc                 C   r  )Nc                 S   s   | j ddgd dd|d< d S )Nr   r5  r   r  r   .)rX   r  r$   r$   r%   r  	  s   z/TestThread.test_multinomial.<locals>.gen_random)r  r   r  r  r  r$   r$   r%   r6  	  r  zTestThread.test_multinomialN)rC   rD   rE   r   r  r^  r  r6  r$   r$   r$   r%   r   	  s    r   c                   @   r  )TestSingleEltArrayInputc                 C   s4   t dg| _t dg| _t dg| _d| _d S )NrG   rr   r   r  )r2   rh   argOneargTwoargThreetgtShaper=   r$   r$   r%   r   	  s   
z$TestSingleEltArrayInput.setup_methodc                 C   s   t jt jt jt jt jt jt jt jt j	t j
t jt jf}t jt jf}|D ]}||v r1|tdg}n|| j}t|j| j q"d S r   )rM   r  r~  r  r  rb  r  rl  rn  rg  r  r  r/  r2   rh   r   r   rg   r#  )r.   funcs	probfuncsr  r  r$   r$   r%   test_one_arg_funcs	  s   
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   s   t jt jt jt jt jt jt jt jt j	t j
t jt jt jt jf}t jt jf}|D ];}||v r3tdg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j q&d S )NrK   r   )rM   r  r]  r  r  r  rR  r  r%  r   r(  r+  r  rN   r   r2   rh   r!  r   r   rg   r#  )r.   r$  r%  r  r!  r  r$   r$   r%   test_two_arg_funcs	  s(   z*TestSingleEltArrayInput.test_two_arg_funcsc              	   C   s   t jt jt jt jt jt jt jt jt j	g	}t
j}t dg}t dg}|D ]3}|||||d}t|j| j ||d |||d}t|j| j |||d ||d}t|j| j q%d S )Nr5   r   r   )r2   r  r  r
  r  r  r  rf   r   r	  rM   r,   rh   r   rg   r#  )r.   r&   r   r  r+  r*  r   r  r$   r$   r%   rY  	  s   z%TestSingleEltArrayInput.test_integersc                 C   s   t jt jt jg}|D ]6}|| j| j| j}t|j| j	 || jd | j| j}t|j| j	 || j| jd | j}t|j| j	 q
d S )Nr   )
rM   rW  r  r#  r   r!  r"  r   rg   r#  )r.   r$  r  r  r$   r$   r%   test_three_arg_funcs
  s   z,TestSingleEltArrayInput.test_three_arg_funcsN)rC   rD   rE   r   r&  r'  rY  r(  r$   r$   r$   r%   r  	  s    r  r)  c                 C   s   | d }| d }t |}|| |jd d }tjdkr!| }t|}|jd d | d d ks5J | | d d ksAJ |	 }|jd d }tjdkrU| }t|}|jd d | d	 d ksiJ | | d	 d ksuJ d S )
Nr   r   r   r   r>  r   r   r   r   )
r   r6   r   r  r  r  r  r  r  r   )r)  r   r   mt19937r   r  r   r$   r$   r%   test_jumped
  s"   




r*  c                  C   sh  t d} t d}d}tj| |ddjdksJ tt tj| ||d W d    n1 s1w   Y  tt tj| |dd W d    n1 sNw   Y  tt tj| |dd W d    n1 skw   Y  t d}tt tj||d W d    n1 sw   Y  tt tj|dd W d    n1 sw   Y  tt tj|dd W d    n1 sw   Y  t 	|}tt tj||d	 W d    n1 sw   Y  tt tj
d
ddgdd W d    n	1 sw   Y  tt tj
d
dgddd W d    n	1 s%w   Y  tt tj
d
dgddgdd W d    n	1 sGw   Y  tt tjddgddgdd W d    n	1 siw   Y  tjddd}tjddd}tjddd}t|||jdksJ tjtdd tj|||dd W d    d S 1 sw   Y  d S )Nrr   )r   rr   )r   r   rG   )r^   r   rr   r   )r5   rr   )r   r5   r5   )rr   r  r5   rz  gffffff?)rG   r5   rG   r^   zOutput size \(6, 5, 1, 1\) isr|   )r   r^   r5   r5   )r2   r  rM   r]  rg   r   r   r<   r~  r   rN   rX   r  rW  )rD  r*  r   rg   r  r}  r~  r  r$   r$   r%   test_broadcast_size_error1
  s\   



$r+  c                  C   sd   t d} t d}tj| |dd tt tj| |dd W d    d S 1 s+w   Y  d S )Nrr   r   rG   )r2   r  rM   r]  r   r   r<   )rD  r*  r$   r$   r%   test_broadcast_size_scalar\
  s   

"r,  c                  C   s8   g g dg} t td}t|j|  | dg g gksJ d S rM  )r   r   r   rx  )seqgenr$   r$   r%   test_ragged_shuffled
  s   
r/  r+  r?   c                 C   s   t td}|r
dnd}tjt|d |j| |d W d    n1 s%w   Y  |r.dnd}tjt|d |jd| |d W d    n1 sJw   Y  tjt|d |jdg| |d W d    d S 1 skw   Y  d S )	Nr   zhigh < 0z	high <= 0r|   ra  z
low > highzlow >= highr9   )r   r   r   r   r<   r,   )r+  r&   r.  msgr$   r$   r%   !test_single_arg_integer_exceptionl
  s   "r1  rJ   f4f8c                 C   s   t jdd| d}g d}tjtdd tj||| d W d    n1 s&w   Y  tjtdd tj|||j| d W d    d S 1 sHw   Y  d S )	Nr   F)orderrJ   r   zSupplied output arrayr|   r  r  )r2   r   r   r   r<   rM   r~  rg   )rJ   r  rg   r$   r$   r%   test_c_contig_req_out{
  s   "r6  r5  r4  Cdistc                 C   sH   t jd||d}| ||d}||u sJ | |||jd}||u s"J d S )Nr   )rJ   r5  r  )r  rJ   r   )r2   r   rg   )r8  r5  rJ   r  variatesr$   r$   r%   test_contig_req_out
  s
   r:  ).r  r  r   numpyr2   numpy.linalgr   numpy.testingr   r   r   r   r   r   r	   r
   r   numpy.randomr   r   r   r   rM   JUMP_TEST_DATAfixturer&   r'   rF   rS   r   r   r   rM  r  r   r  r   r   r*  r+  r,  r/  r1  r6  r   r:  r$   r$   r$   r%   <module>   s    ,

$6 "   	        q    j/U
+

