B
    .ufl>             	   @   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 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d%d& ZG d'd( d(ZG d)d* d*ZG d+d, d,ZG d-d. d.Z G d/d0 d0Z!G d1d2 d2Z"G d3d4 d4Z#G d5d6 d6Z$G d7d8 d8Z%d9d: Z&d;d< Z'd=d> Z(dS )?    N)assert_assert_raisesassert_equalassert_warnsassert_no_warningsassert_array_equalassert_array_almost_equalsuppress_warnings)MT19937PCG64)random)g      Y@g333333?)g      ?)   r   
   r      g      @)d   g      ?)g      $@)   )binomial	geometrichypergeometric	logseriesmultinomialnegative_binomialpoissonzipfl        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!   e/home/ankuromar296_gmail_com/myenv/lib/python3.7/site-packages/numpy/random/tests/test_randomstate.pyint_func2   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_equal8   s
    r,   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  l    i  )r   RandomStater   randint)selfsr!   r!   r"   test_scalarA   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   i  i  r   i  l    i	  )r   r.   ranger   r/   nparange)r0   r1   r!   r!   r"   
test_arrayG   s    zTestSeed.test_arrayc             C   s    t ttjd t ttjd d S )Ng      )r   	TypeErrorr   r.   
ValueError)r0   r!   r!   r"   test_invalid_scalarQ   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 )Ng      r7   l           r   )r   r8   r   r.   r9   )r0   r!   r!   r"   test_invalid_arrayV   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)dtyper;   r            r   )r   r9   r   r.   r4   arrayint64)r0   r!   r!   r"   test_invalid_array_shape^   s
    z!TestSeed.test_invalid_array_shapec          	   C   s0   t td}tt |d W d Q R X d S )Nr   i  )r   r.   r   r   r8   seed)r0   rsr!   r!   r"   test_cannot_seedf   s    
zTestSeed.test_cannot_seedc             C   s   t ttjt d S )N)r   r9   r   r.   r
   )r0   r!   r!   r"   test_invalid_initializationk   s    z$TestSeed.test_invalid_initializationN)
__name__
__module____qualname__r2   r6   r:   r=   rD   rG   rH   r!   r!   r!   r"   r-   @   s   
r-   c               @   s   e Zd Zdd Zdd ZdS )TestBinomialc             C   sF   t jddd}x2dD ]*}ttd|dk tt||| qW d S )Nr   int)r>   )r   g      ?r;   r   )r4   zerosr   r   r   r   )r0   rN   pr!   r!   r"   test_n_zerop   s    
zTestBinomial.test_n_zeroc             C   s   t ttjdtj d S )Nr;   )r   r9   r   r   r4   nan)r0   r!   r!   r"   test_p_is_nany   s    zTestBinomial.test_p_is_nanN)rI   rJ   rK   rP   rR   r!   r!   r!   r"   rL   o   s   	rL   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   g?g?)r   r   )r0   r!   r!   r"   
test_basic   s    zTestMultinomial.test_basicc             C   s   t ddddddg d S )Nr   g?g?g        )r   r   )r0   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 )Nr7   rA   )r   r   r/   r4   all)r0   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 )Ng      ?r;   )r;   r   r   )r   r   r   )r   r   )
r   r   r   r4   uint32shaperB   r   r8   float)r0   rO   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   g?g?gg?)r   r9   r   r   )r0   r!   r!   r"   test_invalid_prob   s    z!TestMultinomial.test_invalid_probc             C   s   t ttjdddg d S )Nr7   g?g?)r   r9   r   r   )r0   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      .@r;   r?   i۠iUr   )pvals)r4   r5   sumr   rE   r   ascontiguousarrayr   )r0   rO   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 d Q R X d S )NgGz?g&.>)r>   z-[\w\s]*pvals array is cast to 64-bit floating)matchr;   )	r4   rB   float32ra   pytestraisesr9   r   r   )r0   rX   r`   rf   r!   r!   r"   test_multinomial_pvals_float32   s    z.TestMultinomial.test_multinomial_pvals_float32N)rI   rJ   rK   rT   rU   rY   r]   r^   r_   re   rj   r!   r!   r!   r"   rS   ~   s   
rS   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)rE   r   r.   random_state	get_stater%   )r0   r!   r!   r"   setup   s    zTestSetState.setupc             C   s<   | j d}| j | j | j d}tt||k d S )N   )rl   tomaxint	set_stater%   r   r4   rW   )r0   oldnewr!   r!   r"   rT      s    zTestSetState.test_basicc             C   s@   | j jdd}| j | j | j jdd}tt||k d S )Nr?   )size)rl   standard_normalrq   r%   r   r4   rW   )r0   rr   rs   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 )Nr?   )rt   )rl   ru   rm   rq   r   r4   rW   )r0   r%   rr   rs   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 )Nr<   ro   )rt   )r%   rl   ru   rq   r   r4   rW   )r0   	old_statex1Zx2Zx3r!   r!   r"   test_backwards_compatibility   s    z)TestSetState.test_backwards_compatibilityc             C   s   | j dd d S )Ng      ?)rl   r   )r0   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 d Q R X d S )Nr;   r$   r   )r   r.   r   r	   recordRuntimeWarningrm   r   len
isinstancedictAssertionError)r0   rF   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)Unknownr;   )r>   F)legacyr$   )	rl   rm   r   r9   rq   r8   r4   rB   object)r0   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   F)r   r(   r;   )
rl   rE   random_sampleru   rm   r   pickleloadsdumpsr,   )r0   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 )NF)r   )rl   __getstate__ru   __setstate__rm   r,   )r0   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))reprrl   
startswithr   )r0   r!   r!   r"   	test_repr  s    zTestSetState.test_reprN)rI   rJ   rK   rn   rT   rv   rw   rz   r{   r   r   r   r   r   r!   r!   r!   r"   rk      s   	

