a
    ³ÐOc±º ã                   @   s,  d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZ eeƒ ƒZd ddddœd	d
dœdœdddddœdddœdœg d¢ddddœdddœdœgZejddd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G d*d+„ d+ƒZ G d,d-„ d-ƒZ!G d.d/„ d/ƒZ"G d0d1„ d1ƒZ#ej$ %d2e¡d3d4„ ƒZ&d5d6„ Z'd7d8„ Z(d9d:„ Z)ej$ %d;d<d<gg¡ej$ %dddg¡d=d>„ ƒƒZ*ej$ %d?d@dAg¡dBdC„ ƒZ+ej$ %d?d@dAg¡ej$ %dDdEdFg¡ej$ %dGej,ejg¡dHdI„ ƒƒƒZ-dS )Jé    N)ÚLinAlgError)	Úassert_Úassert_raisesÚassert_equalÚassert_allcloseÚassert_warnsÚassert_no_warningsÚassert_array_equalÚassert_array_almost_equalÚsuppress_warnings)Ú	GeneratorÚMT19937ÚSeedSequenceÚRandomStateé
   Z@bb1636883c2707b51c5b7fc26c6927af4430f2e0785a8c7bc886337f919f9edfé	   )Ú
key_sha256ÚposZ@ff682ac12bb140f2d72fba8d3506cf4e46817a0db27aae1683867629031d8d55iV  )ÚseedÚstepsÚinitialÚjumpedi$<ñi8  Z@16b791a1e04886ccbbb4d448d6ff791267dc458ae599475d08d5cced29d11614i7  Z@a0110a2cf23b56be0feaed8f787a7fc84bef0cb5623003d75b26bdfa1c18002ci  )i|Ï2iàEm:iS43i5  iÿ  Z@d306cf01314d51bd37892d874308200951a35265ede54d200f1e065004c3e9eaiþ  Z@0e00ab449f01a5195a83b4aee0dfbc2ce8d46466a640b92e33977d2e42f777f8iÛ  ÚmoduleTF)ZscopeÚparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   ú`/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/random/tests/test_generator_mt19937.pyÚendpoint&   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 )ÚTestSeedc                 C   s<   t tdƒƒ}t| d¡dƒ t tdƒƒ}t| d¡dƒ d S )Nr   éè  éß  ì   ÿÿ éD  )r   r   r   Úintegers©ÚselfÚsr   r   r   Útest_scalar,   s    zTestSeed.test_scalarc                 C   s‚   t ttdƒƒƒ}t| d¡dƒ t tt d¡ƒƒ}t| d¡dƒ t tdgƒƒ}t| d¡dƒ t tdgƒƒ}t| d¡dƒ d S )Nr   r!   iÑ  r   r"   r#   r$   )r   r   Úranger   r%   ÚnpÚaranger&   r   r   r   Ú
test_array2   s    zTestSeed.test_arrayc                 C   s    t tdƒƒ}t| d¡dƒ d S )Nr   é   i”ê´z)r   r   r   Ú
random_rawr&   r   r   r   Útest_seedsequence<   s    zTestSeed.test_seedsequencec                 C   s   t ttdƒ t ttdƒ d S )Nç      à¿éÿÿÿÿ©r   Ú	TypeErrorr   Ú
ValueError©r'   r   r   r   Útest_invalid_scalar@   s    zTestSeed.test_invalid_scalarc                 C   s0   t ttdgƒ t ttdgƒ t ttg d¢ƒ d S )Nr1   r2   )r.   éþÿÿÿì        r3   r6   r   r   r   Útest_invalid_arrayE   s    zTestSeed.test_invalid_arrayc                 C   s   t tttƒ d S r   )r   r5   r   r   r6   r   r   r   Útest_noninstantized_bitgenK   s    z#TestSeed.test_noninstantized_bitgenN)	Ú__name__Ú
__module__Ú__qualname__r)   r-   r0   r7   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 )Né   Úint©Údtype)r   ç      à?r.   r   )r+   Úzerosr   ÚrandomÚbinomialr	   )r'   rE   Úpr   r   r   Útest_n_zeroP   s    zTestBinomial.test_n_zeroc                 C   s   t ttjdtjƒ d S )Nr.   )r   r5   rF   rG   r+   Únanr6   r   r   r   Útest_p_is_nanY   s    zTestBinomial.test_p_is_nanN)r<   r=   r>   rI   rK   r   r   r   r   r?   O   s   	r?   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestMultinomialc                 C   s   t  dddg¡ d S )Néd   çš™™™™™É?çš™™™™™é?©rF   Úmultinomialr6   r   r   r   Ú
test_basic_   s    zTestMultinomial.test_basicc                 C   s   t  dg d¢¡ d S )NrM   )rN   rO   ç        rS   rS   rP   r6   r   r   r   Útest_zero_probabilityb   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éûÿÿÿr2   é   )r   rF   r%   r+   Úall©r'   Úxr   r   r   Útest_int_negative_intervale   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 )NrD   r.   ©r.   r@   r@   ©r@   r@   r@   ©r@   r@   )
r   rF   rQ   r+   Úuint32ÚshapeÚarrayr   r4   Úfloat©r'   rH   r   r   r   Ú	test_sizek   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 )NrM   çš™™™™™ñ?rN   çš™™™™™¹¿çÍÌÌÌÌÌì?©r   r5   rF   rQ   r6   r   r   r   Útest_invalid_proby   s    z!TestMultinomial.test_invalid_probc                 C   s2   t ttjdddgƒ t ttjdgd ddgƒ d S )Nr2   rO   rN   r   rg   r6   r   r   r   Útest_invalid_n}   s    zTestMultinomial.test_invalid_nc                 C   sx   t  d¡}|t  |dd d… ¡ }|dd d… }ttdƒƒ}|jd|d�}ttdƒƒ}|jdt  |¡d�}t||ƒ d S )Ng      .@r.   é   éÛ iUrM   )Úpvals)r+   r,   Úsumr   r   rQ   Úascontiguousarrayr	   )r'   rH   rl   rF   Ú
non_contigÚcontigr   r   r   Útest_p_non_contiguous�   s    
z%TestMultinomial.test_p_non_contiguousc                 C   sn   t jg d¢t jd�}|| ¡  }ttdƒƒ}d}tjt|d�� | 	d|¡ W d   ƒ n1 s`0    Y  d S )N)
ç®Gáz®ï?rr   ç•Ö&è.>rs   rs   rs   rs   rs   rs   rs   rB   rk   z-[\w\s]*pvals array is cast to 64-bit floating©Úmatchr.   )
r+   r`   Úfloat32rm   r   r   ÚpytestÚraisesr5   rQ   )r'   rY   rl   rF   ru   r   r   r   Útest_multinomial_pvals_float32‹   s    
ÿz.TestMultinomial.test_multinomial_pvals_float32N)r<   r=   r>   rR   rT   rZ   rc   rh   ri   rq   ry   r   r   r   r   rL   ^   s   
rL   c                   @   sŒ   e Zd Zdd„ Zdd„ Zej dddg¡dd	„ ƒZej d
g d¢¡ej dddg¡ej dg d¢¡dd„ ƒƒƒZ	dd„ Z
dd„ Zdd„ ZdS )ÚTestMultivariateHypergeometricc                 C   s
   d| _ d S )Nií_„ ©r   r6   r   r   r   Úsetup–   s    z$TestMultivariateHypergeometric.setupc                 C   s²   t ttjddƒ t ttjg d¢dƒ t ttjg d¢dƒ t ttjg d¢dƒ t ttjg dƒ t ttjdd	gd
ddƒ t tj¡}|j}||jj	 }t ttj|d d	gd
ddƒ d S )Nr   é   )r@   rj   r}   r2   )r2   r@   rj   r@   r.   iÿÉš;ée   rV   Ú	marginalsrM   Úcount)
r   r5   rF   Úmultivariate_hypergeometricr+   ÚiinfoÚint64ÚmaxrC   Úitemsize)r'   Z
int64_infoZ	max_int64Zmax_int64_indexr   r   r   Útest_argument_validation™   s0    ÿÿÿÿÿÿÿz7TestMultivariateHypergeometric.test_argument_validationÚmethodr€   r   c                 C   s
  t t| jƒƒ}|jg d¢d|d�}t|g d¢ƒ |jg d|d�}t|g ƒ |jg dd|d�}t|tjdtjd�ƒ |jg d¢d|d�}t|g d¢ƒ |jg d	¢d
|d�}t|g d¢ƒ g d¢}|j|t|ƒ|d�}t||ƒ |jg d¢dd
|d�}t|g d¢gd
 ƒ d S )N)r   r   r   r   ©r‡   r.   ©Úsizer‡   )r.   r   rB   ©r.   r@   rj   )r   r   r   rj   )rj   r   r   )r.   r.   r   r.   r.   ©rj   r}   rV   é   )	r   r   r   r�   r	   r+   Úemptyrƒ   rm   )r'   r‡   rF   rY   Úcolorsr   r   r   Útest_edge_casesº   s(    
ÿ
ÿz.TestMultivariateHypergeometric.test_edge_casesÚnsample)é   é   é-   é7   rŠ   )rV   ©r@   rj   iðI c                 C   sÔ   t t| jƒƒ}t g d¢¡}|j||||d�}t|tƒrF|f|j }n
||j }t	|j|ƒ t
|dk ¡ ƒ t
||k ¡ ƒ t|jdd�tj||td�ƒ t|tƒrÐ|dkrÐt|jdd�|| | ¡  dd	d
� d S )N)r   rV   é   r“   rˆ   r   r2   ©Úaxis)Z
fill_valuerC   é † çü©ñÒMbP?g{®Gázt?)ÚrtolZatol)r   r   r   r+   r`   r�   Ú
isinstancerA   r_   r   r   rW   r	   rm   Úfullr   Úmean)r'   r‘   r‡   rŠ   rF   r�   ÚsampleÚexpected_shaper   r   r   Útest_typical_casesÝ   s&    
ÿ

