U
    O8cQ                    @   s   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 d dlZG dd dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZejjeddG dd dZG d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IS_WASM)randomc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSeedc                 C   s<   t jd}t|dd t jd}t|dd d S )Nr     i      i  )npr   RandomStater   randintselfs r   B/tmp/pip-unpacked-wheel-fd_gsd75/numpy/random/tests/test_random.pytest_scalar   s    zTestSeed.test_scalarc                 C   s   t jtd}t|dd t jt d}t|dd t jdg}t|dd t jdg}t|dd d S )N
   r   i  r   i  r   i	  )r   r   r   ranger   r   aranger   r   r   r   
test_array   s    zTestSeed.test_arrayc                 C   s$   t ttjjd t ttjjd d S )N      r   	TypeErrorr   r   r   
ValueErrorr   r   r   r   test_invalid_scalar    s    zTestSeed.test_invalid_scalarc                 C   sf   t ttjjdg t ttjjdg t ttjjdg t ttjjdddg t ttjjdddg d S )Nr   r   l              r   r!   r   r   r   test_invalid_array%   s
    zTestSeed.test_invalid_arrayc                 C   sX   t ttjjtjg tjd t ttjjdddgg t ttjjdddgdddgg d S )Ndtyper#   r$               )r   r    r   r   r   arrayint64r!   r   r   r   test_invalid_array_shape-   s    
z!TestSeed.test_invalid_array_shapeN)__name__
__module____qualname__r   r   r"   r&   r/   r   r   r   r   r      s
   
r   c                   @   s   e Zd Zdd Zdd ZdS )TestBinomialc                 C   sB   t jddd}dD ]*}ttd|dk tt||| qd S )Nr$   intr'   )r         ?r#   r   )r   zerosr   r   binomialr   )r   r6   pr   r   r   test_n_zero7   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtj d S )Nr#   )r   r    r   r7   r   nanr!   r   r   r   test_p_is_nan@   s    zTestBinomial.test_p_is_nanN)r0   r1   r2   r9   r;   r   r   r   r   r3   6   s   	r3   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMultinomialc                 C   s   t dddg d S )Nd   皙?皙?r   multinomialr!   r   r   r   
test_basicF   s    zTestMultinomial.test_basicc                 C   s   t ddddddg d S )Nr=   r>   r?           r@   r!   r   r   r   test_zero_probabilityI   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 )Nr   r+   )r   r   r   r   all)r   xr   r   r   test_int_negative_intervalL   s    $z*TestMultinomial.test_int_negative_intervalc                 C   s   ddg}t tjd|tdjd t tjd|tdjd t tjd|tdjd t tjd|ddgjd t tjd|djd t tjd|tdjd tttjjd|t	d d S )Nr5   r#   r#   r$   r$   r$   r$   r$   r$   r$   )
r   r   r   rA   uint32shaper-   r   r   floatr   r8   r   r   r   	test_sizeR   s    zTestMultinomial.test_sizec              	   C   s   t ttjjdddgg t ttjjddgdgg t ttjjddgdggdgdggg t ttjjdtddgddgg d S )Nr   r   r#   )r   r    r   r   rA   r-   r!   r   r   r   test_multidimensional_pvals`   s    &z+TestMultinomial.test_multidimensional_pvalsN)r0   r1   r2   rB   rD   rH   rP   rQ   r   r   r   r   r<   E   s
   r<   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSetStatec                 C   s$   d| _ t| j | _| j | _d S NiI)seedr   r   prng	get_statestater!   r   r   r   setup_methodh   s    zTestSetState.setup_methodc                 C   s<   | j d}| j | j | j d}tt||k d S )N   )rU   Ztomaxint	set_staterW   r   r   rF   r   oldnewr   r   r   rB   m   s    zTestSetState.test_basicc                 C   s@   | j jdd}| j | j | j jdd}tt||k d S Nr)   size)rU   standard_normalrZ   rW   r   r   rF   r[   r   r   r   test_gaussian_resets   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^   )rU   ra   rV   rZ   r   r   rF   )r   rW   r\   r]   r   r   r    test_gaussian_reset_in_media_resz   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%   rY   r_   )rW   rU   ra   rZ   r   r   rF   )r   	old_statex1Zx2Zx3r   r   r   test_backwards_compatibility   s    z)TestSetState.test_backwards_compatibilityc                 C   s   | j dd d S Nr5   )rU   negative_binomialr!   r   r   r   test_negative_binomial   s    z#TestSetState.test_negative_binomialN)	r0   r1   r2   rX   rB   rb   rc   rf   ri   r   r   r   r   rR   g   s   rR   c                	   @   s|   e Zd Zej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dd Zdd ZdS )TestRandintc                 C   s   t t| jdtd d S Nr#   r'   )r   r   rfuncrN   r!   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$   r#   r'   )	ityper   bool_iinfominmaxr   r    rl   )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$   r#   r   r`   r(   )rn   r   ro   rp   rq   rr   r   rl   )r   rs   rt   ru   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$   r#   r'   zMNo error should have been raised, but one was with the following message:

