U
    ù‘«jò? ã                	   @   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 rÀd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ã?)ç      à?)é   r   é
   r   é   g      @)éd   r   )ç      $@)é   )ÚbinomialÚ	geometricÚhypergeometricÚ	logseriesÚmultinomialÚnegative_binomialÚpoissonÚzipfì        Z@2fbead005fc63942decb5326d36a1f32fe2c9d32c904ee61e46866b88447c263Z@23ead5dcde35d4cfd4ef2c105e4c3d43304b45dc1b1444b7823b9ee4fa144ebbZ@0d764db64f5c3bad48c8c33551c13b4d07a1e7b470f77629bef6c985cac76fcfZ@7b59bf2f1691626c5815cdcd9a49e1dd68697251d4521575219e4d2a1b8b2c67Z@d754fa5b92943a38ec07630de92362dd2e02c43577fc147417dc5b9db94ccdd3Z@8eb216f7cb2a63cf55605422845caaff002fddc64a7dc8b2d45acd477a49e824Z@70c891d76104013ebd6f6bcf30d403a9074b886ff62e4e6b8eb605bf1a4673b7Z@01f074f97517cd5d21747148ac6ca4074dde7fcb7acbaec0a936606fecacd93f)r   r   r   r   r   r   r   r   Z@8626dd9d052cb608e93d8868de0a7b347258b199493871a1dc56e2a26cacb112Z@8edd53d272e49c4fc8fbbe6c7d08d563d62e482921f3131d0a0e068af30f0db9Z@83496cc4281c77b786c9b7ad88b74d42e01603a55c60577ebab81c3ba8d45657Z@65878a38747c176bc00e930ebafebb69d4e1e16cd3a704e264ea8f5e24f548dbZ@7a984ae6dca26fd25374479e118b22f55db0aedccd5a0f2584ceada33db98605Z@d636d968e6a24ae92ab52fe11c46ac45b0897e98714426764e820a7d77602a61Z@956552176f77e7c9cb20d0118fc9cf690be488d790ed4b4c4747b965e61b0bb4Z@f84ba7feffda41e606e20b28dfc0f1ea9964a74574513d4a4cbc98433a8bfa45Úmodule)ZscopeÚparamsc                 C   s   | j t| j  t| j  fS ©N)ÚparamÚ	INT_FUNCSÚINT_FUNC_HASHES)Úrequest© r$   úG/tmp/pip-unpacked-wheel-16f7874t/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£  )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   r1   iÔ  r   iÍ  r2   i	  )r   r3   Úranger   r4   ÚnpÚaranger5   r$   r$   r%   Ú
test_arrayG   s    zTestSeed.test_arrayc                 C   s    t ttjdƒ t ttjdƒ d S )Nç      à¿éÿÿÿÿ©r   Ú	TypeErrorr   r3   Ú
ValueError©r6   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 )Nr=   r>   r   é   r   éþÿÿÿr?   rB   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©ÚdtyperD   r   é   é   é   r   )r   rA   r   r3   r:   ÚarrayÚint64rB   r$   r$   r%   Útest_invalid_array_shape^   s    ÿÿz!TestSeed.test_invalid_array_shapec              	   C   s0   t  tdƒ¡}ttƒ� | d¡ W 5 Q R X d S )Nr   éÒ  )r   r3   r   r   r@   Úseed)r6   Úrsr$   r$   r%   Útest_cannot_seedf   s    
zTestSeed.test_cannot_seedc                 C   s   t ttjtƒ d S r   )r   rA   r   r3   r
   rB   r$   r$   r%   Útest_invalid_initializationk   s    z$TestSeed.test_invalid_initializationN)
Ú__name__Ú
__module__Ú__qualname__r8   r<   rC   rF   rN   rR   rS   r$   r$   r$   r%   r0   @   s   
r0   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   ÚintrG   )r   r   rD   r   )r:   Úzerosr   r   r   r   )r6   rY   Úpr$   r$   r%   Útest_n_zerop   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtjƒ d S )NrD   )r   rA   r   r   r:   ÚnanrB   r$   r$   r%   Útest_p_is_nany   s    zTestBinomial.test_p_is_nanN)rT   rU   rV   r[   r]   r$   r$   r$   r%   rW   o   s   	rW   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestMultinomialc                 C   s   t  dddg¡ d S )Nr   çš™™™™™É?çš™™™™™é?©r   r   rB   r$   r$   r%   Ú
test_basic   s    zTestMultinomial.test_basicc                 C   s   t  ddddddg¡ d S )Nr   r_   r`   ç        ra   rB   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 )Néûÿÿÿr>   rK   )r   r   r4   r:   Úall©r6   Úxr$   r$   r%   Útest_int_negative_interval…   s    $z*TestMultinomial.test_int_negative_intervalc                 C   sÂ   ddg}t t d|t d¡¡jdƒ t t d|t d¡¡jdƒ t t d|t d¡¡jdƒ t t d|ddg¡jdƒ t t d|d¡jdƒ t t d|t d¡¡jdƒ tttjd|t	dƒƒ d S )Nr   rD   ©rD   r   r   ©r   r   r   ©r   r   )
r   r   r   r:   Úuint32ÚshaperL   r   r@   Úfloat©r6   rZ   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   çš™™™™™ñ?r_   çš™™™™™¹¿çÍÌÌÌÌÌì?©r   rA   r   r   rB   r$   r$   r%   Útest_invalid_prob™   s    z!TestMultinomial.test_invalid_probc                 C   s   t ttjdddgƒ d S )Nr>   r`   r_   ru   rB   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      .@rD   rI   iÛ iUr   )Úpvals)r:   r;   Úsumr   rP   r   Úascontiguousarrayr   )r6   rZ   rx   Ú
non_contigÚcontigr$   r$   r%   Útest_p_non_contiguous    s    


z%TestMultinomial.test_p_non_contiguousc                 C   s^   t jddddddddddg
t jd�}|| ¡  }d}tjt|d�� t d|¡ W 5 Q R X d S )Ng®Gáz®ï?g•Ö&è.>rG   z-[\w\s]*pvals array is cast to 64-bit floating)ÚmatchrD   )	r:   rL   Úfloat32ry   ÚpytestÚraisesrA   r   r   )r6   rh   rx   r~   r$   r$   r%   Útest_multinomial_pvals_float32ª   s       ÿÿz.TestMultinomial.test_multinomial_pvals_float32N)rT   rU   rV   rb   rd   ri   rq   rv   rw   r}   r‚   r$   r$   r$   r%   r^   ~   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d„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestSetStatec                 C   s$   d| _ t | j ¡| _| j ¡ | _d S ©NiÒ–I)rP   r   r3   Úrandom_stateÚ	get_stater(   rB   r$   r$   r%   Úsetup_method´   s    zTestSetState.setup_methodc                 C   s<   | j  d¡}| j  | j¡ | j  d¡}tt ||k¡ƒ d S )Né   )r…   ÚtomaxintÚ	set_stater(   r   r:   rf   ©r6   ÚoldÚnewr$   r$   r%   rb   ¹   s    zTestSetState.test_basicc                 C   s@   | j jdd�}| j  | j¡ | j jdd�}tt ||k¡ƒ d S ©NrI   ©Úsize)r…   Ústandard_normalrŠ   r(   r   r:   rf   r‹   r$   r$   r%   Útest_gaussian_reset¿   s    z TestSetState.test_gaussian_resetc                 C   sR   | j  ¡  | j  ¡ }| j jdd�}| j  |¡ | j jdd�}tt ||k¡ƒ d S rŽ   )r…   r‘   r†   rŠ   r   r:   rf   )r6   r(   rŒ   r�   r$   r$   r%   Ú test_gaussian_reset_in_media_resÆ   s    

z-TestSetState.test_gaussian_reset_in_media_resc                 C   sz   | j d d… }| jjdd�}| j |¡ | jjdd�}| j | j ¡ | jjdd�}tt ||k¡ƒ tt ||k¡ƒ d S )NrE   rˆ   r�   )r(   r…   r‘   rŠ   r   r:   rf   )r6   Ú	old_stateÚx1Zx2Zx3r$   r$   r%   Útest_backwards_compatibilityÑ   s    z)TestSetState.test_backwards_compatibilityc                 C   s   | j  dd¡ d S ©Nr   )r…   r   rB   r$   r$   r%   Útest_negative_binomialÝ   s    z#TestSetState.test_negative_binomialc              	   C   sb   t  tƒ ¡}tƒ �F}| t¡}| ¡ }tt|ƒdkƒ t	|t
ƒsDt‚|d dksTt‚W 5 Q R X d S )NrD   r'   r   )r   r3   r   r	   ÚrecordÚRuntimeWarningr†   r   ÚlenÚ
isinstanceÚdictÚAssertionError)r6   rQ   Ú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)ÚUnknownrD   rG   F©Úlegacyr'   )	r…   r†   r   rA   rŠ   r@   r:   rL   Úobject)r6   r(   Z	new_stater$   r$   r%   Ú!test_invalid_legacy_state_settingë   s    