rk   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   r8   rfuncr\   )r0   r!   r!   r"   test_unsupported_type  s    z!TestRandint.test_unsupported_typec             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4d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W d S )Nr   r   r;   )r>   )	ityper4   bool_iinfominmaxr   r9   r   )r0   dtlbndubndr!   r!   r"   test_bounds_checking  s    z TestRandint.test_bounds_checkingc             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4dnt|jd }|d }t| j||d d|d| |}t| j||d d|d| || d }t| j||d d|d| qW d S )Nr   r   r;   i  )rt   r>   )r   r4   r   r   r   r   r   r   )r0   r   r   r   tgtr!   r!   r"   test_rng_zero_and_extremes  s    z&TestRandint.test_rng_zero_and_extremesc             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4dnt|jd }y| j|||d W q tk
r } ztdt	| W d d }~X Y qX qW d S )Nr   r   r;   )r>   zMNo error should have been raised, but one was with the following message:

%s)
r   r4   r   r   r   r   r   	Exceptionr   str)r0   r   r   r   er!   r!   r"   test_full_range,  s    zTestRandint.test_full_rangec             C   s   t   xV| jdd  D ]D}x>dD ]6}| jd|d|d}t| |k  t| dk q"W qW | jdddtjd}t| dk  t| dk d S )Nr;   )r@      ro   r   i   )rt   r>   r   )	r   rE   r   r   r   r   r   r4   r   )r0   r   r   valsr!   r!   r"   test_in_bounds_fuzz:  s    
zTestRandint.test_in_bounds_fuzzc          
   C   s   dddddddddd	}x| j dd  D ]p}td tjd	krT| jd
dd|d}n| jd
dd|d }t|	t
j }t|t
|j |k q(W 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int32rC   int8uint16rZ   uint64uint8r;   i  littler   r   i  )rt   r>   r   )r   r   rE   sys	byteorderr   byteswaphashlibsha256viewr4   r   	hexdigestr   r>   namer   )r0   r   r   valresr!   r!   r"   test_repeatabilityI  s(    


zTestRandint.test_repeatabilityll        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}xRd.D ]J}td/ | jd0gd1gd2ggd3d4d5g|d6}t||d k	r|n|d1  qW d 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)rA   r?   r?   i90  r7   r   r;   l    l        l       )rt   )r4   rB   r   rE   r   r   )r0   desiredrt   rX   r!   r!   r"   .test_repeatability_32bit_boundary_broadcastingi  s(    





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 )Nr;   )r>   )r4   rC   r   r   r   r   r/   r   )r0   r   r   r   r   actualr!   r!   r"   test_int64_uint64_corner_case  s    z)TestRandint.test_int64_uint64_corner_casec             C   s   xh| j D ]^}|tjkrdn
t|j}|tjkr4dnt|jd }| j|||d}t|jt| qW xxt	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|| qzW d S )Nr   r   r;   )r>   r>   )r   r4   r   r   r   r   r   r   r>   r   rM   compatlongr   hasattrtype)r0   r   r   r   sampler!   r!   r"   test_respect_dtype_singleton  s    z(TestRandint.test_respect_dtype_singletonN)rI   rJ   rK   r   r/   r   r4   r   r   r   r   r   r   rZ   rC   r   r   r   r   r   r   r   r   rh   markZ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^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@d}d~ ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdS )TestRandomDistc             C   s
   d| _ d S )NiI)rE   )r0   r!   r!   r"   rn     s    zTestRandomDist.setupc             C   sF   t | j t dd}tddgddgddgg}t||d	d
 d S )Nr?   r   g_\*?g?g<p?g,o?gH?gZ?   )decimal)r   rE   randr4   rB   r   )r0   r   r   r!   r!   r"   	test_rand  s    