%s)
rn   r   ro   rp   rq   rr   rl   	ExceptionAssertionErrorstr)r   rs   rt   ru   er   r   r   test_full_range   s    
zTestRandint.test_full_rangec                 C   s   t j  | 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 )Nr#   )r*      rY   r$   i   rw   r   )	r   r   rT   rn   rl   r   rr   rq   ro   )r   rs   ru   valsr   r   r   test_in_bounds_fuzz   s    
zTestRandint.test_in_bounds_fuzzc              
   C   s   dd l }dddddddddd	}| jdd  D ]r}tjd	 tjd
kr\| jddd|d}n| jddd|d }|	|
tj }t|t|j |k q.tjd	 | jdddtd
tj}|	| }t|ttj |k d S )Nr   Z@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71Z@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4Z@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92fZ@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9eZ@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	boolint16int32r.   int8uint16rL   uint64uint8r#   i  littler,   r   rw   r$   )hashlibrn   r   r   rT   sys	byteorderrl   Zbyteswapsha256viewr   	hexdigestr   r(   namer   )r   r   rx   rs   valresr   r   r   test_repeatability   s,    

zTestRandint.test_repeatabilityc                 C   s`   t j}t t jj}t t t jj}t t t jjd }t jj|||d}t|| d S rk   )r   r.   rp   rr   r   r   r   r   )r   rs   rx   rt   ru   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$   r#   r'   r(   )rn   r   ro   rp   rq   rr   rl   r   r(   r   r4   compatlongr   hasattrtype)r   rs   rt   ru   sampler   r   r   test_respect_dtype_singleton  s    
z(TestRandint.test_respect_dtype_singletonN)r0   r1   r2   r   r   r   rl   ro   r   r   r   r   r   rL   r.   r   rn   rm   rv   ry   r~   r   r   r   r   r   r   r   r   rj      s      	!rj   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ejd'ejej ej gd(d) Zejd'ejej ej gejd*d+d,g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 Z0dSdT Z1dUdV Z2dWdX Z3dYdZ Z4d[d\ Z5d]d^ Z6d_d` Z7dadb Z8dcdd Z9dedf Z:dgdh Z;didj Z<dkdl Z=dmdn Z>dodp Z?dqdr Z@dsdt ZAdudv ZBdwdx ZCdydz ZDd{d| ZEd}d~ ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdS )TestRandomDistc                 C   s
   d| _ d S rS   rT   r!   r   r   r   rX   %  s    zTestRandomDist.setup_methodc                 C   sJ   t j| j t jdd}t ddgddgddgg}t||d	d
 d S )Nr)   r$   _\*?琛?<p?,o?H?Z?   decimal)r   r   rT   Zrandr-   r   r   r   desiredr   r   r   	test_rand(  s    
zTestRandomDist.test_randc                 C   sJ   t j| j t jdd}t ddgddgddgg}t||d	d
 d S )Nr)   r$   !<Oq?4u,?3?LI/DͿ@? @HS\@r   r   )r   r   rT   Zrandnr-   r   r   r   r   r   
test_randn0  s    
zTestRandomDist.test_randnc                 C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nc   r)   r$   r_      r)   )   )r   r   rT   r   r-   r   r   r   r   r   test_randint8  s    
zTestRandomDist.test_randintc              	   C   sv   t j| j t 2}|t}t j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
|| d S )Nr   r   r   r_   r#   r   r)   r   r   r   r   )r   r   rT   r	   recordDeprecationWarningrandom_integersr   lenr-   r   r   supwr   r   r   r   r   test_random_integers@  s    

z#TestRandomDist.test_random_integersc              	   C   sd   t  >}|t}tjtdjtdj}tt	|dk W 5 Q R X tdj}t
|| d S )Nlr#   )r	   r   r   r   r   r   rp   rr   r   r   r   r   r   r   r   test_random_integers_max_intK  s    

z+TestRandomDist.test_random_integers_max_intc              	   C   s^   t  L t dt tttjjtdj	 tttjjtdj	tdj	 W 5 Q R X d S )Nerrorr   )
warningscatch_warningssimplefilterr   r   r   r   r   rp   rr   r!   r   r   r   test_random_integers_deprecatedZ  s    


 
z.TestRandomDist.test_random_integers_deprecatedc                 C   sH   t j| j t j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   rT   r-   r   r   r   r   r   test_randomh  s    
zTestRandomDist.test_randomc                 C   s<   t j| j t jdd}t ddddg}t|| d S )Nr*   r$   r)   r   r   rT   choicer-   r   r   r   r   r   test_choice_uniform_replacep  s    z*TestRandomDist.test_choice_uniform_replacec                 C   sH   t j| j t jjddddddgd}t ddddg}t|| d S )Nr*   皙?皙?r8   r#   r$   r   r   r   r   r   test_choice_nonuniform_replacev  s    z-TestRandomDist.test_choice_nonuniform_replacec                 C   s>   t j| j t jjdddd}t dddg}t|| d S )Nr*   r)   Freplacer   r#   r   r   r   r   r   test_choice_uniform_noreplace|  s    z,TestRandomDist.test_choice_uniform_noreplacec                 C   sH   t j| j t jjdddddddgd}t ddd	g}t|| d S )
Nr*   r)   Fr   g333333?r5   r   r8   r$   r#   r   r   r   r   r    test_choice_nonuniform_noreplace  s    
z/TestRandomDist.test_choice_nonuniform_noreplacec                 C   sD   t j| j t jddddgd}t ddddg}t|| d S )Nabcdr*   r   r   r   r   r   test_choice_noninteger  s    z%TestRandomDist.test_choice_nonintegerc              	   C   sF  t j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 )Nr   r)   g      @r#   r$   r*   g      ?r   r   r>   g?gFr   r%   )r   )r   r#   r   r   )r   r   r   r   r    )r   r   r   r   r   test_choice_exceptions  s&     z%TestRandomDist.test_choice_exceptionsc              	   C   s<  ddg}t ttjjddd t ttjjddd t ttjjdd|d t ttjjdd|d t ttjjddgdd t tjjd gddd k tddg}tjdtd	}||d
< t tjj|dd|k t }t ttjjd|dd  t ttjjd|dd  t ttjjd|d|d  t ttjjd|d|d  t ttjjddg|dd  t tjjd g|ddj	d
k tddg}tjdtd	}||d
< t tjj||dd
 |k d}ddddddg}ttjjd|ddj| ttjjd|ddj| ttjjd|d|dj| ttjjd|d|dj| ttjjtd|ddj| ttjjd
