U
    9%eK                 	   @   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dk rd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        Z@2fbead005fc63942decb5326d36a1f32fe2c9d32c904ee61e46866b88447c263Z@23ead5dcde35d4cfd4ef2c105e4c3d43304b45dc1b1444b7823b9ee4fa144ebbZ@0d764db64f5c3bad48c8c33551c13b4d07a1e7b470f77629bef6c985cac76fcfZ@7b59bf2f1691626c5815cdcd9a49e1dd68697251d4521575219e4d2a1b8b2c67Z@d754fa5b92943a38ec07630de92362dd2e02c43577fc147417dc5b9db94ccdd3Z@8eb216f7cb2a63cf55605422845caaff002fddc64a7dc8b2d45acd477a49e824Z@70c891d76104013ebd6f6bcf30d403a9074b886ff62e4e6b8eb605bf1a4673b7Z@01f074f97517cd5d21747148ac6ca4074dde7fcb7acbaec0a936606fecacd93f)r   r   r   r   r   r   r   r   Z@8626dd9d052cb608e93d8868de0a7b347258b199493871a1dc56e2a26cacb112Z@8edd53d272e49c4fc8fbbe6c7d08d563d62e482921f3131d0a0e068af30f0db9Z@83496cc4281c77b786c9b7ad88b74d42e01603a55c60577ebab81c3ba8d45657Z@65878a38747c176bc00e930ebafebb69d4e1e16cd3a704e264ea8f5e24f548dbZ@7a984ae6dca26fd25374479e118b22f55db0aedccd5a0f2584ceada33db98605Z@d636d968e6a24ae92ab52fe11c46ac45b0897e98714426764e820a7d77602a61Z@956552176f77e7c9cb20d0118fc9cf690be488d790ed4b4c4747b965e61b0bb4Z@f84ba7feffda41e606e20b28dfc0f1ea9964a74574513d4a4cbc98433a8bfa45module)scopeparamsc                 C   s   | j t| j  t| j  fS N)param	INT_FUNCSINT_FUNC_HASHES)request r&   b/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numpy/random/tests/test_randomstate.pyint_func2   s    r(   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)Zorig_bitgenr&   r&   r'   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br&   r&   r'   assert_mt19937_state_equal@   s
    r5   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sr&   r&   r'   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   r7   i  r   i  r8   i	  )r   r9   ranger   r:   r)   aranger;   r&   r&   r'   
test_arrayO   s    zTestSeed.test_arrayc                 C   s    t ttjd t ttjd d S )N      r   	TypeErrorr   r9   
ValueErrorr<   r&   r&   r'   test_invalid_scalarY   s    zTestSeed.test_invalid_scalarc                 C   s\   t ttjdg t ttjdg t ttjdg t ttjdddg t ttjdddg d S )NrB   rC   r      r   rD   rG   r&   r&   r'   test_invalid_array^   s
    zTestSeed.test_invalid_arrayc                 C   sR   t ttjtjg tjd t ttjdddgg t ttjdddgdddgg d S )NdtyperI   r            r   )r   rF   r   r9   r)   arrayint64rG   r&   r&   r'   test_invalid_array_shapef   s    z!TestSeed.test_invalid_array_shapec              	   C   s0   t td}tt |d W 5 Q R X d S )Nr     )r   r9   r   r   rE   seed)r<   rsr&   r&   r'   test_cannot_seedn   s    