zTestRandomDist.test_randc             C   s*   t | j t  }d}t||dd d S )Ng_\*?r   )r   )r   rE   r   r   )r0   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 )Nr?   r   g!<Oq?g4u,?g3?gLI/DͿg@? @gHS\@r   )r   )r   r   )r   rE   randnr4   rB   r   )r0   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 )Nic   )r?   r   )rt      r?   i)   ii)r   rE   r/   r4   rB   r   )r0   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 d 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 d Q R X t
||d  d S )Nir   )r?   r   )rt   r;   r   r?   ir   ii   r   )r   rE   r	   r|   DeprecationWarningrandom_integersr   r~   r4   rB   r   )r0   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 )N)r?   r   )rt   ii4Oi˕+iRKiriFbqi)r>   l   K+W+y l   r&&J] l   ;	 l   nBz l   @XHT l   D+l++ )r   r   )r   rE   r.   rp   r4   r   rM   r   rB   rC   r   )r0   rF   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 d 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 d Q R X t
|| d S )Nr   r;   )r	   r|   r   r   r   r4   r   r   r   r~   r   r>   r   )r0   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 d Q R X d S )Nerrorr   )
warningscatch_warningssimplefilterr   r   r   r   r4   r   r   )r0   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 )N)r?   r   g_\*?g?g<p?g,o?gH?gZ?r   )r   )r   r   )r   rE   r   r4   rB   r   )r0   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 )Nr@   r   r?   )r   rE   choicer4   rB   r   )r0   r   r   r!   r!   r"   test_choice_uniform_replace*  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 )Nr@   g?g?)rO   r;   r   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_choice_nonuniform_replace0  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 )Nr@   r?   F)replacer   r;   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_choice_uniform_noreplace6  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 )
Nr@   r?   Fg?g333333?g      ?)r   rO   r   r;   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"    test_choice_nonuniform_noreplace<  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 )Nr*   r+   cdr@   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_choice_nonintegerB  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 )Nr7   r?   g      @r;   r   r@   g      ?)rO   g?g?g?gF)r   r<   )r7   )r7   r;   r   )r   rO   )r   r   r   r9   )r0   r   r!   r!   r"   test_choice_exceptionsH  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 )Ng?g?r   T)r   F)r   rO   r;   )r>   r   )r   r?   g?g?r   )r?   r   r@   )rt   i)r   r   r*   r+   )r   r4   Zisscalarr   r   rB   emptyr   tuplendimitemr   r[   r5   r/   r   r9   )r0   rO   r*   Zarrr1   r!   r!   r"   test_choice_return_shape[  sJ     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*   r;   r   )rO   )r4   rB   r   r9   r   r   )r0   r*   rO   r!   r!   r"   test_choice_nan_probabilities  s    
z,TestRandomDist.test_choice_nan_probabilitiesc          	   C   s|   t dd }d|dd d< t| j tjdd|d d d d}t| j tjddt |d d d d}t|| d S )Nr   rA   g      @r;   r   r?   )rO   )r4   onesr   rE   r   rb   r   )r0   rO   rc   rd   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   rE   bytesr   )r0   r   r   r!   r!   r"   
test_bytes  s    
zTestRandomDist.test_bytesc             C   s   xdd dd dd dd dd dd dd d	d d
d dd dd g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|| qHW d S )Nc             S   s
   t g S )N)r4   rB   )rX   r!   r!   r"   <lambda>      z-TestRandomDist.test_shuffle.<locals>.<lambda>c             S   s   | S )Nr!   )rX   r!   r!   r"   r     r   c             S   s   t | t jS )N)r4   asarrayastyper   )rX   r!   r!   r"   r     r   c             S   s   t | t jS )N)r4   r   r   rg   )rX   r!   r!   r"   r     r   c             S   s   t | t jS )N)r4   r   r   Z	complex64)rX   r!   r!   r"   r     r   c             S   s   t | tS )N)r4   r   r   r   )rX   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    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r!   )rX   r!   r!   r"   r     r   c             S   s   t dd | D S )Nc             S   s   g | ]}||gqS r!   r!   )r   r   r!   r!   r"   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>)r4   r   )rX   r!   r!   r"   r     r   c             S   s   t | | gjS )N)r4   ZvstackT)rX   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!   )r   r   r!   r!   r"   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r*   r+   )r4   r   rM   r   Zrecarray)rX   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!   )r   r   r!   r!   r"   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r*   )r;   r+   )r4   r   r   r   )rX   r!   r!   r"   r     s   r;   r   r?   r@   rA   r      r   	   r   )r   rE   shuffler   )r0   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}| }| }xptdD ]d}t| t	t