d
ddjd ttjjd
dd
djd ttjjddd
djd ttjjd
d
djd ttjjg ddjd ttjjddgddjd tttjjg d d S )Nr   ?r$   Tr   Fr   r#   r'   r   )r$   r)   r   r>   r,   )r)   r   r*   r_   i)r   r   r   r   )r   r   Zisscalarr   r   r-   emptyobjecttuplendimitemr   rM   r   r   r   r    )r   r8   r   arrr   r   r   r   test_choice_return_shape  sL      " z'TestRandomDist.test_choice_return_shapec                 C   s2   t dddg}d d d g}ttt jj||d d S )N*   r#   r$   r   )r   r-   r   r    r   r   )r   r   r8   r   r   r   test_choice_nan_probabilities  s    
z,TestRandomDist.test_choice_nan_probabilitiesc                 C   s,   t j| j t jd}d}t|| d S )Nr   s
   Ui+Wf)r   r   rT   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 ]d}t j| j |ddddddddddg
}t j| |}|ddddddddddg
}t|| qFd S )Nc                 S   s
   t g S N)r   r-   rG   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   float32r   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   r   r   r   r   r     s     r   )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   r   r   r   r   r     s     r   r   r   )r   r   r4   r   Zrecarrayr   r   r   r   r     s   c                 S   s$   t dd | D dtfdt jfgS )Nc                 S   s   g | ]}||fqS r   r   r   r   r   r   r     s     r   r   r   )r   r   r   r   r   r   r   r   r     s   r#   r$   r)   r*   r+   r,      r   	   r   )r   r   rT   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 ]h}t j| t	t
|j|j  t
|j|j   t j| t	t
|j|j  t
|j|j   qVd S )N   )r+   r*   r)   r#   r   2   )r   maZmasked_valuesZreshaper   r   copyr   r   r   sorteddatamask)r   r   r   Za_origZb_origr   r   r   r   test_shuffle_masked  s    "  z"TestRandomDist.test_shuffle_maskedr   c              	   C   sN   dddddddd}t jtd	d
}|| W 5 Q R X d|d jksJtd S )Nr   r#   r$   r)   r*   r+   r,   )r   r#   r$   r)   r*   r+   r,   z!you are shuffling a 'dict' objectmatchr   )pytestwarnsUserWarningr   filenamer{   )r   r   valuesZrecr   r   r   test_shuffle_untyped_warning  s    z+TestRandomDist.test_shuffle_untyped_warninguse_array_likeTFc              	      s   G dd dt j}d t dgt dt dt dg}t j|td}dd |D  |rd||}t fd	d
|D s~t|rt|t j	j
stjtdd || W 5 Q R X n$|| t fdd
|D std S )Nc                   @   s   e Zd ZdS )z>TestRandomDist.test_shuffle_no_object_unpacking.<locals>.MyArrN)r0   r1   r2   r   r   r   r   MyArr  s   r  r)   r   r   r'   c                 S   s   h | ]}t |qS r   idr   r   r   r   	<setcomp>  s     zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<setcomp>c                 3   s   | ]}t | kV  qd S r   r  r   Zitem_idsr   r   	<genexpr>  s     zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<genexpr>z#Shuffling a one dimensional array.*r  c                 3   s   | ]}t | kV  qd S r   r  r   r  r   r   r  &  s     )r   ndarrayr-   Zfloat64r   r   rF   r{   
isinstancer   	Generatorr  r  r  r   )r   r   r  r  itemsr   r   r  r    test_shuffle_no_object_unpacking  s&     
   

