a
    Lf.                    @   s~  d dl Z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
 d dlmZ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&ej'j(ed/d0G d1d2 d2Z)G d3d4 d4Z*ej'+d5ed6d7 Z,d8d9 Z-d:d; Z.d<d= Z/ej'+d>d?d?ggej'+dddgd@dA Z0ej'+dBdCdDgdEdF Z1ej'+dBdCdDgej'+dGdHdIgej'+dJej2ejgdKdL Z3dMdN Z4dOdP Z5ej'+dQdRdSgdTdU Z6dS )V    N)	AxisError)LinAlgError)
assert_assert_raisesassert_equalassert_allcloseassert_warnsassert_no_warningsassert_array_equalassert_array_almost_equalsuppress_warningsIS_WASM)	GeneratorMT19937SeedSequenceRandomState
   Z@bb1636883c2707b51c5b7fc26c6927af4430f2e0785a8c7bc886337f919f9edf	   )
key_sha256posZ@ff682ac12bb140f2d72fba8d3506cf4e46817a0db27aae1683867629031d8d55iV  )seedstepsinitialjumpedi$<i8  Z@16b791a1e04886ccbbb4d448d6ff791267dc458ae599475d08d5cced29d11614i7  Z@a0110a2cf23b56be0feaed8f787a7fc84bef0cb5623003d75b26bdfa1c18002ci  )i|2iEm:iS43i5  i  Z@d306cf01314d51bd37892d874308200951a35265ede54d200f1e065004c3e9eai  Z@0e00ab449f01a5195a83b4aee0dfbc2ce8d46466a640b92e33977d2e42f777f8i  moduleTF)scopeparamsc                 C   s   | j S N)param)request r    b/var/www/ai-form-bot/venv/lib/python3.9/site-packages/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_array5   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_scalarC   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 )Nr4   r5   )r1           r6   r9   r    r    r!   test_invalid_arrayH   s    zTestSeed.test_invalid_arrayc                 C   s   t ttt d S r   )r   r8   r   r   r9   r    r    r!   test_noninstantized_bitgenN   s    z#TestSeed.test_noninstantized_bitgenN)	__name__
__module____qualname__r,   r0   r3   r:   r=   r>   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         ?r1   r   )r.   zerosr   randombinomialr
   )r*   rH   pr    r    r!   test_n_zeroS   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtj d S )Nr1   )r   r8   rI   rJ   r.   nanr9   r    r    r!   test_p_is_nan\   s    zTestBinomial.test_p_is_nanN)r?   r@   rA   rL   rN   r    r    r    r!   rB   R   s   	rB   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   皙?皙?rI   multinomialr9   r    r    r!   
test_basicb   s    zTestMultinomial.test_basicc                 C   s   t dg d d S )NrP   )rQ   rR           rV   rV   rS   r9   r    r    r!   test_zero_probabilitye   s    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 )Nr5      )r   rI   r(   r.   allr*   xr    r    r!   test_int_negative_intervalh   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 )NrG   r1   r1   rC   rC   rC   rC   rC   rC   rC   )
r   rI   rT   r.   uint32shapearrayr   r7   floatr*   rK   r    r    r!   	test_sizen   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 )NrP   皙?rQ   皙?r   r8   rI   rT   r9   r    r    r!   test_invalid_prob|   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 )Nr5   rR   rQ   r   rj   r9   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      .@r1      ۠iUrP   )pvals)r.   r/   sumr   r   rT   ascontiguousarrayr
   )r*   rK   ro   rI   