|j|j  t
|j|j   t| t	t
|j|j  t
|j|j   qXW dd }d S )	Nr   )rA   r@   r?   r;   r7   2   c             S   s   t d}tttj| d S )Nr?   )r4   rB   r   r8   r   r  )r0   rX   r!   r!   r"   test_shuffle_invalid_objects  s    
zHTestRandomDist.test_shuffle_masked.<locals>.test_shuffle_invalid_objects)r4   maZmasked_valuesZreshaper3   r5   copyr   r  r   sorteddatamask)r0   r*   r+   Za_origZb_origr   r  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 )Nr;   r   r?   r@   rA   r   r   r   r   r   abcdg333333?r   )	r   rE   Zpermutationr   r4   Z
atleast_2dr   r   
IndexError)r0   r  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 )Ng?g?)r?   r   )rt   gAKč?ghA?g ҇o>gάXf+q?gS1$?g'8zX ?r   )r   )r   rE   betar4   rB   r   )r0   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   )rt   %   +   r   0   .   -   )r   rE   r   r4   rB   r   )r0   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 )Nr  )r?   r   )rt   g+Q]uO@g+Q@gY7`ZqP@ge(fG@gvtR@gEIȋR@   )r   )r   rE   	chisquarer4   rB   r   )r0   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 )NgI<I@gEZC@)r?   r   )rt   gi{s?gn,	A?g]^?gpDB?gȧ#y?gr?g1U?gѨUC?g^,%?gB?gډOoX;?gM`!O?r   )r   gHzG?gؗҜ)r   r   )r   rE   r4   rB   	dirichletr   r   r9   )r0   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 )NgI<I@gEZC@r;   )r;   r   r   )r   r   r   )r   r   )
r4   rB   r   r   r  rZ   r[   r   r8   r\   )r0   rO   r!   r!   r"   test_dirichlet_size  s    z"TestRandomDist.test_dirichlet_sizec             C   s    t ddg}tttj| d S )NgHzG?gؗҜ)r4   rB   r   r9   r   r  )r0   r  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 )NgI<I@g      gEZC@r   )r?   r   )rt   )r4   rB   r   rE   r  rb   r   )r0   r*   r  rc   rd   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   )rt   gNU?gbI0?gVU\@g:3@gU?g"qo?r   )r   )r   rE   exponentialr4   rB   r   )r0   r   r   r!   r!   r"   test_exponential1  s    
zTestRandomDist.test_exponentialc             C   s&   t tjddd tttjdd d S )Nr   )scaleg       )r   r   r!  r   r9   )r0   r!   r!   r"   test_exponential_09  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   )rt   g7?g`j?g6"+?gܳ2>?gc>+Y?g_}S?r   )r   )r   rE   fr4   rB   r   )r0   r   r   r!   r!   r"   test_f=  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 )NrA   r?   )r?   r   )rt   gԏGM8@gȌ<@g	":@gv#)@gZQ?@gr[@@   )r   )r   rE   gammar4   rB   r   )r0   r   r   r!   r!   r"   
test_gammaE  s    
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#  g       )r   r   r*  r   r9   )r0   r!   r!   r"   test_gamma_0M  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 )	Ng_c97ݚ?)r?   r   )rt   r   r      rA   r%  )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_geometricQ  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 d Q R X d S )Ng?r   g)	r   r9   r   r   r	   r|   r}   r4   rQ   )r0   r   r!   r!   r"   test_geometric_exceptionsY  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 )Ng_c97ݚ?g       @)r?   r   )locr#  rt   gؕ?gs0 ?g#0g(xg-KD?gůp`@r   )r   )r   rE   gumbelr4   rB   r   )r0   r   r   r!   r!   r"   test_gumbelc  s    
zTestRandomDist.test_gumbelc             C   s&   t tjddd tttjdd d S )Nr   )r#  g       )r   r   r1  r   r9   )r0   r!   r!   r"   test_gumbel_0k  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      @r)  )r?   r   )rt   r   r   rA   r   r?   r@   r   r%  )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_hypergeometrico  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 )Ng_c97ݚ?g       @)r?   r   )r0  r#  rt   g bO?g¸?gpJm	@g{K*t	@g:^w-gY~o?r   )r   )r   rE   laplacer4   rB   r   )r0   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 )Nr   )r#  g       )r   r   r5  r   r9   )r0   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 )Ng_c97ݚ?g       @)r?   r   )r0  r#  rt   g#K-z?gJ?g92@gر[@g#+^˿g-@r   )r   )r   rE   logisticr4   rB   r   )r0   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 )Ng_c97ݚ?g       @)r?   r   )meansigmart   gɁ0@go,+4FB@g)ʭ6@g5?gnxNnP@g)U@r  )r   )r   rE   	lognormalr4   rB   r   )r0   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;  r;   g       )r   r   r<  r   r9   )r0   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   )rO   rt   r   r   r-  r?   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_logseries  s    
zTestRandomDist.test_logseriesc          	   C   sF   t  6}|t tttjtj tttjtjgd  W d Q R X d S )Nr   )	r	   r|   r}   r   r9   r   r   r4   rQ   )r0   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   gUUUUUU?r   )r?   r   )rt   r@   r?   rA   r   r   r;   r   )r   rE   r   r4   rB   r   )r0   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 d 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)g_c97ݚ?r   r;   r   )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   ignore)Zcheck_validraiseg?)r>   other)r   r;   r;   r?   )r   rE   Zmultivariate_normalr4   rB   r   r   r}   r   r   r9   rg   r	   r|   r~   r   rN   eyer   )	r0   r:  Zcovrt   r   r   r   r   mur!   r!   r"   test_multivariate_normal  sJ    




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?   r   )nrO   rt   iP  iI  i|  ic  i  i  )r   rE   r   r4   rB   r   )r0   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 d Q R X d S )Nr   r   )	r	   r|   r}   r   r9   r   r   r4   rQ   )r0   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 )NrA   )r?   r   )dfnoncrt   gG7@g! ܴ*@g1}z9?@g+驸0@g26E_r#@gI!1@r)  )r   g      ?g?g?gTD?g?T?g+qnl?g~|D?g밬?r   g{01#@gprs'@g~;$@g"dI@g*@g}',@)r   rE   noncentral_chisquarer4   rB   r   )r0   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 )NrA   r   r;   )r?   r   )dfnumdfdenrK  rt   g^~?g/+c?g".@g@g7?gE?r)  )r   )r   rE   noncentral_fr4   rB   r   )r0   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 )NrA   r   )rN  rO  rK  )r   rE   rP  r4   rQ   isnanr   )r0   r   r!   r!   r"   test_noncentral_f_nan"  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 )Ng_c97ݚ?g       @)r?   r   )r0  r#  rt   g&&n@gOG_@g~w@gtw]տgm&5@g$>@r   )r   )r   rE   normalr4   rB   r   )r0   r   r   r!   r!   r"   test_normal'  s    
zTestRandomDist.test_normalc             C   s&   t tjddd tttjdd d S )Nr   )r#  g       )r   r   rT  r   r9   )r0   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 )Ng_c97ݚ?)r?   r   )r*   rt   gWI@gԨy@gy]0Ag1~\Aga@gY
7A   )Znulp)r   rE   paretor4   rB   testingZassert_array_almost_equal_nulp)r0   r   r   r!   r!   r"   test_pareto3  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 )Ng_c97ݚ?)r?   r   )lamrt   r   r;   )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   test_poissonB  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 d Q R X d S )Nr   r7   r   )r4   r   r   r   r9   r   r   r	   r|   r}   rQ   )r0   ZlambigZlamnegr   r!   r!   r"   test_poisson_exceptionsJ  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 )Ng_c97ݚ?)r?   r   )r*   rt   g;'?gܴw*?g5?gFG?g D]?g$`?r   )r   )r   rE   powerr4   rB   r   )r0   r   r   r!   r!   r"   
test_powerV  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?   r   )r#  rt   g"u+@gN$MB*@g7v8B4@g55@ge&@g~ӣZ1@r)  )r   )r   rE   rayleighr4   rB   r   )r0   r   r   r!   r!   r"   test_rayleigh^  s    
zTestRandomDist.test_rayleighc             C   s&   t tjddd tttjdd d S )Nr   )r#  g       )r   r   r`  r   r9   )r0   r!   r!   r"   test_rayleigh_0f  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 )N)r?   r   )rt   gMoDL?g6([9grF=?gM'	- gVgVA:Qy?r   )r   )r   rE   Zstandard_cauchyr4   rB   r   )r0   r   r   r!   r!   r"   test_standard_cauchyj  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 )N)r?   r   )rt   g܁?gc!z?g&N"@gNI@gF>?g~ME?r   )r   )r   rE   Zstandard_exponentialr4   rB   r   )r0   r   r   r!   r!   r"   test_standard_exponentialr  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 )Nr?   )r?   r   )r[   rt   g)@gľ@gd],q@gPk{@g9B#1@gv @r)  )r   )r   rE   standard_gammar4   rB   r   )r0   r   r   r!   r!   r"   test_standard_gammaz  s    
z"TestRandomDist.test_standard_gammac             C   s&   t tjddd tttjdd d S )Nr   )r[   g       )r   r   re  r   r9   )r0   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 )N)r?   r   )rt   g!<Oq?g4u,?g3?gLI/DͿg@? @gHS\@r   )r   )r   rE   ru   r4   rB   r   )r0   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 )Ng!<Oq?r   )r   )r   rE   r   r4   rB   r   )r0   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   )rJ  rt   g\VH?ghU%gH$M?gLgVqdzǿg㖀?r   )r   )r   rE   
standard_tr4   rB   r   )r0   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?   r   )leftmoderightrt   g:}\)@ghرTj(@gǨL30@g6ڜA0@g6sh&@g<,@r)  )r   )r   rE   
triangularr4   rB   r   )r0   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 )NgGz?gGz%@)r?   r   )lowhighrt   g>#H@gu@g#@g}d]#@gN@gw)* @r   )r   )r   rE   uniformr4   rB   r   )r0   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 )Nr\   r   r;   g ؅W4vC)rq  rr  )
r4   Zfinfor   r   r   rs  r   OverflowErrorinfZ	nextafter)r0   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 )N)r8   )r0   r!   r!   r"   	__float__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)rI   rJ   rK   ry  r!   r!   r!   r"   ThrowingFloat  s   rz  g      ?c               @   s   e Zd Zdd ZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc             S   s   t d S )N)r8   )r0   r!   r!   r"   __int__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)rI   rJ   rK   r{  r!   r!   r!   r"   ThrowingInteger  s   r|  r;   )	r4   ZndarrayrB   r   r   r8   r   rs  r   )r0   rz  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 )NgGz?gp=
ף?)r?   r   )rF  kappart   gLZI@g'N"@gkr?gk=m@gډ?g^=\?r   )r   )r   rE   vonmisesr4   rB   r   )r0   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 )Ng        gg5_PG>i@B )rF  r~  rt   )r   rE   r  r   r4   isfiniterW   )r0   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 )
Ng        g    cAr?   )rF  r~  rt   g A^>?g @R7?g x.r   )r   )r   rE   r  r4   rB   r   )r0   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 )Ng        )rF  r~  )r   rE   r  r4   rQ   r   rR  )r0   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 )NgGz?gp=
ף?)r?   r   )r:  r#  rt   gZ@g-g@g8
m?gVP"?g`V?gx^&3?r)  )r   )r   rE   waldr4   rB   r   )r0   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 )NgGz?)r?   r   )r*   rt   g@6?g]A?g(1ڥR?gU?g2_u?g^}-Q?r   )r   )r   rE   weibullr4   rB   r   )r0   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   r%  )r*   rt   g       )r*   )r   rE   r   r  r4   rN   r   r9   )r0   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 )	NgGz?)r?   r   )r*   rt   B      r;   r?   r  )r   rE   r   r4   rB   r   )r0   r   r   r!   r!   r"   	test_zipf  s    
zTestRandomDist.test_zipfN)TrI   rJ   rK   rn   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/  r2  r3  r4  r6  r7  r9  r=  r>  r?  r@  rA  rG  r{   rI  rM  rQ  rS  rU  rV  rZ  r\  r]  r_  ra  rb  rc  rd  rf  rg  rh  ri  rk  rp  rt  rx  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 )Ni[)rE   )r0   r!   r!   r"   rn     s    zTestBroadcast.setupc             C   s   t | j d S )N)r   rE   )r0   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   r;   gl?g_x?g=*BN?r?   r)  )r   )r   rs  r4   rB   r  r   )r0   rq  rr  rs  r   r   r!   r!   r"   rt    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   r;   r7   g-r@gYl@g-`w?r?   r)  )r   )r   rT  r4   rB   r  r   r   r9   )r0   r0  r#  	bad_scalerT  r   r   r!   r!   r"   rU  &  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 )Nr;   r   r7   r<   gnQVf?gVKB?gv`k?r?   r)  )r   )r   r  r4   rB   r  r   r   r9   )r0   r*   r+   bad_aZbad_br  r   r   r!   r!   r"   r  9  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 )	Nr;   r7   g.UgZ?gi Prq?gEK?r?   r)  )r   )r   r!  r4   rB   r  r   r   r9   )r0   r#  r  r!  r   r   r!   r!   r"   r"  O  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 )	Nr;   r7   g.UgZ?gi Prq?gEK?r?   r)  )r   )r   re  r4   rB   r  r   r   r9   )r0   r[   	bad_shapeZ	std_gammar   r   r!   r!   r"   rf  \  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 )Nr;   r   r7   r<   g.UgZ?gi Prq?gEK?r?   r)  )r   )r   r*  r4   rB   r  r   r   r9   )r0   r[   r#  r  r  r*  r   r   r!   r!   r"   r+  i  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 )Nr;   r   r7   r<   gbyʜ?go?gT7@r?   r)  )r   )r   r'  r4   rB   r  r   r   r9   )r0   rN  rO  	bad_dfnum	bad_dfdenr'  r   r   r!   r!   r"   r(    s$    zTestBroadcast.test_fc       
   	   C   s  dg}dg}dg}dg}dg}dg}t 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   r?   r@   r   r7   r<   gr^G"@g/*@gц!@r)  )r   )r   rP  r4   rB   r  r   rW   rR  rQ   r   r   r9   )