zTestSeed.test_cannot_seedc                 C   s   t ttjt d S r!   )r   rF   r   r9   r   rG   r&   r&   r'   test_invalid_initializations   s    z$TestSeed.test_invalid_initializationN)
__name__
__module____qualname__r>   rA   rH   rK   rS   rW   rX   r&   r&   r&   r'   r6   H   s   
r6   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   intrL   )r   r   rI   r   )r)   zerosr   r   r   r   )r<   r^   pr&   r&   r'   test_n_zerox   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtj d S )NrI   )r   rF   r   r   r)   nanrG   r&   r&   r'   test_p_is_nan   s    zTestBinomial.test_p_is_nanN)rY   rZ   r[   r`   rb   r&   r&   r&   r'   r\   w   s   	r\   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 )Nr   皙?皙?r   r   rG   r&   r&   r'   
test_basic   s    zTestMultinomial.test_basicc                 C   s   t ddddddg d S )Nr   rd   re           rf   rG   r&   r&   r'   test_zero_probability   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 )NrC   rP   )r   r   r:   r)   allr<   xr&   r&   r'   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   rI   rI   r   r   r   r   r   r   r   )
r   r   r   r)   uint32shaperQ   r   rE   floatr<   r_   r&   r&   r'   	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   皙?rd   皙?r   rF   r   r   rG   r&   r&   r'   test_invalid_prob   s    z!TestMultinomial.test_invalid_probc                 C   s   t ttjdddg d S )NrC   re   rd   rz   rG   r&   r&   r'   test_invalid_n   s    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      .@rI   rN   i۠iUr   )pvals)r)   r@   sumr   rU   r   ascontiguousarrayr   )r<   r_   r}   
non_contigcontigr&   r&   r'   test_p_non_contiguous   s    


z%TestMultinomial.test_p_non_contiguousc                 C   s^   t jddddddddddg
t jd}||  }d}tjt|d td| W 5 Q R X d S )NgGz?g&.>rL   z-[\w\s]*pvals array is cast to 64-bit floatingmatchrI   )	r)   rQ   float32r~   pytestraisesrF   r   r   )r<   rm   r}   r   r&   r&   r'   test_multinomial_pvals_float32   s       z.TestMultinomial.test_multinomial_pvals_float32N)rY   rZ   r[   rg   ri   rn   rv   r{   r|   r   r   r&   r&   r&   r'   rc      s   
rc   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)rU   r   r9   random_state	get_stater.   rG   r&   r&   r'   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   r)   rk   r<   oldnewr&   r&   r'   rg      s    zTestSetState.test_basicc                 C   s@   | j jdd}| j | j | j jdd}tt||k d S NrN   size)r   standard_normalr   r.   r   r)   rk   r   r&   r&   r'   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   r)   rk   )r<   r.   r   r   r&   r&   r'    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 )NrJ   r   r   )r.   r   r   r   r   r)   rk   )r<   	old_statex1Zx2Zx3r&   r&   r'   test_backwards_compatibility   s    z)TestSetState.test_backwards_compatibilityc                 C   s   | j dd d S Nr   )r   r   rG   r&   r&   r'   test_negative_binomial   s    z#TestSetState.test_negative_binomialc              	   C   sb   t t }t F}|t}| }tt|dk t	|t
sDt|d dksTtW 5 Q R X d S )NrI   r-   r   )r   r9   r   r	   recordRuntimeWarningr   r   len
isinstancedictAssertionError)r<   rV   supwr.   r&   r&   r'   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)UnknownrI   rL   Flegacyr-   )	r   r   r   rF   r   rE   r)   rQ   object)r<   r.   	new_stater&   r&   r'   !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   r1   rI   )
r   rU   random_sampler   r   r   pickleloadsdumpsr5   )r<   ZpickledZ	rs_unpickZ	unpickledr&   r&   r'   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   r5   )r<   Z
attr_stater.   r&   r&   r'   test_state_setting  s
    

zTestSetState.test_state_settingc                 C   s   t | jdstd S )NzRandomState(MT19937))reprr   
startswithr   rG   r&   r&   r'   	test_repr  s    zTestSetState.test_reprN)rY   rZ   r[   r   rg   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   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 NrI   rL   )r   rE   rfuncrt   rG   r&   r&   r'   test_unsupported_type  s    z!TestRandint.test_unsupported_typec                 C   s   | j D ]}|tjkrdn
t|j}|tjkr2d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   rI   rL   )	ityper)   bool_iinfominmaxr   rF   r   )r<   dtlbndubndr&   r&   r'   test_bounds_checking  s    
z TestRandint.test_bounds_checkingc                 C   s   | j D ]}|tjkrdn
t|j}|tjkr2d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   rI   r7   r   rM   )r   r)   r   r   r   r   r   r   )r<   r   r   r   tgtr&   r&   r'   test_rng_zero_and_extremes&  s    
z&TestRandint.test_rng_zero_and_extremesc                 C   s   | j D ]}|tjkrdn
t|j}|tjkr2dnt|jd }z| j|||d W q tk
r } ztdt	| W 5 d }~X Y qX qd S )Nr   r   rI   rL   zMNo error should have been raised, but one was with the following message:

%s)
r   r)   r   r   r   r   r   	Exceptionr   str)r<   r   r   r   er&   r&   r'   test_full_range4  s    
zTestRandint.test_full_rangec                 C   s   t   | jdd  D ]@}dD ]6}| 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 )NrI   )rO      r   r   i   r   r   )	r   rU   r   r   r   r   r   r)   r   )r<   r   r   valsr&   r&   r'   test_in_bounds_fuzzB  s    zTestRandint.test_in_bounds_fuzzc              
   C   s   dddddddddd	}| j dd  D ]p}td tjd	krR| 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 )NZ@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71Z@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4Z@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92fZ@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9eZ@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	boolint16int32rR   int8uint16rr   uint64uint8rI   rT   littler   r   r7   r   r   )r   r   rU   sys	byteorderr   byteswaphashlibsha256viewr)   r   	hexdigestr   rM   namer   )r<   r   r   valresr&   r&   r'   test_repeatabilityQ  s*    



zTestRandint.test_repeatabilitylr   zCannot test with 32-bit C longreasonc                 C   s   t dddgdddgddd	ggd
ddgdddgdddggdddgdddgdddggdddgdd d!gd"d#d$ggd%d&d'gd(d)d*gd+d,d-ggg}d.D ]J}td/ | jd0gd1gd2ggd3d4d5g|d6}t||d k	r|n|d1  qd S )7Nl   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)rP   rN   rN   i90  rC   r   rI   r8   r   l       r   )r)   rQ   r   rU   r   r   )r<   desiredr   rm   r&   r&   r'   .test_repeatability_32bit_boundary_broadcastingq  s6    
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   )r)   rR   r   r   r   r   r:   r   )r<   r   r   r   r   actualr&   r&   r'   test_int64_uint64_corner_case  s    z)TestRandint.test_int64_uint64_corner_casec                 C   s   | j D ]^}|tjkrdn
t|j}|tjkr2dnt|jd }| j|||d}t|jt| qt	t
tjjfD ]f}|t	krdn
t|j}|t	krdnt|jd }| j|||d}tt|d  tt|| qtd S )Nr   r   rI   rL   rM   )r   r)   r   r   r   r   r   r   rM   r   r]   compatlongr   hasattrtype)r<   r   r   r   sampler&   r&   r'   test_respect_dtype_singleton  s    
z(TestRandint.test_respect_dtype_singletonN)rY   rZ   r[   r   r:   r   r)   r   r   r   r   r   r   rr   rR   r   r   r   r   r   r   r   r   r   markskipifr   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	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   s
   d| _ d S r   rU   rG   r&   r&   r'   r     s    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 )NrN   r   _\*?琛?<p?,o?H?Z?   decimal)r   rU   randr)   rQ   r   r<   r   r   r&   r&   r'   	test_rand  s    
zTestRandomDist.test_randc                 C   s*   t | j t  }d}t||dd d S )Nr   r   r   )r   rU   r   r   r   r&   r&   r'   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 )NrN   r   !<Oq?4u,?3?LI/DͿ@? @HS\@r   r   r   r   r   rU   Zrandnr)   rQ   r   r   r&   r&   r'   
test_randn  s    
zTestRandomDist.test_randnc                 C   sF   t | j t jdddd}tddgddgd	d
gg}t|| d S )Nc   rN   r   r      rN   )   )r   rU   r:   r)   rQ   r   r   r&   r&   r'   test_randint  s    
zTestRandomDist.test_randintc              	   C   s   t | j t 0}|t}t jdddd}tt|dk W 5 Q R X 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 5 Q R X t
||d  d S )Nr
  r  r  r   rI   r  rN   r  r  r  r     r   )r   rU   r	   r   DeprecationWarningrandom_integersr   r   r)   rQ   r   )r<   r   r   r   r   r&   r&   r'   test_random_integers  s     



z#TestRandomDist.test_random_integersc                 C   s   t | j t | j}|jdd}ttjdkrXt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 )Nr  r   ii4Oi˕+iRKiriFbqirL   l   K+W+y l   r&&J] l   ;	 l   nBz l   @XHT l   D+l++ r  )r   rU   r9   r   r)   r   r]   r   rQ   rR   r   )r<   rV   r   r   r&   r&   r'   test_tomaxint  s(    


zTestRandomDist.test_tomaxintc              	   C   s   t  <}|t}ttdjtdj}tt	|dk W 5 Q R X tdj}t
|| t  P}|t}tdj}t|tdj|tdj}tt	|dk W 5 Q R X t
|| d S )Nr   rI   )r	   r   r  r   r  r)   r   r   r   r   r   rM   r   )r<   r   r   r   r   Ztyperr&   r&   r'   test_random_integers_max_int  s     



z+TestRandomDist.test_random_integers_max_intc              	   C   sZ   t  H t dt tttjtdj	 tttjtdj	tdj	 W 5 Q R X d S )Nerrorr   )
warningscatch_warningssimplefilterr  r   r   r  r)   r   r   rG   r&   r&   r'   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 )Nr  r   r   r   r   r   r   r   r   r  )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_random_sample&  s    

z!TestRandomDist.test_random_samplec                 C   s8   t | j t dd}tddddg}t|| d S )NrO   r   rN   r   rU   choicer)   rQ   r   r   r&   r&   r'   test_choice_uniform_replace2  s    z*TestRandomDist.test_choice_uniform_replacec                 C   sD   t | j t jddddddgd}tddddg}t|| d S )NrO   皙?皙?r_   rI   r   r  r   r&   r&   r'   test_choice_nonuniform_replace8  s    z-TestRandomDist.test_choice_nonuniform_replacec                 C   s:   t | j t jdddd}tdddg}t|| d S )NrO   rN   Freplacer   rI   r  r   r&   r&   r'   test_choice_uniform_noreplace>  s    z,TestRandomDist.test_choice_uniform_noreplacec                 C   sD   t | j t jdddddddgd}tddd	g}t|| d S )
NrO   rN   Fr#  333333?r   r'  r_   r   rI   r  r   r&   r&   r'    test_choice_nonuniform_noreplaceD  s    z/TestRandomDist.test_choice_nonuniform_noreplacec                 C   s@   t | j t ddddgd}tddddg}t|| d S )Nr3   r4   cdrO   r  r   r&   r&   r'   test_choice_nonintegerJ  s    z%TestRandomDist.test_choice_nonintegerc              	   C   sD  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|ddddgdddgddggd tt|ddgdd	d	d
gd tt|ddgdddgd tt|ddgdd	d	gd tt|dddgddd tt|dddgddd tt|dddgddd tt|dddgddd tt|dddgdddddgd d S )NrC   rN         @rI   r   rO   g      ?r$  r"  rd   rw   rx   Fr&  rJ   )rC   )rC   rI   r   r*  )r   r   r   rF   )r<   r   r&   r&   r'   test_choice_exceptionsP  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 k tddg}tjdtd	}||d
< t tj|dd|k 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
 |k d}ddddddg}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 )Nr#  ry   r   Tr&  Fr*  rI   rL   r   )r   rN   r"  rd   r   )rN   r   rO   r   i)r   r   r3   r4   )r   r)   Zisscalarr   r   rQ   emptyr   tuplendimitemr   rs   r@   r:   r   rF   )r<   r_   r3   Zarrr=   r&   r&   r'   test_choice_return_shapec  sL     z'TestRandomDist.test_choice_return_shapec                 C   s0   t dddg}d d d g}tttj||d d S )N*   rI   r   r$  )r)   rQ   r   rF   r   r   )r<   r3   r_   r&   r&   r'   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   rP   r/  rI   r   rN   r$  )r)   onesr   rU   r   r   r   )r<   r_   r   r   r&   r&   r'   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   rU   bytesr   r   r&   r&   r'   
test_bytes  s    
zTestRandomDist.test_bytesc                 C   s   dd dd dd dd dd dd dd d	d d
d dd dd fD ]`}t | j |ddddddddddg
}t | |}|ddddddddddg
}t|| qFd S )Nc                 S   s
   t g S r!   )r)   rQ   rm   r&   r&   r'   <lambda>      z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r!   r&   r<  r&   r&   r'   r=    r>  c                 S   s   t | t jS r!   )r)   asarrayastyper   r<  r&   r&   r'   r=    r>  c                 S   s   t | t jS r!   )r)   r?  r@  r   r<  r&   r&   r'   r=    r>  c                 S   s   t | t jS r!   )r)   r?  r@  Z	complex64r<  r&   r&   r'   r=    r>  c                 S   s   t | tS r!   )r)   r?  r@  r   r<  r&   r&   r'   r=    r>  c                 S   s   dd | D S )Nc                 S   s   g | ]}||fqS r&   r&   .0ir&   r&   r'   