z/TestRandomDist.test_shuffle_no_object_unpackingc                 C   s   t j| j t dj}t j| tt |dddddg t j| j}|| tt |dddddg t j	| j}|| tt |dddddg d S )Nr+   r   r#   r*   r)   r$   )
r   r   rT   r   r   r   r   r   r   default_rng)r   r   rngr   r   r   test_shuffle_memoryview(  s    

z&TestRandomDist.test_shuffle_memoryviewc              	   C   s<   t d}d|j_tjtdd t j| W 5 Q R X d S )Nr)   Fz	read-onlyr  )	r   r6   flagsZ	writeabler  Zraisesr    r   r   )r   r   r   r   r   test_shuffle_not_writeable7  s    
z)TestRandomDist.test_shuffle_not_writeablec                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr   r   r   r_   gAKč?ghA?g ҇o>gάXf+q?gS1$?g'8zX ?r   r   )r   r   rT   betar-   r   r   r   r   r   	test_beta=  s    zTestRandomDist.test_betac                 C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nr=   gv/?r   r_   %   +   r   0   .   -   )r   r   rT   r7   r-   r   r   r   r   r   test_binomialF  s    
zTestRandomDist.test_binomialc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   r   r_   g+Q]uO@g+Q@gY7`ZqP@ge(fG@gvtR@gEIȋR@   r   )r   r   rT   	chisquarer-   r   r   r   r   r   test_chisquareN  s    
zTestRandomDist.test_chisquarec                 C   st   t j| j t ddg}t jjj|dd}t ddgddggd	d
gddggddgddggg}t||dd d S )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   )r   r   rT   r-   mtrand	dirichletr   )r   alphar   r   r   r   r   test_dirichletV  s    
zTestRandomDist.test_dirichletc                 C   s   t ddg}tt j|t djd tt j|t djd tt j|t djd tt j|ddgjd tt j|djd tt j|t djd ttt jj|t	d d S )Nr'  r(  r#   rI   r$   rJ   rK   )
r   r-   r   r   r*  rL   rM   r   r   rN   rO   r   r   r   test_dirichlet_sizeb  s    z"TestRandomDist.test_dirichlet_sizec                 C   s   t ddg}ttt jjj| tttjddgg tttjdgdgg tttjdgdggdgdggg tttjt ddgddgg d S )NgHzG?gؗҜr+   r#   )r   r-   r   r    r   r)  r*  )r   r+  r   r   r   test_dirichlet_bad_alphan  s    "z'TestRandomDist.test_dirichlet_bad_alphac                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Ng8EGr?r   r_   gNU?gbI0?gVU\@g:3@gU?g"qo?r   r   )r   r   rT   exponentialr-   r   r   r   r   r   test_exponentialy  s    
zTestRandomDist.test_exponentialc                 C   s*   t tjjddd tttjjdd d S Nr   scale       )r   r   r   r/  r   r    r!   r   r   r   test_exponential_0  s    z!TestRandomDist.test_exponential_0c                 C   sN   t j| j t j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   r   rT   fr-   r   r   r   r   r   test_f  s    
zTestRandomDist.test_fc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr+   r)   r   r_   gԏGM8@gȌ<@g	":@gv#)@gZQ?@gr[@@   r   )r   r   rT   gammar-   r   r   r   r   r   
test_gamma  s    
zTestRandomDist.test_gammac                 C   s.   t tjjdddd tttjjddd d S )Nr   )rM   r3  r4  )r   r   r   r;  r   r    r!   r   r   r   test_gamma_0  s    zTestRandomDist.test_gamma_0c                 C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )	N_c97ݚ?r   r_   r   r      r+   r6  )r   r   rT   	geometricr-   r   r   r   r   r   test_geometric  s    
zTestRandomDist.test_geometricc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr>         @r   locr3  r`   gؕ?gs0 ?g#0g(xg-KD?gůp`@r   r   )r   r   rT   gumbelr-   r   r   r   r   r   test_gumbel  s    
zTestRandomDist.test_gumbelc                 C   s*   t tjjddd tttjjdd d S r1  )r   r   r   rE  r   r    r!   r   r   r   test_gumbel_0  s    zTestRandomDist.test_gumbel_0c                 C   s  t j| j t jjddddd}t ddgddgddgg}t|| t jjdddd	d}t ddddg}t|| t jjd
ddd	d}t ddddg}t|| t jjdddd	d}t ddddg}t|| t jjdd
dd	d}t ddddg}t|| d S )Nr   r+   r:  r   r_   r   r   r)   r*   r   r6  )r   r   rT   hypergeometricr-   r   r   r   r   r   test_hypergeometric  s&    




z"TestRandomDist.test_hypergeometricc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr>  rB  r   rC  g bO?g¸?gpJm	@g{K*t	@g:^w-gY~o?r   r   )r   r   rT   laplacer-   r   r   r   r   r   test_laplace  s    
zTestRandomDist.test_laplacec                 C   s*   t tjjddd tttjjdd d S r1  )r   r   r   rJ  r   r    r!   r   r   r   test_laplace_0  s    zTestRandomDist.test_laplace_0c                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr>  rB  r   rC  g#K-z?gJ?g92@gر[@g#+^˿g-@r   r   )r   r   rT   logisticr-   r   r   r   r   r   test_logistic  s    
zTestRandomDist.test_logisticc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr>  rB  r   )meansigmar`   gɁ0@go,+4FB@g)ʭ6@g5?gnxNnP@g)U@r$  r   )r   r   rT   	lognormalr-   r   r   r   r   r   test_lognormal  s    
zTestRandomDist.test_lognormalc                 C   s*   t tjjddd tttjjdd d S )Nr   )rP  r#   r4  )r   r   r   rQ  r   r    r!   r   r   r   test_lognormal_0  s    zTestRandomDist.test_lognormal_0c                 C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )Ngƀ@?r   )r8   r`   r$   r,   r?  r)   )r   r   rT   	logseriesr-   r   r   r   r   r   test_logseries  s    
zTestRandomDist.test_logseriesc                 C   s   t j| j t j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_   r*   r)   r+   r$   r   r#   r   )r   r   rT   rA   r-   r   r   r   r   r   test_multinomial  s    zTestRandomDist.test_multinomialc              	   C   sR  t j| j d}ddgddgg}d}t j|||}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 j||}t ddg}t||dd ddg}ddgddgg}ttt jj|| tt jj||dd t	t
t jj||dd t jddgddggt jd}t 0}t j|| |t}t|dksDtW 5 Q R X d S )N)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raiser   r'   )r   r   rT   Zmultivariate_normalr-   r   r   RuntimeWarningr   r   r    r   r	   r   r   r{   )r   rO  Zcovr`   r   r   r   r   r   r   r   test_multivariate_normal  sB    