ÿz.TestSetState.test_invalid_legacy_state_settingc                 C   sj   | j  d¡ | j  d¡ | j  ¡  | j jdd�}t|d dƒ t t | j ¡¡}|jdd�}t	||ƒ d S )Nr   r   Fr£   r+   rD   )
r…   rP   Úrandom_sampler‘   r†   r   ÚpickleÚloadsÚdumpsr/   )r6   ZpickledZ	rs_unpickZ	unpickledr$   r$   r%   Útest_pickleõ   s    
zTestSetState.test_picklec                 C   s<   | j  ¡ }| j  ¡  | j  |¡ | j jdd�}t||ƒ d S )NFr£   )r…   Ú__getstate__r‘   Ú__setstate__r†   r/   )r6   Z
attr_stater(   r$   r$   r%   Útest_state_settingÿ   s
    

zTestSetState.test_state_settingc                 C   s   t | jƒ d¡st‚d S )NzRandomState(MT19937))Úreprr…   Ú
startswithrž   rB   r$   r$   r%   Ú	test_repr  s    zTestSetState.test_reprN)rT   rU   rV   r‡   rb   r’   r“   r–   r˜   r¡   r¦   r«   r®   r±   r$   r$   r$   r%   rƒ   ³   s   	

rƒ   c                	   @   sž   e Zd ZejZejejej	ej
ejejejejejg	Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zejje d¡jdk dd�dd„ ƒZdd„ Zdd„ ZdS )ÚTestRandintc                 C   s   t t| jdtd� d S ©NrD   rG   )r   r@   Úrfuncro   rB   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   rD   rG   )	Úityper:   Úbool_ÚiinfoÚminÚmaxr   rA   r´   )r6   Ú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   rD   r1   ©r�   rH   )r¶   r:   r·   r¸   r¹   rº   r   r´   )r6   r»   r¼   r½   Útgtr$   r$   r%   Útest_rng_zero_and_extremes  s    
z&TestRandint.test_rng_zero_and_extremesc                 C   s�   | j D ]„}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }z| j|||d� W q tk
rˆ } ztdt	|ƒ ƒ‚W 5 d }~X Y qX qd S )Nr   r   rD   rG   zMNo error should have been raised, but one was with the following message:

%s)
r¶   r:   r·   r¸   r¹   rº   r´   Ú	Exceptionrž   Ústr)r6   r»   r¼   r½   Úer$   r$   r%   Útest_full_range,  s    
þzTestRandint.test_full_rangec                 C   s�   t  ¡  | jdd … D ]@}dD ]6}| jd|d|d�}t| ¡ |k ƒ t| ¡ dkƒ qq| jdddtjd�}t| ¡ dk ƒ t| ¡ dkƒ d S )NrD   )rJ   é   rˆ   r   i   r¿   r   )	r   rP   r¶   r´   r   rº   r¹   r:   r·   )r6   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œ	}| j dd … D ]p}t d¡ tjd	krR| jd
dd|d�}n| jd
dd|d� ¡ }t | 	t
j¡¡ ¡ }t|t
 |¡j |kƒ q&t d¡ | jd
ddtd� 	t
j¡}t |¡ ¡ }t|t
 t¡j |kƒ d S )NZ@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71Z@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4Z@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92fZ@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9eZ@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	ÚboolÚint16Úint32rM   Úint8Úuint16rm   Úuint64Úuint8rD   rO   Úlittler   r   r1   r¿   r   )r¶   r   rP   ÚsysÚ	byteorderr´   ÚbyteswapÚhashlibÚsha256Úviewr:   rÌ   Ú	hexdigestr   rH   ÚnamerÉ   )r6   rÀ   r»   ÚvalÚresr$   r$   r%   Útest_repeatabilityI  s*    ø