<listcomp>  s     ATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r&   r<  r&   r&   r'   r=    r>  c                 S   s   t dd | D S )Nc                 S   s   g | ]}||gqS r&   r&   rA  r&   r&   r'   rD    s     rE  )r)   r?  r<  r&   r&   r'   r=    r>  c                 S   s   t | | gjS r!   )r)   ZvstackTr<  r&   r&   r'   r=    r>  c                 S   s*   t dd | D dtfdtfgt jS )Nc                 S   s   g | ]}||fqS r&   r&   rA  r&   r&   r'   rD    s     rE  r3   r4   )r)   r?  r]   r   Zrecarrayr<  r&   r&   r'   r=    s   c                 S   s(   t dd | D dtdfdt jdfgS )Nc                 S   s   g | ]}||fqS r&   r&   rA  r&   r&   r'   rD    s     rE  r3   rI   r4   )r)   r?  r   r   r<  r&   r&   r'   r=    s   
rI   r   rN   rO   rP   r      r   	   r   )r   rU   shuffler   )r<   convalistr   r   r&   r&   r'   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 ]d}t| t	t
|j|j  t
|j|j   t| t	t
|j|j  t
|j|j   qVdd }d S )	Nr   )rP   rO   rN   rI   rC   2   c                 S   s   t d}tttj| d S )NrN   )r)   rQ   r   rE   r   rJ  rl   r&   r&   r'   test_shuffle_invalid_objects  s    
zHTestRandomDist.test_shuffle_masked.<locals>.test_shuffle_invalid_objects)r)   maZmasked_valuesZreshaper?   r@   copyr   rJ  r   sorteddatamask)r<   r3   r4   Za_origZb_origrC  rO  r&   r&   r'   test_shuffle_masked  s     "
 
 z"TestRandomDist.test_shuffle_maskedc                 C   s  t | j ddddddddd	d
