o
    >~#gM                 	   @   s  d dl Z 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m	Z	m
Z
mZmZmZmZmZmZ d dlmZmZ d dlmZ ddddded	d
 fddddZeejjdk rcdddddddddZndddddddd dZejd!ed"d#d$ Zejd%d& Zd'd( ZG d)d* d*ZG d+d, d,Z G d-d. d.Z!G d/d0 d0Z"G d1d2 d2Z#G d3d4 d4Z$G d5d6 d6Z%ej&j'ed7d8G d9d: d:Z(G d;d< d<Z)d=d> Z*d?d@ Z+dAdB Z,dCdD Z-dEdF Z.dGdH Z/dIdJ Z0dKdL Z1dMdN Z2dS )O    N)	assert_assert_raisesassert_equalassert_warnsassert_no_warningsassert_array_equalassert_array_almost_equalsuppress_warningsIS_WASM)MT19937PCG64)random)g      Y@g333333?)      ?)   r   
   r      g      @)d   r   )      $@)   )binomial	geometrichypergeometric	logseriesmultinomialnegative_binomialpoissonzipf        @2fbead005fc63942decb5326d36a1f32fe2c9d32c904ee61e46866b88447c263@23ead5dcde35d4cfd4ef2c105e4c3d43304b45dc1b1444b7823b9ee4fa144ebb@0d764db64f5c3bad48c8c33551c13b4d07a1e7b470f77629bef6c985cac76fcf@7b59bf2f1691626c5815cdcd9a49e1dd68697251d4521575219e4d2a1b8b2c67@d754fa5b92943a38ec07630de92362dd2e02c43577fc147417dc5b9db94ccdd3@8eb216f7cb2a63cf55605422845caaff002fddc64a7dc8b2d45acd477a49e824@70c891d76104013ebd6f6bcf30d403a9074b886ff62e4e6b8eb605bf1a4673b7@01f074f97517cd5d21747148ac6ca4074dde7fcb7acbaec0a936606fecacd93f)r   r   r   r   r   r   r   r   @8626dd9d052cb608e93d8868de0a7b347258b199493871a1dc56e2a26cacb112@8edd53d272e49c4fc8fbbe6c7d08d563d62e482921f3131d0a0e068af30f0db9@83496cc4281c77b786c9b7ad88b74d42e01603a55c60577ebab81c3ba8d45657@65878a38747c176bc00e930ebafebb69d4e1e16cd3a704e264ea8f5e24f548db@7a984ae6dca26fd25374479e118b22f55db0aedccd5a0f2584ceada33db98605@d636d968e6a24ae92ab52fe11c46ac45b0897e98714426764e820a7d77602a61@956552176f77e7c9cb20d0118fc9cf690be488d790ed4b4c4747b965e61b0bb4@f84ba7feffda41e606e20b28dfc0f1ea9964a74574513d4a4cbc98433a8bfa45module)scopeparamsc                 C   s   | j t| j  t| j  fS N)param	INT_FUNCSINT_FUNC_HASHES)request r6   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/numpy/random/tests/test_randomstate.pyint_func2   s   r8   c                  c   s"    t j } dV  t j|  dS )z:Ensures that the singleton bitgen is restored after a testN)npr   get_bit_generatorset_bit_generator)orig_bitgenr6   r6   r7   restore_singleton_bitgen8   s   
r=   c                 C   sn   t | d |d  t| d d |d d  t| d d |d d  t | d |d  t | d |d  d S )Nbit_generatorstatekeypos	has_gaussgauss)r   r   )abr6   r6   r7   assert_mt19937_state_equal@   s
   rF   c                   @   sD   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S )TestSeedc                 C   s8   t d}t|dd t d}t|dd d S )Nr     i      i  )r   RandomStater   randintselfsr6   r6   r7   test_scalarI   s   

zTestSeed.test_scalarc                 C   sz   t td}t|dd t td}t|dd t dg}t|dd t dg}t|dd d S )Nr   rH   i  r   i  rI   i	  )r   rJ   ranger   rK   r9   arangerL   r6   r6   r7   
test_arrayO   s   zTestSeed.test_arrayc                 C   s    t ttjd t ttjd d S )N      r   	TypeErrorr   rJ   
ValueErrorrM   r6   r6   r7   test_invalid_scalarY      zTestSeed.test_invalid_scalarc                 C   sX   t ttjdg t ttjdg t ttjdg t ttjg d t ttjg d d S )NrS   rT   r   )   r   r   )r[   r   rU   rX   r6   r6   r7   test_invalid_array^   s
   zTestSeed.test_invalid_arrayc                 C   sL   t ttjtjg tjd t ttjg dg t ttjg dg dg d S )Ndtyper[   r      )      r   )r   rW   r   rJ   r9   arrayint64rX   r6   r6   r7   test_invalid_array_shapef   s   
z!TestSeed.test_invalid_array_shapec                 C   sF   t td}tt |d W d    d S 1 sw   Y  d S )Nr     )r   rJ   r   r   rV   seed)rM   rsr6   r6   r7   test_cannot_seedn   s   
"zTestSeed.test_cannot_seedc                 C   s   t ttjt d S r1   )r   rW   r   rJ   r   rX   r6   r6   r7   test_invalid_initializations   s   z$TestSeed.test_invalid_initializationN)
__name__
__module____qualname__rO   rR   rY   r]   rf   rj   rk   r6   r6   r6   r7   rG   H   s    
rG   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 )Nr   intr^   )r   r   r[   r   )r9   zerosr   r   r   r   )rM   rq   pr6   r6   r7   test_n_zerox   s
   zTestBinomial.test_n_zeroc                 C   s   t ttjdtj d S )Nr[   )r   rW   r   r   r9   nanrX   r6   r6   r7   test_p_is_nan   s   zTestBinomial.test_p_is_nanN)rl   rm   rn   rs   ru   r6   r6   r6   r7   ro   w   s    	ro   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S )TestMultinomialc                 C      t dddg d S )Nr   皙?皙?r   r   rX   r6   r6   r7   
test_basic      zTestMultinomial.test_basicc                 C   s   t dg d d S )Nr   )rx   ry           r}   r}   rz   rX   r6   r6   r7   test_zero_probability   r|   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 )NrT   rc   )r   r   rK   r9   allrM   xr6   r6   r7   test_int_negative_interval   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 )Nr   r[   r[   r   r   r   r   r   r   r   )
r   r   r   r9   uint32shaperd   r   rV   floatrM   rr   r6   r6   r7   	test_size   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 )Nr   皙?rx   皙?r   rW   r   r   rX   r6   r6   r7   test_invalid_prob   s   z!TestMultinomial.test_invalid_probc                 C   s   t ttjdddg d S )NrT   ry   rx   r   rX   r6   r6   r7   test_invalid_n      zTestMultinomial.test_invalid_nc                 C   st   t d}|t |dd d  }|dd d }td tjd|d}td tjdt |d}t|| d S )Ng      .@r[   ra   i۠iUr   )pvals)r9   rQ   sumr   rh   r   ascontiguousarrayr   )rM   rr   r   
non_contigcontigr6   r6   r7   test_p_non_contiguous   s   