non_contigcontigr    r    r!   test_p_non_contiguous   s    
z%TestMultinomial.test_p_non_contiguousc                 C   sn   t jg dt jd}||  }ttd}d}tjt|d |	d| W d    n1 s`0    Y  d S )N)
Gz?ru   &.>rv   rv   rv   rv   rv   rv   rv   rE   rn   z-[\w\s]*pvals array is cast to 64-bit floatingmatchr1   )
r.   rc   float32rp   r   r   pytestraisesr8   rT   )r*   r\   ro   rI   rx   r    r    r!   test_multinomial_pvals_float32   s    
z.TestMultinomial.test_multinomial_pvals_float32N)r?   r@   rA   rU   rW   r]   rf   rk   rl   rt   r|   r    r    r    r!   rO   a   s   
rO   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   s
   d| _ d S )Ni_ r   r9   r    r    r!   setup_method   s    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      )rC   rm   r   r5   )r5   rC   rm   rC   r1   iɚ;e   rY   	marginalsrP   count)
r   r8   rI   multivariate_hypergeometricr.   iinfoint64maxrF   itemsize)r*   Z
int64_infoZ	max_int64Z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   r1   sizer   )r1   r   rE   r1   rC   rm   )r   r   r   rm   )rm   r   r   )r1   r1   r   r1   r1   rm   r   rY      )	r   r   r   r   r
   r.   emptyr   rp   )r*   r   rI   r\   colorsr    r    r!   test_edge_cases   s(    

z.TestMultivariateHypergeometric.test_edge_casesnsample)      -   7   r   )rY   rC   rm   iI c                 C   s   t t| j}tg d}|j||||d}t|trF|f|j }n
||j }t	|j| t
|dk  t
||k  t|jddtj||td t|tr|dkrt|jdd|| |  dd	d
 d S )N)r   rY      r   r   r   r5   axis)Z
fill_valuerF   順 MbP?{Gzt?)rtolZatol)r   r   r   r.   rc   r   
isinstancerD   rb   r   r   rZ   r
   rp   fullr   mean)r*   r   r   r   rI   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   rY   r   r   )rC   r1   rC   r1   r1   rm   rC   r   rm   r   r   r   r   r.   rc   r
   r*   rI   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   rY   r   r   )r         )      r   )r         )r      r   r   r   r    r    r!   test_repeatability2  s    
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   rY   r   r   )rC   rm   r   )rY   rm   r   )rC   rY   rY   )r1   rY      r   r   r    r    r!   test_repeatability3  s    
z2TestMultivariateHypergeometric.test_repeatability3N)r?   r@   rA   r   r   rz   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   Zlegacy_stater9   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 Nrm   r   )r   standard_normalr   r   r   r.   rZ   )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   r.   rZ   )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 NrG   )r   negative_binomialr9   r    r    r!   test_negative_binomial:  s    z#TestSetState.test_negative_binomialN)r?   r@   rA   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 Nr1   r"   rF   )r   r7   rfuncrd   )r*   r"   r    r    r!   test_unsupported_typeG  s    z"TestIntegers.test_unsupported_typec              	   C   s@  | j D ]2}|tu rdn
t|j}|tu r0dnt|jd }|rL|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 tt| j|d g|g||d qd S Nr   rC   r1   r   	itypeboolr.   r   minr   r   r8   r   r*   r"   dtlbndubndr    r    r!   test_bounds_checkingJ  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_arrayc  s    
z'TestIntegers.test_bounds_checking_arrayc              	   C   s0  | j D ]"}|tu rdn
t|j}|tu r0dnt|jd }|rL|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   rC   r1   r$   r   r"   rF   r   r   r.   r   r   r   r   r   )r*   r"   r   r   r   Zis_opentgtr    r    r!   test_rng_zero_and_extremesq  sL    z'TestIntegers.test_rng_zero_and_extremesc                 C   s  d}| j D ]}|tu rdn
t|j}|tu r4dnt|jd }|rP|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   rC   r1   r   rF   rE   r   )r*   r"   r   r   r   r   r   r    r    r!    test_rng_zero_and_extremes_array  sj    z-TestIntegers.test_rng_zero_and_extremes_arrayc                 C   s   | j D ]}|tu rdn
t|j}|tu r.dnt|jd }|rJ|d n|}z| j||||d W q ty } ztdt	| W Y d }~qd }~0 0 qd S Nr   rC   r1   r   zMNo error should have been raised, but one was with the following message:

%s
r   r   r.   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 ]}|tu rdn
t|j}|tu r.dnt|jd }|rJ|d n|}z| j|gd |g||d W q ty } ztdt	| W Y d }~qd }~0 0 q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 ]F}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 )Nr1   )r   r      rC   i   r   r   )r   r   r   r   r   r   r   r   )r*   r"   rI   r   r   valsr    r    r!   test_in_bounds_fuzz  s    
z TestIntegers.test_in_bounds_fuzzc           
      C   s   | j D ]}|tu rdn
t|j}|tu r.dnt|jd }|rJ|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   rC   r1   r$     r   
r   r   r.   r   r   r   r   r   r(   r
   )
r*   r"   r   r   r   r   rI   ZscalarZscalar_arrayrc   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 ]v}ttd}tjd	krZ|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 )NZ@053594a9b82d656f967c54869bc6970aa0358cf94ad469c81478459c6a90eee3Z@54de9072b6ee9ff7f20b58329556a46a447a8a29d67db51201bf88baa6e4e5d4Z@d3a0d5efb04542b25ac712e50d21f39ac30f312a5052e9bbb1ad3baa791ac84bZ@14e224389ac4580bfbdccb5697d6190b496f91227cf67df60989de3d546389b1Z@0e203226ff3fbbd1580f15da4621e5f7164d0d8d6b51696dd42d004ece2cbec1)	r   int16int32r   int8uint16ra   uint64uint8r1   r   littler   r   r$   r   rC   )r   r   r   sys	byteorderr(   byteswaphashlibsha256	hexdigestr   r.   rF   namer   viewr   )r*   r"   r   r   rI   valresr    r    r!   test_repeatability  s:    


zTestIntegers.test_repeatabilityc                 C   s   | j D ]}|ttjfv rdn
t|j}|ttjfv r:dnt|jd }|rV|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   rC   r1   r   r$   r   r   r   )r*   r"   r   r   r   rI   r  Z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 ]8}ttd}|j||d}t||d ur:|n|d  qd S )Nr   r   r   )lenr   r   r(   r   )r*   boundr   r   rI   r\   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 ]J}ttd}|jdgdgdggg d|d}t||d ur|n|d  qrd 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)rY   rm   rm   i90  r5   r   r1   )r&   r<   r  r   )r.   rc   r   r   r(   r
   )r*   desiredr   rI   r\   r    r    r!   .test_repeatability_32bit_boundary_broadcasting6  s8    
z;TestIntegers.test_repeatability_32bit_boundary_broadcastingc              
   C   s4  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	 q2q$d S )Nr   rC   A   )r5               r   r   r   r   ))r   l            )l         r  r  r  )        r  r   r   rE   )	r.   r   r   rc   r   r8   rI   r(   object)r*   r"   ZconfigsrF   configlowhighZlow_aZhigh_aZlow_oZhigh_or    r    r!   &test_int64_uint64_broadcast_exceptionsM  s@    
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   )r.   r   r   r   r   rI   r(   r   )r*   r"   r   r   r   r   actualr    r    r!   test_int64_uint64_corner_casei  s    z*TestIntegers.test_int64_uint64_corner_casec                 C   s  | j D ]x}|tu rdn
t|j}|tu r.dnt|jd }|rJ|d n|}|tu r\tjn|}| j||||d}t|j| qtt	fD ]v}|tu rdn
t|j}|tu rdnt|jd }|r|d n|}| j||||d}t
|drJ tt|| qd S )Nr   rC   r1   r   rF   )r   r   r.   r   r   r   r   r   rF   rD   hasattrtyper*   r"   r   r   r   r   r    r    r!   test_respect_dtype_singleton  s    
z)TestIntegers.test_respect_dtype_singletonc                 C   s   | j D ]}|tu rdn
t|j}|tu r.dnt|jd }|rJ|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   r.   r   r   r   r   r   rF   r  r    r    r!   test_respect_dtype_array  s    
z%TestIntegers.test_respect_dtype_arrayc                 C   s   | j D ]}| jddd||d}|jdks,J |j|ks:J | jddd||djdksXJ 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   rm   r   r   r   r   r   r   )r   r   rb   rF   r   rI   r(   )r*   r"   r   r   r    r    r!   test_zero_size  s    
zTestIntegers.test_zero_sizec                 C   sR   t jdkrdnd}tt" tjddd|d W d    n1 sD0    Y  d S )Nbigz<i4z>i4r      r   r   )r   r   rz   r{   r8   rI   r(   )r*   Zother_byteord_dtr    r    r!   test_error_byteorder  s    z!TestIntegers.test_error_byteorderzsample_size,high,dtype,chi2maxi@KL rY   g     @_@r   g     b@i i	  g     ȩ@i  g     d@c           
      C   sN   t j|||d}tj|dd\}}|| }|| d |  }	|	|k sJJ d S )Nr   T)Zreturn_countsrC   )rI   r(   r.   uniquerp   )
r*   Zsample_sizer  rF   Zchi2maxsamplesvaluescountsr   Zchi2r    r    r!   $test_integers_small_dtype_chisquared  s
    
z1TestIntegers.test_integers_small_dtype_chisquaredN)*r?   r@   rA   rI   r(   r   r   r.   r   r   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rz   r   r   rc   r
  r  r  r  r  r  r!  r$  slowr*  r    r    r    r!   r   @  sN   #	
r   c                   @   sr  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,dFdG Z-ejdHe.e/gejdIdJe0g dKg dLgfdMe0g dNg dOgfdPe0g dQg dRgfgdSdT Z1dUdV Z2dWdX Z3ejdYdZd[gd\d] Z4d^d_ Z5d`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>ejj?drds Z@ejdtg dug dvg dwg dxg dyg dzd{gg d|gd}d~ ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRejdeSd{ddejTdgdd ZUdd ZVejjWeXddejdg ddd ZYejddMgdggfdgdPggfgdd ZZejdg ddd 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{dd Z|dd Z}dd Z~dd Zdd Zejd ddgdd Zejddej dejdgejd g d	d
d Zdd Zdd Zdd Zdd ZdJS (  TestRandomDistc                 C   s
   d| _ d S )Nr   r~   r9   r    r    r!   r     s    zTestRandomDist.setup_methodc                 C   sH   t t| j}|jdddd}tddgddgd	d
gg}t|| d S )Nc   rm   rC   r   )   %   ir   r   r   r(   r.   rc   r
   r*   rI   r  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   r.  r/  r   r      F   D   r   r2  rE   )r   r   r   r(   r.   ra   rc   r
   r6  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 )Nr-  r.  r/  T)r   r"   r0  r1  r2  &   r4  ir5  r6  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"   )rI   r(   r.   r   r   r   )r*   r  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 )Nr/  gG0Ը?gæ?g2?gu	A?gH