g
}t |}d
dd	dddddddg
}t|| t | j tddddddddd	d
g
j}t |}t|t|j t | j d}ttt j| t | j d}ttt j| d}d	d
ddddddddg
}t | j t |}t|| d S )NrI   r   rN   rO   rP   r   rH  r   rI  r   abcdg333333?r   )	r   rU   Zpermutationr   r)   Z
atleast_2drF  r   
IndexError)r<   rL  r   r   Zarr_2dZ	bad_x_strZbad_x_floatZinteger_valr&   r&   r'   test_permutation  s(    

 

zTestRandomDist.test_permutationc                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )Nr#  ry   r  r   gAKč?ghA?g ҇o>gάXf+q?gS1$?g'8zX ?r   r   )r   rU   betar)   rQ   r   r   r&   r&   r'   	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/?r  r   %   +   r6  0   .   -   )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_binomial  s    

zTestRandomDist.test_binomialc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )NrN  r  r   g+Q]uO@g+Q@gY7`ZqP@ge(fG@gvtR@gEIȋR@   r   )r   rU   	chisquarer)   rQ   r   r   r&   r&   r'   test_chisquare  s    
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@r  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   rU   r)   rQ   	dirichletr   r   rF   )r<   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 )Nrd  re  rI   ro   r   rp   rq   )
r)   rQ   r   r   rh  rr   rs   r   rE   rt   ru   r&   r&   r'   test_dirichlet_size  s    z"TestRandomDist.test_dirichlet_sizec                 C   s    t ddg}tttj| d S )Nrf  rg  )r)   rQ   r   rF   r   rh  )r<   ri  r&   r&   r'   test_dirichlet_bad_alpha*  s    z'TestRandomDist.test_dirichlet_bad_alphac                 C   sf   t dddg}|d d d }t| j tj|dd}t| j tjt |dd}t|| d S )Nrd  g      re  r   r  r   )r)   rQ   r   rU   rh  r   r   )r<   r3   ri  r   r   r&   r&   r'   #test_dirichlet_alpha_non_contiguous/  s    z2TestRandomDist.test_dirichlet_alpha_non_contiguousc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )Ng8EGr?r  r   gNU?gbI0?gVU\@g:3@gU?g"qo?r   r   )r   rU   exponentialr)   rQ   r   r   r&   r&   r'   test_exponential9  s    
zTestRandomDist.test_exponentialc                 C   s&   t tjddd tttjdd d S Nr   scale       )r   r   rn  r   rF   rG   r&   r&   r'   test_exponential_0A  s    z!TestRandomDist.test_exponential_0c                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )N   M   r  r   g7?g`j?g6"+?gܳ2>?gc>+Y?g_}S?r   r   )r   rU   fr)   rQ   r   r   r&   r&   r'   test_fE  s    
zTestRandomDist.test_fc                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )NrP   rN   r  r   gԏGM8@gȌ<@g	":@gv#)@gZQ?@gr[@@   r   )r   rU   gammar)   rQ   r   r   r&   r&   r'   
test_gammaM  s    
zTestRandomDist.test_gammac                 C   s*   t tjdddd tttjddd d S )Nr   )rs   rr  rs  )r   r   rz  r   rF   rG   r&   r&   r'   test_gamma_0U  s    zTestRandomDist.test_gamma_0c                 C   sD   t | j t jddd}tddgddgddgg}t|| d S )	N_c97ݚ?r  r   r   rH     rP   ru  )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_geometricY  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 6}|t t ttjtj t ttjtjgd  W 5 Q R X d S )Nrw   r   rx   )	r   rF   r   r   r	   r   r   r)   ra   r<   r   r&   r&   r'   test_geometric_exceptionsa  s    
z(TestRandomDist.test_geometric_exceptionsc                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )Nr}         @r  locrr  r   gؕ?gs0 ?g#0g(xg-KD?gůp`@r   r   )r   rU   gumbelr)   rQ   r   r   r&   r&   r'   test_gumbelk  s    
zTestRandomDist.test_gumbelc                 C   s&   t tjddd tttjdd d S rp  )r   r   r  r   rF   rG   r&   r&   r'   test_gumbel_0s  s    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d
d
d
d
g}t|| t jdd	ddd}tddddg}t|| t jd	dd
dd}td	d	d	d	g}t|| t jd	dddd}td	d	d	d	g}t|| d S )Ng333333$@g      @ry  r  r   r   rI  rP   r   rN   rO   r   ru  )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_hypergeometricw  s&    




z"TestRandomDist.test_hypergeometricc                 C   sJ   t | j t 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 bO?g¸?gpJm	@g{K*t	@g:^w-gY~o?r   r   )r   rU   laplacer)   rQ   r   r   r&   r&   r'   test_laplace  s    
zTestRandomDist.test_laplacec                 C   s&   t tjddd tttjdd d S rp  )r   r   r  r   rF   rG   r&   r&   r'   test_laplace_0  s    zTestRandomDist.test_laplace_0c                 C   sJ   t | j t 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#K-z?gJ?g92@gر[@g#+^˿g-@r   r   )r   rU   logisticr)   rQ   r   r   r&   r&   r'   test_logistic  s    
zTestRandomDist.test_logisticc                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )Nr}  r  r  )meansigmar   gɁ0@go,+4FB@g)ʭ6@g5?gnxNnP@g)U@ra  r   )r   rU   	lognormalr)   rQ   r   r   r&   r&   r'   test_lognormal  s    
zTestRandomDist.test_lognormalc                 C   s&   t tjddd tttjdd d S )Nr   )r  rI   rs  )r   r   r  r   rF   rG   r&   r&   r'   test_lognormal_0  s    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ƀ@?r  )r_   r   r   r   r~  rN   )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_logseries  s    
zTestRandomDist.test_logseriesc                 C   s   t ddkstd S )Nr   rI   )r   r   r   rG   r&   r&   r'   test_logseries_zero  s    z"TestRandomDist.test_logseries_zerovaluerh   rC         ?g      @c              
   C   s   t jdd tt t| W 5 Q R X tt tt |gd  W 5 Q R X tt& tt |gd d d d  W 5 Q R X W 5 Q R X d S )Nignoreinvalidr   r   )r)   errstater   r   rF   r   r   rQ   )r<   r  r&   r&   r'   test_logseries_exceptions  s     z(TestRandomDist.test_logseries_exceptionsc                 C   s   t | j t jddgd dd}tddddd	d	gdd	d