z%TestMultinomial.test_p_non_contiguousc                 C   sd   t jg dt jd}||  }d}tjt|d td| W d    d S 1 s+w   Y  d S )N)
Gz?r   &.>r   r   r   r   r   r   r   r^   z-[\w\s]*pvals array is cast to 64-bit floatingmatchr[   )	r9   rd   float32r   pytestraisesrW   r   r   )rM   r   r   r   r6   r6   r7   test_multinomial_pvals_float32   s   
"z.TestMultinomial.test_multinomial_pvals_float32c                 C   rw   )Ng      Y@rx   ry   rz   rX   r6   r6   r7   test_multinomial_n_float   s   z(TestMultinomial.test_multinomial_n_floatN)rl   rm   rn   r{   r~   r   r   r   r   r   r   r   r6   r6   r6   r7   rv      s    
rv   c                   @   sd   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S )TestSetStatec                 C   s$   d| _ t| j | _| j | _d S NiI)rh   r   rJ   random_state	get_stater?   rX   r6   r6   r7   setup_method   s   zTestSetState.setup_methodc                 C   s<   | j d}| j | j | j d}tt||k d S )N   )r   tomaxint	set_stater?   r   r9   r   rM   oldnewr6   r6   r7   r{      s   zTestSetState.test_basicc                 C   s@   | j jdd}| j | j | j jdd}tt||k d S Nra   size)r   standard_normalr   r?   r   r9   r   r   r6   r6   r7   test_gaussian_reset   s   z TestSetState.test_gaussian_resetc                 C   sR   | j   | j  }| j jdd}| j | | j jdd}tt||k d S r   )r   r   r   r   r   r9   r   )rM   r?   r   r   r6   r6   r7    test_gaussian_reset_in_media_res   s   

z-TestSetState.test_gaussian_reset_in_media_resc                 C   sz   | j d d }| jjdd}| j| | jjdd}| j| j  | jjdd}tt||k tt||k d S )Nr\   r   r   )r?   r   r   r   r   r9   r   )rM   	old_statex1x2x3r6   r6   r7   test_backwards_compatibility   s   z)TestSetState.test_backwards_compatibilityc                 C   s   | j dd d S Nr   )r   r   rX   r6   r6   r7   test_negative_binomial   s   z#TestSetState.test_negative_binomialc                 C   sx   t t }t )}|t}| }tt|dk t	|t
s"J |d dks*J W d    d S 1 s5w   Y  d S )Nr[   r>   r   )r   rJ   r   r	   recordRuntimeWarningr   r   len
isinstancedict)rM   ri   supwr?   r6   r6   r7   test_get_state_warning   s   
"z#TestSetState.test_get_state_warningc                 C   sl   | j  }d|dd   }tt| j j| tt| j jtj|td | j jdd}|d= tt| j j| d S )N)Unknownr[   r^   Flegacyr>   )	r   r   r   rW   r   rV   r9   rd   object)rM   r?   	new_stater6   r6   r7   !test_invalid_legacy_state_setting   s   

z.TestSetState.test_invalid_legacy_state_settingc                 C   sj   | j d | j d | j   | j jdd}t|d d tt| j }|jdd}t	|| d S )Nr   r   Fr   rB   r[   )
r   rh   random_sampler   r   r   pickleloadsdumpsrF   )rM   pickled	rs_unpick	unpickledr6   r6   r7   test_pickle   s   
zTestSetState.test_picklec                 C   s<   | j  }| j   | j | | j jdd}t|| d S )NFr   )r   __getstate__r   __setstate__r   rF   )rM   
attr_stater?   r6   r6   r7   test_state_setting
  s
   

zTestSetState.test_state_settingc                 C   s   t | jds
J d S )NzRandomState(MT19937))reprr   
startswithrX   r6   r6   r7   	test_repr  r   zTestSetState.test_reprN)rl   rm   rn   r   r{   r   r   r   r   r   r   r   r   r   r6   r6   r6   r7   r      s    	

r   c                	   @   s   e Zd ZejZej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ejjedjdk dddd Zdd Zdd ZdS )TestRandintc                 C   s   t t| jdtd d S Nr[   r^   )r   rV   rfuncr   rX   r6   r6   r7   test_unsupported_type     z!TestRandint.test_unsupported_typec                 C   s   | j D ]J}|tju rdnt|j}|tju rdnt|jd }tt| j|d ||d tt| j||d |d tt| j|||d tt| jdd|d qd S )Nr   r   r[   r^   )	ityper9   booliinfominmaxr   rW   r   )rM   dtlbndubndr6   r6   r7   test_bounds_checking   s   
z TestRandint.test_bounds_checkingc                 C   s   | j D ]T}|tju rdnt|j}|tju rdnt|jd }|d }t| j||d d|d| |}t| j||d d|d| || d }t| j||d d|d| qd S )Nr   r   r[   rH   r   r_   )r   r9   r   r   r   r   r   r   )rM   r   r   r   tgtr6   r6   r7   test_rng_zero_and_extremes)  s   
z&TestRandint.test_rng_zero_and_extremesc                 C   s   | j D ]<}|tju rdnt|j}|tju rdnt|jd }z
| j|||d W q ty? } ztdt	| d }~ww d S )Nr   r   r[   r^   zMNo error should have been raised, but one was with the following message:

%s)
r   r9   r   r   r   r   r   	ExceptionAssertionErrorstr)rM   r   r   r   er6   r6   r7   test_full_range7  s   
zTestRandint.test_full_rangec                 C   s   t   | jdd  D ] }dD ]}| jd|d|d}t| |k  t| dk qq| jdddtjd}t| dk  t| dk d S )Nr[   )rb      r   r   i   r   r   )	r   rh   r   r   r   r   r   r9   r   )rM   r   r   valsr6   r6   r7   test_in_bounds_fuzzE  s   zTestRandint.test_in_bounds_fuzzc              
   C   s   dddddddddd	}| j dd  D ]8}td tjd	kr)| jd
dd|d}n| jd
dd|d }t|	t
j }t|t
|j |k qtd | jd
ddtd	t
j}t| }t|t
tj |k d S )N@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92f@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9e@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	r   int16int32re   int8uint16r   uint64uint8r[   rg   littler   r   rH   r   r   )r   r   rh   sys	byteorderr   byteswaphashlibsha256viewr9   r   	hexdigestr   r_   namer   )rM   r   r   valresr6   r6   r7   test_repeatabilityT  s*   



zTestRandint.test_repeatabilitylr   zCannot test with 32-bit C longreasonc              
   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d | jdgdgdggg d|d}t||d urX|n|d  q9d S )N)l   Q[ l   dm" l   0 )l   ;i l   vlm l   iXp )i\L_l   ZN iwU')l   <~ l   20l iP?)ifiwLl   @
Vo )l   o\ iwi
1])i{YSl   r=| i)l   0 l   l i&})l   QZ) l   (q l   '}Q )l   WqV1 iMl   't )inMl   b" l   )  )ial    l   S"f )idi98l   nDk )l   Jc i-l    )iMi'*l   l, )N)rc   ra   ra   i90  rT   r   r[   )rI   r   l       r   )r9   rd   r   rh   r   r   )rM   desiredr   r   r6   r6   r7   .test_repeatability_32bit_boundary_broadcastingt  s8   