ÿþz1TestMultivariateHypergeometric.test_typical_casesc                 C   sZ   t t| jƒƒ}|jg d¢dddd�}t g d¢g d¢g d¢g d¢g d¢g¡}t||ƒ d S )NrŒ   rV   r€   r‰   )r@   r.   r@   ©r.   r.   rj   ©r@   r   rj   ©r   r   r   r�   r+   r`   r	   ©r'   rF   r    Úexpectedr   r   r   Útest_repeatability1ö   s    ÿ
üz2TestMultivariateHypergeometric.test_repeatability1c                 C   sZ   t t| jƒƒ}|jg d¢dddd�}t g d¢g d¢g d¢g d¢g d	¢g¡}t||ƒ d S )
N©r—   é   é2   r«   rV   r   r‰   )r   é   é   )é   é   rª   )r   é   é   )r�   é   r­   r¥   r¦   r   r   r   Útest_repeatability2  s    þ
üz2TestMultivariateHypergeometric.test_repeatability2c                 C   sZ   t t| jƒƒ}|jg d¢dddd�}t g d¢g d¢g d¢g d¢g d	¢g¡}t||ƒ d S )
Nr©   r�   rV   r   r‰   )r@   rj   r®   )rV   rj   r}   )r@   rV   rV   )r.   rV   é   r¥   r¦   r   r   r   Útest_repeatability3  s    þ
üz2TestMultivariateHypergeometric.test_repeatability3N)r<   r=   r>   r|   r†   rw   ÚmarkÚparametrizer�   r¢   r¨   r³   rµ   r   r   r   r   rz   ”   s   !
"rz   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestSetStatec                 C   sT   d| _ tt| j ƒƒ| _| jj| _| jj| _| jd | jd d | jd d f| _d S )NéÒ–IÚbit_generatorÚstateÚkeyr   )r   r   r   Úrgrº   r»   Zlegacy_stater6   r   r   r   r|     s    

þzTestSetState.setupc                 C   s<   | j jdd�}| j| j_| j jdd�}tt ||k¡ƒ d S ©Nrj   ©rŠ   )r½   Ústandard_normalr»   rº   r   r+   rW   )r'   ÚoldÚnewr   r   r   Útest_gaussian_reset$  s    
z TestSetState.test_gaussian_resetc                 C   sL   | j  ¡  | jj}| j jdd�}|| j_| j jdd�}tt ||k¡ƒ d S r¾   )r½   rÀ   rº   r»   r   r+   rW   )r'   r»   rÁ   rÂ   r   r   r   Ú test_gaussian_reset_in_media_res+  s    
z-TestSetState.test_gaussian_reset_in_media_resc                 C   s   | j  dd¡ d S ©NrD   )r½   Únegative_binomialr6   r   r   r   Útest_negative_binomial6  s    z#TestSetState.test_negative_binomialN)r<   r=   r>   r|   rÃ   rÄ   rÇ   r   r   r   r   r¸     s   	r¸   c                   @   s\  e Zd ZejZe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d„ Zdd„ Zdd„ Zej dde g d¢¡fde g d¢¡fde g d¢¡fg¡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j(ej d.d/d0ejd1fd/d2ej	d3fd4d5ej
d6fd7d8ejd9fg¡d:d;„ ƒƒZ)d<S )=ÚTestIntegersc                 C   s   t t| jd|td� d S ©Nr.   ©r   rC   )r   r4   Úrfuncra   )r'   r   r   r   r   Útest_unsupported_typeC  s    z"TestIntegers.test_unsupported_typec              	   C   s"  | j D �]}|tu rdn
t |¡j}|tu r0dnt |¡jd }|rL|d n|}tt| j|d |||d� tt| j||d ||d� tt| j||||d� tt| jdd||d� tt| j|d g|||d� tt| j|g|d g||d� tt| j|g|g||d� tt| jddg||d� qd S ©Nr   r@   r.   rÊ   ©	ÚitypeÚboolr+   r‚   Úminr„   r   r5   rË   ©r'   r   ÚdtÚlbndÚubndr   r   r   Útest_bounds_checkingF  s8    ÿÿÿÿÿÿÿÿz!TestIntegers.test_bounds_checkingc              	   C   sÊ   | j D ]¾}|tu rdn
t |¡j}|tu r.dnt |¡j|  }tt| j|d gd |gd ||d� tt| j|gd |d gd ||d� tt| j||gd ||d� tt| jdgd d||d� qd S rÍ   rÎ   rÒ   r   r   r   Útest_bounds_checking_array]  s    
ÿÿÿÿz'TestIntegers.test_bounds_checking_arrayc              	   C   s0  | j D �]"}|tu rdn
t |¡j}|tu r0dnt |¡jd }|rL|d n|}| }|d }t| j||| d||d�|ƒ t| j|g|| d||d�|ƒ |}t| j||| d||d�|ƒ t| j||| gd||d�|ƒ || d }t| j||| d||d�|ƒ t| j|g|| gd||d�|ƒ qd S )Nr   r@   r.   r!   ©rŠ   r   rC   ©rÏ   rÐ   r+   r‚   rÑ   r„   r   rË   )r'   r   rÓ   rÔ   rÕ   Zis_openÚtgtr   r   r   Útest_rng_zero_and_extremesk  sL    ÿÿÿÿÿÿÿÿÿÿÿþz'TestIntegers.test_rng_zero_and_extremesc                 C   s¼  d}| j D �]ª}|tu rdn
t |¡j}|tu r4dnt |¡jd }|rP|d n|}|d }t| j|g|d g||d�|ƒ t| j|g| |d g| |d�|ƒ t| j|g| |d g| ||d�|ƒ |}t| j|g|d g||d�|ƒ t| j|g| |d g| |d�|ƒ t| j|g| |d g| ||d�|ƒ || d }t| j|g|d g||d�|ƒ t| j|g| |d g| |d�|ƒ t| j|g| |d g| ||d�|ƒ q
d S )Nr!   r   r@   r.   ©rŠ   rC   rB   rÙ   )r'   r   rŠ   rÓ   rÔ   rÕ   rÚ   r   r   r   Ú test_rng_zero_and_extremes_array…  sj    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz-TestIntegers.test_rng_zero_and_extremes_arrayc                 C   s    | j D ]”}|tu rdn
t |¡j}|tu r.dnt |¡jd }|rJ|d n|}z| j||||d� W q ty˜ } ztdt	|ƒ ƒ‚W Y d }~qd }~0 0 qd S ©Nr   r@   r.   rÊ   zMNo error should have been raised, but one was with the following message:

%s©
rÏ   rÐ   r+   r‚   rÑ   r„   rË   Ú	ExceptionÚAssertionErrorÚstr©r'   r   rÓ   rÔ   rÕ   Úer   r   r   Útest_full_range¤  s    
þzTestIntegers.test_full_rangec                 C   s¨   | j D ]œ}|tu rdn
t |¡j}|tu r.dnt |¡jd }|rJ|d n|}z| j|gd |g||d� W q ty  } ztdt	|ƒ ƒ‚W Y d }~qd }~0 0 qd S rÞ   rß   rã   r   r   r   Útest_full_range_array³  s    
þz"TestIntegers.test_full_range_arrayc              	   C   sœ   t tƒ ƒ}| jdd … D ]F}dD ]<}| jd|| d||d�}t| ¡ |k ƒ t| ¡ dkƒ q q| jdd| d|td�}t| ¡ dk ƒ t| ¡ dkƒ d S )Nr.   )r}   r’   é   r@   i   rØ   r   )r   r   rÏ   rË   r   r„   rÑ   rÐ   )r'   r   rF   rÓ   rÕ   Úvalsr   r   r   Útest_in_bounds_fuzzÂ  s    
ÿÿz TestIntegers.test_in_bounds_fuzzc           
      C   sÜ   | j D ]Ð}|tu rdn
t |¡j}|tu r.dnt |¡jd }|rJ|d n|}d}ttdƒƒ}|j|||||d�}ttdƒƒ}|j|g|g|||d�}ttdƒƒ}|j|g| |g| |||d�}	t	||ƒ t	||	ƒ qd S )Nr   r@   r.   r!   éÒ  rØ   )
rÏ   rÐ   r+   r‚   rÑ   r„   r   r   r%   r	   )
r'   r   rÓ   rÔ   rÕ   rŠ   rF   ZscalarZscalar_arrayr`   r   r   r   Útest_scalar_array_equivÒ  s*    
ÿÿÿÿ
z$TestIntegers.test_scalar_array_equivc              
   C   sô   ddddddddddœ	}| j dd … D ]v}ttdƒƒ}tjd	krZ|jd
d| d||d�}n|jd
d| d||d� ¡ }t |¡ 	¡ }t
|t |¡j |kƒ q&ttdƒƒ}|jd
d| d|td� tj¡}t |¡ 	¡ }t
|t t¡j |kƒ d S )NZ@053594a9b82d656f967c54869bc6970aa0358cf94ad469c81478459c6a90eee3Z@54de9072b6ee9ff7f20b58329556a46a447a8a29d67db51201bf88baa6e4e5d4Z@d3a0d5efb04542b25ac712e50d21f39ac30f312a5052e9bbb1ad3baa791ac84bZ@14e224389ac4580bfbdccb5697d6190b496f91227cf67df60989de3d546389b1Z@0e203226ff3fbbd1580f15da4621e5f7164d0d8d6b51696dd42d004ece2cbec1)	rÐ   Úint16Úint32rƒ   Úint8Úuint16r^   Úuint64Úuint8r.   rê   Úlittler   r´   r!   rØ   r@   )rÏ   r   r   ÚsysÚ	byteorderr%   ÚbyteswapÚhashlibÚsha256Ú	hexdigestr   r+   rC   ÚnamerÐ   Úviewrî   )r'   r   rÚ   rÓ   rF   ÚvalÚresr   r   r   Útest_repeatabilityç  s:    ø

ÿÿ
ÿÿzTestIntegers.test_repeatabilityc                 C   sâ   | j D ]Ö}|ttjfv rdn
t |¡j}|ttjfv r:dnt |¡jd }|rV|d n|}ttdƒƒ}|j	||d||d�}ttdƒƒ}|j	|gd |||d�}t
||ƒ ttdƒƒ}|j	|gd |gd ||d�}t
||ƒ qd S )Nr   r@   r.   rê   r!   rØ   rÊ   )rÏ   rÐ   r+   Úbool_r‚   rÑ   r„   r   r   r%   r	   )r'   r   rÓ   rÔ   rÕ   rF   rû   Zval_bcr   r   r   Útest_repeatability_broadcasting
  s$    
"ÿÿ
ÿz,TestIntegers.test_repeatability_broadcastingzbound, expectedr#   )iuÑiÉ,YQiåùXgi$#°Pl   ‚bA i{òÈEl   /YÄi r9   )éuÑiÊ,YQéæùXgi%#°Pl   ƒbA i|òÈEl   0YÄi ì       )r   r  l   „bA l   1YÄi i÷{,miù…uHl   îHM c                 C   sJ   d t |ƒfD ]8}ttdƒƒ}|j||d�}t||d ur:|n|d ƒ qd S )Nrê   r¿   r   )Úlenr   r   r%   r   )r'   Úboundr§   rŠ   rF   rY   r   r   r   Ú!test_repeatability_32bit_boundary!  s    
z.TestIntegers.test_repeatability_32bit_boundaryc              
   C   sÂ   t  g d¢g d¢g d¢gg d¢g d¢g d¢gg d¢g d¢g d	¢gg d
¢g d¢g d¢gg d¢g d¢g d¢gg¡}dD ]J}ttdƒƒ}|jdgdgdggg d¢|d�}t||d ur²|n|d ƒ qrd S )N)iÜ
¼`l   ÓY¡/ iü0èb)i)H{Ti«P-iTÿÒq)l   †”C iš›Z'l   !Îg )l   ©k40 l   n2c l   ÅDBJ )iÒ|à(iy+l   à_&A )ip@ýGiG‚‘^l   J|xK )l   ü
f l   Dmv l   ©E"g )iŽÐ>{l   wT2L iñJQ)iQÓ//itÉLol   Øk¦ )i\œsi¼ÿ�Ji”�Ñ)iéÿ=l   }D l   E9l )l   
+x i#J¨l   bË )iºð¼0i7ù›Ol   rn )ix¦�ii‰µ½Ai.¸®t)l   q/Œq i;-‘/i‡…á)N)rV   rj   rj   i90  r2   r   r.   )r#   r9   r  r¿   )r+   r`   r   r   r%   r	   )r'   ÚdesiredrŠ   rF   rY   r   r   r   Ú.test_repeatability_32bit_boundary_broadcasting0  s8    
þþþþþôþz;TestIntegers.test_repeatability_32bit_boundary_broadcastingc              
   C   s4  t jddd fdddft jdi}|D �]}|| D ]ú}|\}}|| }t  |gd g¡}t  |gd ¡}tttj||||d	� tttj||||d	� tttj||||d	� tttj||||d	� t j|gd gtd