d	d	dggddddddgd	dddddggddd	dd	dgdddd	ddggg}t|| d S )Nr   UUUUUU?r   r  r   rO   rN   rP   r   r   rI   r   )r   rU   r   r)   rQ   r   r   r&   r&   r'   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s6tW 5 Q R X 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   rI   r   r  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  )Zcheck_validraiser#  rL   other)r   rI   rI   rN   )r   rU   Zmultivariate_normalr)   rQ   r   r   r   r   r   rF   r   r	   r   r   r   r^   eyer1  )	r<   r  Zcovr   r   r   r   r   mur&   r&   r'   test_multivariate_normal  sd    




   z'TestRandomDist.test_multivariate_normalc                 C   sF   t | j t jdddd}tddgddgd	d
gg}t|| d S )Nr   g|Pk?r  )nr_   r   iP  iI  i|  ic  i  i  )r   rU   r   r)   rQ   r   r   r&   r&   r'   r     s    
z%TestRandomDist.test_negative_binomialc              	   C   sJ   t  :}|t tttjdtj tttjdtjgd  W 5 Q R X d S )Nr   r   )	r	   r   r   r   rF   r   r   r)   ra   r  r&   r&   r'   !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 )NrP   r  )dfnoncr   gG7@g! ܴ*@g1}z9?@g+驸0@g26E_r#@gI!1@ry  r   r   rd   g?gTD?g?T?g+qnl?g~|D?g밬?r   g{01#@gprs'@g~;$@g"dI@g*@g}',@)r   rU   noncentral_chisquarer)   rQ   r   r   r&   r&   r'   test_noncentral_chisquare  s(    


z(TestRandomDist.test_noncentral_chisquarec                 C   sL   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 )NrP   r   rI   r  )dfnumdfdenr  r   g^~?g/+c?g".@g@g7?gE?ry  r   )r   rU   noncentral_fr)   rQ   r   r   r&   r&   r'   test_noncentral_f*  s    

z TestRandomDist.test_noncentral_fc                 C   s0   t | j t jddtjd}t|s,td S )NrP   r   )r  r  r  )r   rU   r  r)   ra   isnanr   )r<   r   r&   r&   r'   test_noncentral_f_nan3  s    z$TestRandomDist.test_noncentral_f_nanc                 C   sJ   t | j t 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&&n@gOG_@g~w@gtw]տgm&5@g$>@r   r   )r   rU   normalr)   rQ   r   r   r&   r&   r'   test_normal8  s    
zTestRandomDist.test_normalc                 C   s&   t tjddd tttjdd d S rp  )r   r   r  r   rF   rG   r&   r&   r'   test_normal_0@  s    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}  r  r3   r   gWI@gԨy@gy]0Ag1~\Aga@gY
7A   )Znulp)r   rU   paretor)   rQ   testingZassert_array_almost_equal_nulpr   r&   r&   r'   test_paretoD  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}  r  )lamr   r   rI   )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_poissonS  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 6}|t	 tttjt j
 tttjt j
gd  W 5 Q R X d S )Nr   rC   r   )r)   r   r   r   rF   r   r   r	   r   r   ra   )r<   ZlambigZlamnegr   r&   r&   r'   test_poisson_exceptions[  s    
z&TestRandomDist.test_poisson_exceptionsc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )Nr}  r  r  g;'?gܴw*?g5?gFG?g D]?g$`?r   r   )r   rU   powerr)   rQ   r   r   r&   r&   r'   
test_powerg  s    
zTestRandomDist.test_powerc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )Nr   r  )rr  r   g"u+@gN$MB*@g7v8B4@g55@ge&@g~ӣZ1@ry  r   )r   rU   rayleighr)   rQ   r   r   r&   r&   r'   test_rayleigho  s    
zTestRandomDist.test_rayleighc                 C   s&   t tjddd tttjdd d S rp  )r   r   r  r   rF   rG   r&   r&   r'   test_rayleigh_0w  s    zTestRandomDist.test_rayleigh_0c                 C   sF   t | j t jdd}tddgddgddgg}t||d	d
 d S )Nr  r   gMoDL?g6([9grF=?gM'	- gVgVA:Qy?r   r   )r   rU   Zstandard_cauchyr)   rQ   r   r   r&   r&   r'   test_standard_cauchy{  s    
z#TestRandomDist.test_standard_cauchyc                 C   sF   t | j t jdd}tddgddgddgg}t||d	d
 d S )Nr  r   g܁?gc!z?g&N"@gNI@gF>?g~ME?r   r   )r   rU   Zstandard_exponentialr)   rQ   r   r   r&   r&   r'   test_standard_exponential  s    
z(TestRandomDist.test_standard_exponentialc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )NrN   r  )rs   r   g)@gľ@gd],q@gPk{@g9B#1@gv @ry  r   )r   rU   standard_gammar)   rQ   r   r   r&   r&   r'   test_standard_gamma  s    
z"TestRandomDist.test_standard_gammac                 C   s&   t tjddd tttjdd d S )Nr   )rs   rs  )r   r   r  r   rF   rG   r&   r&   r'   test_standard_gamma_0  s    z$TestRandomDist.test_standard_gamma_0c                 C   sF   t | j t jdd}tddgddgddgg}t||d	d
 d S )Nr  r   r  r  r  r  r  r  r   r   )r   rU   r   r)   rQ   r   r   r&   r&   r'   test_standard_normal  s    
z#TestRandomDist.test_standard_normalc                 C   s0   t | j t  }td}t||dd d S )Nr  r   r   r  r   r&   r&   r'   test_randn_singleton  s    
z#TestRandomDist.test_randn_singletonc                 C   sH   t | j t 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\VH?ghU%gH$M?gLgVqdzǿg㖀?r   r   )r   rU   
standard_tr)   rQ   r   r   r&   r&   r'   test_standard_t  s    
zTestRandomDist.test_standard_tc                 C   sL   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 )Ng{Gz@g(\u$@gףp=
W4@r  )leftmoderightr   g:}\)@ghرTj(@gǨL30@g6ڜA0@g6sh&@g<,@ry  r   )r   rU   
triangularr)   rQ   r   r   r&   r&   r'   test_triangular  s    