z:TestRandint.test_repeatability_32bit_boundary_broadcastingc                 C   s^   t j}t t jj}t t t jj}t t t jjd }tj|||d}t|| d S r   )r9   re   r   r   r   r   rK   r   )rM   r   r   r   r   actualr6   r6   r7   test_int64_uint64_corner_case  s   z)TestRandint.test_int64_uint64_corner_casec                 C   s   | j D ]/}|tju rdnt|j}|tju rdnt|jd }| j|||d}t|jt| qtt	fD ];}|t	u r?dnd}|tu rGdnt|j}|tu rSdnt|jd }| j|||d}t
t|d  tt|| q7d S )Nr   r   r[   r^   longr   r_   )r   r9   r   r   r   r   r   r   r_   rp   r   hasattrtype)rM   r   r   r   sampleop_dtyper6   r6   r7   test_respect_dtype_singleton  s   
z(TestRandint.test_respect_dtype_singletonN)rl   rm   rn   r   rK   r   r9   r   r   r   r   r   r   r   re   r   r   r   r   r   r   r   r  r   markskipifr   r   r  r  r  r6   r6   r6   r7   r     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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"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1e2j34d_e56d`dadbe5j7dcgddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdxdy ZBdzd{ ZCd|d} ZDd~d ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdS )TestRandomDistc                 C   
   d| _ d S r   rh   rX   r6   r6   r7   r        
zTestRandomDist.setup_methodc                 C   sF   t | j t dd}tddgddgddgg}t||d	d
 d S )Nra   r   _\*?琛?<p?,o?H?Z?   decimal)r   rh   randr9   rd   r   rM   r  r
  r6   r6   r7   	test_rand     
zTestRandomDist.test_randc                 C   s*   t | j t  }d}t||dd d S )Nr  r   r!  )r   rh   r#  r   r$  r6   r6   r7   test_rand_singleton  s   z"TestRandomDist.test_rand_singletonc                 C   sl   t | j t dd}tddgddgddgg}t||d	d
 t | j t  }t||d d	d
 d S )Nra   r   !<Oq?4u,?3?LI/DͿ@? @HS\@r   r!  r   r   r   rh   randnr9   rd   r   r$  r6   r6   r7   
test_randn  s   
zTestRandomDist.test_randnc                 C   F   t | j t jdddd}tddgddgd	d
gg}t|| d S )Nc   ra   r   r      ra   )   )r   rh   rK   r9   rd   r   r$  r6   r6   r7   test_randint     
zTestRandomDist.test_randintc                 C   s   t | j t }|t}t jdddd}tt|dk W d    n1 s)w   Y  t	ddgdd	gd
dgg}t
|| t | j t }|t}t jddd}tt|dk W d    n1 siw   Y  t
||d  d S )Nr3  r4  r5  r   r[   r6  ra   r7  r8  r9  r:     r   )r   rh   r	   r   DeprecationWarningrandom_integersr   r   r9   rd   r   )rM   r   r   r  r
  r6   r6   r7   test_random_integers  s$   



z#TestRandomDist.test_random_integersc                 C   s   t | j t | j}|jdd}ttjjdkr-tjddgddgdd	ggtj	d
}ntjddgddgddggtj	d
}t
|| || j | }t
||d  d S )Nr5  r   ii4Oi˕+iRKiriFbqir^   l   K+W+y l   r&&J] l   ;	 l   nBz l   @XHT l   D+l++ r.  )r   rh   rJ   r   r9   r   r  r   rd   re   r   )rM   ri   r  r
  r6   r6   r7   test_tomaxint  s(   


zTestRandomDist.test_tomaxintc                 C   s   t  #}|t}ttdjtdj}tt	|dk W d    n1 s)w   Y  tdj}t
|| t  -}|t}tdj}t|tdj|tdj}tt	|dk W d    n1 slw   Y  t
|| d S )Nr  r[   )r	   r   r>  r   r?  r9   r   r   r   r   r   r_   r  )rM   r   r   r  r
  typerr6   r6   r7   test_random_integers_max_int  s$   



z+TestRandomDist.test_random_integers_max_intc                 C   sp   t  * t dt tttjtdj	 tttjtdj	tdj	 W d    d S 1 s1w   Y  d S )Nerrorr  )
warningscatch_warningssimplefilterr>  r   r   r?  r9   r   r   rX   r6   r6   r7   test_random_integers_deprecated  s   

"z.TestRandomDist.test_random_integers_deprecatedc                 C   sj   t | j t d}tddgddgddgg}t||dd	 t | j t  }t||d
 dd	 d S )Nr5  r  r  r  r  r  r  r   r!  r.  )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_random_sample,  s   