r0   rN  rO  rK  r  r  bad_noncZnonc_fr   r   r!   r!   r"   rQ    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;%?g?r   )rt   r)  )r   )r  r4   rB   r   rP  r   )r0   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 )	Nr;   r7   g~}N??g$F?g'rS?r?   r)  )r   )r   r  r4   rB   r  r   r   r9   )r0   rJ  bad_dfr  r   r   r!   r!   r"   r    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 )Nr;   r   r7   r<   g w "@g2WR@gRY@r?   r)  )r   )r   rL  r4   rB   r  r   r   r9   )r0   rJ  rK  r  r  Znonc_chir   r   r!   r!   r"   rM    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 )	Nr;   r7   gT@g~Fl@gƚtp?r?   r)  )r   )r   rj  r4   rB   r  r   r   r9   )r0   rJ  r  tr   r   r!   r!   r"   rk    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   r;   r7   gW!@gOBg}?r?   r)  )r   )r   r  r4   rB   r  r   r   r9   )r0   rF  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 )	Nr;   r7   g&8??geFX?gՋː?r?   r)  )r   )r   rX  r4   rB   r  r   r   r9   )r0   r*   r  rX  r   r   r!   r!   r"   rZ    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 )	Nr;   r7   g.UgZ?gi Prq?gEK?r?   r)  )r   )r   r  r4   rB   r  r   r   r9   )r0   r*   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 )	Nr;   r7   gl?g_x?g=*BN?r?   r)  )r   )r   r^  r4   rB   r  r   r   r9   )r0   r*   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   r;   r7   g:BKc?g3k?g~q?r?   r)  )r   )r   r5  r4   rB   r  r   r   r9   )r0   r0  r#  r  r5  r   r   r!   r!   r"   r6  ,  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   r;   r7   g'Zy?gdSO=?g3L1?r?   r)  )r   )r   r1  r4   rB   r  r   r   r9   )r0   r0  r#  r  r1  r   r   r!   r!   r"   r2  ?  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   r;   r7   gy?gJR?g
~&?r?   r)  )r   g      ?g        )	r   r8  r4   rB   r  r   r   r9   r   )r0   r0  r#  r  r8  r   r   r!   r!   r"   r9  R  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   r;   r7   gH"@gܮ @gvv	:@r?   r)  )r   )r   r<  r4   rB   r  r   r   r9   )r0   r:  r;  Z	bad_sigmar<  r   r   r!   r!   r"   r=  f  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 )	Nr;   r7   gݱlo?g/ӂ?gz~R?r?   r)  )r   )r   r`  r4   rB   r  r   r   r9   )r0   r#  r  r`  r   r   r!   r!   r"   ra  {  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 )Ng      ?r;   r   r<   g@m e?g`I߿?g|2?r?   r)  )r   g        )r   r  r4   rB   r  r   r   r9   )r0   r:  r#  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 )Nr;   r?   r   r@   g,P;bD @g%G @g,~S @r)  )r   g      $@g        g      4@g      9@)r   ro  r4   rB   r  r   r   r9   )r0   rl  rn  rm  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_tworo  r   r   r!   r!   r"   rp    sD    

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 )Nr;   g      ?r7   g      ?r?   )r   r   r4   rB   r  r   r   r9   )	r0   rH  rO   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 )Nr;   g      ?r7   g      ?r   r?   )r   r   r4   rB   r  r   r   r9   )	r0   rH  rO   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 )Nr;   r7   r   r   r?   )
r   r.   Z_poisson_lam_maxr   r4   rB   r  r   r   r9   )r0   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 d Q R X d S )Nr   r   r;   r?   rB  )invalid)
r   r   r4   rB   r  r   r   r9   ZerrstaterQ   )r0   r*   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 )Ng      ?r7   g      ?r   r?   )r   r   r4   rB   r  r   r   r9   )r0   rO   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 )Nr;   r   r7   r<   r   r@   r?   r   r      )r   r   r4   rB   r  r   r   r9   )r0   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomr   r   r!   r!   r"   r4  "  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 )Ng      ?r   r7   r;   r?   )r   r   r4   rB   r  r   r   r9   )r0   rO   r  r  r   r   r   r!   r!   r"   r?  J  s    
zTestBroadcast.test_logseriesN)#rI   rJ   rK   rn   r  rt  rU  r  r"  rf  r+  r(  rQ  r  r  rM  rk  r  rZ  r  r_  r6  r2  r9  r=  ra  r  rp  r  r{   r\  r  r.  r4  r?  r!   r!   r!   r"   r    s@   #((r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestThreadc             C   s   t d| _d S )Nr@   )r3   seeds)r0   r!   r!   r"   rn   Z  s    zTestThread.setupc                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  x(t| j|D ]\}}t|| q~W 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   r.   )r   r1   o)r  functionr!   r"   r   d  s   z-TestThread.check_function.<locals>.<listcomp>c             S   s   g | ]}|  qS r!   )start)r   rX   r!   r!   r"   r   f  s    c             S   s   g | ]}|  qS r!   )join)r   rX   r!   r!   r"   r   g  s    r@   win32)	threadingr  r4   r   r~   r  zipr   r.   Zintpr>   itemsizer   platformr   r   )r0   r  szZout1Zout2r  r1   r  r!   )r  r  r"   check_function]  s    zTestThread.check_functionc             C   s   dd }| j |dd d S )Nc             S   s   | j dd|d< d S )Ni'  )rt   .)rT  )r%   outr!   r!   r"   
gen_randomt  s    z*TestThread.test_normal.<locals>.gen_random)i'  )r  )r  )r0   r  r!   r!   r"   rU  s  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   i  )r#  .)r!  r4   r   )r%   r  r!   r!   r"   r  z  s    z'TestThread.test_exp.<locals>.gen_random)r   i  )r  )r  )r0   r  r!   r!   r"   test_expy  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   gUUUUUU?r   i'  )rt   .)r   )r%   r  r!   r!   r"   r    s    z/TestThread.test_multinomial.<locals>.gen_random)i'  r   )r  )r  )r0   r  r!   r!   r"   rA    s    zTestThread.test_multinomialN)rI   rJ   rK   rn   r  rU  r  rA  r!   r!   r!   r"   r  X  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   r?   r@   )r;   )r4   rB   argOneargTwoargThreetgtShape)r0   r!   r!   r"   rn     s    zTestSingleEltArrayInput.setupc             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}x>|D ]6}||krd|tdg}n
|| j}t|j| j qFW d S )Ng      ?)r   r!  re  r  rj  rX  r  r^  r`  r   r   r   r   r4   rB   r  r   r[   r  )r0   funcs	probfuncsrw  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}x~|D ]v}||krhtdg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j qNW d S )Ng      ?r   )r   rs  rT  r  r*  r'  rL  r  r5  r1  r8  r<  r  r   r   r4   rB   r  r  r   r[   r  )r0   r  r  rw  r  r  r!   r!   r"   test_two_arg_funcs  s$    
z*TestSingleEltArrayInput.test_two_arg_funcsc             C   s   t jt jt jg}xt|D ]l}|| j| j| j}t|j| j	 || jd | j| j}t|j| j	 || j| jd | j}t|j| j	 qW d S )Nr   )
r   rP  ro  r   r  r  r  r   r[   r  )r0   r  rw  r  r!   r!   r"   test_three_arg_funcs  s    
z,TestSingleEltArrayInput.test_three_arg_funcsN)rI   rJ   rK   rn   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 )Ni[rt   r   r   )r   rE   getattrr   r>   r4   )r#   fnamer  r   r'  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 )Ni[rt   i@B r   )r   rE   r  r   r   r   r   r   r   r4   r   r   r   )r#   r  r  r   r'  r   r   r!   r!   r"   test_integer_repeat  s    



r  c            	   C   s   t t tjdddgdd W d Q R X t t tjddgddd W d Q R X t t tjddgddgdd W d Q R X d S )Nr;   g333333?gffffff?)r   r;   )rt   r   )rh   ri   r9   r   r   r!   r!   r!   r"   test_broadcast_size_error  s    r  ))r   r   r   r   numpyr4   rh   Znumpy.testingr   r   r   r   r   r   r   r	   Znumpy.randomr
   r   r   r   r   r   rM   r   r   Zfixturer#   r,   r-   rL   rS   rk   r   r   r  r  r  r  r  r  r!   r!   r!   r"   <module>   st   (
/5W "      h    O/E