zTestRandomDist.test_triangularc                 C   sJ   t | j t 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  )lowhighr   g>#H@gu@g#@g}d]#@gN@gw)* @r   r   )r   rU   uniformr)   rQ   r   r   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 )Nrt   r   rI   g ؅W4vC)r  r  )
r)   Zfinfor   r   r   r  r   OverflowErrorinf	nextafter)r<   ZfminZfmaxfuncr&   r&   r'   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                   @   s   e Zd Zdd ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc                 S   s   t d S r!   rE   rG   r&   r&   r'   	__float__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)rY   rZ   r[   r  r&   r&   r&   r'   ThrowingFloat  s   r  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!   r  rG   r&   r&   r'   __int__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)rY   rZ   r[   r  r&   r&   r&   r'   ThrowingInteger  s   r  rI   )	r)   ZndarrayrQ   r   r   rE   r   r  r   )r<   r  Zthrowing_floatr  Zthrowing_intr&   r&   r'   !test_scalar_exception_propagation  s    
z0TestRandomDist.test_scalar_exception_propagationc                 C   sJ   t | j t jdddd}tddgddgd	d
gg}t||dd d S )Nr  p=
ף?r  r  kappar   gLZI@g'N"@gkr?gk=m@gډ?g^=\?r   r   r   rU   vonmisesr)   rQ   r   r   r&   r&   r'   test_vonmises  s    
zTestRandomDist.test_vonmisesc                 C   s2   t | j t jdddd}tt|  d S )Nrh   gg5_PG>@B r  )r   rU   r  r   r)   isfiniterk   r<   rr&   r&   r'   test_vonmises_small  s    z"TestRandomDist.test_vonmises_smallc                 C   s>   t | j t jdddd}tdddg}t||dd	 d S )
Nrh   g    cArN   r  g A^>?g @R7?g x.r   r   r  r   r&   r&   r'   test_vonmises_large  s    z"TestRandomDist.test_vonmises_largec                 C   s.   t | j t jdtjd}tt| d S )Nrh   )r  r  )r   rU   r  r)   ra   r   r  r  r&   r&   r'   test_vonmises_nan  s    z TestRandomDist.test_vonmises_nanc                 C   sJ   t | j t 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  rr  r   gZ@g-g@g8
m?gVP"?g`V?gx^&3?ry  r   )r   rU   waldr)   rQ   r   r   r&   r&   r'   	test_wald   s    
zTestRandomDist.test_waldc                 C   sH   t | j t jddd}tddgddgdd	gg}t||d
d d S )Nr  r  r  g@6?g]A?g(1ڥR?gU?g2_u?g^}-Q?r   r   )r   rU   weibullr)   rQ   r   r   r&   r&   r'   test_weibull  s    
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   ru  r  rs  )r3   )r   rU   r   r  r)   r^   r   rF   rG   r&   r&   r'   test_weibull_0  s    zTestRandomDist.test_weibull_0c                 C   sD   t | j t jddd}tddgddgddgg}t|| d S )	Nr  r  r  B      rI   rN   ra  )r   rU   r   r)   rQ   r   r   r&   r&   r'   	test_zipf  s    
zTestRandomDist.test_zipfN)[rY   rZ   r[   r   r   r   r	  r  r  r  r  r  r  r!  r%  r(  r+  r.  r0  r5  r7  r9  r;  rM  rU  rX  rZ  r`  rc  rj  rk  rl  rm  ro  rt  rx  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r   Zparametrizer)   r  ra   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  r  r&   r&   r&   r'   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   s
   d| _ d S )N[r   rG   r&   r&   r'   r   !  s    zTestBroadcast.setup_methodc                 C   s   t | j d S r!   )r   rU   rG   r&   r&   r'   set_seed$  s    zTestBroadcast.set_seedc                 C   sn   dg}dg}t j}tdddg}|   ||d |}t||dd |   |||d }t||dd d S )	Nr   rI   l?_x?=*BN?rN   ry  r   )r   r  r)   rQ   r  r   )r<   r  r  r  r   r   r&   r&   r'   r  '  s    zTestBroadcast.test_uniformc                 C   s   dg}dg}dg}t j}tdddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   rI   rC   g-r@gYl@g-`w?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  rr  	bad_scaler  r   r   r&   r&   r'   r  7  s     zTestBroadcast.test_normalc                 C   s   dg}dg}dg}dg}t j}tdddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )NrI   r   rC   rJ   gnQVf?gVKB?gv`k?rN   ry  r   )r   rY  r)   rQ   r  r   r   rF   )r<   r3   r4   bad_aZbad_brY  r   r   r&   r&   r'   rZ  J  s&    zTestBroadcast.test_betac                 C   sX   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  d S 	NrI   rC   g.UgZ?gi Prq?gEK?rN   ry  r   )r   rn  r)   rQ   r  r   r   rF   )r<   rr  r  rn  r   r   r&   r&   r'   ro  `  s    zTestBroadcast.test_exponentialc                 C   sX   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  d S r  )r   r  r)   rQ   r  r   r   rF   )r<   rs   	bad_shapeZ	std_gammar   r   r&   r&   r'   r  m  s    z!TestBroadcast.test_standard_gammac                 C   s   dg}dg}dg}dg}t j}tdddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )NrI   r   rC   rJ   g.UgZ?gi Prq?gEK?rN   ry  r   )r   rz  r)   rQ   r  r   r   rF   )r<   rs   rr  r  r  rz  r   r   r&   r&   r'   r{  z  s&    zTestBroadcast.test_gammac                 C   s   dg}dg}dg}dg}t j}tdddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )NrI   r   rC   rJ   gbyʜ?go?gT7@rN   ry  r   )r   rw  r)   rQ   r  r   r   rF   )r<   r  r  	bad_dfnum	bad_dfdenrw  r   r   r&   r&   r'   rx    s&    zTestBroadcast.test_fc           
   	   C   s  dg}dg}dg}dg}dg}dg}t j}tddd	g}|   ||d ||}	t|	|d