z!TestRandomDist.test_random_samplec                 C   s4   t | j t dd}tg d}t|| d S )Nrb   )r   ra   r   ra   r   rh   choicer9   rd   r   r$  r6   r6   r7   test_choice_uniform_replace8  s   z*TestRandomDist.test_choice_uniform_replacec                 C   s<   t | j t jddg dd}tg d}t|| d S )Nrb   )皙?rM  皙?rN  rr   )r[   r[   r   r   rJ  r$  r6   r6   r7   test_choice_nonuniform_replace>  s   z-TestRandomDist.test_choice_nonuniform_replacec                 C   s8   t | j t jdddd}tg d}t|| d S )Nrb   ra   Freplace)r   r[   ra   rJ  r$  r6   r6   r7   test_choice_uniform_noreplaceD     z,TestRandomDist.test_choice_uniform_noreplacec                 C   s>   t | j t jdddg dd}tg d}t|| d S )Nrb   ra   F)rN  333333?r   rN  rR  rr   )r   ra   r[   rJ  r$  r6   r6   r7    test_choice_nonuniform_noreplaceJ  s   z/TestRandomDist.test_choice_nonuniform_noreplacec                 C   s8   t | j t g dd}tg d}t|| d S )N)rD   rE   cdrb   )rX  rY  rX  rY  rJ  r$  r6   r6   r7   test_choice_nonintegerP  rT  z%TestRandomDist.test_choice_nonintegerc                 C   s2  t j}tt|dd tt|dd tt|ddgddgg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 )NrT   ra         @r[   r   rb   )r[   r   ra   rb   g      ?rO  )rM  rM  rx   r   r   rM  r`   FrQ  r\   )rT   )rT   r[   )r[   r   r   rV  )r   rK  r   rW   )rM   r  r6   r6   r7   test_choice_exceptionsV  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  r   r   TrQ  FrV  r[   r^   r   )r   ra   )rN  rN  rN  rN  rM  rx   r   )ra   r   rb   r   i)r   r   rD   rE   )r   r9   isscalarr   rK  rd   emptyr   tuplendimitemr   r   rQ   rK   r   rW   )rM   rr   rD   arrrN   r6   r6   r7   test_choice_return_shapei  sL    z'TestRandomDist.test_choice_return_shapec                 C   s,   t g d}g d}tttj||d d S )N)*   r[   r   )NNNrO  )r9   rd   r   rW   r   rK  )rM   rD   rr   r6   r6   r7   test_choice_nan_probabilities  s   z,TestRandomDist.test_choice_nan_probabilitiesc              	   C   s|   t dd }d|dd d< t| j tjdd|d d d d}t| j tjddt |d d d d}t|| d S )Nr   rc   r[  r[   r   ra   rO  )r9   onesr   rh   rK  r   r   )rM   rr   r   r   r6   r6   r7   test_choice_p_non_contiguous  s    z+TestRandomDist.test_choice_p_non_contiguousc                 C   s(   t | j t d}d}t|| d S )Nr   s
   Ui+Wf)r   rh   bytesr   r$  r6   r6   r7   
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 | j |g d}t | |}|g d}t|| q#d S )Nc                 S   s
   t g S r1   )r9   rd   r   r6   r6   r7   <lambda>  s   
 z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r1   r6   rj  r6   r6   r7   rk    s    c                 S      t | t jS r1   )r9   asarrayastyper   rj  r6   r6   r7   rk        c                 S   rl  r1   )r9   rm  rn  r   rj  r6   r6   r7   rk    ro  c                 S   rl  r1   )r9   rm  rn  	complex64rj  r6   r6   r7   rk    ro  c                 S   s   t | tS r1   )r9   rm  rn  r   rj  r6   r6   r7   rk        c                 S   s   dd | D S )Nc                 S      g | ]}||fqS r6   r6   .0ir6   r6   r7   
<listcomp>      ATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r6   rj  r6   r6   r7   rk    s    c                 S   s   t dd | D S )Nc                 S   s   g | ]}||gqS r6   r6   rs  r6   r6   r7   rv    rw  rx  )r9   rm  rj  r6   r6   r7   rk    rw  c                 S   s   t | | gjS r1   )r9   vstackTrj  r6   r6   r7   rk    rq  c                 S   s*   t dd | D dtfdtfgt jS )Nc                 S   rr  r6   r6   rs  r6   r6   r7   rv    rw  rx  rD   rE   )r9   rm  rp   r  recarrayrj  r6   r6   r7   rk    s    
c                 S   s(   t dd | D dtdfdt jdfgS )Nc                 S   rr  r6   r6   rs  r6   r6   r7   rv    rw  rx  rD   r[   rE   )r9   rm  r   r   rj  r6   r6   r7   rk    s
    

r[   r   ra   rb   rc   r      r   	   r   
r   r[   r  r   r   rb   rc   r   r~  ra   )r   rh   shuffler   )rM   convalistr  r
  r6   r6   r7   test_shuffle  s&   
zTestRandomDist.test_shufflec                 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d }d S )	Nr   )rc   rb   ra   r[   rT   2   c                 S   s   t d}tttj| d S )Nra   )r9   rd   r   rV   r   r  r   r6   r6   r7   test_shuffle_invalid_objects  s   
zHTestRandomDist.test_shuffle_masked.<locals>.test_shuffle_invalid_objects)r9   mamasked_valuesreshaperP   rQ   copyr   r  r   sorteddatamask)rM   rD   rE   a_origb_origru  r  r6   r6   r7   test_shuffle_masked  s   "
 
 z"TestRandomDist.test_shuffle_maskedc                 C   s   t | j g d}t |}g d}t|| t | j tg dj}t |}t|t|j t | j d}ttt j| t | j d}ttt j| d}g d}t | j t |}t|| d S )Nr}  r  abcdg333333?r   )
r  r   r   rc   r[   ra   rb   r~  r   r   )	r   rh   permutationr   r9   
atleast_2drz  r   
IndexError)rM   r  r  r
  arr_2d	bad_x_strbad_x_floatinteger_valr6   r6   r7   test_permutation  s(   



zTestRandomDist.test_permutationc                 C   J   t | j t jdddd}tddgddgd	d
gg}t||dd d S )NrN  r   r5  r   gAKč?ghA?g ҇o>gάXf+q?gS1$?g'8zX ?r   r!  )r   rh   betar9   rd   r   r$  r6   r6   r7   	test_beta  s   zTestRandomDist.test_betac                 C   sl   t | j t jdddd}tddgddgd	d
gg}t|| t | j t dd}d}t|| d S )NgZd;Y@gv/?r5  r   %   +   rd  0   .   -   )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_binomial  s   

zTestRandomDist.test_binomialc                 C   H   t | j t jddd}tddgddgdd	gg}t||d
d d S )Nr  r5  r   g+Q]uO@g+Q@gY7`ZqP@ge(fG@gvtR@gEIȋR@   r!  )r   rh   	chisquarer9   rd   r   r$  r6   r6   r7   test_chisquare	     
zTestRandomDist.test_chisquarec                 C   s   t | j tddg}t 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t j| t | j tddg}t |}t||d dd d S )NI<I@EZC@r5  r   gi{s?gn,	A?g]^?gpDB?gȧ#y?gr?g1U?gѨUC?g^,%?gB?gډOoX;?gM`!O?r   r!  HzG?缉ؗҜr.  )r   rh   r9   rd   	dirichletr   r   rW   )rM   alphar  r
  	bad_alphar6   r6   r7   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  r[   r   r   r   r   )
r9   rd   r   r   r  r   r   r   rV   r   r   r6   r6   r7   test_dirichlet_size$  s   z"TestRandomDist.test_dirichlet_sizec                 C   s    t ddg}tttj| d S )Nr  r  )r9   rd   r   rW   r   r  )rM   r  r6   r6   r7   test_dirichlet_bad_alpha0  rZ   z'TestRandomDist.test_dirichlet_bad_alphac                 C   sd   t g d}|d d d }t| j tj|dd}t| j tjt |dd}t|| d S )N)r  g      r  r   r5  r   )r9   rd   r   rh   r  r   r   )rM   rD   r  r   r   r6   r6   r7   #test_dirichlet_alpha_non_contiguous5  s   z2TestRandomDist.test_dirichlet_alpha_non_contiguousc                 C   r  )Ng8EGr?r5  r   gNU?gbI0?gVU\@g:3@gU?g"qo?r   r!  )r   rh   exponentialr9   rd   r   r$  r6   r6   r7   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   r   r  r   rW   rX   r6   r6   r7   test_exponential_0G     z!TestRandomDist.test_exponential_0c                 C   r  )N   M   r5  r   g7?g`j?g6"+?gܳ2>?gc>+Y?g_}S?r   r!  )r   rh   fr9   rd   r   r$  r6   r6   r7   test_fK     
zTestRandomDist.test_fc                 C   r  )Nrc   ra   r5  r   gԏGM8@gȌ<@g	":@gv#)@gZQ?@gr[@@   r!  )r   rh   gammar9   rd   r   r$  r6   r6   r7   
test_gammaS  r  zTestRandomDist.test_gammac                 C   s*   t tjdddd tttjddd d S )Nr   )r   r  r  )r   r   r  r   rW   rX   r6   r6   r7   test_gamma_0[  s   zTestRandomDist.test_gamma_0c                 C   D   t | j t jddd}tddgddgddgg}t|| d S )	N_c97ݚ?r5  r   r   r~     rc   r  )r   rh   r   r9   rd   r   r$  r6   r6   r7   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 !}|t t ttjtj t ttjtjgd  W d    d S 1 sIw   Y  d S )Nr   r   r   )	r   rW   r   r   r	   r   r   r9   rt   rM   r   r6   r6   r7   test_geometric_exceptionsg  s   
"z(TestRandomDist.test_geometric_exceptionsc                 C   r  )Nr         @r5  locr  r   gؕ?gs0 ?g#0g(xg-KD?gůp`@r   r!  )r   rh   gumbelr9   rd   r   r$  r6   r6   r7   test_gumbelq  r  zTestRandomDist.test_gumbelc                 C   r  r  )r   r   r  r   rW   rX   r6   r6   r7   test_gumbel_0y  r  zTestRandomDist.test_gumbel_0c                 C   s   t | j t jddddd}tddgddgddgg}t|| t jdd	d
dd}tg d}t|| t jdd	ddd}tg d}t|| t jd	dd
dd}tg d}t|| t jd	dddd}tg d}t|| d S )Ng333333$@g      @r  r5  r   r   r  rc   r   ra   rb   )ra   ra   ra   ra   r   r  )r  r  r  r  )r   r   r   r   )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_hypergeometric}  s&   