�}	t j|gd td
�}
tttj|	|||d	� tttj||
||d	� tttj|	|
||d	� q2q$d S )Nr   r@   éA   )r2   ì            ©r   r   ©r   r   ))r   l            )lûÿÿÿ         r	  r
  r  )ìûÿÿÿ        r  r   rÊ   rB   )	r+   rð   rƒ   r`   r   r5   rF   r%   Úobject)r'   r   ZconfigsrC   ÚconfigÚlowÚhighZlow_aZhigh_aZlow_oZhigh_or   r   r   Ú&test_int64_uint64_broadcast_exceptionsG  s@    ÿ
ÿÿÿÿÿÿÿz3TestIntegers.test_int64_uint64_broadcast_exceptionsc                 C   sd   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+   rƒ   r‚   r„   rð   rF   r%   r   )r'   r   rÓ   rÚ   rÔ   rÕ   Úactualr   r   r   Útest_int64_uint64_corner_casec  s    z*TestIntegers.test_int64_uint64_corner_casec                 C   s
  | j D ]x}|tu rdn
t |¡j}|tu r.dnt |¡jd }|rJ|d n|}|tu r\tjn|}| j||||d�}t|j	|ƒ qtt
tjjfD ]v}|tu rždn
t |¡j}|tu r¶dnt |¡jd }|rÒ|d n|}| j||||d�}t|dƒröJ ‚tt|ƒ|ƒ qŽd S )Nr   r@   r.   rÊ   rC   )rÏ   rÐ   r+   r‚   rÑ   r„   rþ   rË   r   rC   rA   ÚcompatÚlongÚhasattrÚtype©r'   r   rÓ   rÔ   rÕ   r    r   r   r   Útest_respect_dtype_singletonz  s    
z)TestIntegers.test_respect_dtype_singletonc                 C   s²   | j D ]¦}|tu rdn
t |¡j}|tu r.dnt |¡jd }|rJ|d n|}|tu r\tjn|}| j|g|g||d�}t|j	|ƒ | j|gd |gd ||d�}t|j	|ƒ qd S rÍ   )
rÏ   rÐ   r+   r‚   rÑ   r„   rþ   rË   r   rC   r  r   r   r   Útest_respect_dtype_array�  s    
ÿz%TestIntegers.test_respect_dtype_arrayc                 C   s¦   | j D ]š}| jddd||d�}|jdks,J ‚|j|ks:J ‚| jddd||d�jdksXJ ‚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ƒ qd S )Nr   ©rj   r   r}   rÊ   éöÿÿÿ©r   r¿   r   )rÏ   rË   r_   rC   r   rF   r%   )r'   r   rÓ   r    r   r   r   Útest_zero_size�  s    
ÿÿÿzTestIntegers.test_zero_sizec                 C   sR   t jdkrdnd}t t¡�" tjddd|d� W d   ƒ n1 sD0    Y  d S )NÚbigz<i4z>i4r   éÈ   r   rÜ   )ró   rô   rw   rx   r5   rF   r%   )r'   Zother_byteord_dtr   r   r   Útest_error_byteorderª  s    z!TestIntegers.test_error_byteorderzsample_size,high,dtype,chi2maxi@KL rV   g     @_@r®   g     Àb@i€–˜ iÄ	  g     È©@i€ðúéˆ  g     d¹@c           
      C   sN   t j|||d�}tj|dd�\}}|| }|| d |  ¡ }	|	|k sJJ ‚d S )NrÜ   T)Zreturn_countsr@   )rF   r%   r+   Úuniquerm   )
r'   Zsample_sizer  rC   Zchi2maxÚsamplesÚvaluesÚcountsr§   Zchi2r   r   r   Ú$test_integers_small_dtype_chisquared°  s
    
z1TestIntegers.test_integers_small_dtype_chisquaredN)*r<   r=   r>   rF   r%   rË   rÐ   r+   rî   rñ   rì   rï   rí   r^   rƒ   rð   rÏ   rÌ   rÖ   r×   rÛ   rÝ   rå   ræ   ré   rë   rý   rÿ   rw   r¶   r·   r`   r  r  r  r  r  r  r  r!  Úslowr'  r   r   r   r   rÈ   <  sN   ÿ#üþ	
ýÿ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
ej dejejfejejfg¡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!d0d1„ Z"d2d3„ Z#d4d5„ Z$d6d7„ Z%d8d9„ Z&d:d;„ Z'd<d=„ Z(d>d?„ Z)d@dA„ Z*dBdC„ Z+dDdE„ Z,ej dFe-e.g¡ej dGdHe /g dI¢g dJ¢g¡fdKe /g dL¢g dM¢g¡fdNe /g dO¢g dP¢g¡fg¡dQdR„ ƒƒZ0dSdT„ Z1dUdV„ Z2ej dWdXdYg¡dZd[„ ƒZ3d\d]„ Z4d^d_„ Z5d`da„ Z6dbdc„ Z7ddde„ Z8dfdg„ Z9dhdi„ Z:djdk„ Z;dldm„ Z<dndo„ Z=ejj>dpdq„ ƒZ?drds„ Z@dtdu„ ZAdvdw„ ZBdxdy„ ZCdzd{„ 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•„ ZQej d–g d—¢¡d˜d™„ ƒZRej d–g d—¢¡dšd›„ ƒZSdœd�„ ZTdždŸ„ ZUd d¡„ ZVd¢d£„ ZWd¤d¥„ ZXd¦d§„ ZYd¨d©„ ZZdªd«„ Z[d¬d­„ Z\d®d¯„ Z]d°d±„ Z^d²d³„ Z_d´dµ„ Z`d¶d·„ Zad¸d¹„ Zbdºd»„ 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å„ Zxej dædçdèg¡dédê„ ƒZyej dëdìejz díejzdîg¡ej dæg dï¢¡dðdñ„ ƒƒZ{dòdó„ Z|dôdõ„ Z}död÷„ Z~dødù„ ZdHS )úÚTestRandomDistc                 C   s
   d| _ d S )Nr¹   r{   r6   r   r   r   r|   Æ  s    zTestRandomDist.setupc                 C   sH   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||ƒ d S )Né�ÿÿÿéc   ©rj   r@   r¿   é°ÿÿÿéÈÿÿÿé)   é%   é­ÿÿÿiðÿÿÿ©r   r   r   r%   r+   r`   r	   ©r'   rF   r  r  r   r   r   Útest_integersÉ  s    zTestRandomDist.test_integersc                 C   sR   t t| jƒƒ}|jdddtjd�}tjddgddgd	d
ggtjd�}t||ƒ d S )Nr   r+  r,  rÜ   r   é   éF   éD   r’   r/  rB   )r   r   r   r%   r+   r^   r`   r	   r3  r   r   r   Útest_integers_maskedÏ  s    "z#TestRandomDist.test_integers_maskedc                 C   sJ   t t| jƒƒ}|jddddd�}t ddgdd	gd
dgg¡}t||ƒ d S )Nr*  r+  r,  T)rŠ   r   r-  r.  r/  é&   r1  iñÿÿÿr2  r3  r   r   r   Útest_integers_closed×  s    z#TestRandomDist.test_integers_closedc                 C   s:   t jt d¡jt d¡jdd�}t d¡j}t||ƒ d S )NÚlT©r   )rF   r%   r+   r‚   r„   r   )r'   r  r  r   r   r   Útest_integers_max_intÝ  s
    ÿz$TestRandomDist.test_integers_max_intc                 C   sn   t t| jƒƒ}| d¡}t ddgddgddgg¡}t||dd	� t t| jƒƒ}| ¡ }t||d
 dd	� d S )Nr,  gG0‡ðÔ¸?g±Ã¦û£æ?g2ˆï˜µ?gu	A‘è?gòH
Ô>Hå?g;ŠdEåæ?r°   ©Údecimalr  ©r   r   r   rF   r+   r`   r
   r3  r   r   r   Útest_randomé  s    

þzTestRandomDist.test_randomc                 C   sF   t t| jƒƒ}| d¡}t ddgddgddgg¡}t||dd	� d S )
Nr,  çCø¼‡ðÔ¸?gP‘¨û£æ?gtXÈùî˜µ?g81â
A‘è?gÚrOÓ>Hå?g×88dEåæ?r®   r>  r@  r3  r   r   r   Útest_random_floatõ  s    

þz TestRandomDist.test_random_floatc                 C   s2   t t| jƒƒ}|jtjd�}d}t||dd� d S )NrB   rB  r®   r>  )r   r   r   rF   r+   rv   r
   r3  r   r   r   Útest_random_float_scalarý  s    z'TestRandomDist.test_random_float_scalarzdtype, uint_view_typec                 C   sN   t t| jƒƒ}|jd|d�}t | |¡d@ ¡}d|  k rDdk sJn J ‚d S )Nrš   rB   r.   i$^  i,e  )r   r   r   rF   r+   Zcount_nonzerorú   )r'   rC   Zuint_view_typerF   r    Znum_ones_in_lsbr   r   r   Útest_random_distribution_of_lsb  s    z.TestRandomDist.test_random_distribution_of_lsbc                 C   s   t ttjdd� d S )Nrí   rB   )r   r4   rF   r6   r   r   r   Útest_random_unsupported_type  s    z+TestRandomDist.test_random_unsupported_typec                 C   s<   t t| jƒƒ}| dd¡}tjg d¢tjd�}t||ƒ d S )Nr}   )r   r   r@   r@   rB   ©r   r   r   Úchoicer+   r`   rƒ   r	   r3  r   r   r   Útest_choice_uniform_replace  s    z*TestRandomDist.test_choice_uniform_replacec                 C   sD   t t| jƒƒ}|jddg d¢d�}tjg d¢tjd�}t||ƒ d S )Nr}   )çš™™™™™Ù?rJ  çš™™™™™¹?rK  ©rH   )r   r.   r   r.   rB   rG  r3  r   r   r   Útest_choice_nonuniform_replace  s    z-TestRandomDist.test_choice_nonuniform_replacec                 C   sl   t t| jƒƒ}|jdddd�}tjg d¢tjd�}t||ƒ |jddddd�}tjdtjd�}t||ƒ d S )Nr}   rj   F©Úreplacer¤   rB   )rO  Úshuffle)	r   r   r   rH  r+   r`   rƒ   r	   r,   r3  r   r   r   Útest_choice_uniform_noreplace  s    
z,TestRandomDist.test_choice_uniform_noreplacec                 C   sF   t t| jƒƒ}|jdddg d¢d�}tjg d¢tjd�}t||ƒ d S )Nr}   rj   F)rK  ç333333Ó?rD   rK  ©rO  rH   )r   r@   rj   rB   rG  r3  r   r   r   Ú test_choice_nonuniform_noreplace'  s    z/TestRandomDist.test_choice_nonuniform_noreplacec                 C   s:   t t| jƒƒ}| g d¢d¡}t g d¢¡}t||ƒ d S )N)ÚaÚbÚcÚdr}   )rU  rU  rW  rW  ©r   r   r   rH  r+   r`   r	   r3  r   r   r   Útest_choice_noninteger-  s    z%TestRandomDist.test_choice_nonintegerc                 C   s\   t t| jƒƒ}| ddgddgddgddggd¡}t ddgddgddgg¡}t||ƒ d S )	Nr   r.   r@   rj   r}   rV   r´   r®   rY  r3  r   r   r   Ú)test_choice_multidimensional_default_axis3  s    $z8TestRandomDist.test_choice_multidimensional_default_axisc                 C   s^   t t| jƒƒ}|jddgddgddgddggddd	�}t dgdgdgdgg¡}t||ƒ d S )
Nr   r.   r@   rj   r}   rV   r´   r®   r˜   rY  r3  r   r   r   Ú(test_choice_multidimensional_custom_axis9  s    (z7TestRandomDist.test_choice_multidimensional_custom_axisc                 C   s  t j}tt|ddƒ tt|ddƒ tt|g dƒ tt|g d¢dddgddggd� tt|ddgdg d	¢d� tt|ddgdd
dgd� tt|ddgdddgd� tt|g d¢ddd� tt|g d¢ddd� tt|g d¢ddd� tt|g d¢ddd� tt|g d¢ddg d¢d� d S )Nr2   rj   ç      @)r.   r@   rj   r}   ç      Ð?rL  r.   r@   )rJ  rJ  rN   rd   re   rJ  r‹   r}   FrN  r8   )r2   )r2   r.   )r.   r   r   rS  )rF   rH  r   r5   )r'   r    r   r   r   Útest_choice_exceptions?  s"    ÿÿz%TestRandomDist.test_choice_exceptionsc              	   C   s   ddg}t t tjddd�¡ƒ t t tjddd�¡ƒ t t tjdd|d�¡ƒ t t tjdd|d�¡ƒ t t tjddgdd�¡ƒ t tjd gdd�d u ƒ t ddg¡}tjdtd	�}||d
< t tj|dd�|u ƒ tƒ }t t tjd|dd�¡ ƒ t t tjd|dd�¡ ƒ t t tjd|d|d�¡ ƒ t t tjd|d|d�¡ ƒ t t tjddg|dd�¡ ƒ t tjd g|dd�j	d
kƒ t ddg¡}tjdtd	�}||d
< t tj||dd� 
¡ |u ƒ d}g d¢}ttjd|dd�j|ƒ ttjd|dd�j|ƒ ttjd|d|d�j|ƒ ttjd|d|d�j|ƒ ttjt d¡|dd�j|ƒ ttjd
d
dd�jdƒ ttjd
dd
d�jdƒ ttjddd
d�jdƒ ttjd
d
d�jdƒ ttjg dd�jdƒ ttjddgdd�jdƒ tttjg dƒ d S )NrK  rf   r@   TrN  FrS  r.   rB   r   r–   )rK  rK  rK  rK  rJ  rN   r´   r  r¿   r  r  r   rU  rV  )r   r+   ZisscalarrF   rH  r`   rŽ   r  ÚtupleÚndimÚitemr   r_   r,   r%   r   r5   )r'   rH   rU  Úarrr(   r   r   r   Útest_choice_return_shapeQ  sL     ÿz'TestRandomDist.test_choice_return_shapec                 C   s,   t  g d¢¡}g d¢}tttj||d� d S )N)é*   r.   r@   )NNNrL  )r+   r`   r   r5   rF   rH  )r'   rU  rH   r   r   r   Útest_choice_nan_probabilities  s    z,TestRandomDist.test_choice_nan_probabilitiesc              	   C   s€   t  d¡d }d|dd d…< tt| jƒƒ}|jdd|d d d… d�}tt| jƒƒ}|jddt  |d d d… ¡d�}t||ƒ d S )Nr   rV   r]  r.   r@   rj   rL  )r+   Úonesr   r   r   rH  rn   r	   )r'   rH   rF   ro   rp   r   r   r   Útest_choice_p_non_contiguous„  s     z+TestRandomDist.test_choice_p_non_contiguousc                 C   s�   t  d¡d }t dd¡}|jt jks*J ‚tjdddd�}|jt jksJJ ‚tjdd|d�}|jt jksjJ ‚tjdd|dd�}|jt jksŒJ ‚d S )Nr}   g      @r@   FrN  rL  )rH   rO  )r+   rg  rF   rH  rC   rƒ   )r'   rH   r  r   r   r   Útest_choice_return_type�  s    z&TestRandomDist.test_choice_return_typec                 C   sZ   d}t t| jƒƒ}|jdddd�}tjdkr4| ¡ }t | 	t
j¡¡ ¡ }t||kƒ d S )NZ@4266599d12bfcfb815213303432341c06b4349f5455890446578877bb322e222é'  r"  FrN  rò   )r   r   r   rH  ró   rô   rõ   rö   r÷   rú   r+   rî   rø   r   )r'   Zchoice_hashrF   r  rü   r   r   r   Útest_choice_large_sample™  s    
z'TestRandomDist.test_choice_large_samplec                 C   s*   t t| jƒƒ}| d¡}d}t||ƒ d S )Nr   s
   †ðÔá�	8%Ý)r   r   r   Úbytesr   r3  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 ]B}t t| jƒƒ}|g d¢ƒ}| |¡ |}|g d¢ƒ}t||ƒ qFd S )Nc                 S   s
   t  g ¡S r   )r+   r`   ©rY   r   r   r   Ú<lambda>«  ó    z-TestRandomDist.test_shuffle.<locals>.<lambda>c                 S   s   | S r   r   rn  r   r   r   ro  ¬  rp  c                 S   s   t  | ¡ t j¡S r   )r+   ÚasarrayÚastyperî   rn  r   r   r   ro  ­  rp  c                 S   s   t  | ¡ t j¡S r   )r+   rq  rr  rv   rn  r   r   r   ro  ®  rp  c                 S   s   t  | ¡ t j¡S r   )r+   rq  rr  Z	complex64rn  r   r   r   ro  ¯  rp  c                 S   s   t  | ¡ t¡S r   )r+   rq  rr  r  rn  r   r   r   ro  °  rp  c                 S   s   dd„ | D ƒS )Nc                 S   s   g | ]}||f‘qS r   r   ©Ú.0Úir   r   r   Ú
<listcomp>±  rp  úATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r   rn  r   r   r   ro  ±  rp  c                 S   s   t  dd„ | D ƒ¡S )Nc                 S   s   g | ]}||g‘qS r   r   rs  r   r   r   rv  ²  rp  rw  )r+   rq  rn  r   r   r   ro  ²  rp  c                 S   s   t  | | g¡jS r   )r+   ÚvstackÚTrn  r   r   r   ro  ³  rp  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   rs  r   r   r   rv  µ  rp  rw  rU  rV  )r+   rq  rA   rú   Zrecarrayrn  r   r   r   ro  µ  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   rs  r   r   r   rv  ¹  rp  rw  rU  ©r.   rV  )r+   rq  r  rí   rn  r   r   r   ro  ¹  s   
ÿÿ©
r.   r@   rj   r}   rV   r´   r®   r’   r   r   ©
r}   r.   r   r’   r   rV   rj   r´   r@   r®   )r   r   r   rP  r	   )r'   ÚconvrF   Úalistr  r  r   r   r   Útest_shuffle¨  s$    ò
zTestRandomDist.test_shufflec                 C   s’   t t| jƒƒ}t d¡ d¡}|j|dd� t g d¢g d¢g d¢g d¢g¡}t||ƒ t t| jƒƒ}t d¡ d¡}|j|d	d� t||ƒ d S )
Nrç   ©r}   r}   r.   r˜   ©r   rj   r.   r@   ©r}   r®   rV   r´   ©r’   é   r   r   ©r�   r°   r¯   r²   r2   )	r   r   r   r+   r,   ÚreshaperP  r`   r	   r3  r   r   r   Útest_shuffle_custom_axisÃ  s    
ý
z'TestRandomDist.test_shuffle_custom_axisc                 C   sT   t t| jƒƒ}t g ¡ d¡}dD ],}t g ¡ d¡}|j||d� t||ƒ q"d S )N)r   r´   )r   r.   r˜   )r   r   r   r+   r`   r†  rP  r	   )r'   rF   r  r™   r  r   r   r   Útest_shuffle_custom_axis_emptyÑ  s    z-TestRandomDist.test_shuffle_custom_axis_emptyc                 C   s^   t  d¡ dd¡}| ¡ }tt| jƒƒ}|j|dd� tt| jƒƒ}| |j¡ t	||ƒ d S )Nr—   r@   r   r.   r˜   )
r+   r,   r†  Úcopyr   r   r   rP  ry  r	   )r'   Úy1Úy2rF   r   r   r   Útest_shuffle_axis_nonsquareÙ  s    z*TestRandomDist.test_shuffle_axis_nonsquarec                 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 S )Nr—   )rV   r}   rj   r.   r2   r«   )r+   ÚmaZmasked_valuesr†  r*   r,   r‰  rF   rP  r   ÚsortedÚdataÚmask)r'   rU  rV  Za_origZb_origru  r   r   r   Útest_shuffle_maskedâ  s    "
 ÿ
 ÿz"TestRandomDist.test_shuffle_maskedc                 C   s¼   t t| jƒƒ}t d¡}ttj|j|dƒ t d¡ d¡}ttj|j|dƒ tt	|j|t