>H?g;dE?r   decimalr  r   r   r   rI   r.   rc   r   r6  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 )
Nr/  CԸ?gP?gtX?g81
A?grO>H?g88dE?r   rA  rC  r6  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 )NrE   rE  r   rA  )r   r   r   rI   r.   ry   r   r6  r    r    r!   test_random_float_scalar  s    z'TestRandomDist.test_random_float_scalarzdtype, uint_view_typec                 C   sN   t t| j}|jd|d}t||d@ }d|  k rDdk sJn J d S )Nr   rE   r1   i$^  i,e  )r   r   r   rI   r.   Zcount_nonzeror   )r*   rF   Zuint_view_typerI   r   Z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   rE   )r   r7   rI   r9   r    r    r!   test_random_unsupported_type  s    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   rC   rC   rE   r   r   r   choicer.   rc   r   r
   r6  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   )皙?rM  皙?rN  rK   )r   r1   r   r1   rE   rJ  r6  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   rm   Freplacer   rE   )rR  shuffle)	r   r   r   rK  r.   rc   r   r
   r/   r6  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   rm   F)rN  333333?rG   rN  rR  rK   )r   rC   rm   rE   rJ  r6  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   )rX  rX  rZ  rZ  r   r   r   rK  r.   rc   r
   r6  r    r    r!   test_choice_noninteger3  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   r1   rC   rm   r   rY   r   r   r\  r6  r    r    r!   )test_choice_multidimensional_default_axis9  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   r1   rC   rm   r   rY   r   r   r   r\  r6  r    r    r!   (test_choice_multidimensional_custom_axis?  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 )Nr5   rm         @)r1   rC   rm   r         ?rO  r1   rC   )rM  rM  rQ   rg   rh   rM  r   r   FrQ  r;   )r5   )r5   r1   )r1   r   r   rV  )rI   rK  r   r8   )r*   r   r    r    r!   test_choice_exceptionsE  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 )NrN  ri   rC   TrQ  FrV  r1   rE   r   r   )rN  rN  rN  rN  rM  rQ   r   r  r   r  r   r   rX  rY  )r   r.   ZisscalarrI   rK  rc   r   r  tuplendimitemr   rb   r/   r(   r   r8   )r*   rK   rX  arrr+   r    r    r!   test_choice_return_shapeW  sL     z'TestRandomDist.test_choice_return_shapec                 C   s,   t g d}g d}tttj||d d S )N)*   r1   rC   )NNNrO  )r.   rc   r   r8   rI   rK  )r*   rX  rK   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   rY   r`  r1   rC   rm   rO  )r.   onesr   r   r   rK  rq   r
   )r*   rK   rI   rr   rs   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sJJ tjdd|d}|jt jksjJ tjdd|dd}|jt jksJ d S )Nr   g      @rC   FrQ  rO  )rK   rR  )r.   rj  rI   rK  rF   r   )r*   rK   r  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r4| }t|	t
j }t||k d S )NZ@4266599d12bfcfb815213303432341c06b4349f5455890446578877bb322e222'  r%  FrQ  r   )r   r   r   rK  r   r   r   r   r   r   r.   r   r   r   )r*   Zchoice_hashrI   r  r  r    r    r!   test_choice_large_sample  s    
z'TestRandomDist.test_choice_large_samplec                 C   s   t t| j}t|jg dddtddd t|jg dgddg d t|jdggdddgdd t|jdggddddgdd d S )Nr   r    r   r1   T)strict)r   r   )r   r   r   r
   rK  r.   rc   r*   rI   r    r    r!   "test_choice_array_size_empty_tuple  s    z1TestRandomDist.test_choice_array_size_empty_tuplec                 C   s*   t t| j}|d}d}t|| d S )Nr   s
   	8%)r   r   r   bytesr   r6  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 ]B}t t| j}|g d}|| |}|g d}t|| qFd S )Nc                 S   s
   t g S r   )r.   rc   r\   r    r    r!   <lambda>      z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r   r    rt  r    r    r!   ru    rv  c                 S   s   t | t jS r   )r.   asarrayastyper   rt  r    r    r!   ru    rv  c                 S   s   t | t jS r   )r.   rw  rx  ry   rt  r    r    r!   ru    rv  c                 S   s   t | t jS r   )r.   rw  rx  Z	complex64rt  r    r    r!   ru    rv  c                 S   s   t | tS r   )r.   rw  rx  r  rt  r    r    r!   ru    rv  c                 S   s   dd | D S )Nc                 S   s   g | ]}||fqS r    r    .0ir    r    r!   
<listcomp>  rv  ATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r    rt  r    r    r!   ru    rv  c                 S   s   t dd | D S )Nc                 S   s   g | ]}||gqS r    r    ry  r    r    r!   r|    rv  r}  )r.   rw  rt  r    r    r!   ru    rv  c                 S   s   t | | gjS r   )r.   vstackTrt  r    r    r!   ru    rv  c                 S   s*   t dd | D dtfdtfgt jS )Nc                 S   s   g | ]}||fqS r    r    ry  r    r    r!   r|    rv  r}  rX  rY  )r.   rw  rD   r   Zrecarrayrt  r    r    r!   ru    s   c                 S   s(   t dd | D dtdfdt jdfgS )Nc                 S   s   g | ]}||fqS r    r    ry  r    r    r!   r|    rv  r}  rX  r1   rY  )r.   rw  r  r   rt  r    r    r!   ru    s   

r1   rC   rm   r   rY   r   r   r   r   r   
r   r1   r   r   r   rY   rm   r   rC   r   )r   r   r   rS  r
   )r*   convrI   alistr  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   r1   r   r   rm   r1   rC   r   r   rY   r   r      r   r   r   r   r   r   r5   )	r   r   r   r.   r/   reshaperS  rc   r
   r6  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   r1   r   )r   r   r   r.   rc   r  rS  r
   )r*   rI   r  r   r  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   rC   r   r1   r   )
r.   r/   r  copyr   r   r   rS  r  r
   )r*   y1y2rI   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 ]d}t| t	t
|j|j  t
|j|j   t| t	t
|j|j  t
|j|j   qVd S )Nr   )rY   r   rm   r1   r5   r   )r.   maZmasked_valuesr  r-   r/   r  rI   rS  r   sorteddatamask)r*   rX  rY  Za_origZb_origr{  r    r    r!   test_shuffle_masked  s    "
 
 z"TestRandomDist.test_shuffle_maskedc                 C   s   t t| j}td}tt|j|d tdd}tt|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|d d S )
Nr   r1   r   rm   rm   rm   rC   r   )r   rY   r   r/  )r   r   r   r.   r/   r   r   rS  r  r7   sliceNotImplementedErrorrc   rj  r*   rI   rf  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    n1 sN0    Y  d S )NrY   F	read-onlyrw   )r   r   r   r.   rH   flags	writeablerz   r{   r8   rS  )r*   rI   rX  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| d}tt	|j| t t| j}d}g d}||}t|| d S )Nr  r  abcdg333333?r   )
rm   r   r   r   r   r   rC   rY   r1   r   )
r   r   r   permutationr
   r.   Z
atleast_2dr  r   r   )	r*   rI   r  r  r  Zarr_2dZ	bad_x_strZbad_x_floatZ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  r1   r   r5   )	r.   r/   r  rc   r   r   r   r  r
   )r*   rX  r  rI   r  r    r    r!   test_permutation_custom_axis.  s    

z+TestRandomDist.test_permutation_custom_axisc                 C   sd   t t| j}td}tt|j|d tdd}tt|j|d tt	|j|t
ddd  d S )Nr   r1   r   r  rm   rC   )r   r   r   r.   r/   r   r   r  r  r7   r  r  r    r    r!   test_permutation_exceptions;  s    
z*TestRandomDist.test_permutation_exceptionsrF   zaxis, expectedN)rm   r   r   r   r   r  )r   r   rC   rY   r1   r   r   )r   r1   rC   r   r   r  )r   r   r   rm   r   rY   r1   )rY   rm   r   r   rC   r1   )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sJ t|| d S )Nr   rC   r   r   outr   )
r   r   r   r.   r/   r  rx  permutedr
   rF   )r*   rF   r   r   rI   r\   yr    r    r!   test_permutedC  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   rC   r  rm   r1   r  )r   r   rm   r   )r   r   r  r   )
r   r   r   r.   r/   r  r  r  rc   r
   )r*   rI   Zx0x1r\   r  r   r    r    r!   test_permuted_with_stridesW  s    

z)TestRandomDist.test_permuted_with_stridesc                 C   s   t g }t|g  d S r   )rI   r  r
   )r*   r  r    r    r!   test_permuted_emptyd  s    