z"TestRandomDist.test_hypergeometricc                 C   r  )Nr  r  r5  r  g bO?g¸?gpJm	@g{K*t	@g:^w-gY~o?r   r!  )r   rh   laplacer9   rd   r   r$  r6   r6   r7   test_laplace  r  zTestRandomDist.test_laplacec                 C   r  r  )r   r   r  r   rW   rX   r6   r6   r7   test_laplace_0  r  zTestRandomDist.test_laplace_0c                 C   r  )Nr  r  r5  r  g#K-z?gJ?g92@gر[@g#+^˿g-@r   r!  )r   rh   logisticr9   rd   r   r$  r6   r6   r7   test_logistic  r  zTestRandomDist.test_logisticc                 C   r  )Nr  r  r5  )meansigmar   gɁ0@go,+4FB@g)ʭ6@g5?gnxNnP@g)U@r  r!  )r   rh   	lognormalr9   rd   r   r$  r6   r6   r7   test_lognormal  r  zTestRandomDist.test_lognormalc                 C   s&   t tjddd tttjdd d S )Nr   )r  r[   r  )r   r   r  r   rW   rX   r6   r6   r7   test_lognormal_0  r  zTestRandomDist.test_lognormal_0c                 C   sD   t | j t jddd}tddgddgddgg}t|| d S )Ngƀ@?r5  )rr   r   r   r   r  ra   )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_logseries  r  zTestRandomDist.test_logseriesc                 C   s   t ddks	J d S )Nr   r[   )r   r   rX   r6   r6   r7   test_logseries_zero  r   z"TestRandomDist.test_logseries_zerovaluer}   rT         ?g      @c              	   C   s   t jddp tt t| W d    n1 sw   Y  tt tt |gd  W d    n1 s<w   Y  tt tt |gd d d d  W d    n1 saw   Y  W d    d S W d    d S 1 syw   Y  d S )Nignoreinvalidr   r   )r9   errstater   r   rW   r   r   rd   )rM   r  r6   r6   r7   test_logseries_exceptions  s   ""z(TestRandomDist.test_logseries_exceptionsc                 C   sd   t | j t 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   r5  r   )rb   ra   rc   rb   r   r   )rc   r   r   r   r   r[   )ra   rb   ra   r   r   rb   )r   r[   rb   ra   r   rb   )rb   rb   r   rc   r   ra   )rb   ra   rb   r   ra   rb   )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_multinomial  s   
zTestRandomDist.test_multinomialc           	      C   s  t | j d}ddgddgg}d}t |||}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 ||}tddg}t||dd ddg}ddgddgg}ttt j|| tt j||dd t	t
t j||dd tjddgddggtjd}t }t || |t}t|dksJ W d    n1 sw   Y  td}td}t	t
t j||dd t	t
t jtd| t	t
t j|td t	t
t j|td d S )N)r  r   r[   r   r5  g4Vj?gy'@gI1?gSB#@ge<@g 4W(@g6R¿?g9r
v"@gс?g{#@g4xg"f"@r   r!  gN}O6?gYMW"@r   r  )check_validraiserN  r^   other)r   r[   r[   ra   )r   rh   multivariate_normalr9   rd   r   r   r   r   r   rW   r   r	   r   r   rq   eyer^  )	rM   r  covr   r  r
  r   r   mur6   r6   r7   test_multivariate_normal  s`   







z'TestRandomDist.test_multivariate_normalc                 C   r2  )Nr   g|Pk?r5  )nrr   r   iP  iI  i|  ic  i  i  )r   rh   r   r9   rd   r   r$  r6   r6   r7   r     r<  z%TestRandomDist.test_negative_binomialc                 C   s`   t  #}|t 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   )	r	   r   r   r   rW   r   r   r9   rt   r  r6   r6   r7   !test_negative_binomial_exceptions  s   


"z0TestRandomDist.test_negative_binomial_exceptionsc                 C   s   t | j t jdddd}tddgddgdd	gg}t||d
d t jdddd}tddgddgddgg}t||d
d t | j t jdddd}tddgddgddgg}t||d
d d S )Nrc   r5  )dfnoncr   gG7@g! ܴ*@g1}z9?@g+驸0@g26E_r#@gI!1@r  r!  r   rx   g?gTD?g?T?g+qnl?g~|D?g밬?r   g{01#@gprs'@g~;$@g"dI@g*@g}',@)r   rh   noncentral_chisquarer9   rd   r   r$  r6   r6   r7   test_noncentral_chisquare  s(   


z(TestRandomDist.test_noncentral_chisquarec                 C   L   t | j t jddddd}tddgdd	gd
dgg}t||dd d S )Nrc   r   r[   r5  )dfnumdfdenr  r   g^~?g/+c?g".@g@g7?gE?r  r!  )r   rh   noncentral_fr9   rd   r   r$  r6   r6   r7   test_noncentral_f0     

z TestRandomDist.test_noncentral_fc                 C   s0   t | j t jddtjd}t|sJ d S )Nrc   r   )r  r  r  )r   rh   r  r9   rt   isnan)rM   r  r6   r6   r7   test_noncentral_f_nan9  s   z$TestRandomDist.test_noncentral_f_nanc                 C   r  )Nr  r  r5  r  g&&n@gOG_@g~w@gtw]տgm&5@g$>@r   r!  )r   rh   normalr9   rd   r   r$  r6   r6   r7   test_normal>  r  zTestRandomDist.test_normalc                 C   r  r  )r   r   r  r   rW   rX   r6   r6   r7   test_normal_0F  r  zTestRandomDist.test_normal_0c                 C   sL   t | j t jddd}tddgddgdd	gg}tjj||d
d d S )Nr  r5  rD   r   gWI@gԨy@gy]0Ag1~\Aga@gY
7A   )nulp)r   rh   paretor9   rd   testingassert_array_almost_equal_nulpr$  r6   r6   r7   test_paretoJ  s   
zTestRandomDist.test_paretoc                 C   sD   t | j t jddd}tddgddgddgg}t|| d S )Nr  r5  )lamr   r   r[   )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_poissonY  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 !}|t	 tttjt j
 tttjt j