z'TestRandomDist.test_multivariate_normalc                 C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nr=   g|Pk?r   )nr8   r`   iP  iI  i|  ic  i  i  )r   r   rT   rh   r-   r   r   r   r   r   ri   "  s    
z%TestRandomDist.test_negative_binomialc                 C   s   t j| j t jjdddd}t ddgddgdd	gg}t||d
d t jjdddd}t ddgddgddgg}t||d
d t j| j t jjdddd}t ddgddgddgg}t||d
d d S )Nr+   r   )dfnoncr`   gG7@g! ܴ*@g1}z9?@g+驸0@g26E_r#@gI!1@r:  r   r5   r>   g?gTD?g?T?g+qnl?g~|D?g밬?r   g{01#@gprs'@g~;$@g"dI@g*@g}',@)r   r   rT   noncentral_chisquarer-   r   r   r   r   r   test_noncentral_chisquare*  s(    


z(TestRandomDist.test_noncentral_chisquarec                 C   sP   t j| j t jjddddd}t ddgdd	gd
dgg}t||dd d S )Nr+   r$   r#   r   )dfnumdfdenr^  r`   g^~?g/+c?g".@g@g7?gE?r:  r   )r   r   rT   noncentral_fr-   r   r   r   r   r   test_noncentral_f?  s    
z TestRandomDist.test_noncentral_fc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr>  rB  r   rC  g&&n@gOG_@g~w@gtw]տgm&5@g$>@r   r   )r   r   rT   normalr-   r   r   r   r   r   test_normalH  s    
zTestRandomDist.test_normalc                 C   s*   t tjjddd tttjjdd d S r1  )r   r   r   re  r   r    r!   r   r   r   test_normal_0P  s    zTestRandomDist.test_normal_0c                 C   sP   t j| j t jjddd}t ddgddgdd	gg}t jj||d
d d S )Nr>  r   r   r`   gWI@gԨy@gy]0Ag1~\Aga@gY
7A   )Znulp)r   r   rT   paretor-   testingZassert_array_almost_equal_nulpr   r   r   r   test_paretoT  s    
zTestRandomDist.test_paretoc                 C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )Nr>  r   )lamr`   r   r#   )r   r   rT   poissonr-   r   r   r   r   r   test_poissonc  s    
zTestRandomDist.test_poissonc                 C   s`   t dj}d}ttt jj| ttt jj|gd  ttt jj| ttt jj|gd  d S )Nr   r   r   )r   rp   rr   r   r    r   rn  )r   ZlambigZlamnegr   r   r   test_poisson_exceptionsk  s    z&TestRandomDist.test_poisson_exceptionsc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr>  r   rh  g;'?gܴw*?g5?gFG?g D]?g$`?r   r   )r   r   rT   powerr-   r   r   r   r   r   
test_powers  s    
zTestRandomDist.test_powerc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   r   )r3  r`   g"u+@gN$MB*@g7v8B4@g55@ge&@g~ӣZ1@r:  r   )r   r   rT   rayleighr-   r   r   r   r   r   test_rayleigh{  s    
zTestRandomDist.test_rayleighc                 C   s*   t tjjddd tttjjdd d S r1  )r   r   r   rs  r   r    r!   r   r   r   test_rayleigh_0  s    zTestRandomDist.test_rayleigh_0c                 C   sJ   t j| j t j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   r   rT   Zstandard_cauchyr-   r   r   r   r   r   test_standard_cauchy  s    
z#TestRandomDist.test_standard_cauchyc                 C   sJ   t j| j t j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   r   rT   Zstandard_exponentialr-   r   r   r   r   r   test_standard_exponential  s    
z(TestRandomDist.test_standard_exponentialc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr)   r   )rM   r`   g)@gľ@gd],q@gPk{@g9B#1@gv @r:  r   )r   r   rT   standard_gammar-   r   r   r   r   r   test_standard_gamma  s    
z"TestRandomDist.test_standard_gammac                 C   s*   t tjjddd tttjjdd d S )Nr   )rM   r4  )r   r   r   rx  r   r    r!   r   r   r   test_standard_gamma_0  s    z$TestRandomDist.test_standard_gamma_0c                 C   sJ   t j| j t j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   r   rT   ra   r-   r   r   r   r   r   test_standard_normal  s    
z#TestRandomDist.test_standard_normalc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   r   )r]  r`   g\VH?ghU%gH$M?gLgVqdzǿg㖀?r   r   )r   r   rT   
standard_tr-   r   r   r   r   r   test_standard_t  s    
zTestRandomDist.test_standard_tc                 C   sP   t j| j t jjddddd}t ddgdd	gd
dgg}t||dd d S )Ng{Gz@g(\u$@gףp=
W4@r   )leftmoderightr`   g:}\)@ghرTj(@gǨL30@g6ڜA0@g6sh&@g<,@r:  r   )r   r   rT   
triangularr-   r   r   r   r   r   test_triangular  s    
zTestRandomDist.test_triangularc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )NGz?gGz%@r   )lowhighr`   g>#H@gu@g#@g}d]#@gN@gw)* @r   r   )r   r   rT   uniformr-   r   r   r   r   r   test_uniform  s    
zTestRandomDist.test_uniformc                 C   s   t dj}t dj}t j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jt 	|d|d d d S )NrN   r   r#   g ؅W4vC)r  r  )
r   Zfinforq   rr   r   r  r   OverflowErrorinfZ	nextafter)r   ZfminZfmaxfuncr   r   r   test_uniform_range_bounds  s    z(TestRandomDist.test_uniform_range_boundsc                 C   sn   G dd dt j}t d|}ttt jj|| G dd dt j}t d|}ttt j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   r   r!   r   r   r   	__float__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)r0   r1   r2   r  r   r   r   r   ThrowingFloat  s   r  g      ?c                   @   s   e Zd Zdd ZeZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   s   t d S r   r  r!   r   r   r   __int__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)r0   r1   r2   r  	__index__r   r   r   r   ThrowingInteger  s   r  r#   )	r   r  r-   r   r   r   r   r  rH  )r   r  Zthrowing_floatr  Zthrowing_intr   r   r   !test_scalar_exception_propagation  s    z0TestRandomDist.test_scalar_exception_propagationc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr  p=
ף?r   mukappar`   gLZI@g'N"@gkr?gk=m@gډ?g^=\?r   r   )r   r   rT   vonmisesr-   r   r   r   r   r   test_vonmises  s    
zTestRandomDist.test_vonmisesc                 C   s:   t j| j t jjdddd}t jt |  d S )NrC   gg5_PG>i@B r  )r   r   rT   r  rk  r   isfiniterF   )r   rr   r   r   test_vonmises_small  s    z"TestRandomDist.test_vonmises_smallc                 C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr  r  r   )rO  r3  r`   gZ@g-g@g8
m?gVP"?g`V?gx^&3?r:  r   )r   r   rT   waldr-   r   r   r   r   r   	test_wald  s    
zTestRandomDist.test_waldc                 C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr  r   rh  g@6?g]A?g(1ڥR?gU?g2_u?g^}-Q?r   r   )r   r   rT   weibullr-   r   r   r   r   r   test_weibull  s    
zTestRandomDist.test_weibullc                 C   s@   t j| j tt jjdddt d ttt jjdd d S )Nr   r6  rh  r4  )r   )r   r   rT   r   r  r6   r   r    r!   r   r   r   test_weibull_0
  s    zTestRandomDist.test_weibull_0c                 C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )	Nr  r   rh  B      r#   r)   r$  )r   r   rT   zipfr-   r   r   r   r   r   	test_zipf  s    