zTestRandint.test_repeatabilityÚlr   zCannot test with 32-bit C long)Úreasonc                 C   sà   t  dddgdddgddd	ggd
ddgdddgdddggdddgdddgdddggdddgdd d!gd"d#d$ggd%d&d'gd(d)d*gd+d,d-ggg¡}d.D ]J}t d/¡ | jd0gd1gd2ggd3d4d5g|d6�}t||d k	rÐ|n|d1 ƒ q�d S )7Nl   áQö[ l   dm¬" l   ë0 l   ;¡i l   vlÔm l   iXp i\L¹_l   øZ N iwU¬'l   Ï<Ô~ l   È20l iPð?iÒfi¦ØwLl   @
Vo l   ðo“\ i„‘´wiý
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 i¸d‘i98l   ÙnDk l   ¬Jc i¹á”-l   š i¬MiŸ'ñ*l   äl¼, )N)rK   rI   rI   i90  r>   r   rD   r2   r   l       r�   )r:   rL   r   rP   r´   r   )r6   Údesiredr�   rh   r$   r$   r%   Ú.test_repeatability_32bit_boundary_broadcastingi  s6    þþþþþô
ÿz:TestRandint.test_repeatability_32bit_boundary_broadcastingc                 C   s^   t j}t  t j¡j}t  t  t j¡j¡}t  t  t j¡jd ¡}tj|||d�}t||ƒ d S r³   )r:   rM   r¸   rº   rÎ   r   r4   r   )r6   r»   rÀ   r¼   r½   Úactualr$   r$   r%   Útest_int64_uint64_corner_case�  s    z)TestRandint.test_int64_uint64_corner_casec                 C   sà   | j D ]^}|tjkrdn
t |¡j}|tjkr2dnt |¡jd }| j|||d�}t|jt |¡ƒ qt	t
tjjfD ]f}|t	kr„dn
t |¡j}|t	krœdnt |¡jd }| j|||d�}tt|dƒ ƒ tt|ƒ|ƒ qtd S )Nr   r   rD   rG   rH   )r¶   r:   r·   r¸   r¹   rº   r´   r   rH   rÉ   rX   ÚcompatÚlongr   ÚhasattrÚtype)r6   r»   r¼   r½   Úsampler$   r$   r%   Útest_respect_dtype_singleton˜  s    
z(TestRandint.test_respect_dtype_singletonN)rT   rU   rV   r   r4   r´   r:   r·   rÌ   rÏ   rÊ   rÍ   rË   rm   rM   rÎ   r¶   rµ   r¾   rÁ   rÅ   rÈ   rÛ   r€   Ú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^„ Z1e2j3 4d_e5 6d`da¡dbe5j7dcg¡ddde„ ƒZ8dfdg„ Z9dhdi„ Z:djdk„ Z;dldm„ Z<dndo„ Z=dpdq„ Z>drds„ Z?dtdu„ Z@dvdw„ ZAdxdy„ ZBdzd{„ ZCd|d}„ ZDd~d„ ZEd€d�„ ZFd‚dƒ„ ZGd„d…„ ZHd†d‡„ ZIdˆd‰„ ZJdŠd‹„ ZKdŒd�„ ZLdŽd�„ ZMd�d‘„ ZNd’d“„ ZOd”d•„ ZPd–d—„ ZQd˜d™„ ZRdšd›„ ZSdœd�„ ZTdždŸ„ ZUd d¡„ ZVd¢d£„ ZWd¤d¥„ ZXd¦d§„ ZYd¨d©„ ZZdªS )«ÚTestRandomDistc                 C   s
   d| _ d S r„   ©rP   rB   r$   r$   r%   r‡   ¯  s    zTestRandomDist.setup_methodc                 C   sF   t  | j¡ t  dd¡}t ddgddgddgg¡}t||d	d
� d S )NrI   r   ç_®\±*Íã?ç�›˜¬”îâ?ç<î�pì?ç®,º¥oˆì?çˆÂÉHÝ?çZ±­°êæè?é   ©Údecimal)r   rP   Úrandr:   rL   r   ©r6   rà   rÞ   r$   r$   r%   Ú	test_rand²  s    
þzTestRandomDist.test_randc                 C   s*   t  | j¡ t  ¡ }d}t||dd� d S )Nrë   rñ   rò   )r   rP   rô   r   rõ   r$   r$   r%   Útest_rand_singletonº  s    z"TestRandomDist.test_rand_singletonc                 C   sl   t  | j¡ t  dd¡}t ddgddgddgg¡}t||d	d
� t  | j¡ t  ¡ }t||d d	d
� d S )NrI   r   çÿ!ã<Oqõ?ç4ð�u,Íû?çÁ³½3Ûû÷?çL«I/DÍ¿çà@ËÀŽ? @çÿHSÓ\@rñ   rò   ©r   r   ©r   rP   Zrandnr:   rL   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 )Né�ÿÿÿéc   ©rI   r   r�   é   rI   éÌÿÿÿé)   éÐÿÿÿé¾ÿÿÿ)r   rP   r4   r:   rL   r   rõ   r$   r$   r%   Útest_randintÌ  s    
þzTestRandomDist.test_randintc              	   C   sÆ   t  | j¡ tƒ �0}| t¡}t jdddd�}tt|ƒdkƒ W 5 Q R X t 	ddgdd	gd
dgg¡}t
||ƒ t  | j¡ tƒ �.}| t¡}t jddd�}tt|ƒdkƒ W 5 Q R X t
||d ƒ d S )Nr  r  r  r�   rD   r  rI   r  r  r  r  éÆ   r   )r   rP   r	   r™   ÚDeprecationWarningÚrandom_integersr   r›   r:   rL   r   )r6   rŸ   r    rà   rÞ   r$   r$   r%   Útest_random_integersÔ  s     

þ

z#TestRandomDist.test_random_integersc                 C   sª   t  | j¡ t  | j¡}|jdd�}t t¡jdkrXtjddgddgdd	ggtj	d
�}n"tjddgddgddggtj	d
�}t
||ƒ | | j¡ | ¡ }t
||d ƒ d S )Nr  r�   iÿÿÿiÁª4OiÿË•+i³RºKiriFbÀqi™‡ÀrG   l   ÿK+W+¥y l   r&&ÌJÒ] l   ™�;	 l   Õ‹nBz l   ž@XÓHŒT l   D+l++Ý rþ   )r   rP   r3   r‰   r:   r¸   rX   rº   rL   rM   r   )r6   rQ   rà   rÞ   r$   r$   r%   Útest_tomaxintæ  s(    
þþ
þý
zTestRandomDist.test_tomaxintc              	   C   sÈ   t ƒ �<}| t¡}t t d¡jt d¡j¡}tt	|ƒdkƒ W 5 Q R X t d¡j}t
||ƒ t ƒ �P}| t¡}t d¡j}t |t d¡jƒ|t d¡jƒ¡}tt	|ƒdkƒ W 5 Q R X t
||ƒ d S )NrÜ   rD   )r	   r™   r  r   r  r:   r¸   rº   r   r›   r   rH   rå   )r6   rŸ   r    rà   rÞ   Ztyperr$   r$   r%   Útest_random_integers_max_intú  s     

ÿ

ÿz+TestRandomDist.test_random_integers_max_intc              	   C   sZ   t  ¡ �H t  dt¡ tttjt d¡j	ƒ tttjt d¡j	t d¡j	ƒ W 5 Q R X d S )NÚerrorrÜ   )
ÚwarningsÚcatch_warningsÚsimplefilterr  r   r   r  r:   r¸   rº   rB   r$   r$   r%   Útest_random_integers_deprecated  s    

þ
 
þz.TestRandomDist.test_random_integers_deprecatedc                 C   sj   t  | j¡ t  d¡}t ddgddgddgg¡}t||dd	� t  | j¡ t  ¡ }t||d
 dd	� d S )Nr  rë   rì   rí   rî   rï   rð   rñ   rò   rþ   )r   rP   r§   r:   rL   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 )NrJ   r   rI   ©r   rP   Úchoicer:   rL   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 )NrJ   çš™™™™™Ù?çš™™™™™¹?©rZ   rD   r   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 )NrJ   rI   F©Úreplacer   rD   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 )
NrJ   rI   Fr  ç333333Ó?r   ©r  rZ   r   rD   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ÚdrJ   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 )Nr>   rI   ç      @rD   r   rJ   g      Ð?r  r  r_   rr   rs   Fr  rE   )r>   )r>   rD   r   r!  )r   r  r   rA   )r6   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 )Nr  rt   r   Tr  Fr!  rD   rG   r   )r   rI   r  r_   r   )rI   r   rJ   r�   iöÿÿÿ)r   r   r-   r.   )r   r:   Zisscalarr   r  rL   Úemptyr¥   ÚtupleÚndimÚitemr   rn   r;   r4   r   rA   )r6   rZ   r-   Zarrr7   r$   r$   r%   Útest_choice_return_shape[  sL     ÿz'TestRandomDist.test_choice_return_shapec                 C   s0   t  dddg¡}d d d g}tttj||d� d S )Né*   rD   r   r  )r:   rL   r   rA   r   r  )r6   r-   rZ   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   rK   r&  rD   r   rI   r  )r:   Úonesr   rP   r  rz   r   )r6   rZ   r{   r|   r$   r$   r%   Útest_choice_p_non_contiguousŽ  s     z+TestRandomDist.test_choice_p_non_contiguousc                 C   s(   t  | j¡ t  d¡}d}t||ƒ d S )Nr   s
   ‚Uižÿ—+Wf¥)r   rP   Úbytesr   rõ   r$   r$   r%   Ú
test_bytes—  s    
zTestRandomDist.test_bytesc                 C   s¬   dd„ dd„ dd„ dd„ dd„ dd„ dd„ d	d„ d
d„ dd„ dd„ fD ]`}t  | j¡ |ddddddddddg
ƒ}t  |¡ |}|ddddddddddg
ƒ}t||ƒ qFd S )Nc                 S   s
   t  g ¡S r   )r:   rL   ©rh   r$   r$   r%   Ú<lambda>   ó    z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r   r$   r3  r$   r$   r%   r4  ¡  r5  c                 S   s   t  | ¡ t j¡S r   )r:   ÚasarrayÚastyperÌ   r3  r$   r$   r%   r4  ¢  r5  c                 S   s   t  | ¡ t j¡S r   )r:   r6  r7  r   r3  r$   r$   r%   r4  £  r5  c                 S   s   t  | ¡ t j¡S r   )r:   r6  r7  Z	complex64r3  r$   r$   r%   r4  ¤  r5  c                 S   s   t  | ¡ t¡S r   )r:   r6  r7  r¥   r3  r$   r$   r%   r4  ¥  r5  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$   r3  r$   r$   r%   r4  ¦  r5  c                 S   s   t  dd„ | D ƒ¡S )Nc                 S   s   g | ]}||g‘qS r$   r$   r8  r$   r$   r%   r;  §  s     r<  )r:   r6  r3  r$   r$   r%   r4  §  r5  c                 S   s   t  | | g¡jS r   )r:   ZvstackÚTr3  r$   r$   r%   r4  ¨  r5  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$   r8  r$   r$   r%   r;  ª  s     r<  r-   r.   )r:   r6  rX   rÖ   Zrecarrayr3  r$   r$   r%   r4  ª  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$   r8  r$   r$   r%   r;  ®  s     r<  r-   ©rD   r.   )r:   r6  r¥   rË   r3  r$   r$   r%   r4  ®  s   