z"TestRandomDist.test_permuted_emptyoutshaper   rY   c                 C   s^   t g d}t j||jd}tjtdd tj||d W d    n1 sP0    Y  d S )Nr   rE   z
same shaperw   r  )	r.   rc   rH   rF   rz   r{   r8   rI   r  )r*   r  rX  r  r    r    r!   "test_permuted_out_with_wrong_shapeh  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    n1 sN0    Y  d S )N)rm   rY   rE   zCannot castrw   r1   r  )	r.   rH   r   rj  rz   r{   r7   rI   r  )r*   r  r\   r    r    r!   !test_permuted_out_with_wrong_typeo  s    
z0TestRandomDist.test_permuted_out_with_wrong_typec                 C   sT   t d}d|j_tjtdd  tj|d|d W d    n1 sF0    Y  d S )N)rC   rY   Fr  rw   r1   r  )	r.   rH   r  r  rz   r{   r8   rI   r  r[   r    r    r!   test_permuted_not_writeableu  s    
z*TestRandomDist.test_permuted_not_writeablec                 C   sL   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )NrN  ri   r/  r   gW<$=g^
=g/:Ћ?gG!Gc>g'`2?gU?r   rA  )r   r   r   betar.   rc   r   r6  r    r    r!   	test_beta{  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/?r/  r   rh  r2  0   ,   r   )r   r   r   rJ   r.   rc   r
   r6  r    r    r!   test_binomial  s    

zTestRandomDist.test_binomialc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr   r/  r   gmE~@@g
1ςC@grӳL@gm%xL@g<kQK@gtK@r   rA  )r   r   r   	chisquarer.   rc   r   r6  r    r    r!   test_chisquare  s    
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@r/  r   g28\h?gɎG/?gAp?g|);?gLX?gfOh?g됷W?g(ސP?gz$Q?gmWt ?g搝K?g4hz?r   rA  HzG?缉ؗҜr  )	r   r   r   r.   rc   	dirichletr   r   r8   )r*   rI   alphar  r  Z	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  r1   r^   rC   r_   r`   )
r.   rc   r   rI   r  ra   rb   r   r7   rd   re   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  rY   r1   )r.   rc   r   r8   rI   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  rC   r/  r   )r.   rc   r   r   r   r  rq   r   )r*   rX  r  rI   rr   rs   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 )	Nrv         ?r   r/  r   rV   r   rA  )r.   rc   r   r   r   r  r   )r*   epsr  rI   r  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?{Gz?Q?i -1r   r   r   r   )r   )	r.   rc   rp   r   r   r   r  r   r   )r*   r  Z
exact_meanrI   r   Zsample_meanr    r    r!   %test_dirichlet_moderately_small_alpha  s    z4TestRandomDist.test_dirichlet_moderately_small_alphar  )rY   r   r   r   )rG   r   r   r   )r1   rY   r   r         ?r   r   r   )g{Gz?r  r   r   )gh㈵>r   r   r   )gMb`?gQ?r   r   r  r   r   r   rV   r   c                 C   s*   t |}t|}t||dk d d S )Nr   rV   )r.   rc   rI   r  r   )r*   r  r  r    r    r!   &test_dirichlet_multiple_zeros_in_alpha  s    

z5TestRandomDist.test_dirichlet_multiple_zeros_in_alphac                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Ng8EGr?r/  r   gvM?g?g#c?gQ:N?gAP?gE_9@r   rA  )r   r   r   exponentialr.   rc   r   r6  r    r    r!   test_exponential  s    
zTestRandomDist.test_exponentialc                 C   s&   t tjddd tttjdd d S Nr   scale       )r   rI   r  r   r8   r9   r    r    r!   test_exponential_0  s    z!TestRandomDist.test_exponential_0c                 C   sL   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   M   r/  r   g}(Ҍ?gi?g=r?g]hDA?gjӨ?g8k*u?r   rA  )r   r   r   fr.   rc   r   r6  r    r    r!   test_f  s    
zTestRandomDist.test_fc                 C   sL   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )NrY   rm   r/  r   g,שn'@gt@g<e2@g1a3@g3r
y-2@gs1-2@r   rA  )r   r   r   gammar.   rc   r   r6  r    r    r!   
test_gamma  s    
zTestRandomDist.test_gammac                 C   s*   t tjdddd tttjddd d S )Nr   )rb   r  r  )r   rI   r  r   r8   r9   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ݚ?r/  r   r1   r  r   r   )r   r   r   	geometricr.   rc   r
   r6  r    r    r!   test_geometric  s    
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6 t ttjtj t ttjtjgd  W d    n1 s0    Y  d S )Nrg   r   rh   ignoreinvalid)r   r8   rI   r  r.   errstaterM   r9   r    r    r!   test_geometric_exceptions!  s    z(TestRandomDist.test_geometric_exceptionsc                 C   sL   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         @r/  locr  r   gA7G@g1Fiҿgei@g_Cg0cPg`(_տr   rA  )r   r   r   gumbelr.   rc   r   r6  r    r    r!   test_gumbel*  s    
zTestRandomDist.test_gumbelc                 C   s&   t tjddd tttjdd d S r  )r   rI   r  r   r8   r9   r    r    r!   test_gumbel_02  s    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   r/  r   r   r   rY   r   rm   r   )rm   rm   rm   rm   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   hypergeometricr.   rc   r
   r6  r    r    r!   test_hypergeometric6  s&    




z"TestRandomDist.test_hypergeometricc                 C   sL   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  r  r/  r  g6@	ga@bDA"?g*[r{g>K?g(?g<?r   rA  )r   r   r   laplacer.   rc   r   r6  r    r    r!   test_laplaceP  s    
zTestRandomDist.test_laplacec                 C   s&   t tjddd tttjdd d S r  )r   rI   r  r   r8   r9   r    r    r!   test_laplace_0X  s    zTestRandomDist.test_laplace_0c                 C   sL   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  r  r/  r  gbZgHʊg$>?g>&gQh@g%?n?gĉ8|?r   rA  )r   r   r   logisticr.   rc   r   r6  r    r    r!   test_logistic\  s    
zTestRandomDist.test_logisticc                 C   sL   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  r  r/  )r   sigmar   gܒx?gk*+@g<Ҿ?g
@g5a@g%jz(@r   rA  )r   r   r   	lognormalr.   rc   r   r6  r    r    r!   test_lognormald  s    
zTestRandomDist.test_lognormalc                 C   s&   t tjddd tttjdd d S )Nr   )r  r1   r  )r   rI   r  r   r8   r9   r    r    r!   test_lognormal_0l  s    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ƀ@?r/  )rK   r   r   r   rm      rY   r1   )r   r   r   	logseriesr.   rc   r
   r6  r    r    r!   test_logseriesp  s    
zTestRandomDist.test_logseriesc                 C   s$   t t| j}|ddks J d S )Nr   r1   )r   r   r   r  rp  r    r    r!   test_logseries_zerox  s    z"TestRandomDist.test_logseries_zerovaluer5   r  g      @c              	   C   s   t t| j}tjdd tt || W d    n1 sF0    Y  tt& |t	|gd  W d    n1 s0    Y  tt0 |t	|gd d d d  W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr  r  r   rC   )
r   r   r   r.   r  rz   r{   r8   r  rc   )r*   r  rI   r    r    r!   test_logseries_exceptions|  s    (4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   r/  r   )r1   rY   r1   r   r   rm   )r   rC   r   rC   r   rC   )rY   rm   rC   r   rm   r1   )r   r   r   rC   rm   r   )r   rm   r1   rY   rm   rC   )rY   rY   rm   r1   rC   r   )r   r   r   rT   r.   rc   r
   r6  r    r    r!   test_multinomial  s    
zTestRandomDist.test_multinomialzfp errors don't work in wasmreasonr   )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0    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   r1   r   r/  r   gtg$&@g&بO=g!$@gDo?g\&@g,R{?g
f!@g?ժ?gT^o#@g`R?gP'@r   rA  gl?g$("@rC   raise)check_validr  r  r  )r  r   )r  r  r   ).r   ).r1   r   rN  rE   other)rC   r1   r1   rm   )r   r   r   multivariate_normalr.   rc   r   r   r8   r   RuntimeWarningr   r	   ry   r   recordr  rH   eyer   )r*   r   rI   r   covr   r  r  r'  supwmur    r    r!   test_multivariate_normal  s    




2




z'TestRandomDist.test_multivariate_normalz	mean, covy      ?      ?y                c                 C   sL   t t| j}tjtdd ||| W d    n1 s>0    Y  d S )Nzmust not be complexrw   )r   r   r   rz   r{   r7   r  )r*   r   r  rI   r    r    r!   )test_multivariate_normal_disallow_complex  s    z8TestRandomDist.test_multivariate_normal_disallow_complexc           	      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 sJ tt|| dk sJ d S )Nr$   r1   rC   r   r;   rN  rQ   )
r   r   r   r.   rc   r  r  rZ   absr   )	r*   r   rI   Zn_sr   r  r+   Zs_centerZcov_empr    r    r!   $test_multivariate_normal_basic_stats  s    z3TestRandomDist.test_multivariate_normal_basic_statsc                 C   sH   t t| j}|jdddd}tddgddgd	d
gg}t|| d S )NrP   g|Pk?r/  )nrK   r   i  i  i  i  iX  i  )r   r   r   r   r.   rc   r
   r6  r    r    r!   r     s    