zTestRandomDist.test_zipfN)Sr0   r1   r2   rX   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  markZparametrizer   r   r   r  r
  r  r  r  r  r#  r&  r,  r-  r.  r0  r5  r9  r<  r=  rA  rF  rG  rI  rK  rL  rN  rR  rS  rU  rW  r[  ri   r`  rd  rf  rg  rl  ro  rp  rr  rt  ru  rv  rw  ry  rz  r{  r}  r  r  r  r  r  r  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"dAS )BTestBroadcastc                 C   s
   d| _ d S )Ni[r   r!   r   r   r   rX     s    zTestBroadcast.setup_methodc                 C   s   t j| j d S r   )r   r   rT   r!   r   r   r   setSeed  s    zTestBroadcast.setSeedc                 C   sp   dg}dg}t jj}t dddg}|   ||d |}t||dd |   |||d }t||dd d S )	Nr   r#   l?_x?=*BN?r)   r:  r   )r   r   r  r-   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j}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r#   r   g-r@gYl@g-`w?r)   r:  r   )r   r   re  r-   r  r   r   r    )r   rD  r3  	bad_scalere  r   r   r   r   r   rf  4  s     zTestBroadcast.test_normalc                 C   s   dg}dg}dg}dg}t j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$   r   r%   gnQVf?gVKB?gv`k?r)   r:  r   )r   r   r  r-   r  r   r   r    )r   r   r   bad_aZbad_br  r   r   r   r   r   r  G  s&    zTestBroadcast.test_betac                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S 	Nr#   r   g.UgZ?gi Prq?gEK?r)   r:  r   )r   r   r/  r-   r  r   r   r    )r   r3  r  r/  r   r   r   r   r   r0  ]  s    zTestBroadcast.test_exponentialc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S r  )r   r   rx  r-   r  r   r   r    )r   rM   	bad_shapeZ	std_gammar   r   r   r   r   ry  j  s    z!TestBroadcast.test_standard_gammac                 C   s   dg}dg}dg}dg}t j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$   r   r%   g.UgZ?gi Prq?gEK?r)   r:  r   )r   r   r;  r-   r  r   r   r    )r   rM   r3  r  r  r;  r   r   r   r   r   r<  w  s&    zTestBroadcast.test_gammac                 C   s   dg}dg}dg}dg}t j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$   r   r%   gbyʜ?go?gT7@r)   r:  r   )r   r   r8  r-   r  r   r   r    )r   ra  rb  	bad_dfnum	bad_dfdenr8  r   r   r   r   r   r9    s&    zTestBroadcast.test_fc           
      C   sf  dg}dg}dg}dg}dg}dg}t j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  d S )Nr$   r)   r*   r   r   r%   gr^G"@g/*@gц!@r:  r   )r   r   rc  r-   r  r   r   r    )