ÿÿrD   r   rI   rJ   rK   r   é   rÆ   é	   r   )r   rP   Úshuffler   )r6   ÚconvÚalistrà   rÞ   r$   r$   r%   Útest_shuffle�  s$    ò
zTestRandomDist.test_shufflec                 C   sÈ   t j t  tdƒd¡d d d¡}t j t  d¡d d d¡}| ¡ }| ¡ }tdƒD ]d}t |¡ t	t
|j|j  ƒt
|j|j  ƒƒ t |¡ t	t
|j|j  ƒt
|j|j  ƒƒ qVdd„ }d S )	Nr   )rK   rJ   rI   rD   r>   é2   c                 S   s   t  d¡}tttj|ƒ d S )NrI   )r:   rL   r   r@   r   rA  rg   r$   r$   r%   Útest_shuffle_invalid_objectsÆ  s    
zHTestRandomDist.test_shuffle_masked.<locals>.test_shuffle_invalid_objects)r:   ÚmaZmasked_valuesZreshaper9   r;   Úcopyr   rA  r   ÚsortedÚdataÚmask)r6   r-   r.   Za_origZb_origr:  rF  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 )NrD   r   rI   rJ   rK   r   r?  rÆ   r@  r   Zabcdg333333ó?r   )	r   rP   Zpermutationr   r:   Z
atleast_2dr=  r   Ú
IndexError)r6   rC  rà   rÞ   Zarr_2dZ	bad_x_strZbad_x_floatZinteger_valr$   r$   r%   Útest_permutationÊ  s(    

 

zTestRandomDist.test_permutationc                 C   sJ   t  | j¡ t jdddd�}t ddgddgd	d
gg¡}t||dd� d S )Nr  rt   r  r�   gAàÁKÄ�?g‘ñØhA?g õÒ‡o¿>gÎ¬XfÈ+q?gSâë1Ã$?g'8zXŒ ?rñ   rò   )r   rP   Úbetar:   rL   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@gÉv¾Ÿ/Ý?r  r�   é%   é+   r-  é0   é.   é-   )r   rP   r   r:   rL   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 )NrE  r  r�   g+Qð]uðO@gëòìÇ+Q@gY7`´ZqP@gÈe‡(fŒG@gþv¯t€R@gEIÈ‹R@é   rò   )r   rP   Ú	chisquarer:   rL   r   rõ   r$   r$   r%   Útest_chisquareû  s    
þzTestRandomDist.test_chisquarec                 C   sÀ   t  | j¡ t ddg¡}t j|dd�}t ddgddggd	d
gddggddgddggg¡}t||dd� t ddg¡}ttt j|ƒ t  | j¡ t ddg¡}t  |¡}t||d dd� d S )Nç“­I<ÝI@ç÷ÉEZßC@r  r�   gÉi{ßsá?gn,	åAÝ?göÇ]‹^óã?gpDéBØ?gÈ§#¼yªá?gr°¸‡«Ü?g—«1UÞâ?gÈÑ¨œUCÚ?g£…^,%÷â?g»ôB§µÚ?gÚ‰OoX;â?gMì`!O‰Û?rñ   rò   çHáz®Gá?ç¼‰Ø—²Òœ¼rþ   )r   rP   r:   rL   Ú	dirichletr   r   rA   )r6   Ú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 )NrZ  r[  rD   rj   r   rk   rl   )
r:   rL   r   r   r^  rm   rn   r   r@   ro   rp   r$   r$   r%   Útest_dirichlet_size  s    z"TestRandomDist.test_dirichlet_sizec                 C   s    t  ddg¡}tttj|ƒ d S )Nr\  r]  )r:   rL   r   rA   r   r^  )r6   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 )NrZ  g      ð¿r[  r   r  r�   )r:   rL   r   rP   r^  rz   r   )r6   r-   r_  r{   r|   r$   r$   r%   Ú#test_dirichlet_alpha_non_contiguous'  s    ÿz2TestRandomDist.test_dirichlet_alpha_non_contiguousc                 C   sH   t  | j¡ t jddd�}t ddgddgdd	gg¡}t||d
d� d S )Ngï8EGrùñ?r  r�   gN÷·Uñ?gbI0æð?gùVU\õº@gˆ:€ì3ù@g©ºUýå?g�Ÿ"qoû?rñ   rò   )r   rP   Úexponentialr:   rL   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   ©Úscaleç       €)r   r   rd  r   rA   rB   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�   g7¶„ó?gµ`j‹�ü?g6¶"+÷?gÜ³2>•‰ó?g‘cÍ>+Yð?g¡_}áS‚õ?rñ   rò   )r   rP   Úfr:   rL   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 )NrK   rI   r  r�   gÔ�GMçš8@g §â”ÈŒ<@g˜	´":@gÂvÀñÇ#)@gZQø·?@gr‚‚[•¦@@é   rò   )r   rP   Úgammar:   rL   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   )rn   rh  ri  )r   r   rp  r   rA   rB   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 )	Nç_c97Ýš¿?r  r�   rÆ   r?  é   rK   rk  )r   rP   r   r:   rL   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 5 Q R X d S )Nrr   r   rs   )	r   rA   r   r   r	   r™   rš   r:   r\   ©r6   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 )Nrs  ç       @r  ©Úlocrh  r�   gåûØ•ßÉ?g¨s0í Ö?gÊð#0÷¿gï(ôx”÷¿g-¶KÇD´ñ?géÅ¯p`@æ¿rñ   rò   )r   rP   Úgumbelr:   rL   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 rf  )r   r   r{  r   rA   rB   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      @ro  r  r�   r   r@  rK   r   rI   rJ   rñ   rk  )r   rP   r   r:   rL   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 )Nrs  rx  r  ry  gð¥ bÙOå?g¹Â¸ëÉçà?gpJmµú	@g{KÏ*Ët	@g•:^w-š«¿gˆY~oõûû?rñ   rò   )r   rP   Úlaplacer:   rL   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 rf  )r   r   r  r   rA   rB   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 )Nrs  rx  r  ry  g#€�K-zñ?g€îJš¬ë?g�92ÄÜ@gØ±ã÷[@gê#+^ÑÀË¿g¢¥-óâ@rñ   rò   )r   rP   Úlogisticr:   rL   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 )Nrs  rx  r  )ÚmeanÚsigmar�   g›ŽòÚÉ�0@goÎ,+4FB@gù�ƒ)Ê­6@g†§5éêæ?gnþxN—nP@g…©)‡úµU@rW  rò   )r   rP   Ú	lognormalr:   rL   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…  rD   ri  )r   r   r†  r   rA   rB   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  )rZ   r�   r   r   rt  rI   )r   rP   r   r:   rL   r   rõ   r$   r$   r%   Útest_logseries©  s    
þzTestRandomDist.test_logseriesc                 C   s   t  d¡dkst‚d S )Nr   rD   )r   r   rž   rB   r$   r$   r%   Útest_logseries_zero±  s    z"TestRandomDist.test_logseries_zeroÚvaluerc   r>   ç      ð?g      @c              
   C   sž   t jdd��ˆ t t¡� t |¡ W 5 Q R X t t¡� t t  |gd ¡¡ W 5 Q R X t t¡�& t t  |gd ¡d d d… ¡ W 5 Q R X W 5 Q R X d S )NÚignore©Úinvalidr   r   )r:   Úerrstater€   r�   rA   r   r   rL   )r6   r‹  r$   r$   r%   Útest_logseries_exceptions´  s     z(TestRandomDist.test_logseries_exceptionsc                 C   s”   t  | j¡ t jddgd dd�}t ddddd	d	gdd	d