gd  W d    d S 1 sQw   Y  d S )Nr  rT   r   )r9   r   r   r   rW   r   r   r	   r   r   rt   )rM   lambiglamnegr   r6   r6   r7   test_poisson_exceptionsa  s   
"z&TestRandomDist.test_poisson_exceptionsc                 C   r  )Nr  r5  r  g;'?gܴw*?g5?gFG?g D]?g$`?r   r!  )r   rh   powerr9   rd   r   r$  r6   r6   r7   
test_powerm  r  zTestRandomDist.test_powerc                 C   r  )Nr   r5  )r  r   g"u+@gN$MB*@g7v8B4@g55@ge&@g~ӣZ1@r  r!  )r   rh   rayleighr9   rd   r   r$  r6   r6   r7   test_rayleighu  r  zTestRandomDist.test_rayleighc                 C   r  r  )r   r   r  r   rW   rX   r6   r6   r7   test_rayleigh_0}  r  zTestRandomDist.test_rayleigh_0c                 C   F   t | j t jdd}tddgddgddgg}t||d	d
 d S )Nr5  r   gMoDL?g6([9grF=?gM'	- gVgVA:Qy?r   r!  )r   rh   standard_cauchyr9   rd   r   r$  r6   r6   r7   test_standard_cauchy  r&  z#TestRandomDist.test_standard_cauchyc                 C   r  )Nr5  r   g܁?gc!z?g&N"@gNI@gF>?g~ME?r   r!  )r   rh   standard_exponentialr9   rd   r   r$  r6   r6   r7   test_standard_exponential  r&  z(TestRandomDist.test_standard_exponentialc                 C   r  )Nra   r5  )r   r   g)@gľ@gd],q@gPk{@g9B#1@gv @r  r!  )r   rh   standard_gammar9   rd   r   r$  r6   r6   r7   test_standard_gamma  r  z"TestRandomDist.test_standard_gammac                 C   r  )Nr   )r   r  )r   r   r  r   rW   rX   r6   r6   r7   test_standard_gamma_0  r  z$TestRandomDist.test_standard_gamma_0c                 C   r  )Nr5  r   r(  r)  r*  r+  r,  r-  r   r!  )r   rh   r   r9   rd   r   r$  r6   r6   r7   test_standard_normal  r&  z#TestRandomDist.test_standard_normalc                 C   s0   t | j t  }td}t||dd d S )Nr(  r   r!  r/  r$  r6   r6   r7   test_randn_singleton  s   
z#TestRandomDist.test_randn_singletonc                 C   r  )Nr   r5  )r  r   g\VH?ghU%gH$M?gLgVqdzǿg㖀?r   r!  )r   rh   
standard_tr9   rd   r   r$  r6   r6   r7   test_standard_t  r  zTestRandomDist.test_standard_tc                 C   r  )Ng{Gz@g(\u$@gףp=
W4@r5  )leftmoderightr   g:}\)@ghرTj(@gǨL30@g6ڜA0@g6sh&@g<,@r  r!  )r   rh   
triangularr9   rd   r   r$  r6   r6   r7   test_triangular  r  zTestRandomDist.test_triangularc                 C   r  )NGz?gGz%@r5  )lowhighr   g>#H@gu@g#@g}d]#@gN@gw)* @r   r!  )r   rh   uniformr9   rd   r   r$  r6   r6   r7   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 )Nr   r   r[   g ؅W4vC)r$  r%  )
r9   finfor   r   r   r&  r   OverflowErrorinf	nextafter)rM   fminfmaxfuncr6   r6   r7   test_uniform_range_bounds  s   z(TestRandomDist.test_uniform_range_boundsc                 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 r1   rV   rX   r6   r6   r7   	__float__     zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)rl   rm   rn   r3  r6   r6   r6   r7   ThrowingFloat      r5  r  c                   @   r0  )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   r1  r1   r2  rX   r6   r6   r7   __int__  r4  zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)rl   rm   rn   r7  r6   r6   r6   r7   ThrowingInteger  r6  r8  r[   )	r9   ndarrayrd   r  r   rV   r   r&  r   )rM   r5  throwing_floatr8  throwing_intr6   r6   r7   !test_scalar_exception_propagation  s   
z0TestRandomDist.test_scalar_exception_propagationc                 C   r  )Nr#  p=
ף?r5  r  kappar   gLZI@g'N"@gkr?gk=m@gډ?g^=\?r   r!  r   rh   vonmisesr9   rd   r   r$  r6   r6   r7   test_vonmises  r  zTestRandomDist.test_vonmisesc                 C   s2   t | j t jdddd}tt|  d S )Nr}   gg5_PG>@B r>  )r   rh   rA  r   r9   isfiniter   rM   rr6   r6   r7   test_vonmises_small  s   z"TestRandomDist.test_vonmises_smallc                 C   s<   t | j t jdddd}tg d}t||dd d S )Nr}   g    cAra   r>  )g A^>?g @R7?g x.r   r!  r@  r$  r6   r6   r7   test_vonmises_large  s   z"TestRandomDist.test_vonmises_largec                 C   s.   t | j t jdtjd}tt| d S )Nr}   )r  r?  )r   rh   rA  r9   rt   r   r  rE  r6   r6   r7   test_vonmises_nan  s   z TestRandomDist.test_vonmises_nanc                 C   r  )Nr#  r=  r5  )r  r  r   gZ@g-g@g8
m?gVP"?g`V?gx^&3?r  r!  )r   rh   waldr9   rd   r   r$  r6   r6   r7   	test_wald  r  zTestRandomDist.test_waldc                 C   r  )Nr#  r5  r  g@6?g]A?g(1ڥR?gU?g2_u?g^}-Q?r   r!  )r   rh   weibullr9   rd   r   r$  r6   r6   r7   test_weibull  r  zTestRandomDist.test_weibullc                 C   s:   t | j tt jdddtd ttt jdd d S )Nr   r  r  r  )rD   )r   rh   r   rL  r9   rq   r   rW   rX   r6   r6   r7   test_weibull_0  s   zTestRandomDist.test_weibull_0c                 C   r  )	Nr#  r5  r  B      r[   ra   r  )r   rh   r   r9   rd   r   r$  r6   r6   r7   	test_zipf  r  zTestRandomDist.test_zipfN)[rl   rm   rn   r   r%  r'  r1  r;  r@  rA  rC  rH  rI  rL  rP  rS  rW  rZ  r\  rc  re  rg  ri  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  parametrizer9   r+  rt   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<  rB  rG  rH  rI  rK  rM  rN  rQ  r6   r6   r6   r7   r    s    .		


3			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
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"dAS )BTestBroadcastc                 C   r  )N[r  rX   r6   r6   r7   r   '  r  zTestBroadcast.setup_methodc                 C   s   t | j d S r1   )r   rh   rX   r6   r6   r7   set_seed*  s   zTestBroadcast.set_seedc                 C   sl   dg}dg}t j}tg d}|   ||d |}t||dd |   |||d }t||dd d S )Nr   r[   gl?g_x?g=*BN?ra   r  r!  )r   r&  r9   rd   rU  r   )rM   r$  r%  r&  r
  r  r6   r6   r7   r'  -  s   zTestBroadcast.test_uniformc                 C      dg}dg}dg}t j}tg d}|   ||d |}t||dd tt||d | |   |||d }t||dd tt|||d  d S )Nr   r[   rT   )g-r@gYl@g-`w?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  	bad_scaler  r
  r  r6   r6   r7   r  =     zTestBroadcast.test_normalc                 C      dg}dg}dg}dg}t j}tg d}|   ||d |}t||dd tt||d | tt||d | |   |||d }t||dd tt|||d  tt|||d  d S )	Nr[   r   rT   r\   )gnQVf?gVKB?gv`k?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   rD   rE   bad_abad_br  r
  r  r6   r6   r7   r  P      zTestBroadcast.test_betac                 C   V   dg}dg}t j}tg d}|   ||d }t||dd tt||d  d S Nr[   rT   )g.UgZ?gi Prq?gEK?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  rX  r  r
  r  r6   r6   r7   r  f     zTestBroadcast.test_exponentialc                 C   r^  r_  )r   r  r9   rd   rU  r   r   rW   )rM   r   	bad_shape	std_gammar
  r  r6   r6   r7   r  s  r`  z!TestBroadcast.test_standard_gammac                 C   rZ  )	Nr[   r   rT   r\   )g.UgZ?gi Prq?gEK?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r   r  ra  rX  r  r
  r  r6   r6   r7   r    r]  zTestBroadcast.test_gammac                 C   rZ  )	Nr[   r   rT   r\   )gbyʜ?go?gT7@ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  	bad_dfnum	bad_dfdenr  r
  r  r6   r6   r7   r    r]  zTestBroadcast.test_fc           
   	   C   s  dg}dg}dg}dg}dg}dg}t j}tg d}|   ||d ||}	t|	|dd	 tt|||tjgd sAJ t	t