d tt|||tjgd st	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   rN   rO   r   rC   rJ   gr^G"@g/*@gц!@ry  r   )r   r  r)   rQ   r  r   rk   r  ra   r   r   rF   )
r<   r  r  r  r  r  bad_noncZnonc_fr   r   r&   r&   r'   r    s<    $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;%?ry   r   r   ry  r   )r  r)   rQ   r   r  r   )r<   r   r   r&   r&   r'   test_noncentral_f_small_df  s    z(TestBroadcast.test_noncentral_f_small_dfc                 C   sX   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  d S )	NrI   rC   g~}N??g$F?g'rS?rN   ry  r   )r   rb  r)   rQ   r  r   r   rF   )r<   r  bad_dfrb  r   r   r&   r&   r'   rc    s    zTestBroadcast.test_chisquarec                 C   s   dg}dg}dg}dg}t j}tdddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )NrI   r   rC   rJ   g w "@g2WR@gRY@rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  r  r   r  Znonc_chir   r   r&   r&   r'   r    s&    z'TestBroadcast.test_noncentral_chisquarec                 C   sj   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  ttt j|d  d S )	NrI   rC   gT@g~Fl@gƚtp?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  r   tr   r   r&   r&   r'   r    s    zTestBroadcast.test_standard_tc                 C   s   dg}dg}dg}t j}tdddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   rI   rC   gW!@gOBg}?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  r  Z	bad_kappar  r   r   r&   r&   r'   r     s     zTestBroadcast.test_vonmisesc                 C   sj   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  ttt j|d  d S )	NrI   rC   g&8??geFX?gՋː?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r3   r  r  r   r   r&   r&   r'   r    s    zTestBroadcast.test_paretoc                 C   sj   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  ttt j|d  d S r  )r   r  r)   rQ   r  r   r   rF   )r<   r3   r  r  r   r   r&   r&   r'   r  !  s    zTestBroadcast.test_weibullc                 C   sj   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  ttt j|d  d S )	NrI   rC   r  r  r  rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r3   r  r  r   r   r&   r&   r'   r  /  s    zTestBroadcast.test_powerc                 C   s   dg}dg}dg}t j}tdddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   rI   rC   g:BKc?g3k?g~q?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  rr  r  r  r   r   r&   r&   r'   r  =  s     zTestBroadcast.test_laplacec                 C   s   dg}dg}dg}t j}tdddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   rI   rC   g'Zy?gdSO=?g3L1?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  rr  r  r  r   r   r&   r&   r'   r  P  s     zTestBroadcast.test_gumbelc                 C   s   dg}dg}dg}t j}tdddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  tt d
dd
 d S )Nr   rI   rC   gy?gJR?g
~&?rN   ry  r   r  rh   )	r   r  r)   rQ   r  r   r   rF   r   )r<   r  rr  r  r  r   r   r&   r&   r'   r  c  s"    zTestBroadcast.test_logisticc                 C   s   dg}dg}dg}t j}tdddg}|   ||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   rI   rC   gH"@gܮ @gvv	:@rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   r  r  Z	bad_sigmar  r   r   r&   r&   r'   r  w  s$    zTestBroadcast.test_lognormalc                 C   sX   dg}dg}t j}tdddg}|   ||d }t||dd tt||d  d S )	NrI   rC   gݱlo?g/ӂ?gz~R?rN   ry  r   )r   r  r)   rQ   r  r   r   rF   )r<   rr  r  r  r   r   r&   r&   r'   r    s    zTestBroadcast.test_rayleighc                 C   s  dg}dg}dg}dg}t j}tdddg}|   ||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   rI   r   rJ   g@m e?g`I߿?g|2?rN   ry  r   rh   )r   r  r)   rQ   r  r   r   rF   )r<   r  rr  Zbad_meanr  r  r   r   r&   r&   r'   r    s.    zTestBroadcast.test_waldc                 C   s  dg}dg}dg}dg}dg}|d \}}t j}tdddg}	|   ||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 )NrI   rN   r   rO   g,P;bD @g%G @g,~S @ry  r   r   rh   g      4@g      9@)r   r  r)   rQ   r  r   r   rF   )r<   r  r  r  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor  r   r   r&   r&   r'   r    sL    
zTestBroadcast.test_triangularc           	      C   s   dg}dg}dg}dg}dg}t j}tdddg}|   ||d |}t|| tt||d | tt||d | tt||d | |   |||d }t|| tt|||d  tt|||d  tt|||d  d S )NrI   r   rC         ?rN   )r   r   r)   rQ   r  r   r   rF   )	r<   r  r_   bad_n	bad_p_one	bad_p_twoZbinomr   r   r&   r&   r'   r`    s&    

zTestBroadcast.test_binomialc           	      C   s   dg}dg}dg}dg}dg}t j}tdddg}|   ||d |}t|| tt||d | tt||d | tt||d | |   |||d }t|| tt|||d  tt|||d  tt|||d  d S )NrI   r   rC   r  r   rN   )r   r   r)   rQ   r  r   r   rF   )	r<   r  r_   r  r  r  Z	neg_binomr   r   r&   r&   r'   r     s&    

z$TestBroadcast.test_negative_binomialc                 C   sx   t  j}dg}dg}|d g}t j}tdddg}|   ||d }t|| tt	||d  tt	||d  d S )NrI   rC   r   r   rN   )
r   r9   Z_poisson_lam_maxr   r)   rQ   r  r   r   rF   )r<   Zmax_lamr  Zbad_lam_oneZbad_lam_twor   r   r   r&   r&   r'   r  	  s    


zTestBroadcast.test_poissonc              	   C   s   dg}dg}t j}tdddg}|   ||d }t|| tt||d  tjdd( tt|tj	 tt|ddtj	g W 5 Q R X d S )Nr   r   rI   rN   r  r  )
r   r   r)   rQ   r  r   r   rF   r  ra   )r<   r3   r  r   r   r   r&   r&   r'   r    s    
zTestBroadcast.test_zipfc                 C   sj   dg}dg}dg}t j}tdddg}|   ||d }t|| tt||d  tt||d  d S )Nr   rC   r  r   rN   )r   r   r)   rQ   r  r   r   rF   )r<   r_   r  r  Zgeomr   r   r&   r&   r'   r  &  s    
zTestBroadcast.test_geometricc                 C   s  dg}dg}dg}dg}dg}dg}dg}t j}tdddg}	|   ||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 )NrI   r   rC   rJ   r   rO   rN   r   r      )r   r   r)   rQ   r  r   r   rF   )r<   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomr   r   r&   r&   r'   r  3  sD    