d	d	dggddddddgd	dddddggddd	dd	dgdddd	ddggg¡}t||ƒ d S )Nr   çUUUUUUÅ?r   r  r�   rJ   rI   rK   r   rÆ   rD   r   )r   rP   r   r:   rL   r   rõ   r$   r$   r%   Útest_multinomialÀ  s    ÿÿÿüzTestRandomDist.test_multinomialc           	   	   C   s®  t  | j¡ d}ddgddgg}d}t  |||¡}t ddgddggd	d
gddggddgddggg¡}t||dd� t  ||¡}t ddg¡}t||dd� ddg}ddgddgg}ttt j||ƒ tt j||dd� t	t
t j||dd� tjddgddggtjd�}tƒ �.}t  ||¡ | t¡}t|ƒdk�s6t‚W 5 Q R X t d¡}t d¡}t	t
t j||dd� t	t
t jt d¡|ƒ t	t
t j|t d¡ƒ t	t
t j|t d¡ƒ d S )N)rs  r   rD   r   r  g4¸Výj÷?g¾±Ž¥y'@g÷I1‰õù?g—SÙBïŠ#@gû…ªe<@g ÒÔ4W(@g6ŠRÂ¿„û?gò9r
v"@g‹–Ñ�æ?g{§×ïÂ#@gò4Íx›—¿gÇçú"öf"@rñ   rò   gN}©O6¦ì?gÐÇYM÷W"@r   r�  )Zcheck_validÚraiser  rG   Úother)r   rD   rD   rI   )r   rP   Zmultivariate_normalr:   rL   r   r   rš   r   r   rA   r   r	   r™   r›   rž   rY   Zeyer(  )	r6   r„  Zcovr�   rà   rÞ   rŸ   r    Úmur$   r$   r%   Útest_multivariate_normalË  sd    
ÿÿÿü
ÿÿ