r   ra  rb  r^  r  r  bad_noncZnonc_fr   r   r   r   r   rd    s:    zTestBroadcast.test_noncentral_fc                 C   s<   |    tddg}tjjddddd}t||dd d S )Ngaz@gn4M;%?r   r$   r_   r:  r   )r  r   r-   r   rc  r   )r   r   r   r   r   r   test_noncentral_f_small_df  s    z(TestBroadcast.test_noncentral_f_small_dfc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr#   r   g~}N??g$F?g'rS?r)   r:  r   )r   r   r%  r-   r  r   r   r    )r   r]  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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$   r   r%   g w "@g2WR@gRY@r)   r:  r   )r   r   r_  r-   r  r   r   r    )r   r]  r^  r  r  Znonc_chir   r   r   r   r   r`    s&    z'TestBroadcast.test_noncentral_chisquarec                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr#   r   gT@g~Fl@gƚtp?r)   r:  r   )r   r   r|  r-   r  r   r   r    )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j}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr$   r#   r   gW!@gOBg}?r)   r:  r   )r   r   r  r-   r  r   r   r    )r   r  r  Z	bad_kappar  r   r   r   r   r   r    s     zTestBroadcast.test_vonmisesc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr#   r   g&8??geFX?gՋː?r)   r:  r   )r   r   rj  r-   r  r   r   r    )r   r   r  rj  r   r   r   r   r   rl    s    zTestBroadcast.test_paretoc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S r  )r   r   r  r-   r  r   r   r    )r   r   r  r  r   r   r   r   r   r    s    zTestBroadcast.test_weibullc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr#   r   r  r  r  r)   r:  r   )r   r   rq  r-   r  r   r   r    )r   r   r  rq  r   r   r   r   r   rr  '  s    zTestBroadcast.test_powerc                 C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r#   r   g:BKc?g3k?g~q?r)   r:  r   )r   r   rJ  r-   r  r   r   r    )r   rD  r3  r  rJ  r   r   r   r   r   rK  4  s     zTestBroadcast.test_laplacec                 C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r#   r   g'Zy?gdSO=?g3L1?r)   r:  r   )r   r   rE  r-   r  r   r   r    )r   rD  r3  r  rE  r   r   r   r   r   rF  G  s     zTestBroadcast.test_gumbelc                 C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r#   r   gy?gJR?g
~&?r)   r:  r   )r   r   rM  r-   r  r   r   r    )r   rD  r3  r  rM  r   r   r   r   r   rN  Z  s     zTestBroadcast.test_logisticc                 C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r#   r   gH"@gܮ @gvv	:@r)   r:  r   )r   r   rQ  r-   r  r   r   r    )r   rO  rP  Z	bad_sigmarQ  r   r   r   r   r   rR  m  s     zTestBroadcast.test_lognormalc                 C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr#   r   gݱlo?g/ӂ?gz~R?r)   r:  r   )r   r   rs  r-   r  r   r   r    )r   r3  r  rs  r   r   r   r   r   rt    s    zTestBroadcast.test_rayleighc                 C   s   dg}dg}dg}dg}t j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  tt|dd tt|dd d S )Nr5   r#   r   r%   g@m e?g`I߿?g|2?r)   r:  r   rC   )r   r   r  r-   r  r   r   r    )r   rO  r3  Zbad_meanr  r  r   r   r   r   r   r    s*    zTestBroadcast.test_waldc                 C   sl  dg}dg}dg}dg}dg}|d \}}t j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  d S )
Nr#   r)   r$   r*   g,P;bD @g%G @g,~S @r:  r   )r   r   r  r-   r  r   r   r    )r   r~  r  r  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor  r   r   r   r   r   r    sF    
zTestBroadcast.test_triangularc           	      C   s   dg}dg}dg}dg}dg}t j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#   r5   r         ?r)   )r   r   r7   r-   r  r   r   r    )	r   r\  r8   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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#   r5   r   r  r   r)   )r   r   rh   r-   r  r   r   r    )	r   r\  r8   r  r  r  Z	neg_binomr   r   r   r   r   ri     s&    