||d || t	t
||d || t	t
||d || |   |||d |}	t|	|dd	 t	t
|||d | t	t
|||d | t	t
|||d | |   ||||d }	t|	|dd	 t	t
||||d  t	t
||||d  t	t
||||d  d S )
Nr   ra   rb   r   rT   r\   )gr^G"@g/*@gц!@r  r!  )r   r  r9   rd   rU  r   r   r  rt   r   rW   )
rM   r  r  r  rc  rd  bad_noncnonc_fr
  r  r6   r6   r7   r    s6   $zTestBroadcast.test_noncentral_fc                 C   s:   |    tddg}tjddddd}t||dd d S )Ngaz@gn4M;%?r   r   r   r  r!  )rU  r9   rd   r   r  r   )rM   r
  r  r6   r6   r7   test_noncentral_f_small_df  s   z(TestBroadcast.test_noncentral_f_small_dfc                 C   r^  )Nr[   rT   )g~}N??g$F?g'rS?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  bad_dfr  r
  r  r6   r6   r7   r    r`  zTestBroadcast.test_chisquarec                 C   rZ  )	Nr[   r   rT   r\   )g w "@g2WR@gRY@ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  rh  re  nonc_chir
  r  r6   r6   r7   r    r]  z'TestBroadcast.test_noncentral_chisquarec                 C   h   dg}dg}t j}tg d}|   ||d }t||dd tt||d  ttt j|d  d S )Nr[   rT   )gT@g~Fl@gƚtp?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  rh  tr
  r  r6   r6   r7   r       zTestBroadcast.test_standard_tc                 C   rW  )Nr   r[   rT   )gW!@gOBg}?ra   r  r!  )r   rA  r9   rd   rU  r   r   rW   )rM   r  r?  	bad_kapparA  r
  r  r6   r6   r7   rB    rY  zTestBroadcast.test_vonmisesc                 C   rj  )Nr[   rT   )g&8??geFX?gՋː?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   rD   r[  r  r
  r  r6   r6   r7   r    rl  zTestBroadcast.test_paretoc                 C   rj  r_  )r   rL  r9   rd   rU  r   r   rW   )rM   rD   r[  rL  r
  r  r6   r6   r7   rM  '  rl  zTestBroadcast.test_weibullc                 C   rj  )Nr[   rT   rV  ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   rD   r[  r  r
  r  r6   r6   r7   r  5  rl  zTestBroadcast.test_powerc                 C   rW  )Nr   r[   rT   )g:BKc?g3k?g~q?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  rX  r  r
  r  r6   r6   r7   r  C  rY  zTestBroadcast.test_laplacec                 C   rW  )Nr   r[   rT   )g'Zy?gdSO=?g3L1?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  rX  r  r
  r  r6   r6   r7   r  V  rY  zTestBroadcast.test_gumbelc                 C   s   dg}dg}dg}t j}tg d}|   ||d |}t||dd tt||d | |   |||d }t||dd tt|||d  tt dd	d d S )
Nr   r[   rT   )gy?gJR?g
~&?ra   r  r!  r  r}   )	r   r  r9   rd   rU  r   r   rW   r   )rM   r  r  rX  r  r
  r  r6   r6   r7   r  i  s   zTestBroadcast.test_logisticc                 C   s   dg}dg}dg}t j}tg d}|   ||d |}t||dd tt||d | ttt j|d | |   |||d }t||dd tt|||d  ttt j||d  d S )Nr   r[   rT   )gH"@gܮ @gvv	:@ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  r  	bad_sigmar  r
  r  r6   r6   r7   r  }  s   zTestBroadcast.test_lognormalc                 C   r^  )Nr[   rT   )gݱlo?g/ӂ?gz~R?ra   r  r!  )r   r  r9   rd   rU  r   r   rW   )rM   r  rX  r  r
  r  r6   r6   r7   r    r`  zTestBroadcast.test_rayleighc                 C   s  dg}dg}dg}dg}t j}tg d}|   ||d |}t||dd tt||d | tt||d | ttt j|d | ttt j|d | |   |||d }t||dd tt|||d  tt|||d  tt|d	d tt|dd	 d S )