z%TestRandomDist.test_negative_binomialc                 C   sZ   t jdd: tttjdt j tttjdt jgd  W d    n1 sL0    Y  d S )Nr  r  rP   r   )r.   r  r   r8   rI   r   rM   r9   r    r    r!   !test_negative_binomial_exceptions  s
    

z0TestRandomDist.test_negative_binomial_exceptionsc                 C   s8   t t tdd}W d    n1 s*0    Y  d S Nr1   r   )r   r8   rI   r   r[   r    r    r!   #test_negative_binomial_p0_exception   s    
z2TestRandomDist.test_negative_binomial_p0_exceptionc                 C   sT   t jdd4 tttjdd tttjdgdg W d    n1 sF0    Y  d S )Nr  r  r  rN  )r.   r  r   r8   rI   r   r9   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 )NrY   r/  )dfnoncr   gs؀3J?gugو/@gNJm+@gA}-4@gq=&@gjhn@r   rA  rG   rQ   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_chisquarer.   rc   r   r6  r    r    r!   test_noncentral_chisquare  s(    


z(TestRandomDist.test_noncentral_chisquarec                 C   sN   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 )NrY   rC   r1   r/  )dfnumdfdenr  r   gHP
?gn?g%f?gch?gzƎ?g]?:?r   rA  )r   r   r   noncentral_fr.   rc   r   r6  r    r    r!   test_noncentral_f!  s    

z TestRandomDist.test_noncentral_fc                 C   s2   t t| j}|jddtjd}t|s.J d S )NrY   rC   )r  r  r  )r   r   r   r  r.   rM   isnanr*   rI   r  r    r    r!   test_noncentral_f_nan*  s    z$TestRandomDist.test_noncentral_f_nanc                 C   sL   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  r  r/  r  g?`xg\P@g/7u g0aj?gi%?gog@r   rA  )r   r   r   normalr.   rc   r   r6  r    r    r!   test_normal/  s    
zTestRandomDist.test_normalc                 C   s&   t tjddd tttjdd d S r  )r   rI   r  r   r8   r9   r    r    r!   test_normal_07  s    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  r/  rX  r   gá?gƫh@gi`>?g0"&Agc@g=fAr   )Znulp)r   r   r   paretor.   rc   ZtestingZassert_array_almost_equal_nulpr6  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  r/  )lamr   r   )r   r   r   poissonr.   rc   r
   r6  r    r    r!   test_poissonI  s    
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6 tttjt j tttjt jgd  W d    n1 s0    Y  d S )Nr   r5   r   r  r  )	r.   r   r   r   r8   rI   r&  r  rM   )r*   ZlambigZlamnegr    r    r!   test_poisson_exceptionsQ  s    z&TestRandomDist.test_poisson_exceptionsc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr  r/  r"  gZ >g?gÄ(=g҇?gŚE?gߢH?r   rA  )r   r   r   powerr.   rc   r   r6  r    r    r!   
test_power\  s    
zTestRandomDist.test_powerc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr   r/  )r  r   gry@gtQP0@gAI_@g@u81@g	G0@g"wc5@r   rA  )r   r   r   rayleighr.   rc   r   r6  r    r    r!   test_rayleighd  s    
zTestRandomDist.test_rayleighc                 C   s&   t tjddd tttjdd d S r  )r   rI   r+  r   r8   r9   r    r    r!   test_rayleigh_0l  s    zTestRandomDist.test_rayleigh_0c                 C   sH   t t| j}|jdd}tddgddgddgg}t||d	d
 d S )Nr/  r   gH1gW|3
g\?gLeg5P	gFA?r   rA  )r   r   r   Zstandard_cauchyr.   rc   r   r6  r    r    r!   test_standard_cauchyp  s    
z#TestRandomDist.test_standard_cauchyc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr/  invr   ga\5?gr7k?g8PC*?g5$[?gW3T?g*?r   rA  )r   r   r   standard_exponentialr.   rc   r   r6  r    r    r!   test_standard_exponentialx  s    
z(TestRandomDist.test_standard_exponentialc                 C   s   t ttjtjd d S NrE   )r   r7   rI   r0  r.   r   r9   r    r    r!   #test_standard_expoential_type_error  s    z2TestRandomDist.test_standard_expoential_type_errorc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nrm   r/  rb   r   gΈ̏&?gTϿ?g1n21@gDb<z@gBv@gc^@r   rA  r   r   r   standard_gammar.   rc   r   r6  r    r    r!   test_standard_gamma  s    
z"TestRandomDist.test_standard_gammac                 C   s4   t t| j}|jdtjd}d}t||dd d S )Nrm   rE   g   d@r   rA  )r   r   r   r6  r.   ry   r   r6  r    r    r!   !test_standard_gammma_scalar_float  s    z0TestRandomDist.test_standard_gammma_scalar_floatc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nrm   r/  r4  gf&?gMO?g1@g):@g@g;i@rY   rA  r5  r6  r    r    r!   test_standard_gamma_float  s    
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 )Nr/  rE         $@r  rF   gM»L$@ga {@gN]"@gPS")@g_+@gmB@rY   rA  r  r   rF   )	r.   rH   ry   r   r   r   r6  rc   r   )r*   r  rI   r  r    r    r!   test_standard_gammma_float_out  s    
z-TestRandomDist.test_standard_gammma_float_outc                 C   s   t ttjddd d S )Nr  r   rE   )r   r7   rI   r6  r9   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   r1   )r.   rH   r   r8   rI   r6  )r*   r  r    r    r!   test_out_size_mismatch  s    
z%TestRandomDist.test_out_size_mismatchc                 C   s&   t tjddd tttjdd d S )Nr   )rb   r  )r   rI   r6  r   r8   r9   r    r    r!   test_standard_gamma_0  s    z$TestRandomDist.test_standard_gamma_0c                 C   sH   t t| j}|jdd}tddgddgddgg}t||d	d
 d S )Nr/  r   g