z!TestBroadcast.test_hypergeometricc                 C   sj   dg}dg}dg}t j}tdddg}|   ||d }t|| tt||d  tt||d  d S )Nr   r   rC   rI   rN   )r   r   r)   rQ   r  r   r   rF   )r<   r_   r  r  r   r   r   r&   r&   r'   r  [  s    
zTestBroadcast.test_logseriesN)#rY   rZ   r[   r   r  r  r  rZ  ro  r  r{  rx  r  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    s@   #((r  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 )NrO   )r?   seedsrG   r&   r&   r'   r   l  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rtjdkrt|| n
t|| d S )	Nr   )Threadc                    s&   g | ]\}} t ||fd qS ))targetargs)r   r9   )rB  r=   or	  functionr&   r'   rD  v  s   z-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  qS r&   )startrB  rm   r&   r&   r'   rD  x  s     c                 S   s   g | ]}|  qS r&   )joinr  r&   r&   r'   rD  y  s     rO   win32)	threadingr	  r)   r1  r   r  zipr   r9   ZintprM   itemsizer   platformr   r   )r<   r  szZout1Zout2r  r=   r  r&   r  r'   check_functiono  s    
zTestThread.check_functionc                 C   s   dd }| j |dd d S )Nc                 S   s   | j dd|d< d S )N'  r   .)r  r.   outr&   r&   r'   
gen_random  s    z*TestThread.test_normal.<locals>.gen_random)r  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r   r7   rq  .)rn  r)   r8  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   r  r   .)r   r  r&   r&   r'   r    s    z/TestThread.test_multinomial.<locals>.gen_random)r  r   r  r  r  r&   r&   r'   r    s    zTestThread.test_multinomialN)rY   rZ   r[   r   r  r  r!  r  r&   r&   r&   r'   r  i  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   rN   rO   rG  )r)   rQ   argOneargTwoargThreetgtShaperG   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}||krb|tdg}n
|| j}t|j| j qDd S r   )r   rn  r  rb  r  r  r  r  r  r   r   r   r   r)   rQ   r#  r   rs   r&  )r<   funcs	probfuncsr  r  r&   r&   r'   test_one_arg_funcs  s$         
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   s   t jt jt jt jt jt jt jt jt j	t j
t jt jt jt jf}t jt jf}|D ]v}||krftdg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j qLd S )Nr   r   )r   r  r  rY  rz  rw  r  r  r  r  r  r  r  r   r   r)   rQ   r$  r#  r   rs   r&  )r<   r'  r(  r  r$  r  r&   r&   r'   test_two_arg_funcs  s2          z*TestSingleEltArrayInput.test_two_arg_funcsc                 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   )
r   r  r  r   r#  r$  r%  r   rs   r&  )r<   r'  r  r  r&   r&   r'   test_three_arg_funcs  s    z,TestSingleEltArrayInput.test_three_arg_funcsN)rY   rZ   r[   r   r)  r*  r,  r&   r&   r&   r'   r"    s   r"  c                 C   sD   t d | \}}}tt |}||ddi}t|jtdk d S )Nr  r   r   r   )r   rU   getattrr   rM   r)   )r(   fnamer  r   rw  r   r&   r&   r'   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 )Nr  r   r  r   )r   rU   r-  r   r   r   r   r   r   r)   r   r   r   )r(   r.  r  r   rw  r   r   r&   r&   r'   test_integer_repeat  s    



r0  c                	   C   s   t t tjdddgdd W 5 Q R X t t tjddgddd W 5 Q R X t t tjddgddgdd W 5 Q R X d S )NrI   r)  gffffff?)r   rI   r   r   )r   r   rF   r   r   r&   r&   r&   r'   test_broadcast_size_error  s    r1  c                  C   s   t jtd} | d |  \}}}|d d dks<t||d 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   rI   )r   Fr   r-   r.   r/   r0   r1   r2   )r)   r   r9   r   r   
__reduce__r   r   r   r   r   )rV   Zctorr  Zstate_ar4   Zstate_br&   r&   r'   &test_randomstate_ctor_old_style_pickle  s    

r3  c                 C   sR   t jd}|j}t j| tt jjjjt	|s8t
t j }||ksNt
d S r+  )r)   r   Zdefault_rngr-   r+   r   ZmtrandZ_randZ_bit_generatorr   r   r*   )r,   Zdef_bgbgZ	second_bgr&   r&   r'   test_hot_swap  s    
r5  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\t|d d |d d ksxt|d d |d d kstd S )	Nr   Fr   rI   r-   r   r.   inc)r   r)   r   r+   r   rU   printr   )r,   r4  r.   r   r&   r&   r'   test_seed_alt_bit_gen  s    r8  c              	   C   sH   t j }td}t j| tjtdd t j| W 5 Q R X d S )Nr   zstate must be for a PCG64r   )	r)   r   r   r   r+   r   r   rF   r   )r,   r.   r4  r&   r&   r'   test_state_error_alt_bit_gen%  s
    
r9  c                 C   s   t jd t jddd}td}|j}t j| t jjdd}|D ]}|| || ksHtqHt jd t jddd}t 	||krt|j}|d d |d d kst|d d |d d kstd S )	Ń r      @r   Fr   r.   r6  )
r)   r   rU   r:   r   r.   r+   r   r   rk   )r,   r   r4  r.   Zstate_directfieldZpcg_valsr   r&   r&   r'   test_swap_worked.  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   )r)   r   r+   r   r:   r9   r   )r,   Zsingleton_valsZrgZnon_singleton_valsr&   r&   r'   %test_swapped_singleton_against_direct@  s
    r>  )3r   r   r   r  numpyr)   r   Znumpy.testingr   r   r   r   r   r   r   r	   r
   Znumpy.randomr   r   r   r8  r#   r   r]   r   r$   Zfixturer(   r,   r5   r6   r\   rc   r   r   r   r  r   r   r  r"  r/  r0  r1  r3  r5  r8  r9  r=  r>  r&   r&   r&   r'   <module>   s   ,



/5W "      q    O/E
	