Nr   r[   r   r\   )g@m e?g`I߿?g|2?ra   r  r!  r}   )r   rJ  r9   rd   rU  r   r   rW   )rM   r  r  bad_meanrX  rJ  r
  r  r6   r6   r7   rK    s(   zTestBroadcast.test_waldc                 C   s  dg}dg}dg}dg}dg}|d \}}t j}tg d}	|   ||d ||}
t|
|	dd tt||d || tt||d || tt||d || |   |||d |}
t|
|	dd tt|||d | tt|||d | tt|||d | |   ||||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 )Nr[   ra   r   rb   )g,P;bD @g%G @g,~S @r  r!  r   r}   g      4@g      9@)r   r!  r9   rd   rU  r   r   rW   )rM   r  r   r  bad_left_onebad_mode_onebad_left_twobad_mode_twor!  r
  r  r6   r6   r7   r"    sF   
zTestBroadcast.test_triangularc           	      C      dg}dg}dg}dg}dg}t j}tg d}|   ||d |}t|| tt||d | tt||d | tt||d | |   |||d }t|| tt|||d  tt|||d  tt|||d  d S )Nr[   r   rT         ?r[   r[   r[   ra   )r   r   r9   rd   rU  r   r   rW   )	rM   r  rr   bad_n	bad_p_one	bad_p_twobinomr
  r  r6   r6   r7   r    &   

zTestBroadcast.test_binomialc           	      C   rt  )Nr[   r   rT   ru  )r[   r   r[   ra   )r   r   r9   rd   rU  r   r   rW   )	rM   r  rr   rw  rx  ry  	neg_binomr
  r  r6   r6   r7   r     r{  z$TestBroadcast.test_negative_binomialc                 C   sv   t  j}dg}dg}|d g}t j}tg d}|   ||d }t|| tt	||d  tt	||d  d S )Nr[   rT   r   )r[   r[   r   ra   )
r   rJ   _poisson_lam_maxr   r9   rd   rU  r   r   rW   )rM   max_lamr  bad_lam_onebad_lam_twor   r
  r  r6   r6   r7   r	    s   


zTestBroadcast.test_poissonc                 C   s   dg}dg}t j}tg d}|   ||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 sJw   Y  d S )Nr   r   )r   r   r[   ra   r  r  )
r   r   r9   rd   rU  r   r   rW   r  rt   )rM   rD   r[  r   r
  r  r6   r6   r7   rQ    s   
"zTestBroadcast.test_zipfc                 C   h   dg}dg}dg}t j}tg d}|   ||d }t|| tt||d  tt||d  d S )Nr   rT   ru  r   ra   )r   r   r9   rd   rU  r   r   rW   )rM   rr   rx  ry  geomr
  r  r6   r6   r7   r  ,     
zTestBroadcast.test_geometricc                 C   s  dg}dg}dg}dg}dg}dg}dg}t j}tg d}	|   ||d ||}
t|
|	 tt||d || tt||d || tt||d || tt||d || |   |||d |}
t|
|	 tt|||d | tt|||d | tt|||d | tt|||d | |   ||||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 d S )Nr[   r   rT   r\   r   rb   rv  ra   r   r      )r   r   r9   rd   rU  r   r   rW   )rM   ngoodnbadnsample	bad_ngoodbad_nbadbad_nsample_onebad_nsample_two	hypergeomr
  r  r6   r6   r7   r  9  sD   


z!TestBroadcast.test_hypergeometricc                 C   r  )Nr   r   rT   rv  ra   )r   r   r9   rd   rU  r   r   rW   )rM   rr   rx  ry  r   r
  r  r6   r6   r7   r  a  r  zTestBroadcast.test_logseriesN)#rl   rm   rn   r   rU  r'  r  r  r  r  r  r  r  rg  r  r  r  rB  r  rM  r  r  r  r  r  r  rK  r"  r  r   r	  rQ  r  r  r  r6   r6   r6   r7   rS  $  sB    #((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 )Nrb   )rP   seedsrX   r6   r6   r7   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|| q>t	 j
jdkr_tjdkr_t|| d S t|| d S )	Nr   )Threadc                    s&   g | ]\}} t ||fd qS ))targetargs)r   rJ   )rt  rN   or  functionr6   r7   rv  |  s    z-TestThread.check_function.<locals>.<listcomp>c                 S      g | ]}|  qS r6   )startrt  r   r6   r6   r7   rv  ~  rw  c                 S   r  r6   )joinr  r6   r6   r7   rv    rw  rb   win32)	threadingr  r9   r^  r   r  zipr   rJ   intpr_   itemsizer   platformr   r   )rM   r  szout1out2rk  rN   r  r6   r  r7   check_functionu  s   
zTestThread.check_functionc                 C      dd }| j |dd d S )Nc                 S   s   | j dd|d< d S )N'  r   .)r  r?   outr6   r6   r7   
gen_random  r|   z*TestThread.test_normal.<locals>.gen_random)r  r  r  rM   r  r6   r6   r7   r       zTestThread.test_normalc                 C   r  )Nc                 S   s   | j tdd|d< d S )Nr   rH   r  .)r  r9   rf  r  r6   r6   r7   r    s   z'TestThread.test_exp.<locals>.gen_randomr  r  r  r  r6   r6   r7   test_exp  r  zTestThread.test_expc                 C   r  )Nc                 S   s   | j ddgd dd|d< d S )Nr   r  r   r  r   .)r   r  r6   r6   r7   r    s   z/TestThread.test_multinomial.<locals>.gen_random)r  r   r  r  r  r6   r6   r7   r    r  zTestThread.test_multinomialN)rl   rm   rn   r   r  r  r  r  r6   r6   r6   r7   r  o  s    r  c                   @   s,   e Z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 )Nr   ra   rb   r|  )r9   rd   argOneargTwoargThreetgtShaperX   r6   r6   r7   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   )r   r  r  r  r  r  rL  r  r  r   r   r   r   r9   rd   r  r   r   r  )rM   funcs	probfuncsr.  r  r6   r6   r7   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 )Nr   r   )r   r&  r  r  r  r  r  rA  r  r  r  r  rJ  r   r   r9   rd   r  r  r   r   r  )rM   r  r  r.  r  r  r6   r6   r7   test_two_arg_funcs  s(   z*TestSingleEltArrayInput.test_two_arg_funcsc                 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   )
r   r  r!  r   r  r  r  r   r   r  )rM   r  r.  r  r6   r6   r7   test_three_arg_funcs  s   z,TestSingleEltArrayInput.test_three_arg_funcsN)rl   rm   rn   r   r  r  r  r6   r6   r6   r7   r    s
    r  c                 C   sD   t d | \}}}tt |}||ddi}t|jtdk d S )NrT  r   r   r  )r   rh   getattrr   r_   r9   )r8   fnamer  r   r  r  r6   r6   r7   test_integer_dtype  s
   


r  c                 C   sd   t d | \}}}tt |}||ddi}tjdkr| }t|t	j
 }t||k d S )NrT  r   rC  r   )r   rh   r  r   r   r   r   r   r  r9   r   r  r   )r8   r  r  r   r  r  r  r6   r6   r7   test_integer_repeat  s   



r  c                   C   s   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 s9w   Y  t t tjddgddgdd W d    d S 1 s[w   Y  d S )Nr[   rU  gffffff?)r   r[   r   r   )r   r   rW   r   r   r6   r6   r6   r7   test_broadcast_size_error  s   "r  c                  C   s   t jtd} | d |  \}}}|d jjdksJ |d }|| |j	dd}t
|d |d  t|d d	 |d d	  t|d d
 |d d
  t
|d |d  t
|d |d  d S )Nr   r[   r   )r   Fr   r>   r?   r@   rA   rB   rC   )r9   r   rJ   r   r   
__reduce__	__class__rl   r   r   r   r   )ri   ctorr  state_arE   state_br6   r6   r7   &test_randomstate_ctor_old_style_pickle  s   

r  c                 C   sR   t jd}|j}t j| tt jjjjt	|sJ t j
 }||u s'J d S r  )r9   r   default_rngr>   r;   r   mtrand_rand_bit_generatorr  r:   )r=   def_bgbg	second_bgr6   r6   r7   test_hot_swap  s   
r  c                 C   s   t d}tj| tjjdd}tjd tjjdd}t| t| |d dks.J |d d |d d ks<J |d d |d d ksJJ d S )	Nr   Fr   r[   r>   r   r?   inc)r   r9   r   r;   r   rh   print)r=   r  r?   r   r6   r6   r7   test_seed_alt_bit_gen  s    r  c                 C   s^   t j }td}t j| tjtdd t j| W d    d S 1 s(w   Y  d S )Nr   zstate must be for a PCG64r   )	r9   r   r   r   r;   r   r   rW   r   )r=   r?   r  r6   r6   r7   test_state_error_alt_bit_gen,  s   
"r  c                 C   s   t jd t jddd}td}|j}t j| t jjdd}|D ]}|| || ks0J q$t jd t jddd}t ||krHJ |j}|d d |d d ksYJ |d d |d d ksgJ d S )	Ń r      @r   Fr   r?   r  )	r9   r   rh   rK   r   r?   r;   r   r   )r=   r   r  r?   state_directfieldpcg_valsr   r6   r6   r7   test_swap_worked5  s    r  c                 C   sL   t jtd t jddd}t jtd}|ddd}t|| d S )Nr  r   r  r   )r9   r   r;   r   rK   rJ   r   )r=   singleton_valsrgnon_singleton_valsr6   r6   r7   %test_swapped_singleton_against_directG  s
   r  )3r   r   r   rE  numpyr9   r   numpy.testingr   r   r   r   r   r   r   r	   r
   numpy.randomr   r   r   rf  r3   r   r  r   r4   fixturer8   r=   rF   rG   ro   rv   r   r   r  rS  r  r  r  r  r  r  r  r  r  r  r  r  r  r6   r6   r6   r7   <module>   s    ,



/8W %      q    O/E
	