bYg? ?gGH{Lgz\?gc`+?gT}?r   rA  )r   r   r   r   r.   rc   r   r6  r    r    r!   test_standard_normal  s    
z#TestRandomDist.test_standard_normalc                 C   s   t ttjtjd d S r2  )r   r7   rI   r   r.   r   r9   r    r    r!   %test_standard_normal_unsupported_type  s    z4TestRandomDist.test_standard_normal_unsupported_typec                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )Nr   r/  )r  r   gV1g	|ڙ(?g-?g NhڿgMc?g!uLM r   rA  )r   r   r   
standard_tr.   rc   r   r6  r    r    r!   test_standard_t  s    
zTestRandomDist.test_standard_tc                 C   sN   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 )Ng{Gz@g(\u$@gףp=
W4@r/  )leftmoderightr   gEpw@g4DC+@gŋ@g/,@gkuR*@gHNPcr+@r   rA  )r   r   r   
triangularr.   rc   r   r6  r    r    r!   test_triangular  s    

zTestRandomDist.test_triangularc                 C   sL   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )NGz?gGz%@r/  )r  r  r   gm2@gJaD@g: @g
Q @g@T{e@gb@r   rA  r   r   r   uniformr.   rc   r   r6  r    r    r!   test_uniform  s    
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 )Nrd   r   r1   g ؅W4vC)r  r  )
r.   Zfinfor   r   rI   rL  r   OverflowErrorinf	nextafter)r*   ZfminZ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 )Nr  rV   g
ףp= @r`   )rI   rL  r   r.   pirH   )r*   rQ  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 )NrC   r1   r   rm   )rI   rL  r   r8   )r*   rQ  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                   @   s   e Zd Zdd ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc                 S   s   t d S r   r7   r9   r    r    r!   	__float__   s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)r?   r@   rA   rX  r    r    r    r!   ThrowingFloat  s   rY  r  c                   @   s   e Zd Zdd ZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   s   t d S r   rW  r9   r    r    r!   __int__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)r?   r@   rA   rZ  r    r    r    r!   ThrowingInteger  s   r[  r1   )	r.   Zndarrayrc   r   r   r7   rI   rL  r  )r*   rY  Zthrowing_floatr[  Zthrowing_intr    r    r!   !test_scalar_exception_propagation  s    
z0TestRandomDist.test_scalar_exception_propagationc                 C   sL   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )NrJ  p=
ף?r/  r
  kappar   gLA?gxyw@gzVR?gpE ?g8&Aпgv @r   rA  )r   r   r   vonmisesr.   rc   r   r6  r    r    r!   test_vonmises  s    
zTestRandomDist.test_vonmisesc                 C   s4   t t| j}|jdddd}tt|  d S )NrV   gg5_PG>i@B r^  )r   r   r   r`  r   r.   isfiniterZ   r*   rI   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 )NrV   )r
  r_  )r   r   r   r`  r.   rM   r   r  rc  r    r    r!   test_vonmises_nan  s    z TestRandomDist.test_vonmises_nanr_  g     @  4&kCc                 C   sr   t t| j}t|j}|jj}|jd|dd}||j_|jd|dd}|dk r\t|| nt	||ksnJ d S )Nr   r   r   g    .A)
r   r   r   r   r   r   r`  r   r.   rZ   )r*   r_  rI   rsr   Zrandom_state_valsZgen_valsr    r    r!   test_vonmises_large_kappa!  s    
z(TestRandomDist.test_vonmises_large_kappar
  g      gg	@)rv   gư>r1   g     @@rg  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   r.   rZ   rS  )r*   r
  r_  rI   rd  r    r    r!   test_vonmises_large_kappa_range/  s    z.TestRandomDist.test_vonmises_large_kappa_rangec                 C   sL   t t| j}|jdddd}tddgddgd	d
gg}t||dd d S )NrJ  r]  r/  )r   r  r   g*س2?gt	@g;S@g\ F@gxF @g6b?r   rA  )r   r   r   waldr.   rc   r   r6  r    r    r!   	test_wald6  s    
zTestRandomDist.test_waldc                 C   sJ   t t| j}|jddd}tddgddgdd	gg}t||d
d d S )NrJ  r/  r"  gnJZ?g*/F?gs(RY?g]'%?g,qD?g8 ?r   rA  )r   r   r   weibullr.   rc   r   r6  r    r    r!   test_weibull>  s    
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  )rX  )	r   r   r   r   rm  r.   rH   r   r8   rp  r    r    r!   test_weibull_0F  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 )	NrJ  r/  r"  r1   r   ic  ib  rC   )r   r   r   zipfr.   rc   r
   r6  r    r    r!   	test_zipfK  s    
zTestRandomDist.test_zipf)r?   r@   rA   r   r7  r;  r=  r@  rD  rF  rG  rz   r   r   r.   ry   ra   Zfloat64r   rH  rI  rL  rP  rT  rW  r]  r^  r_  rb  rg  ri  rk  rl  rn  rq  rs  r  r  r  r  r  r  r  r  r  r  rD   r  rc   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  r  r  r  r  rP  rM   r  r  skipifr   r  r  r  r   r  r  r  r  r  r  r   r!  r$  r'  r(  r*  r,  r-  r.  r1  r3  r7  r8  r9  r=  r>  r?  r@  rA  rB  rD  rI  rM  rR  rU  rV  r\  ra  re  rf  ri  rS  rj  rl  rn  ro  rq  r    r    r    r!   r,    s8  


		.				
	


	
I$

			$r,  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   s
   d| _ d S )Ni[r~   r9   r    r    r!   r   W  s    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   r1   )g4
7^?gF]
"?g .?rm   r   rA  rK  )r*   rI   r  r  rL  r  r  r    r    r!   rM  Z  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   r1   r5   )gw-Dؿgn0_x?gʊ;<.?rm   r   rA  )	r   r   r   r.   rc   r  r   r   r8   )r*   r  r  	bad_scalerI   r  r  r  r    r    r!   r   i  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 )	Nr1   rC   r5   r;   )gf8?g%eo?g$q??rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )	r*   rX  rY  bad_aZbad_br  rI   r  r  r    r    r!   r  {  s    zTestBroadcast.test_betac                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S Nr1   r5   )g`ʄ?gE]?g?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   r*   r  rt  r  rI   r  r    r    r!   r    s    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 rv  )	r.   rc   r   r   r   r6  r   r   r8   )r*   rb   	bad_shaper  rI   Z	std_gammar  r    r    r!   r7    s    z!TestBroadcast.test_standard_gammac           	      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}|j}|||d }t||dd tt|||d  tt|||d  d S )	Nr1   rC   r5   r;   )g3ʄ?gJE]?g?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )	r*   rb   r  rx  rt  r  rI   r  r  r    r    r!   r    s"    zTestBroadcast.test_gammac           	      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}|j}|||d }t||dd tt|||d  tt|||d  d S )	Nr1   rC   r5   r;   )gM3B?gybi@g0?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )	r*   r  r  	bad_dfnum	bad_dfdenr  rI   r  r  r    r    r!   r    s"    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 sJ 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 )
NrC   rm   r   r   r5   r;   )gŜ,n1 @g!6)@g9?r   rA  )r.   rc   r   r   r   r  r   rZ   r  rM   r   r8   )r*   r  r  r  ry  rz  bad_noncr  rI   Znonc_fr  r    r    r!   r    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?ri   rC   r   r   rA  )r   r   r   r.   rc   r  r   )r*   rI   r  r  r    r    r!   test_noncentral_f_small_df  s    z(TestBroadcast.test_noncentral_f_small_dfc                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S )Nr1   r5   )gC{?g7Q#?g%h1T@rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   r*   r  bad_dfr  rI   r  r    r    r!   r    s    zTestBroadcast.test_chisquarec           	      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}|j}|||d }t||dd tt|||d  tt|||d  d S )	Nr1   rC   r5   r;   )g-S?g[@gr3/.?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )	r*   r  r  r~  r{  r  rI   Znonc_chir  r    r    r!   r    s"    z'TestBroadcast.test_noncentral_chisquarec                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S )Nr1   r5   )g>Qg{g,e?rm   r   rA  )	r.   rc   r   r   r   rC  r   r   r8   r}  r    r    r!   rD    s    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 )NrC   r1   r5   )gD()@g,)ʸ@gPorm   r   rA  )	r.   rc   r   r   r   r`  r   r   r8   )r*   r
  r_  Z	bad_kappar  rI   r  r    r    r!   ra    s    zTestBroadcast.test_vonmisesc                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S )Nr1   r5   )g/h?gcE?g/gV?rm   r   rA  )	r.   rc   r   r   r   r#  r   r   r8   r*   rX  ru  r  rI   r  r    r    r!   r$  .  s    zTestBroadcast.test_paretoc                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S rv  )	r.   rc   r   r   r   rm  r   r   r8   r  r    r    r!   rn  8  s    zTestBroadcast.test_weibullc                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S )Nr1   r5   )gT?gʥ?gKܮc?rm   r   rA  )	r.   rc   r   r   r   r)  r   r   r8   r  r    r    r!   r*  B  s    zTestBroadcast.test_powerc                 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}|j}|||d }t||dd tt|||d  d S )Nr   r1   r5   )gh&BgsgR#?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )r*   r  r  rt  r  rI   r  r  r    r    r!   r  L  s    zTestBroadcast.test_laplacec                 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}|j}|||d }t||dd tt|||d  d S )Nr   r1   r5   )gs4?g$Cw%T?gտrm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )r*   r  r  rt  r  rI   r  r  r    r    r!   r  ^  s    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   r1   r5   )g$DgXPg,?rm   r   rA  r  rV   )