ddd ƒƒ g d¢g d¢g}tt|j|dƒ t d¡}tt	|j|ƒ t d	¡}ttj|j|dƒ d S )
Nr   r.   r   ©rj   rj   rj   r@   r‹   )r}   rV   r´   r,  )r   r   r   r+   r,   r   Ú	AxisErrorrP  r†  r4   ÚsliceÚNotImplementedErrorr`   rg  ©r'   rF   rc  r   r   r   Útest_shuffle_exceptionsð  s    


z&TestRandomDist.test_shuffle_exceptionsc                 C   s\   t t| jƒƒ}t d¡}d|j_tjt	dd�� | 
|¡ W d   ƒ n1 sN0    Y  d S )NrV   Fú	read-onlyrt   )r   r   r   r+   rE   ÚflagsÚ	writeablerw   rx   r5   rP  )r'   rF   rU  r   r   r   Útest_shuffle_not_writeableÿ  s
    
z)TestRandomDist.test_shuffle_not_writeablec           	      C   sÆ   t t| jƒƒ}g d¢}| |¡}g d¢}t||ƒ t t| jƒƒ}t g d¢¡j}| |¡}t|t |¡jƒ d}ttj	|j|ƒ d}ttj	|j|ƒ t t| jƒƒ}d}g d¢}| |¡}t||ƒ d S )Nr{  r|  Zabcdg333333ó?r   )
rj   r   r’   r®   r   r}   r@   rV   r.   r´   )
r   r   r   Úpermutationr	   r+   Z
atleast_2dry  r   r“  )	r'   rF   r~  r  r  Zarr_2dZ	bad_x_strZbad_x_floatZinteger_valr   r   r   Útest_permutation  s$    



zTestRandomDist.test_permutationc                 C   s‚   t  d¡ d¡}t  g d¢g d¢g d¢g d¢g¡}tt| jƒƒ}|j|dd�}t||ƒ tt| jƒƒ}|j|d	d�}t||ƒ d S )
Nrç   r€  r�  r‚  rƒ  r…  r.   r˜   r2   )	r+   r,   r†  r`   r   r   r   rœ  r	   )r'   rU  r  rF   r  r   r   r   Útest_permutation_custom_axis  s    
ý
z+TestRandomDist.test_permutation_custom_axisc                 C   sh   t t| jƒƒ}t d¡}ttj|j|dƒ t d¡ d¡}ttj|j|dƒ tt	|j|t
ddd ƒƒ d S )Nr   r.   r   r’  rj   r@   )r   r   r   r+   r,   r   r“  rœ  r†  r4   r”  r–  r   r   r   Útest_permutation_exceptions,  s    
z*TestRandomDist.test_permutation_exceptionsrC   zaxis, expectedN)rj   r®   r   r   r   r„  )r’   r}   r@   rV   r.   r´   r   )r´   r.   r@   r   r   r„  )r   r®   r’   rj   r}   rV   r.   )rV   rj   r}   r   r@   r.   )r„  r   r   r´   r’   r®   c                 C   s�   t t| jƒƒ}t d¡ dd¡ |¡}|j|||d� t||ƒ t t| jƒƒ}t d¡ dd¡ |¡}|j||d�}|j	|ks‚J ‚t||ƒ d S )Nr�   r@   r´   ©r™   Úoutr˜   )
r   r   r   r+   r,   r†  rr  Úpermutedr	   rC   )r'   rC   r™   r§   rF   rY   Úyr   r   r   Útest_permuted4  s    	
zTestRandomDist.test_permutedc                 C   s’   t t| jƒƒ}t d¡ dd¡}| ¡ }|d d …d d d…f }|j|d|d�}t g d¢g d¢g¡}t	||ƒ ||d d …d d d…f< t	||ƒ d S )	Né   r@   r„  rj   r.   r   )r   r   rj   r´   )r²   r—   r„  r¬   )
r   r   r   r+   r,   r†  r‰  r¢  r`   r	   )r'   rF   Zx0Úx1rY   r£  r§   r   r   r   Útest_permuted_with_stridesH  s    
ÿ
z)TestRandomDist.test_permuted_with_stridesc                 C   s   t  g ¡}t|g ƒ d S r   )rF   r¢  r	   )r'   r£  r   r   r   Útest_permuted_emptyU  s    
z"TestRandomDist.test_permuted_emptyÚoutshaper–   rV   c                 C   s^   t  g d¢¡}t j||jd�}tjtdd�� tj||d� W d   ƒ n1 sP0    Y  d S )Nr‹   rB   z
same shapert   ©r¡  )	r+   r`   rE   rC   rw   rx   r5   rF   r¢  )r'   r©  rU  r¡  r   r   r   Ú"test_permuted_out_with_wrong_shapeY  s    z1TestRandomDist.test_permuted_out_with_wrong_shapec                 C   s\   t jdt jd�}t  d¡}tjtdd��  tj|d|d� W d   ƒ n1 sN0    Y  d S )N)rj   rV   rB   zCannot castrt   r.   r   )	r+   rE   rí   rg  rw   rx   r4   rF   r¢  )r'   r¡  rY   r   r   r   Ú!test_permuted_out_with_wrong_type`  s    
z0TestRandomDist.test_permuted_out_with_wrong_typec                 C   sT   t  d¡}d|j_tjtdd��  tj|d|d� W d   ƒ n1 sF0    Y  d S )N)r@   rV   Fr˜  rt   r.   r   )	r+   rE   r™  rš  rw   rx   r5   rF   r¢  rX   r   r   r   Útest_permuted_not_writeablef  s    
z*TestRandomDist.test_permuted_not_writeablec                 C   sL   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||dd� d S )NrK  rf   r,  r¿   gWâ™<$ÅÝ=g¾^
ðº=gð/:ŸÐ‹˜?gÿñÖG!Gc>g©À'ë`Œ2?gåÂUÆ?r°   r>  )r   r   r   Úbetar+   r`   r
   r3  r   r   r   Ú	test_betal  s    þÿzTestRandomDist.test_betac                 C   sp   t t| jƒƒ}|jdddd�}t ddgddgdd	gg¡}t||ƒ t t| jƒƒ}| dd¡}d}t||ƒ d S )
NgZd;ßY@gÉv¾Ÿ/Ý?r,  r¿   re  r/  é0   é,   r«   )r   r   r   rG   r+   r`   r	   r3  r   r   r   Útest_binomialu  s    
þ
zTestRandomDist.test_binomialc                 C   sJ   t 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¿   gm�ÉE~@@g¹
•1Ï‚C@gÚrÓ³­L@gì•m%x¬L@g<kÿÝQ¶K@gó“tªâµK@r¯   r>  )r   r   r   Ú	chisquarer+   r`   r
   r3  r   r   r   Útest_chisquare‚  s    
þzTestRandomDist.test_chisquarec                 C   sÄ   t t| jƒƒ}t ddg¡}|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|j|ƒ t t| jƒƒ}t ddg¡}| |¡}t||d dd� d S )Nç“­I<ÝI@ç÷ÉEZßC@r,  r¿   gˆ2›8\há?gòšÉŽG/Ý?g©Aëpâá?gæ­|);Ü?gùLX�Ëâ?gfOáhôÛ?góë�·WŽá?g(Þ�PãÜ?gz$Q¿ùß?gÄmWt à?gæ��K‹Âà?g4ÞÄhézÞ?r°   r>  çHáz®Gá?ç¼‰Ø—²Òœ¼r  )	r   r   r   r+   r`   Ú	dirichletr
   r   r5   )r'   rF   Ú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 )Nrµ  r¶  r.   r[   r@   r\   r]   )
r+   r`   r   rF   r¹  r^   r_   r   r4   ra   rb   r   r   r   Útest_dirichlet_size�  s    z"TestRandomDist.test_dirichlet_sizec                 C   sŒ   t  ddg¡}ttt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 )Nr·  r¸  rV   r.   )r+   r`   r   r5   rF   r¹  )r'   rº  r   r   r   Útest_dirichlet_bad_alpha©  s    "z'TestRandomDist.test_dirichlet_bad_alphac                 C   sh   t  g d¢¡}|d d d… }tt| jƒƒ}|j|dd�}tt| jƒƒ}|jt  |¡dd�}t||ƒ d S )N)rµ  g      ð¿r¶  r@   r,  r¿   )r+   r`   r   r   r   r¹  rn   r
   )r'   rU  rº  rF   ro   rp   r   r   r   Ú#test_dirichlet_alpha_non_contiguous´  s    ÿz2TestRandomDist.test_dirichlet_alpha_non_contiguousc                 C   sx   d}|t  ddg¡ }tt| 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 )	Nrs   ç      ð?r›   r,  r¿   rS   r°   r>  )r+   r`   r   r   r   r¹  r
   )r'   Zepsrº  rF   r  r§   r   r   r   Útest_dirichlet_small_alpha¾  s     ÿÿÿûz)TestRandomDist.test_dirichlet_small_alphac                 C   sT   t  g d¢¡}|| ¡  }tt| jƒƒ}|j|dd�}|jdd�}t||dd� d S )N)g{®Gáz”?g{®Gáz¤?g¸…ëQ¸ž?i -1r¿   r   r˜   r›   )rœ   )	r+   r`   rm   r   r   r   r¹  rŸ   r   )r'   rº  Z
exact_meanrF   r    Zsample_meanr   r   r   Ú%test_dirichlet_moderately_small_alphaÍ  s    z4TestRandomDist.test_dirichlet_moderately_small_alphac                 C   sJ   t t| jƒƒ}|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�v‰üïM¹?gùíìŸ×øø?g#è±ïc³?g–Qü¹:Nü?gªAÜæPÑ÷?gE_9†‹ù@r°   r>  )r   r   r   Úexponentialr+   r`   r
   r3  r   r   r   Útest_exponential×  s    
þzTestRandomDist.test_exponentialc                 C   s&   t tjdd�dƒ tttjdd� d S ©Nr   ©Úscaleç       €)r   rF   rÂ  r   r5   r6   r   r   r   Útest_exponential_0ß  s    z!TestRandomDist.test_exponential_0c                 C   sL   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||dd� d S )Nr�   éM   r,  r¿   g}(ÒŒÝ?g½i›ñ?g=‘‹rûšñ?g]hÍÇDAí?gjÓ¨¦à?g8·Ñk*uê?r°   r>  )r   r   r   Úfr+   r`   r
   r3  r   r   r   Útest_fã  s    
þzTestRandomDist.test_fc                 C   sL   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||dd� d S )NrV   rj   r,  r¿   g,×©Ën'@gtô²±@gÝ<åe½2@g£1‰Äa”3@g3r
yÑ-2@gs�«1-2@r²   r>  )r   r   r   Úgammar+   r`   r
   r3  r   r   r   Ú