z$TestBroadcast.test_negative_binomialc                 C   s|   t j j}dg}dg}|d g}t jj}t dddg}|   ||d }t|| tt	||d  tt	||d  d S )Nr#   r   r$   r   r)   )
r   r   r   Z_poisson_lam_maxrn  r-   r  r   r   r    )r   Zmax_lamrm  Zbad_lam_oneZbad_lam_tworn  r   r   r   r   r   ro    s    

zTestBroadcast.test_poissonc              	   C   s   dg}dg}t j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   r#   r)   rX  )invalid)
r   r   r  r-   r  r   r   r    Zerrstater:   )r   r   r  r  r   r   r   r   r   r    s    
zTestBroadcast.test_zipfc                 C   sl   dg}dg}dg}t jj}t dddg}|   ||d }t|| tt||d  tt||d  d S )Nr5   r   r  r$   r)   )r   r   r@  r-   r  r   r   r    )r   r8   r  r  Zgeomr   r   r   r   r   rA    s    
zTestBroadcast.test_geometricc                 C   s  dg}dg}dg}dg}dg}dg}dg}t j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  d S )Nr#   r$   r   r%   r   r*   r)   )r   r   rH  r-   r  r   r   r    )r   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomr   r   r   r   r   rI  !  s<    


z!TestBroadcast.test_hypergeometricc                 C   sl   dg}dg}dg}t jj}t dddg}|   ||d }t|| tt||d  tt||d  d S )Nr5   r$   r   r#   r)   )r   r   rT  r-   r  r   r   r    )r   r8   r  r  rT  r   r   r   r   r   rU  D  s    
zTestBroadcast.test_logseriesN)#r0   r1   r2   rX   r  r  rf  r  r0  ry  r<  r9  rd  r  r&  r`  r}  r  rl  r  rr  rK  rF  rN  rR  rt  r  r  r#  ri   ro  r  rA  rI  rU  r   r   r   r   r    s@   !$#r  zcan't start thread)reasonc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestThreadc                 C   s   t d| _d S )Nr*   )r   seedsr!   r   r   r   rX   U  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j|| q|t	 j
jdkrtjdkrt|| n
t|| d S )	Nr   )Threadc                    s(   g | ] \}} t j||fd qS ))targetargs)r   r   r   )r   r   or  functionr   r   r   _  s   z-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   )startr   rG   r   r   r   r   a  s     c                 S   s   g | ]}|  qS r   )joinr  r   r   r   r   b  s     r*   win32)	threadingr  r   r   r   r  zipr   r   Zintpr(   itemsizer   platformr   r   )r   r  szZout1Zout2r  r   r  r   r  r   check_functionX  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_   .)re  rW   outr   r   r   
gen_randomo  s    z*TestThread.test_normal.<locals>.gen_random)r  r  r  r   r  r   r   r   rf  n  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=   r   r2  .)r/  r   Zonesr  r   r   r   r  t  s    z'TestThread.test_exp.<locals>.gen_randomr  r  r  r  r   r   r   test_exps  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   rV  r,   r  r_   .)rA   r  r   r   r   r  y  s    z/TestThread.test_multinomial.<locals>.gen_random)r  r,   r  r  r  r   r   r   rW  x  s    zTestThread.test_multinomialN)r0   r1   r2   rX   r  rf  r  rW  r   r   r   r   r  R  s
   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSingleEltArrayInputc                 C   s4   t dg| _t dg| _t dg| _d| _d S )Nr$   r)   r*   )r#   )r   r-   argOneargTwoargThreetgtShaper!   r   r   r   rX     s    z$TestSingleEltArrayInput.setup_methodc                 C   s   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjf}t jjt jjf}|D ]6}||kr~|t dg}n
|| j}t|j| j q`d S rg   )r   r   r/  rx  r%  r|  rj  r  rq  rs  rn  r  r@  rT  r-   r  r   rM   r  )r   funcs	probfuncsr  r  r   r   r   test_one_arg_funcs  s$         
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   s   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjt jjt jjf}t jjt jjf}|D ]v}||krt dg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j qld S )Nr5   r   )r   r   r  re  r  r;  r8  r_  r  rJ  rE  rM  rQ  r  r7   rh   r-   r  r  r   rM   r  )r   r  r  r  r  r  r   r   r   test_two_arg_funcs  s2          z*TestSingleEltArrayInput.test_two_arg_funcsc              	   C   s   t tjtjtjtjtjtjtjtj	g	}tj
j}tdg}tdg}|D ]`}||||d}t|j| j ||d ||d}t|j| j |||d |d}t|j| j qJd S )Nr#   r   r'   )r   r   r   r   r   r   r   rL   r.   r   r   r   r-   r   rM   r  )r   rn   r  r  r  rs   r  r   r   r   r     s        z$TestSingleEltArrayInput.test_randintc                 C   s   t jjt jjt j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   rc  r  rH  r  r  r  r   rM   r  )r   r  r  r  r   r   r   test_three_arg_funcs  s    z,TestSingleEltArrayInput.test_three_arg_funcsN)r0   r1   r2   rX   r  r  r   r  r   r   r   r   r    s
   r  )r   r  Znumpyr   Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r3   r<   rR   rj   r   r  r  Zskipifr  r  r   r   r   r   <module>   s2   ,'"0      |    >,