r.   rc   r   r   r   r  r   r   r8   r   )r*   r  r  rt  r  rI   r  r    r    r!   r  p  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   r1   r5   )g c?gu@gVQ?rm   r   rA  )	r.   rc   r   r   r   r  r   r   r8   )r*   r   r  Z	bad_sigmar  rI   r  r  r    r    r!   r    s    zTestBroadcast.test_lognormalc                 C   sZ   dg}dg}t g d}tt| j}||d }t||dd tt|j|d  d S )Nr1   r5   )gs(?g4mK?gVk+?rm   r   rA  )	r.   rc   r   r   r   r+  r   r   r8   rw  r    r    r!   r,    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 )	NrG   r1   r   r;   )gk7Z?g*}z9?gc-	?rm   r   rA  )	r.   rc   r   r   r   rk  r   r   r8   )r*   r   r  Zbad_meanrt  r  rI   r  r    r    r!   rl    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 )Nr1   rm   rC   r   )gR8T>?gK?g;>h@r   rA  r:  rV   g      4@g      9@)	r.   rc   r   r   r   rH  r   r   r8   )r*   rE  rG  rF  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor  rI   rH  r  r    r    r!   rI    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 )Nr1   rG   r5   r  r   r   r1   rm   )	r.   rc   r   r   r   rJ   r
   r   r8   )
r*   r  rK   bad_n	bad_p_one	bad_p_twor  rI   Zbinomr  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 )Nr1   rG   r5   r  )r   rC   r1   rE   rm   )
r.   rc   r   r   r   r   r   r
   r   r8   )
r*   r  rK   r  r  r  r  rI   Z	neg_binomr  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 )Nr1   r5   )r   r   rm   rC   rm   )
r.   rc   r   r   r   Z_poisson_lam_maxr&  r
   r   r8   )	r*   r%  Zbad_lam_oner  rI   Zmax_lamZbad_lam_twor&  r  r    r    r!   r'  		  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2 tt|t j
 tt|ddt j
g W d    n1 s0    Y  d S )NrC   r   )r1   r   r1   rm   r  r  )r.   rc   r   r   r   rp  r
   r   r8   r  rM   )r*   rX  ru  r  rI   rp  r  r    r    r!   rq  	  s    
zTestBroadcast.test_zipfc                 C   sn   dg}dg}dg}t g d}tt| j}|j}||d }t|| tt||d  tt||d  d S )NrG   r5   r  r   rm   )	r.   rc   r   r   r   r  r
   r   r8   )r*   rK   r  r  r  rI   r  r  r    r    r!   r  &	  s    
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 )Nr1   rC   r5   r;   r   r  rm   r   r   r   i   @i  l        r   i    r$   )	r.   rc   r   r   r   r  r
   r   r8   )r*   ZngoodZnbadr   Z	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twor  rI   r  Z	hypergeomr    r    r!   r  3	  sJ    


z!TestBroadcast.test_hypergeometricc                 C   sn   dg}dg}dg}t g d}tt| j}|j}||d }t|| tt||d  tt||d  d S )NrG   rC   r5   )r1   r1   r1   rm   )	r.   rc   r   r   r   r  r
   r   r8   )r*   rK   r  r  r  rI   r  r  r    r    r!   r  `	  s    
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 )NrY   r   r  r   r/  r   )r   r   rC   r1   rC   r   )rC   rm   r   r   rC   rm   )r1   r   r1   r   rC   r1   )r   rC   rC   r1   r   r   )r   rC   r   r1   rC   r   )rm   rC   rm   rm   r   rY   rE   rC   )r   r   rC   r1   r1   r1   )r   rC   rm   rm   rY   rm   )r   r   r   rT   r.   rc   r   r
   r6  r    r    r!   r  m	  sV    





 
zTestBroadcast.test_multinomialr  r   c                 C   sJ  t t| j}tdgd }|||}t|tr:t n|j	}|d }|j	|ksVJ t
||g}|||}t||j	d d d }|j	|ksJ t
|g|gg}|||}t||j	d d }|j	|d ksJ |j||d| d}|j	d| d ks
J tt  |j||dd}W d    n1 s<0    Y  d S )Nra  r   )r   r5   r/  r   )r1   r1   r1   r1   r1   r1   )r   r   r   r.   rc   rT   r   rD   rc  rb   r~  Zbroadcast_shapesrz   r{   r8   )r*   r  rI   ro   r  Zn_shaper   r    r    r!   test_multinomial_pval_broadcast	  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 )Nr  r   ra  r1   rG   )r   r   r   r   r8   rT   )r*   rI   ro   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s6J |dtd}|jdksVJ |tddtd	}|jd	ks~J d S )
N)r   r   r   i8r  r   )r   r   r   r   r   )r   r   r   )rm   r   r   )rm   r   r   r   )r   r   r   rT   r.   r   rb   r  r    r    r!   test_empty_outputs	  s    z TestBroadcast.test_empty_outputsN)+r?   r@   rA   r   rM  r   r  r  r7  r  r  r  r|  r  r  rD  ra  r$  rn  r*  r  r  r  r  r,  rl  rI  r  r   r'  rq  r  r  r  r  rz   r   r   r.   rc   r  r  r  r    r    r    r!   rs  T  sN   
#




(-

rs  zcan't start threadr  c                   @   s4   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   )r-   seedsr9   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rtjdkrt|| n
t|| d S )	Nr   )Threadc                    s(   g | ] \}} t t||fd qS ))targetargs)r   r   )rz  r+   or  functionr    r!   r|  	  s   z-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  qS r    )startrz  r\   r    r    r!   r|  	  rv  c                 S   s   g | ]}|  qS r    )joinr  r    r    r!   r|  	  rv  r   win32)	threadingr  r.   r   r  r  zipr   r   ZintprF   r   r   platformr   r
   )r*   r  szZout1Zout2tr+   r  r    r  r!   check_function	  s    
zTestThread.check_functionc                 C   s   dd }| j |dd d S )Nc                 S   s   | j dd|d< d S )Nrm  r   .)r  r   r  r    r    r!   
gen_random	  s    z*TestThread.test_normal.<locals>.gen_random)rm  r  r  r*   r  r    r    r!   r   	  s    zTestThread.test_normalc                 C   s   dd }| j |dd d S )Nc                 S   s   | j tdd|d< d S )NrP   r$   r  .)r  r.   rj  r  r    r    r!   r  	  s    z'TestThread.test_exp.<locals>.gen_randomr  r  r  r  r    r    r!   test_exp	  s    zTestThread.test_expc                 C   s   dd }| j |dd d S )Nc                 S   s   | j ddgd dd|d< d S )Nr   r  r   rm  r   .)rT   r  r    r    r!   r  	  s    z/TestThread.test_multinomial.<locals>.gen_random)rm  r   r  r  r  r    r    r!   r  	  s    zTestThread.test_multinomialN)r?   r@   rA   r   r  r   r  r  r    r    r    r!   r  	  s
   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSingleEltArrayInputc                 C   s4   t dg| _t dg| _t dg| _d| _d S )NrC   rm   r   r  )r.   rc   argOneargTwoargThreetgtShaper9   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 ]6}||v rb|tdg}n
|| j}t|j| j qDd S r   )rI   r  r6  r  rC  r#  rm  r)  r+  r&  rp  r  r  r.   rc   r  r   rb   r  )r*   funcs	probfuncsrQ  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}||v rftdg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j qLd S )NrG   r   )rI   rL  r  r  r  r  r  r`  r  r  r  r  rk  rJ   r   r.   rc   r  r  r   rb   r  )r*   r  r  rQ  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 ]f}|||||d}t|j| j ||d |||d}t|j| j |||d ||d}t|j| j qJd S )Nr1   r   r   )r.   r   r   r   r   r   r   ra   r   r   rI   r(   rc   r   rb   r  )r*   r"   r   rQ  r  r  r   r  r    r    r!   r7  
  s    z%TestSingleEltArrayInput.test_integersc                 C   s   t jt jt jg}|D ]l}|| j| j| j}t|j| j	 || jd | j| j}t|j| j	 || j| jd | j}t|j| j	 qd S )Nr   )