test_gammaë  s    
þzTestRandomDist.test_gammac                 C   s*   t tjddd�dƒ tttjddd� d S )Nr   )r_   rÆ  rÇ  )r   rF   rÌ  r   r5   r6   r   r   r   Útest_gamma_0ó  s    zTestRandomDist.test_gamma_0c                 C   sF   t 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�   r¬   )r   r   r   Ú	geometricr+   r`   r	   r3  r   r   r   Útest_geometric÷  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jdd��6 t ttjtjƒ t ttjtjgd ƒ W d   ƒ n1 sŒ0    Y  d S )Nrd   r   re   Úignore©Úinvalid)r   r5   rF   rÐ  r+   ÚerrstaterJ   r6   r   r   r   Útest_geometric_exceptionsÿ  s    z(TestRandomDist.test_geometric_exceptionsc                 C   sL   t 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,  ©ÚlocrÆ  rŠ   gÈA7GëÀ@gþ«1Fi‡Ò¿geši¹ì@gš¸¹Œ_Cä¿g0cÙPí ¬¿g’`�(¤_Õ¿r°   r>  )r   r   r   Úgumbelr+   r`   r
   r3  r   r   r   Útest_gumbel  s    
þzTestRandomDist.test_gumbelc                 C   s&   t tjdd�dƒ tttjdd� d S rÄ  )r   rF   rÚ  r   r5   r6   r   r   r   Útest_gumbel_0  s    zTestRandomDist.test_gumbel_0c                 C   sò   t t| jƒƒ}|jddddd�}t ddgddgddgg¡}t||ƒ |jdd	d
dd�}t g d¢¡}t||ƒ |jdd	ddd�}t g d¢¡}t||ƒ |jd	dd
dd�}t g d¢¡}t||ƒ |jd	dddd�}t g d¢¡}t||ƒ d S )Ng333333$@g      @r²   r,  r¿   r   r   rV   r   rj   r}   )rj   rj   rj   rj   r°   r�   )r�   r�   r�   r�   )r   r   r   r   )r   r   r   Úhypergeometricr+   r`   r	   r3  r   r   r   Útest_hypergeometric  s&    
þ



z"TestRandomDist.test_hypergeometricc                 C   sL   t 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�ÍÕ6@	Àga@bDA"ó?g*–[rÑ{Àg³>K—‚ú?g«À‘(˜í?gž<ý©’ô?r°   r>  )r   r   r   Úlaplacer+   r`   r
   r3  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 rÄ  )r   rF   rß  r   r5   r6   r   r   r   Útest_laplace_06  s    zTestRandomDist.test_laplace_0c                 C   sL   t 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Ø  gbýíµZÀgHÊŠg$>þ?g>ÔÑ&ø”ÀgÐQhÊ@g%?n‡í÷?g¯Ä‰Ò8|ÿ?r°   r>  )r   r   r   Úlogisticr+   r`   r
   r3  r   r   r   Útest_logistic:  s    
þzTestRandomDist.test_logisticc                 C   sL   t 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Ÿ   ÚsigmarŠ   gÜ’˜Ðx›?gúÅÕk*è+@gšð<ž¡Ò¾?g†á�
ð@g5�Ìaþ@gá%jzÇ(@r¯   r>  )r   r   r   Ú	lognormalr+   r`   r
   r3  r   r   r   Útest_lognormalB  s    
þzTestRandomDist.test_lognormalc                 C   s&   t tjdd�dƒ tttjdd� d S )Nr   )rä  r.   rÇ  )r   rF   rå  r   r5   r6   r   r   r   Útest_lognormal_0J  s    zTestRandomDist.test_lognormal_0c                 C   sF   t t| jƒƒ}|jddd�}t ddgddgdd	gg¡}t||ƒ d S )
NgÆ€@õŒí?r,  )rH   rŠ   r²   r¬   rj   é   rV   r.   )r   r   r   Ú	logseriesr+   r`   r	   r3  r   r   r   Útest_logseriesN  s    
þzTestRandomDist.test_logseriesc                 C   sV   t jdd��6 tttjt jƒ tttjt jgd ƒ W d   ƒ n1 sH0    Y  d S )NrÒ  rÓ  r   )r+   rÕ  r   r5   rF   ré  rJ   r6   r   r   r   Útest_logseries_exceptionsV  s    z(TestRandomDist.test_logseries_exceptionsc                 C   sf   t t| jƒƒ}|jddgd dd�}t g d¢g d¢gg d¢g d	¢gg d
¢g d¢gg¡}t||ƒ d S )Nr—   çUUUUUUÅ?r´   r,  r¿   )r.   rV   r.   r´   r}   rj   )r}   r@   r´   r@   r}   r@   )rV   rj   r@   r´   rj   r.   )r}   r}   r   r@   rj   r®   )r´   rj   r.   rV   rj   r@   )rV   rV   rj   r.   r@   r}   )r   r   r   rQ   r+   r`   r	   r3  r   r   r   Útest_multinomial[  s    
ÿÿÿüzTestRandomDist.test_multinomialr‡   )ÚsvdÚeighÚcholeskyc                 C   sŒ  t t| jƒƒ}d}ddgddgg}d}|j||||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� |j|||d�}t ddg¡}t||dd� ddg}ddgddgg}tt|j||dd� ddgddgg}t	t
|j||ƒ t	t
|j||dd� tt|j||dd� t|j||dd� tt|j||dd� tt|j||ddd� ddgddgg}|dv �rš|j||d|d�}t|d |d  d!d� ntt|j||dd� tjdd"gd"dggtjd#�}tƒ �<}	|j|||d� |	 t
¡}
t|
ƒdk�sþJ ‚W d   ƒ n1 �s0    Y  t d¡}t d¡}tt|j||d$d� tt|jt d%¡|ƒ tt|j|t d¡ƒ tt|j|t d&¡ƒ d S )'N)rÏ  r   r.   r   r,  rˆ   gºt¦Ž«õû¿g¨ãÒ$ƒ&@g&Ø¨O=åï¿g!Ðæ¯$@gÒDÝo¼é?g‹™¿ïº\&@gÀ,£Rü{ì?gÜÁó
f¿!@g?ÕªìÑæ?gTâ^o#@g`¾Rï„Îæ?g€’PÁû'@r°   r>  gýùlÜÍ?g$Çû(Ù"@r@   Úraise)Úcheck_validrï  rð  rÒ  )rò  r‡   )rî  rï  r‰   ).r   ).r.   r´   rK  rB   Úother)r@   r.   r.   rj   )r   r   r   Úmultivariate_normalr+   r`   r
   r   r5   r   ÚRuntimeWarningr   r   rv   r   Úrecordr  rE   ZeyerŽ   )r'   r‡   rF   rŸ   ÚcovrŠ   r  r  r$  ÚsupÚwÚmur   r   r   Útest_multivariate_normalf  sŽ    
ÿÿÿüÿÿÿ
ÿÿÿ

ÿÿÿ
2

ÿ
ÿ
ÿ
ÿz'TestRandomDist.test_multivariate_normalc           	      C   s¢   t t| jƒƒ}d}t ddg¡}t ddgddgg¡}|j|||f|d�}|| }|j| |d  }t t | 	d¡¡dk ¡s‚J ‚t t || ¡dk ¡sžJ ‚d S )Nr!   r.   r@   r‰   r8   rK  rN   )
r   r   r   r+   r`   rô  ry  rW   ÚabsrŸ   )	r'   r‡   rF   Zn_srŸ   r÷  r(   Zs_centerZcov_empr   r   r   Ú$test_multivariate_normal_basic_stats°  s    z3TestRandomDist.test_multivariate_normal_basic_statsc                 C   sH   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||ƒ d S )NrM   g|ò°Pkš¿?r,  )ÚnrH   rŠ   i  i×  i  iø  iX  i¢  )r   r   r   rÆ   r+   r`   r	   r3  r   r   r   rÇ   ½  s    
þz%TestRandomDist.test_negative_binomialc                 C   sZ   t jdd��: tttjdt jƒ tttjdt jgd ƒ W d   ƒ n1 sL0    Y  d S )NrÒ  rÓ  rM   r   )r+   rÕ  r   r5   rF   rÆ   rJ   r6   r   r   r   Ú!test_negative_binomial_exceptionsÅ  s
    

ÿz0TestRandomDist.test_negative_binomial_exceptionsc                 C   s8   t tƒ� t dd¡}W d   ƒ n1 s*0    Y  d S ©Nr.   r   )r   r5   rF   rÆ   rX   r   r   r   Ú#test_negative_binomial_p0_exceptionË  s    
z2TestRandomDist.test_negative_binomial_p0_exceptionc                 C   sT   t jdd��4 tttjddƒ tttjdgdgƒ W d   ƒ n1 sF0    Y  d S )NrÒ  rÓ  r	  rK  )r+   rÕ  r   r5   rF   rÆ   r6   r   r   r   Ú.test_negative_binomial_invalid_p_n_combinationÐ  s    z=TestRandomDist.test_negative_binomial_invalid_p_n_combinationc                 C   sÎ   t t| jƒƒ}|jdddd�}t ddgddgdd	gg¡}t||d
d� |jdddd�}t ddgddgddgg¡}t||d
d� t t| jƒƒ}|jdddd�}t ddgddgddgg¡}t||d
d� d S )NrV   r,  )ÚdfÚnoncrŠ   gsØ€3Jû?gugÙˆ“ò/@gN‹JÁþm+@g†àA}¸-4@gq=È¹&@gj…©ïhn@r²   r>  rD   rN   gZÖ…„DÙN?gÒÔE!X&?gt÷ô¦%Tò?gQ§)»¤V?g5…Zlf�þ?gÎŽáÎ{ó?r   gm€K°‹ê?gÓ©Z…Òü?gŽ%yKY@gÅ@¥W@gÄˆºµ{>@gŠ&ÆBB=@)r   r   r   Únoncentral_chisquarer+   r`   r
   r3  r   r   r   Útest_noncentral_chisquare×  s(    
þ
þ
þz(TestRandomDist.test_noncentral_chisquarec                 C   sN   t t| jƒƒ}|jddddd�}t ddgdd	gd
dgg¡}t||dd� d S )NrV   r@   r.   r,  )ÚdfnumÚdfdenr  rŠ   gœHP
á®?gõÀnŒÎ?g²%¬f—Ëë?gc×hÑ?gžzÆŽÆëÍ?gÞ]Ô?:þ?r²   r>  )r   r   r   Únoncentral_fr+   r`   r
   r3  r   r   r   Útest_noncentral_fì  s    
ÿ
þz TestRandomDist.test_noncentral_fc                 C   s2   t t| jƒƒ}|jddtjd�}t |¡s.J ‚d S )NrV   r@   )r  r  r  )r   r   r   r	  r+   rJ   Úisnan©r'   rF   r  r   r   r   Útest_noncentral_f_nanõ  s    z$TestRandomDist.test_noncentral_f_nanc                 C   sL   t 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Õ?`x‚òÀg\èPà÷@g/7Ž‘uï Àg�0aj¸Öé?g�®iœ%÷?go—¶g®â@r°   r>  )r   r   r   Únormalr+   r`   r
   r3  r   r   r   Útest_normalú  s    
þzTestRandomDist.test_normalc                 C   s&   t tjdd�dƒ tttjdd� d S rÄ  )r   rF   r  r   r5   r6   r   r   r   Útest_normal_0  s    zTestRandomDist.test_normal_0c                 C   sN   t 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,  ©rU  rŠ   gÂìÃ¡ð?g¢Æ«ŒhÕò@gˆiŽ`®>ç?gƒü0"&Ag¯ÿ‹cæ@g=‰¸f�Arª   )Znulp)r   r   r   Úparetor+   r`   ZtestingZassert_array_almost_equal_nulpr3  r   r   r   Útest_pareto  s    
þ	zTestRandomDist.test_paretoc                 C   sF   t 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   Úpoissonr+   r`   r	   r3  r   r   r   Útest_poisson  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 jdd��6 tttjt jƒ tttjt jgd ƒ W d   ƒ n1 sœ0    Y  d S )Nrƒ   r2   r   rÒ  rÓ  )	r+   r‚   r„   r   r5   rF   r  rÕ  rJ   )r'   ZlambigZlamnegr   r   r   Útest_poisson_exceptions  s    z&TestRandomDist.test_poisson_exceptionsc                 C   sJ   t 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‰¯²¶Zý >g‰«¡µú¹?gÃ„î(ñ=gÒ‡ö¾ŒÃ?g›ÅšÿEö´?gûß¢˜“HÙ?r°   r>  )r   r   r   Úpowerr+   r`   r
   r3  r   r   r   Ú
test_power'  s    
þzTestRandomDist.test_powerc                 C   sJ   t 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Š   grêyŸÇ@gßtQÒP«0@gAI¼�ð_@g@âu8¿1@g¹æ	¾ƒG0@g"wæc5@r²   r>  )r   r   r   Úrayleighr+   r`   r
   r3  r   r   r   Útest_rayleigh/  s    