ÿ ÿ ÿ ÿz'TestRandomDist.test_multivariate_normalc                 C   sF   t  | j¡ t jdddd�}t ddgddgd	d
gg¡}t||ƒ d S )Nr   g|ò°Pkš¿?r  )ÚnrZ   r�   iP  iI  i|  ic  i  i‡  )r   rP   r   r:   rL   r   rõ   r$   r$   r%   r˜   þ  s    
þz%TestRandomDist.test_negative_binomialc              	   C   sJ   t ƒ �:}| t¡ tttjdtjƒ tttjdtjgd ƒ W 5 Q R X d S )Nr   r   )	r	   r™   rš   r   rA   r   r   r:   r\   rv  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 )NrK   r  )ÚdfÚnoncr�   gôûÖGë7@g!© ÈÜ´*@gž1}“z9?@g¹+é©¸™0@g26E_r#@g¦�I�!ó1@ro  rò   r   r_   g�÷ô‹÷?g’šT¶ˆDÃ?gÀõ?Tƒ?gÍ+òqnlð?gÓ~|òùDÕ?gë°¬òÇÃ?r   g›{¿0¾1#@gpŽ§²rs'@gþ~;ïÑÓ$@g"‹†dIŽ@gö°Õöë÷*@gÑ}Ÿ'Á,@)r   rP   Únoncentral_chisquarer:   rL   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 )NrK   r   rD   r  )ÚdfnumÚdfdenr›  r�   gŒ^ýíå~ö?gƒ/+c¢äÕ?g"¡®.ž@gü†Œ÷Ž´@g×7í§ŸþÛ?g»ŒE·Öò?ro  rò   )r   rP   Únoncentral_fr:   rL   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 )NrK   r   )rž  rŸ  r›  )r   rP   r   r:   r\   Úisnanrž   )r6   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 )Nrs  rx  r  ry  gíœ&&n@gO»G_Ê@gÜ~w²ø@gtÁÜûw]Õ¿gm&¨5ú½@gŒñ$È>Û@rñ   rò   )r   rP   Únormalr:   rL   r   rõ   r$   r$   r%   Útest_normal0  s    
þzTestRandomDist.test_normalc                 C   s&   t tjdd�dƒ tttjdd� d S rf  )r   r   r¤  r   rA   rB   r$   r$   r%   Útest_normal_08  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 )Nrs  r  ©r-   r�   gÅWò˜I£@gùÔ¨y–@gy£Ÿ]Ó0‰Ag1~ÖÒ\�AgåËíãša@gÑY„
²7Aé   )Znulp)r   rP   Úparetor:   rL   ZtestingZassert_array_almost_equal_nulprõ   r$   r$   r%   Útest_pareto<  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 )Nrs  r  )Úlamr�   r   rD   )r   rP   r   r:   rL   r   rõ   r$   r$   r%   Útest_poissonK  s    
þzTestRandomDist.test_poissonc              	   C   sš   t  d¡j}d}tttj|ƒ tttj|gd ƒ tttj|ƒ tttj|gd ƒ tƒ �6}| t	¡ tttjt j
ƒ tttjt j
gd ƒ W 5 Q R X d S )NrÜ   r>   r   )r:   r¸   rº   r   rA   r   r   r	   r™   rš   r\   )r6   ZlambigZlamnegrŸ   r$   r$   r%   Útest_poisson_exceptionsS  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 )Nrs  r  r§  gõ;•'û”?gÜ´èwÞ*�?g×†5›Ø?gF¡GÙ?g ÆËD]?gýÞ$`°ÉÀ?rñ   rò   )r   rP   Úpowerr:   rL   r   rõ   r$   r$   r%   Ú
test_power_  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  )rh  r�   g"íu¨ÈÆ+@gîN$MBÄ*@g7v8Bô4@gêÿª55@geãˆ&@g~ŽÓ£ÌZ1@ro  rò   )r   rP   Úrayleighr:   rL   r   rõ   r$   r$   r%   Útest_rayleighg  s    
þzTestRandomDist.test_rayleighc                 C   s&   t tjdd�dƒ tttjdd� d S rf  )r   r   r°  r   rA   rB   r$   r$   r%   Útest_rayleigh_0o  s    zTestRandomDist.test_rayleigh_0c                 C   sF   t  | j¡ t jdd�}t ddgddgddgg¡}t||d	d
� d S )Nr  r�   gMo³DL®è?g6Ï([9ÀgðºrF=òí?gÉM'	-™ ÀgóV¼ëûÀgVA:ìQyÇ?rñ   rò   )r   rP   Zstandard_cauchyr:   rL   r   rõ   r$   r$   r%   Útest_standard_cauchys  s    
þz#TestRandomDist.test_standard_cauchyc                 C   sF   t  | j¡ t jdd�}t ddgddgddgg¡}t||d	d
� d S )Nr  r�   g°ö–Ü�Üî?gc!z¨ì?g&N˜¥"�@g¬NIàŠÇ@gFÇï>ú’ã?g¡~‚MEø?rñ   rò   )r   rP   Zstandard_exponentialr:   rL   r   rõ   r$   r$   r%   Útest_standard_exponential{  s    
þz(TestRandomDist.test_standard_exponentialc                 C   sH   t  | j¡ t jddd�}t ddgddgdd	gg¡}t||d
d� d S )NrI   r  )rn   r�   g)§ž@g¾§Ä¾¤„@gd]‰,qÂ@gP‡kÌ{@g9B#Œ1@gÔÚv÷‡ @ro  rò   )r   rP   Ústandard_gammar:   rL   r   rõ   r$   r$   r%   Útest_standard_gammaƒ  s    
þz"TestRandomDist.test_standard_gammac                 C   s&   t tjdd�dƒ tttjdd� d S )Nr   )rn   ri  )r   r   rµ  r   rA   rB   r$   r$   r%   Útest_standard_gamma_0‹  s    z$TestRandomDist.test_standard_gamma_0c                 C   sF   t  | j¡ t jdd�}t ddgddgddgg¡}t||d	d
� d S )Nr  r�   rø   rù   rú   rû   rü   rý   rñ   rò   )r   rP   r‘   r:   rL   r   rõ   r$   r$   r%   Útest_standard_normal�  s    
þz#TestRandomDist.test_standard_normalc                 C   s0   t  | j¡ t  ¡ }t d¡}t||dd� d S )Nrø   rñ   rò   rÿ   rõ   r$   r$   r%   Útest_randn_singleton—  s    
z#TestRandomDist.test_randn_singletonc                 C   sH   t  | j¡ t jddd�}t ddgddgdd	gg¡}t||d
d� d S )Nr   r  )rš  r�   g\VÔHÂï?gßhUÍ%›¶¿gÿH$ðMÏõ?güøüL›³á¿gV«qdz¥Ç¿gã–€Õý“ã?rñ   rò   )r   rP   Ú
standard_tr:   rL   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{®Gáz@gö(\�Âu$@g×£p=
W4@r  )ÚleftÚmodeÚrightr�   g:§}ŒÂ\)@ghØ±TjÓ(@g‡Ç¨L‰30@g6Úœ™ÅA0@g6¤õ—sh&@gœí<Šáþ,@ro  rò   )r   rP   Ú
triangularr:   rL   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 )Nç®Gáz®ó?g®Gáz%@r  )ÚlowÚhighr�   g>#¥HÃö@g£¨uºó@g•ï‡§Ý#@g„}d]#@gø†‰N¶õ@g­w)*ó @rñ   rò   )r   rP   Úuniformr:   rL   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 )Nro   r   rD   g  Ø…W4vC)rÂ  rÃ  )
r:   Zfinfor¹   rº   r   rÄ  r   ÚOverflowErrorÚinfÚ	nextafter)r6   ZfminZfmaxÚfuncr$   r$   r%   Útest_uniform_range_bounds¶  s    z(TestRandomDist.test_uniform_range_boundsc                 C   sj   G dd„ dt jƒ}t  d¡ |¡}tttj||ƒ G dd„ dt jƒ}t  d¡ |¡}tttj|ddƒ d S )Nc                   @   s   e Zd Zdd„ ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc                 S   s   t ‚d S r   ©r@   rB   r$   r$   r%   Ú	__float__Î  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)rT   rU   rV   rÌ  r$   r$   r$   r%   ÚThrowingFloatÍ  s   rÍ  rŒ  c                   @   s   e Zd Zdd„ ZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc                 S   s   t ‚d S r   rË  rB   r$   r$   r%   Ú__int__Ö  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)rT   rU   rV   rÎ  r$   r$   r$   r%   ÚThrowingIntegerÕ  s   rÏ  rD   )	r:   ZndarrayrL   rÖ   r   r@   r   rÄ  r   )r6   rÍ  Zthrowing_floatrÏ  Zthrowing_intr$   r$   r%   Ú!test_scalar_exception_propagationÆ  s    
ÿz0TestRandomDist.test_scalar_exception_propagationc                 C   sJ   t  | j¡ t jdddd�}t ddgddgd	d
gg¡}t||dd� d S )NrÁ  ç¤p=
×£ø?r  ©r–  Úkappar�   gL×üZI@g¦¢'N"@gÀ·…þkrØ?g”k=mœ@g�¹Ú‰ó?gÜ^Ì=�\ý?rñ   rò   ©r   rP   Úvonmisesr:   rL   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 )Nrc   gg5_PŸG>é@B rÒ  )r   rP   rÕ  r   r:   Úisfiniterf   ©r6   Ú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 )
Nrc   g    ÐcArI   rÒ  g  AÔü^>?g @’ÌR7?g x¢.¿rÆ   rò   rÔ  rõ   r$   r$   r%   Útest_vonmises_largeê  s    þz"TestRandomDist.test_vonmises_largec                 C   s.   t  | j¡ t jdtjd�}tt |¡ƒ d S )Nrc   )r–  rÓ  )r   rP   rÕ  r:   r\   r   r¢  rÙ  r$   r$   r%   Útest_vonmises_nanó  s    z TestRandomDist.test_vonmises_nanc                 C   sJ   t  | j¡ t jdddd�}t ddgddgd	d
gg¡}t||dd� d S )NrÁ  rÑ  r  )r„  rh  r�   gÉZ¥ƒ¢@g-ïŸg†@g¦8
ÄÖmÖ?gÃÎVP"ø?g`Vô áÎ?gx©^½&3Ì?ro  rò   )r   rP   Úwaldr:   rL   r   rõ   r$   r$   r%   Ú	test_waldø  s    
þzTestRandomDist.test_waldc                 C   sH   t  | j¡ t jddd�}t ddgddgdd	gg¡}t||d
d� d S )NrÁ  r  r§  g@–Ý6ï?g¦Óé]Aí?g(Ã1Ú¥Rþ?gù¤U þ?g“Í2§_uå?g^}-­Qö?rñ   rò   )r   rP   Úweibullr:   rL   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   rk  r§  ri  )r-   )r   rP   r   rà  r:   rY   r   rA   rB   r$   r$   r%   Útest_weibull_0  s    zTestRandomDist.test_weibull_0c                 C   sD   t  | j¡ t jddd�}t ddgddgddgg¡}t||ƒ d S )	NrÁ  r  r§  éB   é   rD   rI   rW  )r   rP   r   r:   rL   r   rõ   r$   r$   r%   Ú	test_zipf  s    
þzTestRandomDist.test_zipfN)[rT   rU   rV   r‡   rö   r÷   r   r	  r  r  r  r  r  r  r  r  r"  r%  r'  r,  r.  r0  r2  rD  rL  rN  rP  rV  rY  r`  ra  rb  rc  re  rj  rn  rq  rr  ru  rw  r|  r}  r~  r€  r�  rƒ  r‡  rˆ  r‰  rŠ  r€   rè   Zparametrizer:   rÈ  r\   r‘  r“  r—  r˜   r™  r�  r¡  r£  r¥  r¦  rª  r¬  r­  r¯  r±  r²  r³  r´  r¶  r·  r¸  r¹  r»  rÀ  rÅ  rÊ  rÐ  rÖ  rÛ  rÜ  rÝ  rß  rá  râ  rå  r$   r$   r$   r%   ré   «  s¦   .		


3			ré   c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAS )BÚTestBroadcastc                 C   s
   d| _ d S )NéÍ[rê   rB   r$   r$   r%   r‡     s    zTestBroadcast.setup_methodc                 C   s   t  | j¡ d S r   )r   rP   rB   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   rD   çºlö×÷á?ç_x¤¥á?ç=å*BNà?rI   ro  rò   )r   rÄ  r:   rL   rè  r   )r6   rÂ  rÃ  rÄ  rÞ   rà   r$   r$   r%   rÅ    s    þzTestBroadcast.test_uniformc                 C   s˜   dg}dg}dg}t j}t dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   rD   r>   g-rö´@g¦Y®lõ@g-µ`¦wý?rI   ro  rò   )r   r¤  r:   rL   rè  r   r   rA   )r6   rz  rh  Ú	bad_scaler¤  rÞ   rà   r$   r$   r%   r¥  /  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 )NrD   r   r>   rE   gnÍQVfÉ?gV©‹šKB³?gv®`køÏ?rI   ro  rò   )r   rO  r:   rL   rè  r   r   rA   )r6   r-   r.   Úbad_aZbad_brO  rÞ   rà   r$   r$   r%   rP  B  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 ©	NrD   r>   gö.Ug¬Zè?gi Pr�qè?gçÅEKÌæ?rI   ro  rò   )r   rd  r:   rL   rè  r   r   rA   )r6   rh  rì  rd  rÞ   rà   r$   r$   r%   re  X  s    þzTestBroadcast.test_exponentialc                 C   sX   dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ d S rî  )r   rµ  r:   rL   rè  r   r   rA   )r6   rn   Ú	bad_shapeZ	std_gammarÞ   rà   r$   r$   r%   r¶  e  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 )NrD   r   r>   rE   gö.Ug¬Zø?gi Pr�qø?gçÅEKÌö?rI   ro  rò   )r   rp  r:   rL   rè  r   r   rA   )r6   rn   rh  rï  rì  rp  rÞ   rà   r$   r$   r%   rq  r  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 )NrD   r   r>   rE   gb—�yÊœé?g»åoðÄë?gT¹æ7Í@rI   ro  rò   )r   rm  r:   rL   rè  r   r   rA   )r6   rž  rŸ  Ú	bad_dfnumÚ	bad_dfdenrm  rÞ   rà   r$   r$   r%   rn  ˆ  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 ƒ¡¡s„t	‚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   rI   rJ   r   r>   rE   gÈr±^G"@g/�*@g‹°�Ñ†š!@ro  rò   )r   r   r:   rL   rè  r   rf   r¢  r\   rž   r   rA   )