rI   r  rH  r  r  r  r  r   rb   r  )r*   r  rQ  r  r    r    r!   test_three_arg_funcs/
  s    z,TestSingleEltArrayInput.test_three_arg_funcsN)r?   r@   rA   r   r  r  r7  r  r    r    r    r!   r  	  s
   r  r  c                 C   s   | d }| d }t |}|| |jd d }tjdkrB| }t|}|jd d | d d ksjJ | | d d ksJ |	 }|jd d }tjdkr| }t|}|jd d | d	 d ksJ | | d	 d ksJ d S )
Nr   r   r   r   r"  r   r   r   r   )
r   r2   r   r   r   r   r   r   r   r   )r  r   r   Zmt19937r   r   r   r    r    r!   test_jumped>
  s"    




r  c                  C   sn  t d} t d}d}tj| |ddjdks2J tt  tj| ||d W d    n1 sb0    Y  tt  tj| |dd W d    n1 s0    Y  tt  tj| |dd W d    n1 s0    Y  t d}tt tj||d W d    n1 s0    Y  tt tj|dd W d    n1 sT0    Y  tt tj|dd W d    n1 s0    Y  t 	|}tt tj||d	 W d    n1 s0    Y  tt$ tj
d
ddgdd W d    n1 s0    Y  tt$ tj
d
dgddd W d    n1 sR0    Y  tt( tj
d
dgddgdd W d    n1 s0    Y  tt( tjddgddgdd W d    n1 s0    Y  tjddd}tjddd}tjddd}t|||jdks(J tjtdd" tj|||dd W d    n1 s`0    Y  d S )Nrm   )r   rm   )r   r   rC   )rY   r   rm   r   )r1   rm   )r   r1   r1   )rm   r  r1   rU  gffffff?)rC   r1   rC   rY   zOutput size \(6, 5, 1, 1\) isrw   )r   rY   r1   r1   )r.   rj  rI   r  rb   rz   r{   r8   r6  r   rJ   rT   r  r  )r
  r  r   rb   r  rX  rY  rZ  r    r    r!   test_broadcast_size_errorZ
  sD    

...
...
.4488r  c                  C   sb   t d} t d}tj| |dd tt  tj| |dd W d    n1 sT0    Y  d S )Nrm   r   rC   )r.   rj  rI   r  rz   r{   r8   )r
  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s4J d S r  )r   r   r	   rS  )seqgenr    r    r!   test_ragged_shuffle
  s    
r  r  r;   c                 C   s   t td}|rdnd}tjt|d |j| |d W d    n1 sJ0    Y  |r\dnd}tjt|d  |jd| |d W d    n1 s0    Y  tjt|d" |jdg| |d W d    n1 s0    Y  d S )	Nr   zhigh < 0z	high <= 0rw   r?  z
low > highzlow >= highr5   )r   r   rz   r{   r8   r(   )r  r"   r  msgr    r    r!   !test_single_arg_integer_exception
  s    ,.r  rF   Zf4Zf8c                 C   s   t jdd| d}g d}tjtdd  tj||| d W d    n1 sL0    Y  tjtdd$ tj|||j| d W d    n1 s0    Y  d S )	Nr   F)orderrF   r   zSupplied output arrayrw   r;  r<  )r.   r   rz   r{   r8   rI   r6  rb   )rF   r  rb   r    r    r!   test_c_contig_req_out
  s    .r  r  r  Cdistc                 C   sH   t jd||d}| ||d}||u s(J | |||jd}||u sDJ d S )Nr   )rF   r  r;  )r  rF   r   )r.   r   rb   )r  r  rF   r  Zvariatesr    r    r!   test_contig_req_out
  s
    r  c                  C   sz   t jt jd} | d |  \}\}}|jjdks>J t| |d }t| |j	|j
_	|j
j	}|j	|ksvJ d S )Nr   r1   	PCG64DXSM)r  )r.   rI   r   r  r   
__reduce__	__class__r?   printr   r   )r   ZctorZbit_gen_rY  Zstate_br    r    r!   $test_generator_ctor_old_style_pickle
  s    

r  c                  C   s   dd l } tjtjd}|jj}| | |}|jj}t	|j
|j
 t	|j|j |jjd | | |}|jj}t	|j
|j
 d S )Nr   i4r   )pickler.   rI   r   r  r   Zseed_seqloadsdumpsr   r   poolspawn)r  r   ssZrg_plkZss_plkr    r    r!   #test_pickle_preserves_seed_sequence
  s    r  versiony   ~   c                 C   s   dd l }dd l}tjtjtd }tj|dd|  d}||}|	|}W d    n1 sj0    Y  |j
jd }t|tsJ t|j
tjjsJ |d dksJ |d dksJ d S )	Nr   r  Zgenerator_pcg64_npz.pkl.gzr   l	   a*MzJR2MP incl	   sN	D%(^6FA )r  gzipospathsplitabspath__file__r  openloadr   r   r   r   r.   rI   ZPCG64)r  r  r  	base_pathZpkl_filegzr   r   r    r    r!   test_legacy_pickle
  s    (r  )7os.pathr  r   r   rz   numpyr.   Znumpy.exceptionsr   Znumpy.linalgr   Znumpy.testingr   r   r   r   r   r	   r
   r   r   r   Znumpy.randomr   r   r   r   rI   ZJUMP_TEST_DATAZfixturer"   r#   rB   rO   r}   r   r   r,  rs  r   rr  r  r  r   r  r  r  r  r  r  r   r  r  r  r  r    r    r    r!   <module>   s   0

$7 "                i/U
+

	