þzTestRandomDist.test_rayleighc                 C   s&   t tjdd�dƒ tttjdd� d S rÄ  )r   rF   r  r   r5   r6   r   r   r   Útest_rayleigh_07  s    zTestRandomDist.test_rayleigh_0c                 C   sH   t t| jƒƒ}|jdd�}t ddgddgddgg¡}t||d	d
� d S )Nr,  r¿   g¹H1µ¼Ô÷¿gW˜|ÿ3
Àg‡ôå×\ìá?gL•eõÈå¿g5�Pâ	õ¿g–ÛûFAïÒ?r°   r>  )r   r   r   Zstandard_cauchyr+   r`   r
   r3  r   r   r   Útest_standard_cauchy;  s    
þz#TestRandomDist.test_standard_cauchyc                 C   sJ   t t| jƒƒ}|jddd�}t ddgddgdd	gg¡}t||d
d� d S )Nr,  Úinvr‰   ga\Œ5Âº?grô7k«ó?g8ªPC*�¶?g5ñè$–[÷?gW3ºT€ñ?g*ðÁê“ô?r°   r>  )r   r   r   Ústandard_exponentialr+   r`   r
   r3  r   r   r   Útest_standard_exponentialC  s    
þz(TestRandomDist.test_standard_exponentialc                 C   s   t ttjtjd� d S ©NrB   )r   r4   rF   r  r+   rí   r6   r   r   r   Ú#test_standard_expoential_type_errorK  s    z2TestRandomDist.test_standard_expoential_type_errorc                 C   sJ   t t| jƒƒ}|jddd�}t ddgddgdd	gg¡}t||d
d� d S )Nrj   r,  ©r_   rŠ   gÎˆÌ�&ä?gT»Ï¿­”ó?g1n2ÿ1@gDb<zË@gÊBváÿ@gŠ„c^�þ@r²   r>  ©r   r   r   Ústandard_gammar+   r`   r
   r3  r   r   r   Útest_standard_gammaN  s    
þz"TestRandomDist.test_standard_gammac                 C   s4   t t| jƒƒ}|jdtjd�}d}t||dd� d S )Nrj   rB   g   ÀÊd@r´   r>  )r   r   r   r%  r+   rv   r
   r3  r   r   r   Ú!test_standard_gammma_scalar_floatV  s    z0TestRandomDist.test_standard_gammma_scalar_floatc                 C   sJ   t t| jƒƒ}|jddd�}t ddgddgdd	gg¡}t||d
d� d S )Nrj   r,  r#  gfÚþ••&ä?gM„O¯”ó?g�½Þý1@gÇ):’Ë@g«²ïŠàÿ@g;ÂiÁ‹þ@rV   r>  r$  r3  r   r   r   Útest_standard_gamma_float\  s    
þz(TestRandomDist.test_standard_gamma_floatc                 C   s”   t jdt jd�}tt| jƒƒ}|jd|t jd� t jddgddgd	d
ggt jd�}t||dd� tt| jƒƒ}|jd|dt jd� t||dd� d S )Nr,  rB   ç      $@©r¡  rC   g”M¹Â»L$@gÐa¾¼ {@g°�N]ùì"@gPSËÖú")@gŸ«­Ø_¦+@gmÊÞåB@rV   r>  ©r¡  rŠ   rC   )	r+   rE   rv   r   r   r   r%  r`   r
   )r'   r  rF   r  r   r   r   Útest_standard_gammma_float_outd  s    
þþz-TestRandomDist.test_standard_gammma_float_outc                 C   s   t ttjddd� d S )Nr¿  rí   rB   )r   r4   rF   r%  r6   r   r   r   Ú test_standard_gamma_unknown_typeq  s    
ÿz/TestRandomDist.test_standard_gamma_unknown_typec                 C   s6   t  d¡}tttjdd|d� tttjdd|d� d S )Nr   r)  r—   )rŠ   r¡  )r   r.   )r+   rE   r   r5   rF   r%  )r'   r¡  r   r   r   Útest_out_size_mismatchu  s    
ÿÿz%TestRandomDist.test_out_size_mismatchc                 C   s&   t tjdd�dƒ tttjdd� d S )Nr   )r_   rÇ  )r   rF   r%  r   r5   r6   r   r   r   Útest_standard_gamma_0|  s    z$TestRandomDist.test_standard_gamma_0c                 C   sH   t t| jƒƒ}|jdd�}t ddgddgddgg¡}t||d	d
� d S )Nr,  r¿   gð
bYïý¿g?—ö ô?gGH{Lìñ¿gzÃ\ãÕ?gcöÈ`+å?gTÌü}×åò?r°   r>  )r   r   r   rÀ   r+   r`   r
   r3  r   r   r   Útest_standard_normal€  s    
þz#TestRandomDist.test_standard_normalc                 C   s   t ttjtjd� d S r!  )r   r4   rF   rÀ   r+   rí   r6   r   r   r   Ú%test_standard_normal_unsupported_typeˆ  s    z4TestRandomDist.test_standard_normal_unsupported_typec                 C   sJ   t 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…‰V1Á÷¿g	|Ú™(•Ó?g‰öÒË-èð?gÍ NàhÚ¿gMäcìºÀ?g!uLòîM Àr°   r>  )r   r   r   Ú
standard_tr+   r`   r
   r3  r   r   r   Útest_standard_t‹  s    
þzTestRandomDist.test_standard_tc                 C   sN   t 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{®Gáz@gö(\�Âu$@g×£p=
W4@r,  )ÚleftÚmodeÚrightrŠ   gˆE©pw@g 4àDC+@g›ÍÅ‹á¹@g¿ƒš/¹,@gk£éïuR*@gHNPœcr+@r²   r>  )r   r   r   Ú
triangularr+   r`   r
   r3  r   r   r   Útest_triangular“  s    
ÿ
þzTestRandomDist.test_triangularc                 C   sL   t t| jƒƒ}|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,  )r  r  rŠ   gmª2ƒ@gJça˜D@gª¼:� @g
ö§×QÁ @g@T{eê¯@gÚbìþ’�@r°   r>  ©r   r   r   Úuniformr+   r`   r
   r3  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 )Nra   r   r.   g  Ø…W4vC)r  r  )
r+   ZfinforÑ   r„   rF   r;  r   ÚOverflowErrorÚinfÚ	nextafter)r'   ZfminZfmaxÚfuncr   r   r   Útest_uniform_range_bounds¤  s    z(TestRandomDist.test_uniform_range_boundsc                 C   sn   t j}|ddƒ}t|dƒ |dtjgdtjgƒ}t|dtjgƒ |dgdggddgƒ}t|dt d¡ ƒ d S )Nç      ø?rS   g
×£p=Â @r]   )rF   r;  r   r+   ÚpirE   )r'   r@  Úresultr   r   r   Útest_uniform_zero_range´  s    

z&TestRandomDist.test_uniform_zero_rangec                 C   sH   t j}tt|ddƒ tt|ddgddgƒ tt|ddgddggdƒ d S )Nr@   r.   r   rj   )rF   r;  r   r5   )r'   r@  r   r   r   Útest_uniform_neg_range½  s    z%TestRandomDist.test_uniform_neg_rangec                 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   ©r4   r6   r   r   r   Ú	__float__Ë  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)r<   r=   r>   rH  r   r   r   r   ÚThrowingFloatÊ  s   rI  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   rG  r6   r   r   r   Ú__int__Ó  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)r<   r=   r>   rJ  r   r   r   r   ÚThrowingIntegerÒ  s   rK  r.   )	r+   Zndarrayr`   rú   r   r4   rF   r;  rÝ  )r'   rI  Zthrowing_floatrK  Zthrowing_intr   r   r   Ú!test_scalar_exception_propagationÃ  s    
ÿz0TestRandomDist.test_scalar_exception_propagationc                 C   sL   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||dd� d S )Nr9  ç¤p=
×£ø?r,  ©rú  ÚkapparŠ   gLþÏAºñ?gûxÞyw»@g·ÉzÞVRý?g¡pEÑ ÿ?g‡8&™A¦Ð¿géÿ…šáv @r°   r>  )r   r   r   Úvonmisesr+   r`   r
   r3  r   r   r   Útest_vonmisesÙ  s    
þzTestRandomDist.test_vonmisesc                 C   s4   t t| jƒƒ}|jdddd�}tt |¡ ¡ ƒ d S )NrS   gg5_PŸG>i@B rN  )r   r   r   rP  r   r+   ÚisfiniterW   ©r'   rF   Úrr   r   r   Útest_vonmises_smallá  s    z"TestRandomDist.test_vonmises_smallc                 C   s0   t t| jƒƒ}|jdtjd�}tt |¡ƒ d S )NrS   )rú  rO  )r   r   r   rP  r+   rJ   r   r  rS  r   r   r   Útest_vonmises_nanç  s    z TestRandomDist.test_vonmises_nanrO  g     ˆÃ@ç  4&õkCc                 C   sr   t t| jƒƒ}t|jƒ}|jj}|jd|dd�}||j_|jd|dd�}|dk r\t||ƒ nt 	||k¡snJ ‚d S )Nr   r   r¿   g    €„.A)
r   r   r   r   rº   r»   rP  r   r+   rW   )r'   rO  rF   Úrsr»   Zrandom_state_valsZgen_valsr   r   r   Útest_vonmises_large_kappaì  s    
z(TestRandomDist.test_vonmises_large_kapparú  g      ÀgÍÌÌÌÌÌÀgš™™™™™	@)rs   g�íµ ÷Æ°>r.   g     @�@rW  c                 C   sF   t t| jƒƒ}| ||d¡}tt |tj k¡o>t |tjk¡ƒ d S )Nr«   )r   r   r   rP  r   r+   rW   rC  )r'   rú  rO  rF   rT  r   r   r   Útest_vonmises_large_kappa_rangeú  s    z.TestRandomDist.test_vonmises_large_kappa_rangec                 C   sL   t t| jƒƒ}|jdddd�}t ddgddgd	d
gg¡}t||dd� d S )Nr9  rM  r,  )rŸ   rÆ  rŠ   g*Ø³©2Ñ?gçtÌï‚É	@g—;S @g\ÄÞ ÔF@g«xèÓF‘ @g ¿Œ6bç?r²   r>  )r   r   r   Úwaldr+   r`   r
   r3  r   r   r   Ú	test_wald  s    
þzTestRandomDist.test_waldc                 C   sJ   t t| jƒƒ}|jddd�}t ddgddgdd	gg¡}t||d
d� d S )Nr9  r,  r  gnJZË¾Á?g*Ô/Fçô?gsÄ(RY“¼?gÿÛ]'%÷?g,×qãDô?gçÿö8Â þ?r°   r>  )r   r   r   Úweibullr+   r`   r
   r3  r   r   r   Útest_weibull	  s    