r6   rž  rŸ  r›  rð  rñ  Úbad_noncZnonc_frÞ   rà   r$   r$   r%   r¡  ž  s<    þ$zTestBroadcast.test_noncentral_fc                 C   s:   |   ¡  t ddg¡}tjddddd�}t||dd� d S )Ng¬ªaŒ‚z@gn4M;î%é?rt   r   r�   ro  rò   )rè  r:   rL   r   r   r   )r6   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 )	NrD   r>   g~¼}ÐN?â?g‘$FŽŸà?g'rS�èÀ?rI   ro  rò   )r   rX  r:   rL   rè  r   r   rA   )r6   rš  Úbad_dfrX  rÞ   rà   r$   r$   r%   rY  Ç  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 )NrD   r   r>   rE   g©ç wÌ "@g2øêWR@g�ˆâRY@rI   ro  rò   )r   rœ  r:   rL   rè  r   r   rA   )r6   rš  r›  rô  rò  Znonc_chirÞ   rà   r$   r$   r%   r�  Ô  s&    þz'TestBroadcast.test_noncentral_chisquarec                 C   sj   dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ ttt j|d ƒ d S )	NrD   r>   gTÄò�@g~‹Fžl@gÆštø�pð?rI   ro  rò   )r   rº  r:   rL   rè  r   r   rA   )r6   rš  rô  ÚtrÞ   rà   r$   r$   r%   r»  ê  s    þzTestBroadcast.test_standard_tc                 C   s˜   dg}dg}dg}t j}t dddg¡}|  ¡  ||d |ƒ}t||dd	� tt||d |ƒ |  ¡  |||d ƒ}t||dd	� tt|||d ƒ d S )
Nr   rD   r>   g´®W!è@gü�OBº¦ÀgÈ}Ç?àý¿rI   ro  rò   )r   rÕ  r:   rL   rè  r   r   rA   )r6   r–  rÓ  Z	bad_kapparÕ  rÞ   rà   r$   r$   r%   rÖ  ø  s     þzTestBroadcast.test_vonmisesc                 C   sj   dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ ttt j|d ƒ d S )	NrD   r>   g&ƒ8¾?ò?g�e�âFXò?gªÕ‹Ë�Ÿð?rI   ro  rò   )r   r©  r:   rL   rè  r   r   rA   )r6   r-   rí  r©  rÞ   rà   r$   r$   r%   rª    s    þzTestBroadcast.test_paretoc                 C   sj   dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||dd� tt||d ƒ ttt j|d ƒ d S rî  )r   rà  r:   rL   rè  r   r   rA   )r6   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 )	NrD   r>   ré  rê  rë  rI   ro  rò   )r   r®  r:   rL   rè  r   r   rA   )r6   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   rD   r>   g:¨×BKc±?gÖ3®šk²?gî~qÉÁ“?rI   ro  rò   )r   r  r:   rL   rè  r   r   rA   )r6   rz  rh  rì  r  rÞ   rà   r$   r$   r%   r€  5  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   rD   r>   gÈ'�£ZyÑ?g÷dSO=Ñ?gÏ3Lõ1³Õ?rI   ro  rò   )r   r{  r:   rL   rè  r   r   rA   )r6   rz  rh  rì  r{  rÞ   rà   r$   r$   r%   r|  H  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   rD   r>   gÂ“y±ÕÀ?gªÀJõR�Á?gþ
~Æ&‘£?rI   ro  rò   rŒ  rc   )	r   r‚  r:   rL   rè  r   r   rA   r   )r6   rz  rh  rì  r‚  rÞ   rà   r$   r$   r%   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   rD   r>   gÄñò�ÏH"@g¼ùÜ®ƒÍ @gvv	ý²:@rI   ro  rò   )r   r†  r:   rL   rè  r   r   rA   )r6   r„  r…  Z	bad_sigmar†  rÞ   rà   r$   r$   r%   r‡  o  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 )	NrD   r>   gÝ±lËo½ó?gé/Ó‚´Æó?gz~ßRó?rI   ro  rò   )r   r°  r:   rL   rè  r   r   rA   )r6   rh  rì  r°  rÞ   rà   r$   r$   r%   r±  „  s    þzTestBroadcast.test_rayleighc                 C   s  dg}dg}dg}dg}t j}t dddg¡}|  ¡  ||d |ƒ}t||d	d
� tt||d |ƒ tt||d |ƒ ttt j|d |ƒ ttt j|d |ƒ |  ¡  |||d ƒ}t||d	d
� tt|||d ƒ tt|||d ƒ tt|ddƒ tt|ddƒ d S )Nr   rD   r   rE   g@mò ‰e¾?g¸�`ŸIß¿?g¸‡|2‹í?rI   ro  rò   rc   )r   rÞ  r:   rL   rè  r   r   rA   )r6   r„  rh  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 )NrD   rI   r   rJ   g,âP;bD @gºÁ±È%G @g,~S²¨ @ro  rò   r   rc   g      4@g      9@)r   r¿  r:   rL   rè  r   r   rA   )r6   r¼  r¾  r½  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor¿  rÞ   rà   r$   r$   r%   rÀ  «  sL    þÿÿ
ÿzTestBroadcast.test_triangularc           	      C   sä   dg}dg}dg}dg}dg}t j}t dddg¡}|  ¡  ||d |ƒ}t||ƒ tt||d |ƒ tt||d |ƒ tt||d |ƒ |  ¡  |||d ƒ}t||ƒ tt|||d ƒ tt|||d ƒ tt|||d ƒ d S )NrD   r   r>   ç      ø?rI   )r   r   r:   rL   rè  r   r   rA   )	r6   r˜  rZ   Úbad_nÚ	bad_p_oneÚ	bad_p_twoZbinomrÞ   rà   r$   r$   r%   rV  Ó  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 )NrD   r   r>   rö  r   rI   )r   r   r:   rL   rè  r   r   rA   )	r6   r˜  rZ   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 )NrD   r>   r   r   rI   )
r   r3   Z_poisson_lam_maxr   r:   rL   rè  r   r   rA   )r6   Zmax_lamr«  Zbad_lam_oneZbad_lam_twor   rÞ   rà   r$   r$   r%   r¬    s    


zTestBroadcast.test_poissonc              	   C   sŽ   dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||ƒ tt||d ƒ tjdd��( tt|tj	ƒ tt|ddtj	gƒ W 5 Q R X d S )Nr   r   rD   rI   r�  rŽ  )
r   r   r:   rL   rè  r   r   rA   r�  r\   )r6   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 )Nr   r>   rö  r   rI   )r   r   r:   rL   rè  r   r   rA   )r6   rZ   rø  rù  ZgeomrÞ   rà   r$   r$   r%   ru    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 )NrD   r   r>   rE   r   rJ   rI   r   r   é   )r   r   r:   rL   rè  r   r   rA   )r6   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomrÞ   rà   r$   r$   r%   r~  +  sD    


z!TestBroadcast.test_hypergeometricc                 C   sj   dg}dg}dg}t j}t dddg¡}|  ¡  ||d ƒ}t||ƒ tt||d ƒ tt||d ƒ d S )Nr   r   r>   rD   rI   )r   r   r:   rL   rè  r   r   rA   )r6   rZ   rø  rù  r   rÞ   rà   r$   r$   r%   r‰  S  s    
zTestBroadcast.test_logseriesN)#rT   rU   rV   r‡   rè  rÅ  r¥  rP  re  r¶  rq  rn  r¡  ró  rY  r�  r»  rÖ  rª  rá  r¯  r€  r|  rƒ  r‡  r±  rß  rÀ  rV  r˜   r¬  rå  ru  r~  r‰  r$   r$   r$   r%   ræ    s@   #((ræ  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestThreadc                 C   s   t dƒ| _d S )NrJ   )r9   ÚseedsrB   r$   r$   r%   r‡   c  s    zTestThread.setup_methodc                    sÊ   ddl m‰  t t| jƒf| ¡}t t| jƒf| ¡}‡ ‡fdd„t| j|ƒD ƒ}dd„ |D ƒ dd„ |D ƒ t| j|ƒD ]\}}ˆt |¡|ƒ q|t 	¡ j
jdkr¼tjdkr¼t||ƒ n
t||ƒ d S )	Nr   )ÚThreadc                    s&   g | ]\}}ˆ ˆt  |¡|fd �‘qS ))ÚtargetÚargs)r   r3   )r9  r7   Úo©rý  Úfunctionr$   r%   r;  m  s   ÿz-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r$   )Ústart©r9  rh   r$   r$   r%   r;  o  s     c                 S   s   g | ]}|  ¡ ‘qS r$   )Újoinr  r$   r$   r%   r;  p  s     rJ   Úwin32)Ú	threadingrý  r:   r(  r›   rü  Úzipr   r3   ZintprH   ÚitemsizerÑ   Úplatformr   r   )r6   r  ÚszZout1Zout2rõ  r7   r   r$   r  r%   Úcheck_functionf  s    
ÿzTestThread.check_functionc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j dd�|d< d S )Né'  r�   .)r¤  ©r(   Úoutr$   r$   r%   Ú
gen_random}  s    z*TestThread.test_normal.<locals>.gen_random)r  ©r  ©r  ©r6   r  r$   r$   r%   r¥  |  s    zTestThread.test_normalc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j t d¡d�|d< d S )N©r   r1   rg  .)rd  r:   r/  r  r$   r$   r%   r  ƒ  s    z'TestThread.test_exp.<locals>.gen_randomr  r  r  r  r$   r$   r%   Útest_exp‚  s    zTestThread.test_expc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j ddgd dd�|d< d S )Nr   r’  r   r  r�   .)r   r  r$   r$   r%   r  ‰  s    z/TestThread.test_multinomial.<locals>.gen_random)r  r   r  r  r  r$   r$   r%   r“  ˆ  s    zTestThread.test_multinomialN)rT   rU   rV   r‡   r  r¥  r  r“  r$   r$   r$   r%   rû  a  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   rI   rJ   r>  )r:   rL   ÚargOneÚargTwoÚargThreeÚtgtShaperB   r$   r$   r%   r‡   ‘  s    z$TestSingleEltArrayInput.setup_methodc                 C   s€   t jt jt jt jt jt jt jt jt j	t j
t jt jf}t jt jf}|D ]6}||krb|t dg¡ƒ}n
|| jƒ}t|j| jƒ qDd S r—   )r   rd  rµ  rX  rº  r©  rà  r®  r°  r   r   r   r   r:   rL   r  r   rn   r  )r6   ÚfuncsÚ	probfuncsrÉ  r  r$   r$   r%   Útest_one_arg_funcs—  s$         û
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   sÈ   t jt jt jt jt jt jt jt jt j	t j
t jt jt jt jf}t jt jf}|D ]v}||krft dg¡}n| j}|| j|ƒ}t|j| jƒ || jd |ƒ}t|j| jƒ || j|d ƒ}t|j| jƒ qLd S )Nr   r   )r   rÄ  r¤  rO  rp  rm  rœ  rÕ  r  r{  r‚  r†  rÞ  r   r   r:   rL   r  r  r   rn   r  )r6   r  r  rÉ  r  r  r$   r$   r%   Útest_two_arg_funcsª  s2          úz*TestSingleEltArrayInput.test_two_arg_funcsc                 C   s†   t jt jt jg}|D ]l}|| j| j| jƒ}t|j| j	ƒ || jd | j| jƒ}t|j| j	ƒ || j| jd | jƒ}t|j| j	ƒ qd S )Nr   )
r   r   r¿  r   r  r  r  r   rn   r  )r6   r  rÉ  r  r$   r$   r%   Útest_three_arg_funcsÅ  s    ÿz,TestSingleEltArrayInput.test_three_arg_funcsN)rT   rU   rV   r‡   r  r  r  r$   r$   r$   r%   r  �  s   r  c                 C   sD   t  d¡ | \}}}tt |ƒ}||ddiŽ}t|jt d¡kƒ d S )Nrç  r�   r   rÜ   )r   rP   Úgetattrr   rH   r:   )r&   Úfnamerÿ  rÕ   rm  rà   r$   r$   r%   Útest_integer_dtypeÕ  s
    


r"  c                 C   sd   t  d¡ | \}}}tt |ƒ}||ddiŽ}tjdkr>| ¡ }t | t	j
¡¡ ¡ }t||kƒ d S )Nrç  r�   r×  rÐ   )r   rP   r   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r:   rÌ   r×   r   )r&   r!  rÿ  rÕ   rm  rÙ   rÚ   r$   r$   r%   Útest_integer_repeatÝ  s    



r#  c                	   C   s†   t  t¡� tjdddgdd� W 5 Q R X t  t¡� tjddgddd� W 5 Q R X t  t¡� tjddgddgdd� W 5 Q R X d S )NrD   r   gffffffæ?)r   rD   r�   r   )r€   r�   rA   r   r   r$   r$   r$   r%   Útest_broadcast_size_errorè  s    r$  ))rÔ   r¨   rÑ   r  Znumpyr:   r€   Znumpy.testingr   r   r   r   r   r   r   r	   Znumpy.randomr
   r   r   r/  r!   r¸   rX   rº   r"   Zfixturer&   r/   r0   rW   r^   rƒ   r²   ré   ræ  rû  r  r"  r#  r$  r$   r$   r$   r%   Ú<module>   s|   (ù
ù
ù
/5W "      q    O/E