þzTestRandomDist.test_weibullc                 C   s<   t t| jƒƒ}t|jddd�t d¡ƒ tt|jdd� d S )Nr   r�   r  rÇ  )rU  )	r   r   r   r   r]  r+   rE   r   r5   )r'   rF   r   r   r   Útest_weibull_0  s    zTestRandomDist.test_weibull_0c                 C   sF   t t| jƒƒ}|jddd�}t ddgddgddgg¡}t||ƒ d S )	Nr9  r,  r  r.   r   ic  ib  r@   )r   r   r   Úzipfr+   r`   r	   r3  r   r   r   Ú	test_zipf  s    
þzTestRandomDist.test_zipf)€r<   r=   r>   r|   r4  r8  r:  r=  rA  rC  rD  rw   r¶   r·   r+   rv   r^   Úfloat64rð   rE  rF  rI  rM  rQ  rT  rZ  r[  r\  r_  rd  rf  rh  ri  rk  rm  r  r‡  rˆ  rŒ  r‘  r—  r›  r�  rž  rŸ  rA   r  r`   r¤  r§  r¨  r«  r¬  r­  r¯  r²  r´  r»  r¼  r½  r¾  rÀ  r(  rÁ  rÃ  rÈ  rË  rÍ  rÎ  rÑ  rÖ  rÛ  rÜ  rÞ  rà  rá  rã  ræ  rç  rê  rë  rí  rû  rý  rÇ   rÿ  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r'  r(  r,  r-  r.  r/  r0  r1  r3  r8  r<  rA  rE  rF  rL  rQ  rU  rV  rY  rC  rZ  r\  r^  r_  ra  r   r   r   r   r)  Â  s  

ÿÿ
		.			ÿÿÿüÿ
	

		
I
			
r)  c                	   @   sT  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zd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"e#j$ %dAdBe& 'dBdBg¡e& 'dBggdBggg¡g¡dCdD„ ƒZ(dEdF„ Z)dGdH„ Z*dIS )JÚTestBroadcastc                 C   s
   d| _ d S )NiÍ[r{   r6   r   r   r   r|   "  s    zTestBroadcast.setupc                 C   sŠ   t t| jƒƒ}dg}dg}|j}t g d¢¡}t t| jƒƒ}| |d |¡}t||dd� t t| jƒƒ}| ||d ¡}t||dd� d S )Nr   r.   )gî4Ô
7^Å?gÌF]
"É?gñ�Ø .è?rj   r²   r>  r:  )r'   rF   r  r  r;  r  r  r   r   r   r<  &  s    zTestBroadcast.test_uniformc                 C   s´   dg}dg}dg}t t| jƒƒ}t g d¢¡}t t| jƒƒ}| |d |¡}t||dd� tt|j|d |ƒ t t| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ d S )Nr   r.   r2   )gw-D¨’ÊØ¿gn§0_xé?gºÊŠ;<.”?rj   r²   r>  )	r   r   r   r+   r`   r  r
   r   r5   )r'   rÙ  rÆ  Ú	bad_scalerF   r  r  r  r   r   r   r  5  s    zTestBroadcast.test_normalc           	      C   sª   dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt||d |ƒ tt| jƒƒ}| ||d ¡}t||dd� d S )	Nr.   r@   r2   r8   )gfý8ñóõÇ?g”ü%–eoç?g¬$q?ÙòÆ?rj   r²   r>  )	r+   r`   r   r   r   r®  r
   r   r5   )	r'   rU  rV  Úbad_aZbad_br  rF   r®  r  r   r   r   r¯  G  s    zTestBroadcast.test_betac                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S ©Nr.   r2   )g`ˆ±Ê„å?gþEÑðõ]Ë?g°øæ?rj   r²   r>  )	r+   r`   r   r   r   rÂ  r
   r   r5   ©r'   rÆ  rd  r  rF   r  r   r   r   rÃ  Y  s    zTestBroadcast.test_exponentialc                 C   s\   dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d ƒ}t||dd� tt||d ƒ d S rf  )	r+   r`   r   r   r   r%  r
   r   r5   )r'   r_   Ú	bad_shaper  rF   Z	std_gammar  r   r   r   r&  c  s    z!TestBroadcast.test_standard_gammac           	      C   sÒ   dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt||d |ƒ tt| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ tt|||d ƒ d S )	Nr.   r@   r2   r8   )g3ˆ±Ê„õ?gJEÑðõ]Û?g°øö?rj   r²   r>  )	r+   r`   r   r   r   rÌ  r
   r   r5   )	r'   r_   rÆ  rh  rd  r  rF   rÌ  r  r   r   r   rÍ  n  s"    zTestBroadcast.test_gammac           	      C   sÒ   dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt||d |ƒ tt| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ tt|||d ƒ d S )	Nr.   r@   r2   r8   )g…M3Bèà³?gybi¶ë@g0ñ»ðòŸ­?rj   r²   r>  )	r+   r`   r   r   r   rÊ  r
   r   r5   )	r'   r  r  Ú	bad_dfnumÚ	bad_dfdenr  rF   rÊ  r  r   r   r   rË  ƒ  s"    zTestBroadcast.test_fc              	   C   s¤  dg}dg}dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}	|	|d ||ƒ}
t|
|dd	� t  t  |	||t j	gd ƒ¡¡sˆJ ‚t
t|	|d ||ƒ t
t|	|d ||ƒ t
t|	|d ||ƒ tt| jƒƒ}|j}	|	||d |ƒ}
t|
|dd	� t
t|	||d |ƒ t
t|	||d |ƒ t
t|	||d |ƒ tt| jƒƒ}|j}	|	|||d ƒ}
t|
|dd	� t
t|	|||d ƒ t
t|	|||d ƒ t
t|	|||d ƒ d S )
Nr@   rj   r}   r   r2   r8   )gÅœ,nÚ1 @g¨!ò°6Ö)@gó›ðË9çó?r²   r>  )r+   r`   r   r   r   r	  r
   rW   r  rJ   r   r5   )r'   r  r  r  ri  rj  Úbad_noncr  rF   Znonc_fr  r   r   r   r
  ˜  s:    $zTestBroadcast.test_noncentral_fc                 C   s@   t t| jƒƒ}t ddg¡}|jddddd�}t||dd� d S )NgZ\ÇáÞ#¨?gDqìwº¿?rf   r@   r¿   r²   r>  )r   r   r   r+   r`   r	  r
   )r'   rF   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  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S )Nr.   r2   )g—¤éC{‰¬?g7Q‘ð#Ž÷?g%hÅ1T“@rj   r²   r>  )	r+   r`   r   r   r   r³  r
   r   r5   ©r'   r  Úbad_dfr  rF   r  r   r   r   r´  Á  s    zTestBroadcast.test_chisquarec           	      C   sÒ   dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt||d |ƒ tt| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ tt|||d ƒ d S )	Nr.   r@   r2   r8   )g-¯èS½³?g×[ø@grª3/õ.ä?rj   r²   r>  )	r+   r`   r   r   r   r  r
   r   r5   )	r'   r  r  rn  rk  r  rF   Znonc_chir  r   r   r   r  Ë  s"    z'TestBroadcast.test_noncentral_chisquarec                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S )Nr.   r2   )gäð>ßQö¿g™çý�{°ó¿g©,³‹eÆ?rj   r²   r>  )	r+   r`   r   r   r   r2  r
   r   r5   rm  r   r   r   r3  à  s    zTestBroadcast.test_standard_tc                 C   s¤   dg}dg}dg}t  g d¢¡}tt| jƒƒ}| |d |¡}t||dd� tt|j|d |ƒ tt| jƒƒ}| ||d ¡}t||dd� tt|j||d ƒ d S )Nr@   r.   r2   )g½Dê()@g,)Ê¸Ý@gP™›o»Àrj   r²   r>  )	r+   r`   r   r   r   rP  r
   r   r5   )r'   rú  rO  Z	bad_kappar  rF   r  r   r   r   rQ  ê  s    zTestBroadcast.test_vonmisesc                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S )Nr.   r2   )gƒ/h¼Š°î?gcÀ‚EƒÎ?g/gÊVÌð?rj   r²   r>  )	r+   r`   r   r   r   r  r
   r   r5   ©r'   rU  re  r  rF   r  r   r   r   r  ú  s    zTestBroadcast.test_paretoc                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S rf  )	r+   r`   r   r   r   r]  r
   r   r5   ro  r   r   r   r^    s    zTestBroadcast.test_weibullc                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S )Nr.   r2   )gï†ÕÃTß?gþÁÊ¥£È?gKêÜ®cà?rj   r²   r>  )	r+   r`   r   r   r   r  r
   r   r5   ro  r   r   r   r    s    zTestBroadcast.test_powerc                 C   s¨   dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ d S )Nr   r.   r2   )gh&•B�ñ¿gås­éí¿gRÙÀ#ßèæ?rj   r²   r>  )	r+   r`   r   r   r   rß  r
   r   r5   )r'   rÙ  rÆ  rd  r  rF   rß  r  r   r   r   rà    s    zTestBroadcast.test_laplacec                 C   s¨   dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt| jƒƒ}|j}|||d ƒ}t||dd� tt|||d ƒ d S )Nr   r.   r2   )g˜s¡4û?g”$Cw%Tø?gŒå›òÕ¿rj   r²   r>  )	r+   r`   r   r   r   rÚ  r
   r   r5   )r'   rÙ  rÆ  rd  r  rF   rÚ  r  r   r   r   rÛ  *  s    zTestBroadcast.test_gumbelc                 C   s¶   dg}dg}dg}t  g d¢¡}tt| jƒƒ}| |d |¡}t||dd� tt|j|d |ƒ tt| jƒƒ}| ||d ¡}t||dd� tt|j||d ƒ t	| dd	¡dƒ d S )
Nr   r.   r2   )g¡$ÆõD¸ù¿gŽXØëPŒö¿gŽ,Ûò?rj   r²   r>  r¿  rS   )
r+   r`   r   r   r   râ  r
   r   r5   r   )r'   rÙ  rÆ  rd  r  rF   r  r   r   r   rã  <  s    zTestBroadcast.test_logisticc                 C   s˜   dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}t||dd� tt||d |ƒ tt| jƒƒ}| ||d ¡}tt|j||d ƒ d S )Nr   r.   r2   )gõ cÚ¹å?g °­u»@g›Vóé…Qð?rj   r²   r>  )	r+   r`   r   r   r   rå  r
   r   r5   )r'   rŸ   rä  Z	bad_sigmar  rF   rå  r  r   r   r   ræ  M  s    zTestBroadcast.test_lognormalc                 C   sZ   dg}dg}t  g d¢¡}tt| jƒƒ}| |d ¡}t||dd� tt|j|d ƒ d S )Nr.   r2   )gsó·(Žò?g4mKçìä?g…Vk¢+ó?rj   r²   r>  )	r+   r`   r   r   r   r  r
   r   r5   rg  r   r   r   r  ]  s    ÿzTestBroadcast.test_rayleighc                 C   sÒ   dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}| |d |¡}t||dd� tt|j|d |ƒ tt|j|d |ƒ tt| jƒƒ}| ||d ¡}t||dd� tt|j||d ƒ tt|j||d ƒ d S )	NrD   r.   r   r8   )gÓk7¥�ZØ?g´ˆ*}z9à?gcûµÛ-	ß?rj   r²   r>  )	r+   r`   r   r   r   r[  r
   r   r5   )r'   rŸ   rÆ  Zbad_meanrd  r  rF   r  r   r   r   r\  k  s    zTestBroadcast.test_waldc                 C   s¶  dg}dg}dg}dg}dg}|d \}}t  g d¢¡}tt| jƒƒ}	|	j}
|
|d ||ƒ}t||dd� tt|
|d ||ƒ tt|
|d ||ƒ tt|
|d ||ƒ tt| jƒƒ}	|	j}
|
||d |ƒ}t||dd� tt|
||d |ƒ tt|
||d |ƒ tt|
||d |ƒ tt| jƒƒ}	|	j}
|
|||d ƒ}t||dd� tt|
|||d ƒ tt|
|||d ƒ tt|
|||d ƒ tt|
dd	d
ƒ tt|
ddd
ƒ tt|
dddƒ d S )Nr.   rj   r@   r}   )gR8Tµ¿>ù?gK›Ìú?g†;ôñ>h@r²   r>  r)  rS   g      4@g      9@)	r+   r`   r   r   r   r7  r
   r   r5   )r'   r4  r6  r5  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor  rF   r7  r  r   r   r   r8  ~  sJ    ÿÿ
ÿzTestBroadcast.test_triangularc           
      C   sð   dg}dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d |ƒ}	t|	|ƒ tt||d |ƒ tt||d |ƒ tt||d |ƒ tt| jƒƒ}| ||d ¡}	t|	|ƒ tt|||d ƒ tt|||d ƒ tt|||d ƒ d S )Nr.   rD   r2   rB  ©r   r   r.   rj   )	r+   r`   r   r   r   rG   r	   r   r5   )
r'   rþ  rH   Úbad_nÚ	bad_p_oneÚ	bad_p_twor  rF   Zbinomr  r   r   r   r²  ¦  s&    

zTestBroadcast.test_binomialc           
      C   sú   dg}dg}dg}dg}dg}t jg d¢t jd�}tt| jƒƒ}|j}||d |ƒ}	t|	|ƒ tt	||d |ƒ tt	||d |ƒ tt	||d |ƒ tt| jƒƒ}|j}|||d ƒ}	t|	|ƒ tt	|||d ƒ tt	|||d ƒ tt	|||d ƒ d S )Nr.   rD   r2   rB  )r   r@   r.   rB   rj   )
r+   r`   rƒ   r   r   r   rÆ   r	   r   r5   )
r'   rþ  rH   rq  rr  rs  r  rF   Z	neg_binomr  r   r   r   rÇ   ½  s(    

z$TestBroadcast.test_negative_binomialc           	      C   sx   dg}dg}t  g d¢¡}tt| jƒƒ}|j}|d g}|j}||d ƒ}t||ƒ tt	||d ƒ tt	||d ƒ d S )Nr.   r2   )r   r   rj   r@   rj   )
r+   r`   r   r   r   Z_poisson_lam_maxr  r	   r   r5   )	r'   r  Zbad_lam_oner  rF   Zmax_lamZbad_lam_twor  r  r   r   r   r  Õ  s    

zTestBroadcast.test_poissonc                 C   s¦   dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d ƒ}t||ƒ tt||d ƒ t j	dd��2 tt|t j
ƒ tt|ddt j
gƒ W d   ƒ n1 s˜0    Y  d S )Nr@   r   )r.   r’   r.   rj   rÒ  rÓ  )r+   r`   r   r   r   r`  r	   r   r5   rÕ  rJ   )r'   rU  re  r  rF   r`  r  r   r   r   ra  ä  s    
zTestBroadcast.test_zipfc                 C   sn   dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d ƒ}t||ƒ tt||d ƒ tt||d ƒ d S )NrD   r2   rB  r£   rj   )	r+   r`   r   r   r   rÐ  r	   r   r5   )r'   rH   rr  rs  r  rF   rÐ  r  r   r   r   rÑ  ò  s    
zTestBroadcast.test_geometricc                 C   s2  dg}dg}dg}dg}dg}dg}dg}t  g d¢¡}tt| jƒƒ}	|	 |d ||¡}
t|
|ƒ tt|	j|d ||ƒ tt|	j|d ||ƒ tt|	j|d ||ƒ tt|	j|d ||ƒ tt| jƒƒ}	|	 ||d |¡}
t|
|ƒ tt|	j||d |ƒ tt|	j||d |ƒ tt|	j||d |ƒ tt|	j||d |ƒ tt| jƒƒ}	|	j}||||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
ƒ tt|ddd	ƒ tt|dddƒ tt|dddgdƒ d S )Nr.   r@   r2   r8   r}   rp  rj   r   r—   r“   i   @iç  l        r«   i    r!   )	r+   r`   r   r   r   rÝ  r	   r   r5   )r'   ZngoodZnbadr‘   Z	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twor  rF   r  Z	hypergeomr   r   r   rÞ  ÿ  sJ    


z!TestBroadcast.test_hypergeometricc                 C   sn   dg}dg}dg}t  g d¢¡}tt| jƒƒ}|j}||d ƒ}t||ƒ tt||d ƒ tt||d ƒ d S )NrD   r@   r2   )r.   r.   r.   rj   )	r+   r`   r   r   r   ré  r	   r   r5   )r'   rH   rr  rs  r  rF   ré  r  r   r   r   rê  ,	  s    
zTestBroadcast.test_logseriesc                 C   sn  t t| jƒƒ}|jddgdgd dd�}tjg d¢g d¢gg d	¢g d
¢gg d¢g d¢ggtjd�}t||ƒ t t| jƒƒ}| ddgdgd ¡}tjg d¢g d¢gtjd�}t||ƒ t t| jƒƒ}| ddgdgd gd ¡}tjg d¢g d¢gtjd�}t||ƒ t t| jƒƒ}| dgdggdgd gd ¡}tjg d¢g d¢gg d¢g d
¢ggtjd�}t||ƒ d S )NrV   r—   rì  r´   r,  r¿   )r   r   r@   r.   r@   r   )r@   rj   r´   r}   r@   rj   )r.   r   r.   r   r@   r.   )r®   r@   r@   r.   r}   r}   )r   r@   r   r.   r@   r   )rj   r@   rj   rj   r}   rV   rB   r@   )r   r   r@   r.   r.   r.   )r}   r@   rj   rj   rV   rj   )r   r   r   rQ   r+   r`   rƒ   r	   r3  r   r   r   rí  9	  sV    
ÿÿÿüû

ÿÿ

ÿÿ
 
ÿÿþýzTestBroadcast.test_multinomialrþ  r   c                 C   sJ  t t| jƒƒ}t dgd ¡}| ||¡}t|tƒr:tƒ n|j	}|d }|j	|ksVJ ‚t 
||g¡}| ||¡}t ||j	d d… ¡d }|j	|ks˜J ‚t 
|g|gg¡}| ||¡}t ||j	d d… ¡}|j	|d ksÞJ ‚|j||d| d�}|j	d| d k�s
J ‚t t¡�  |j||dd�}W d   ƒ n1 �s<0    Y  d S )Nr^  r}   )r}   r2   r,  r¿   )r.   r.   r.   r.   r.   r.   )r   r   r   r+   r`   rQ   r�   rA   r`  r_   rx  Zbroadcast_shapesrw   rx   r5   )r'   rþ  rF   rl   r  Zn_shaper¡   r   r   r   Útest_multinomial_pval_broadcastX	  s$    z-TestBroadcast.test_multinomial_pval_broadcastc                 C   sF   t t| jƒƒ}dgd dgd g}tt|jd|ƒ tt|jddƒ d S )Nrì  r´   r^  r.   rD   )r   r   r   r   r5   rQ   )r'   rF   rl   r   r   r   Útest_invalid_pvals_broadcastt	  s    z*TestBroadcast.test_invalid_pvals_broadcastc                 C   s‚   t t| jƒƒ}| t dd¡dgd ¡}|jdks6J ‚| dt d¡¡}|jdksVJ ‚| t dd¡t d	¡¡}|jd	ks~J ‚d S )
N)r   r   r´   Úi8rì  r´   )r   r   r´   r´   r�   )r   r   r   )rj   r   r®   )rj   r   r®   r}   )r   r   r   rQ   r+   rŽ   r_   r  r   r   r   Útest_empty_outputsz	  s    ÿz TestBroadcast.test_empty_outputsN)+r<   r=   r>   r|   r<  r  r¯  rÃ  r&  rÍ  rË  r
  rl  r´  r  r3  rQ  r  r^  r  rà  rÛ  rã  ræ  r  r\  r8  r²  rÇ   r  ra  rÑ  rÞ  rê  rí  rw   r¶   r·   r+   r`   rt  ru  rw  r   r   r   r   rc    sN   
#




(-
þ
rc  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestThreadc                 C   s   t dƒ| _d S )Nr}   )r*   Úseedsr6   r   r   r   r|   ‡	  s    zTestThread.setupc                    sÌ   ddl m‰  t t| jƒf| ¡}t t| jƒf| ¡}‡ ‡fdd„t| j|ƒD ƒ}dd„ |D ƒ dd„ |D ƒ t| j|ƒD ]\}}ˆtt|ƒƒ|ƒ q|t 	¡ j
jdkr¾tjdkr¾t||ƒ n
t||ƒ d S )	Nr   )ÚThreadc                    s(   g | ] \}}ˆ ˆt t|ƒƒ|fd �‘qS ))ÚtargetÚargs)r   r   )rt  r(   Úo©rz  Úfunctionr   r   rv  ‘	  s   ÿz-TestThread.check_function.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   )Ústart©rt  rY   r   r   r   rv  “	  rp  c                 S   s   g | ]}|  ¡ ‘qS r   )Újoinr�  r   r   r   rv  ”	  rp  r}   Úwin32)Ú	threadingrz  r+   rŽ   r  ry  Úzipr   r   ZintprC   r…   ró   Úplatformr
   r	   )r'   r  ÚszZout1Zout2Útr(   r}  r   r~  r   Úcheck_functionŠ	  s    
ÿzTestThread.check_functionc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j dd�|d< d S )Nrj  r¿   .)r  ©r»   r¡  r   r   r   Ú
gen_random¡	  s    z*TestThread.test_normal.<locals>.gen_random)rj  ©r‡  ©r‰  ©r'   r‹  r   r   r   r   	  s    zTestThread.test_normalc                 C   s   dd„ }| j |dd� d S )Nc                 S   s   | j t d¡d�|d< d S )N©rM   r!   rÅ  .)rÂ  r+   rg  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´   rj  r¿   .)rQ   rŠ  r   r   r   r‹  ­	  s    z/TestThread.test_multinomial.<locals>.gen_random)rj  r´   rŒ  r�  rŽ  r   r   r   rí  ¬	  s    zTestThread.test_multinomialN)r<   r=   r>   r|   r‰  r  r�  rí  r   r   r   r   rx  …	  s
   rx  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@   rj   r}   rz  )r+   r`   ÚargOneÚargTwoÚargThreeÚtgtShaper6   r   r   r   r|   µ	  s    zTestSingleEltArrayInput.setupc                 C   s€   t jt jt jt jt jt jt jt jt j	t j
t jt jf}t jt jf}|D ]6}||v rb|t dg¡ƒ}n
|| jƒ}t|j| jƒ qDd S rÅ   )rF   rÂ  r%  r³  r2  r  r]  r  r  r  r`  rÐ  ré  r+   r`   r’  r   r_   r•  )r'   ÚfuncsÚ	probfuncsr@  r¡  r   r   r   Útest_one_arg_funcs»	  s    û
z*TestSingleEltArrayInput.test_one_arg_funcsc                 C   sÈ   t jt jt jt jt jt jt jt jt j	t j
t jt jt jt jf}t jt jf}|D ]v}||v rft dg¡}n| j}|| j|ƒ}t|j| jƒ || jd |ƒ}t|j| jƒ || j|d ƒ}t|j| jƒ qLd S )NrD   r   )rF   r;  r  r®  rÌ  rÊ  r  rP  rß  rÚ  râ  rå  r[  rG   rÆ   r+   r`   r“  r’  r   r_   r•  )r'   r–  r—  r@  r“  r¡  r   r   r   Útest_two_arg_funcsÎ	  s&    úz*TestSingleEltArrayInput.test_two_arg_funcsc              	   C   s¶   t jt jt jt jt jt jt jt jt j	g	}t
j}t  dg¡}t  dg¡}|D ]f}|||||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í   r^   rƒ   rð   rF   r%   r`   r   r_   r•  )r'   r   rÏ   r@  r  r  rÓ   r¡  r   r   r   r4  é	  s    ÿz%TestSingleEltArrayInput.test_integersc                 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   )
rF   r	  r7  rÝ  r’  r“  r”  r   r_   r•  )r'   r–  r@  r¡  r   r   r   Útest_three_arg_funcsú	  s    ÿz,TestSingleEltArrayInput.test_three_arg_funcsN)r<   r=   r>   r|   r˜  r™  r4  rš  r   r   r   r   r‘  ´	  s
   r‘  r  c                 C   sî   | d }| d }t |ƒ}| |¡ |jd d }tjdkrB| ¡ }t |¡}|jd d | d d ksjJ ‚| ¡ | d d ks‚J ‚| 	¡ }|jd d }tjdkrª| ¡ }t |¡}|jd d | d	 d ksÒJ ‚| ¡ | d	 d ksêJ ‚d S )
Nr   r   r»   r¼   r  r   r   r   r   )
r   r/   r»   ró   rô   rõ   rö   r÷   rø   r   )r  r   r   Zmt19937r¼   r÷   r   r   r   r   Útest_jumped	
  s"    




r›  c                  C   sn  t  d¡} t  d¡}d}tj| |dd�jdks2J ‚t t¡�  tj| ||d� W d   ƒ n1 sb0    Y  t t¡�  tj| |dd� W d   ƒ n1 sœ0    Y  t t¡�  tj| |dd� W d   ƒ n1 sÖ0    Y  t  d¡}t t¡� tj||d� W d   ƒ n1 �s0    Y  t t¡� tj|dd� W d   ƒ n1 �sT0    Y  t t¡� tj|dd� W d   ƒ n1 �sŽ0    Y  t  	|¡}t t¡� tj||d	� W d   ƒ n1 �sÒ0    Y  t t¡�$ tj
d
ddgdd� W d   ƒ n1 �s0    Y  t t¡�$ tj
d
dgddd� W d   ƒ n1 �sR0    Y  t t¡�( tj
d
dgddgdd� W d   ƒ n1 �s–0    Y  t t¡�( tjddgddgdd� W d   ƒ n1 �sÚ0    Y  tjddd�}tjddd�}tjddd�}t |||¡jdk�s(J ‚tjtdd��" tj|||dd� W d   ƒ n1 �s`0    Y  d S )Nrj   )r}   rj   )r   r}   r@   )rV   r}   rj   r¿   )r.   rj   )r}   r.   r.   )rj   rª  r.   rR  gffffffæ?)r@   r.   r@   rV   zOutput size \(6, 5, 1, 1\) isrt   )r´   rV   r.   r.   )r+   rg  rF   r  r_   rw   rx   r5   r%  rŽ   rG   rQ   r³  r	  )rú  rä  rŠ   r_   r¡  rU  rV  rW  r   r   r   Útest_broadcast_size_error%
  sD    

...
...
.4488rœ  c                  C   sb   t  d¡} t  d¡}tj| |dd� t t¡�  tj| |dd� W d   ƒ n1 sT0    Y  d S )Nrj   r¿   r@   )r+   rg  rF   r  rw   rx   r5   )rú  rä  r   r   r   Útest_broadcast_size_scalarP
  s
    

r�  c                  C   s8   g g dg} t tdƒƒ}t|j| ƒ | dg g gks4J ‚d S r   )r   r   r   rP  )ÚseqÚgenr   r   r   Útest_ragged_shuffleX
  s    
r   r  r8   c                 C   sâ   t tdƒƒ}|rdnd}tjt|d�� |j| |d� W d   ƒ n1 sJ0    Y  |r\dnd}tjt|d��  |jd| |d� W d   ƒ n1 s”0    Y  tjt|d��" |jdg| |d� W d   ƒ n1 sÔ0    Y  d S )	Nr   zhigh < 0z	high <= 0rt   r<  z
low > highzlow >= highr2   )r   r   rw   rx   r5   r%   )r  r   rŸ  Úmsgr   r   r   Ú!test_single_arg_integer_exception`
  s    ,.r¢  rC   Zf4Zf8c                 C   sœ   t jdd| d�}g d¢}tjtdd��  tj||| d� W d   ƒ n1 sL0    Y  tjtdd��$ tj|||j| d� W d   ƒ n1 sŽ0    Y  d S )	Nr–   ÚF)ÚorderrC   r‹   zSupplied output arrayrt   r*  r+  )r+   rŽ   rw   rx   r5   rF   r%  r_   )rC   r¡  r_   r   r   r   Útest_c_contig_req_outo
  s    .r¥  r¤  r£  ÚCÚdistc                 C   sH   t jd||d�}| ||d�}||u s(J ‚| |||jd�}||u sDJ ‚d S )Nr–   )rC   r¤  r*  )r¡  rC   rŠ   )r+   rŽ   r_   )r§  r¤  rC   r¡  Zvariatesr   r   r   Útest_contig_req_outz
  s
    r¨  ).ró   rö   rw   Únumpyr+   Znumpy.linalgr   Znumpy.testingr   r   r   r   r   r   r	   r
   r   Znumpy.randomr   r   r   r   rF   ZJUMP_TEST_DATAZfixturer   r    r?   rL   rz   r¸   rÈ   r)  rc  rx  r‘  r¶   r·   r›  rœ  r�  r   r¢  r¥  rÀ   r¨  r   r   r   r   Ú<module>   s‚   ,
üüüó
$6 "   	        e    j/U
+

