U
    U‚gn  ã                   @   s(  d dl Z d dlmZ d dlZd dlZd dlmZmZm	Z	 d dl
mZmZmZmZmZmZ ejdejejejejejejejejejf	d�dd„ ƒZd	d
„ Zd dd„Zdd„ Zd!dd„ZG dd„ dƒZ G dd„ de ƒZ!G dd„ de ƒZ"G dd„ de ƒZ#G dd„ de ƒZ$G dd„ de ƒZ%G dd„ de ƒZ&dS )"é    N)Úpartial)Úassert_equalÚassert_Úassert_array_equal)Ú	GeneratorÚMT19937ÚPCG64Ú	PCG64DXSMÚPhiloxÚSFC64Úmodule)ZscopeÚparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úA/tmp/pip-unpacked-wheel-qf11kc36/numpy/random/tests/test_smoke.pyÚdtype	   s    r   c                 C   sr   | ƒ }t t |¡ƒ | dƒ}t |jdkƒ | dƒ}t |jdkƒ | dƒ}t |jdkƒ | dd�}t |jdkƒ d S )Né
   ©r   ©r   r   ©r   r   r   )é   r   ©Úsize)r   ÚnpÚisscalarÚshape)ÚfÚvalr   r   r   Úparams_0   s    
r    Fc                 C   s   d}t  dd¡}t  dd¡ d¡}t  dd¡ d¡}t  ddg¡}t  dd¡ d	¡}|r¬d
}|d| ¡   }|d| ¡   }|d| ¡   }|d| ¡   }|d| ¡   }| |ƒ | |dd� | |ƒ | |ƒ | |ƒ | |dd� | |dd� | |dd� d S )Ng      @ç       @g      (@ç     €Y@r   g     P�@r   ç      @)é   r   r$   ç      à?g      ø?r   r   ©r   é   )r   ÚarangeÚreshapeÚarrayÚmax)r   ÚboundedÚaÚbÚcÚdÚeÚgr   r   r   Úparams_1   s*    r3   c                 C   s®   d}t | tƒr0| D ]}|t| | || ƒM }qnzt| ƒt|ƒkrV|t| ƒt|ƒkM }nTt | tttjfƒržt |tttjfƒržt| |ƒD ]\}}|t||ƒM }q„n|| |kM }|S )NT)	Ú
isinstanceÚdictÚ
comp_stateÚtypeÚlistÚtupler   ZndarrayÚzip)Ústate1Ústate2Z	identicalÚkeyÚs1Ús2r   r   r   r6   >   s    
 
ÿr6   c                 C   s¸   |d krdt j dd¡ }|  |¡ |  |¡ | j|t jd� | j|t jd� | jdd|t jd� | jdd|t jd� |  d|¡ | jd|t jd� | j|t jd� | j|t jd� d S )Né   r   é   ©r   é   l          g      &@)	r   ÚrandomÚrandintÚstandard_normalÚfloat32ÚintegersÚuint64Ústandard_gammaÚfloat64)ÚrgÚnr   r   r   ÚwarmupO   s    

rN   c                   @   sD  e Zd Zedd„ ƒZe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„ Z0d[d\„ Z1d]d^„ Z2d_d`„ Z3dadb„ Z4dcdd„ Z5dedf„ Z6dgdh„ Z7didj„ Z8dkdl„ Z9dmdn„ Z:dodp„ Z;dqdr„ Z<dsdt„ Z=dudv„ Z>dwdx„ Z?dydz„ Z@d{d|„ ZAd}d~„ ZBdd€„ ZCd�d‚„ ZDdƒd„„ ZEd…d†„ ZFd‡dˆ„ ZGd‰dŠ„ ZHd‹dŒ„ ZId�S )ŽÚRNGc                 C   sD   t | _d | _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S )Né90  é@   ©
r   Úbit_generatorÚadvanceÚseedr   rL   ÚstateÚinitial_stateÚseed_vector_bitsÚ_extra_setup©Úclsr   r   r   Úsetup_class_   s    zRNG.setup_classc                 C   sH   t  dd¡| _t  dd¡d d d …f | _t  ddd¡ d¡| _t| _d S )Nr!   r"   g{®Gáz„?©éd   r^   )r   r(   Úvec_1dÚvec_2dr)   ÚmatÚ	TypeErrorÚ
seed_errorrZ   r   r   r   rY   j   s    zRNG._extra_setupc                 C   s   | j | jj_d S r   )rW   rL   rS   rV   ©Úselfr   r   r   Ú_reset_stateq   s    zRNG._reset_statec                 C   sJ   t |  ¡ ƒ}|jj}| d¡ | d¡ ||j_|jj}tt||ƒƒ d S )Nr$   )r   rS   rV   rF   r   r6   )re   rL   rV   Z	new_stater   r   r   Ú	test_initt   s    

zRNG.test_initc                 C   s`   | j jj}t| j jdƒr@| j j | j¡ tt|| j jjƒ ƒ n| j jjj}t	 
d|› �¡ d S )NrT   zAdvance is not supported by )rL   rS   rV   ÚhasattrrT   r   r6   Ú	__class__Ú__name__ÚpytestÚskip)re   rV   Úbitgen_namer   r   r   Útest_advance}   s    
zRNG.test_advancec                 C   s¨   | j jj}t| j jdƒrr| j j ¡ }|j}tt||ƒ ƒ | j  d¡ || j j_| j j ¡ }|j}tt||ƒƒ n2| j jjj	}|dkr”t
d|› �ƒ‚t d|› �¡ d S )NÚjumpedi.Ê )r   zno "jumped" in zJump is not supported by )rL   rS   rV   rh   ro   r   r6   rD   ri   rj   ÚAttributeErrorrk   rl   )re   rV   Zbit_gen2Zjumped_stateZbit_gen3Zrejumped_staterm   r   r   r   Ú	test_jump†   s    

zRNG.test_jumpc                 C   sF   | j jdddd�}tt|ƒdkƒ t|dk ¡ ƒ t|dk ¡ ƒ d S )Nç      ð¿ç        r   r   éÿÿÿÿr   )rL   Úuniformr   ÚlenÚall©re   Úrr   r   r   Útest_uniform—   s    zRNG.test_uniformc                 C   sú   | j jt dgd ¡ddd�}tt|ƒdkƒ t|dk ¡ ƒ t|dk ¡ ƒ | j jt dgd ¡t dgd ¡dd�}tt|ƒdkƒ t|dk ¡ ƒ t|dk ¡ ƒ | j jdt dgd ¡dd�}tt|ƒdkƒ t|dk ¡ ƒ t|dk ¡ ƒ d S )Nrr   r   rs   r   rt   r   )rL   ru   r   r*   r   rv   rw   rx   r   r   r   Útest_uniform_array�   s     ÿzRNG.test_uniform_arrayc                 C   s(   t t| j d¡ƒdkƒ t| jjƒ d S ©Nr   )r   rv   rL   rD   r    rd   r   r   r   Útest_random¬   s    zRNG.test_randomc                 C   s   t t| j d¡ƒdkƒ d S r|   )r   rv   rL   rF   rd   r   r   r   Útest_standard_normal_zig°   s    zRNG.test_standard_normal_zigc                 C   s(   t t| j d¡ƒdkƒ t| jjƒ d S r|   )r   rv   rL   rF   r    rd   r   r   r   Útest_standard_normal³   s    zRNG.test_standard_normalc                 C   sP   t t| j dd¡ƒdkƒ t t| j t dgd ¡d¡ƒdkƒ t| jjƒ d S r|   )r   rv   rL   rJ   r   r*   r3   rd   r   r   r   Útest_standard_gamma·   s    &zRNG.test_standard_gammac                 C   s(   t t| j d¡ƒdkƒ t| jjƒ d S r|   )r   rv   rL   Ústandard_exponentialr    rd   r   r   r   Útest_standard_exponential¼   s    zRNG.test_standard_exponentialc                 C   sH   | j jddd�}tt|ƒdkƒ |jtjks0t‚tt	| j jdd�ƒ d S )Nr   rG   rB   ©
rL   r�   r   rv   r   r   rG   ÚAssertionErrorr    r   ©re   Zrandomsr   r   r   Útest_standard_exponential_floatÀ   s    z#RNG.test_standard_exponential_floatc                 C   sL   | j jdddd�}tt|ƒdkƒ |jtjks2t‚tt	| j jddd�ƒ d S )Nr   rG   Úinv)r   Úmethodrƒ   r…   r   r   r   Ú#test_standard_exponential_float_logÆ   s    
ÿÿz'RNG.test_standard_exponential_float_logc                 C   s(   t t| j d¡ƒdkƒ t| jjƒ d S r|   )r   rv   rL   Zstandard_cauchyr    rd   r   r   r   Útest_standard_cauchyÎ   s    zRNG.test_standard_cauchyc                 C   s*   t t| j dd¡ƒdkƒ t| jjƒ d S r|   )r   rv   rL   Z
standard_tr3   rd   r   r   r   Útest_standard_tÒ   s    zRNG.test_standard_tc                 C   s0   t | j dd¡dkƒ t | j dd¡dkƒ d S )Nr   r%   r   éè  )r   rL   Zbinomialrd   r   r   r   Útest_binomialÖ   s    zRNG.test_binomialc                 C   s<   | j jj}| j  d¡}|| j j_| j  d¡}t||kƒ d S )Nl        )rL   rS   rV   rH   r   )re   rV   Zint_1Zint_2r   r   r   Útest_reset_stateÚ   s
    

zRNG.test_reset_statec                 C   s4   t |  ¡ ƒ}t |  ¡ ƒ}tt|jj|jjƒ ƒ d S r   )r   rS   r   r6   rV   ©re   rL   Úrg2r   r   r   Útest_entropy_initá   s
    
ÿzRNG.test_entropy_initc                 C   sJ   t | j| jŽ ƒ}t | j| jŽ ƒ}| ¡  | ¡  tt|jj|jjƒƒ d S r   )r   rS   rU   rD   r   r6   rV   r�   r   r   r   Ú	test_seedç   s
    zRNG.test_seedc                 C   sZ   t | j| jŽ ƒ}| ¡  |jj}|jdd�}t |  ¡ ƒ}||j_|jdd�}t||ƒ d S )Nr   r   )r   rS   rU   rF   rV   r   ©re   rL   rV   Zn1r�   Zn2r   r   r   Útest_reset_state_gaussî   s    zRNG.test_reset_state_gaussc                 C   sv   t | j| jŽ ƒ}|jdddtjd� |jj}|jdddtjd�}t |  ¡ ƒ}||j_|jdddtjd�}t||ƒ d S )Nr   rC   éx   rB   r   )r   rS   rU   rH   r   Úuint32rV   r   r“   r   r   r   Útest_reset_state_uint32ø   s    zRNG.test_reset_state_uint32c                 C   sh   t | j| jŽ ƒ}|jdd� |jj}|jddd�}t |  ¡ ƒ}||j_|jddd�}t||k ¡ ƒ d S )NrG   rB   r   ©r   r   )r   rS   rU   rD   rV   r   rw   r“   r   r   r   Útest_reset_state_float  s    zRNG.test_reset_state_floatc                 C   s.   t  ddd¡}| j |¡}t||k ¡ ƒ d S ©NéÈ   r   rt   ©r   r(   rL   Zpermutationr   Úany©re   ÚoriginalZpermutedr   r   r   Útest_shuffle  s    zRNG.test_shufflec                 C   s.   t  ddd¡}| j |¡}t||k ¡ ƒ d S rš   rœ   rž   r   r   r   Útest_permutation  s    zRNG.test_permutationc                 C   sä   | j  ddd¡}tt|ƒdkƒ | j  t dgd ¡d¡}tt|ƒdkƒ | j  dt dgd ¡¡}tt|ƒdkƒ | j  t dgd ¡t dgd ¡¡}tt|ƒdkƒ | j  t dgd ¡t dggd ¡¡}t|jdkƒ d S )Nr!   r   r   )rL   Úbetar   rv   r   r*   r   ©re   Úvalsr   r   r   Ú	test_beta  s    &(zRNG.test_betac                 C   s    | j  d¡}tt|ƒdkƒ d S r|   )rL   Úbytesr   rv   r£   r   r   r   Ú
test_bytes"  s    zRNG.test_bytesc                 C   s.   | j  dd¡}tt|ƒdkƒ t| j jƒ d S ©Nr!   r   )rL   Z	chisquarer   rv   r3   r£   r   r   r   Útest_chisquare&  s    zRNG.test_chisquarec                 C   s.   | j  dd¡}tt|ƒdkƒ t| j jƒ d S r¨   )rL   Úexponentialr   rv   r3   r£   r   r   r   Útest_exponential+  s    zRNG.test_exponentialc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S )Né   rŒ   r   )rL   r   r   rv   r£   r   r   r   Útest_f0  s    z
RNG.test_fc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S )Nr¬   r'   r   )rL   Úgammar   rv   r£   r   r   r   Ú
test_gamma4  s    zRNG.test_gammac                 C   s2   | j  dd¡}tt|ƒdkƒ t| j jdd� d S )Nr%   r   T©r,   )rL   Z	geometricr   rv   r3   rª   r£   r   r   r   Útest_geometric8  s    zRNG.test_geometricc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S r¨   )rL   Zgumbelr   rv   r£   r   r   r   Útest_gumbel=  s    zRNG.test_gumbelc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S r¨   )rL   Zlaplacer   rv   r£   r   r   r   Útest_laplaceA  s    zRNG.test_laplacec                 C   s$   | j  ddd¡}tt|ƒdkƒ d S r¨   )rL   Zlogisticr   rv   r£   r   r   r   Útest_logiticE  s    zRNG.test_logiticc                 C   s"   | j  dd¡}tt|ƒdkƒ d S )Nr%   r   )rL   Z	logseriesr   rv   r£   r   r   r   Útest_logseriesI  s    zRNG.test_logseriesc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S ©Nr   çš™™™™™É?)rL   Znegative_binomialr   rv   r£   r   r   r   Útest_negative_binomialM  s    zRNG.test_negative_binomialc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S )Nr   r'   )rL   Znoncentral_chisquarer   rv   r£   r   r   r   Útest_noncentral_chisquareQ  s    zRNG.test_noncentral_chisquarec                 C   sª   | j  dddd¡}tt|ƒdkƒ | j  t dgd ¡dd¡}tt|ƒdkƒ | j  dt dgd ¡d¡}tt|ƒdkƒ | j  ddt dgd ¡¡}tt|ƒdkƒ d S )Nr¬   rŒ   r'   r   )rL   Znoncentral_fr   rv   r   r*   r£   r   r   r   Útest_noncentral_fU  s    zRNG.test_noncentral_fc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S r¶   )rL   Únormalr   rv   r£   r   r   r   Útest_normal_  s    zRNG.test_normalc                 C   s"   | j  dd¡}tt|ƒdkƒ d S )Nr#   r   )rL   Zparetor   rv   r£   r   r   r   Útest_paretoc  s    zRNG.test_paretoc                 C   sV   | j  dd¡}tt|ƒdkƒ | j  t dgd ¡¡}tt|ƒdkƒ t| j jƒ d S r|   )rL   Zpoissonr   rv   r   r*   r3   r£   r   r   r   Útest_poissong  s
    zRNG.test_poissonc                 C   s"   | j  dd¡}tt|ƒdkƒ d S )Nr·   r   )rL   Úpowerr   rv   r£   r   r   r   Ú
test_powern  s    zRNG.test_powerc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S )Nr   rA   )rL   rH   r   rv   r£   r   r   r   Útest_integersr  s    zRNG.test_integersc                 C   s2   | j  dd¡}tt|ƒdkƒ t| j jdd� d S )Nr·   r   Tr°   )rL   Zrayleighr   rv   r3   r£   r   r   r   Útest_rayleighv  s    zRNG.test_rayleighc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S r¶   )rL   Zvonmisesr   rv   r£   r   r   r   Útest_vonmises{  s    zRNG.test_vonmisesc                 C   s$   | j  ddd¡}tt|ƒdkƒ d S ©Nç      ð?r   )rL   Zwaldr   rv   r£   r   r   r   Ú	test_wald  s    zRNG.test_waldc                 C   s"   | j  dd¡}tt|ƒdkƒ d S rÄ   )rL   Zweibullr   rv   r£   r   r   r   Útest_weibullƒ  s    zRNG.test_weibullc                 C   sx   | j  dd¡}tt|ƒdkƒ | j  | j¡}tt|ƒdkƒ | j  | j¡}t|jdkƒ | j  | j¡}t|jdkƒ d S )Nr   r^   )r$   r^   r]   )rL   Zzipfr   rv   r_   r`   r   ra   r£   r   r   r   Ú	test_zipf‡  s    zRNG.test_zipfc                 C   sL   | j  ddd¡}tt |¡ƒ | j  t dgd ¡dd¡}t|jdkƒ d S )Né   rA   r   r   )rL   Zhypergeometricr   r   r   r*   r   r£   r   r   r   Útest_hypergeometric‘  s    zRNG.test_hypergeometricc                 C   sL   | j  ddd¡}tt |¡ƒ | j  dt dgd ¡d¡}t|jdkƒ d S )Néûÿÿÿr   r   r   r   )rL   Ú
triangularr   r   r   r*   r   r£   r   r   r   Útest_triangular—  s    zRNG.test_triangularc                 C   s†   ddg}ddgddgg}| j  ||d¡}t|jdkƒ | j  ||d¡}t|jdkƒ | j  ||d¡}t|jdkƒ t||k ¡ ƒ d S )Nr   r$   r^   éˆ  )rÎ   r'   )rL   Zmultivariate_normalr   r   r�   )re   ZmeanZcovÚxZx_zigZx_invr   r   r   Útest_multivariate_normal�  s    zRNG.test_multivariate_normalc                 C   sH   | j  dddg¡}t|jdkƒ | j jdddgdd�}t|jdkƒ d S )Nr^   gUUUUUUÕ?gUUUUUUå?)r'   r   r   r&   )rL   Zmultinomialr   r   r£   r   r   r   Útest_multinomial¨  s    zRNG.test_multinomialc                 C   s    | j  dd¡}t|jdkƒ d S )N)r   r   r¬   rA   )rA   r¬   )rL   Z	dirichletr   r   )re   Úsr   r   r   Útest_dirichlet®  s    zRNG.test_dirichletc                 C   sŒ   t  | j¡}t  |¡}tt| jƒt|ƒkƒ tt| jjj|jjƒƒ t  | j¡}t  |¡}tt| jƒt|ƒkƒ tt| jjj|jjƒƒ d S r   )	ÚpickleÚdumpsrL   Úloadsr   r7   r6   rS   rV   )re   ZpickZunpickr   r   r   Útest_pickle²  s    
ÿ
ÿzRNG.test_picklec                 C   sX  | j d kr"| jj}t d|› �¡ | j dkr4tj}ntj}tjdg|d�}|  |¡}|j	}|  d¡}|j	}t
t||ƒƒ tjd|d�}|  |¡}|j	}|  |d ¡}|j	}t
t||ƒ ƒ tjd|d�}|  |¡}|j	}|  |d ¡}|j	}t
t||ƒ ƒ dt tjd|d�| j d ¡ d }|  |¡}|j	}|  |d ¡}|j	}t
t||ƒ ƒ d S )	Nz#Vector seeding is not supported by é    r$   rB   é   r   iÜ  r'   )rX   rS   rj   rk   rl   r   r–   rI   r*   rV   r   r6   r(   Úmod)re   rm   r   rU   Úbgr;   r<   r   r   r   Útest_seed_array¿  sD    





ÿÿ
zRNG.test_seed_arrayc                 C   sŒ   t |  d¡ƒ}t|ƒ |jj}|jdtjd�}t |  ¡ ƒ}t|ƒ ||j_|jdtjd�}t||ƒ t|j	tjƒ t
t|jj|jjƒƒ d S )NrP   r@   rB   )r   rS   rN   rV   rD   r   rG   r   r   r   r   r6   ©re   rL   rV   Zr1r�   Zr2r   r   r   Útest_uniform_floatå  s    
zRNG.test_uniform_floatc                 C   sŽ   t |  ¡ ƒ}t|ƒ |jj}|jddtjd�}t |  ¡ ƒ}t|ƒ ||j_|jddtjd�}t||ƒ t|j	tjƒ t
t|jj|jjƒƒ d S )Ng      @r@   rB   )r   rS   rN   rV   rJ   r   rG   r   r   r   r   r6   rÝ   r   r   r   Útest_gamma_floatsò  s    
zRNG.test_gamma_floatsc                 C   sŠ   t |  ¡ ƒ}t|ƒ |jj}|jdtjd�}t |  ¡ ƒ}t|ƒ ||j_|jdtjd�}t||ƒ t|j	tjƒ t
t|jj|jjƒƒ d S ©Nr@   rB   ©r   rS   rN   rV   rF   r   rG   r   r   r   r   r6   rÝ   r   r   r   Útest_normal_floatsÿ  s    
zRNG.test_normal_floatsc                 C   sŠ   t |  ¡ ƒ}t|ƒ |jj}|jdtjd�}t |  ¡ ƒ}t|ƒ ||j_|jdtjd�}t||ƒ t|j	tjƒ t
t|jj|jjƒƒ d S rà   rá   rÝ   r   r   r   Útest_normal_zig_floats  s    
zRNG.test_normal_zig_floatsc                 C   s¾   | j }|jj}d}t |¡}||j_|j|d� ||j_|j|d�}t||ƒ t |¡}||j_|j||jd� tj|tjd�}||j_|j|tjd� ||j_|j|tjd�}t||ƒ d S )N©é   é   éa   ©Úoutr   )ré   r   rB   ©ré   r   r˜   )	rL   rS   rV   r   ÚemptyrF   r   r   rG   )re   rL   rV   r   ÚexistingÚdirectZsizedr   r   r   Útest_output_fill  s$    


zRNG.test_output_fillc                 C   sœ   | j }|jj}d}t |¡}||j_|j|d� ||j_|j|d�}t||ƒ tj|tjd�}||j_|j|tjd� ||j_|j|tjd�}t||ƒ d S ©Nrä   rè   r   rB   rê   r˜   )rL   rS   rV   r   rë   rD   r   rG   ©re   rL   rV   r   rì   rí   r   r   r   Útest_output_filling_uniform/  s    

zRNG.test_output_filling_uniformc                 C   sœ   | j }|jj}d}t |¡}||j_|j|d� ||j_|j|d�}t||ƒ tj|tjd�}||j_|j|tjd� ||j_|j|tjd�}t||ƒ d S rï   )rL   rS   rV   r   rë   r�   r   rG   rð   r   r   r   Útest_output_filling_exponentialA  s    

z#RNG.test_output_filling_exponentialc                 C   s¤   | j }|jj}d}t |¡}||j_|jd|d� ||j_|jd|d�}t||ƒ tj|tjd�}||j_|jd|tjd� ||j_|jd|tjd�}t||ƒ d S )Nrä   rÅ   rè   r   rB   rê   r˜   )rL   rS   rV   r   ÚzerosrJ   r   rG   rð   r   r   r   Útest_output_filling_gammaS  s    

zRNG.test_output_filling_gammac                 C   s²   | j }|jj}d}t d¡d }t |¡}||j_|j||d� ||j_|j||d�}t||ƒ tj|tjd�}||j_|j||tjd� ||j_|j||tjd�}t||ƒ d S )	Nrä   g     @X@rÅ   rè   r   rB   rê   r˜   )	rL   rS   rV   r   r(   ró   rJ   r   rG   )re   rL   rV   r   Úmurì   rí   r   r   r   Ú#test_output_filling_gamma_broadcaste  s     

z'RNG.test_output_filling_gamma_broadcastc              	   C   sp  | j }d}t |¡}t t¡� |j|tjd� W 5 Q R X t t¡� |j|d d d… d� W 5 Q R X tj|tjd�}t t¡� |j|tj	d� W 5 Q R X tj
|tjd�}t t¡� |jd|tj	d� W 5 Q R X t t¡�" |jd|d d d… tjd� W 5 Q R X tj
|tj	d�}t t¡� |jd|tjd� W 5 Q R X t t¡� |jd|d d d… d� W 5 Q R X d S )Nrä   rê   r¬   rè   rB   rÅ   )rL   r   rë   rk   Úraisesrb   rF   rG   Ú
ValueErrorrK   ró   rJ   )re   rL   r   rì   r   r   r   Útest_output_fill_errorx  s(    
 &zRNG.test_output_fill_errorc           
      C   sf  |t jkrd}d}nt  |¡}t|jƒd }|j}|  ¡  | jj||gd |d�}|  ¡  | jj|gd ||d�}t	||ƒ |  ¡  | jj||d|d�}t	||ƒ |  ¡  | jjt  
|gd ¡t j
|gtd�d|d�}t	||ƒ |  ¡  | jjt  
|gd ¡t  
|gd ¡d|d�}	t	||	ƒ |  ¡  | jjd|d|d�}|  ¡  | jj|gd |d�}t	||ƒ d S )Nr'   r   r$   r   rB   r˜   )r   Úbool_ÚiinfoÚintr+   Úminrf   rL   rH   r   r*   Úobject)
re   r   ÚupperÚlowerÚinfor-   r.   r/   r0   r1   r   r   r   Útest_integers_broadcast�  sH    




ÿ þ
  þ
zRNG.test_integers_broadcastc                 C   s„   t  dg¡}t  dg¡}| jj|||d�}|jdks8t‚| jj|d ||d�}|jdks\t‚| jj||d |d�}|jdks€t‚d S )Nr$   r   rB   )r$   )r   r*   rL   rH   r   r„   )re   r   ÚhighÚlowré   r   r   r   Útest_integers_numpy°  s    zRNG.test_integers_numpyc              	   C   sú   |t jkrd}d}nt  |¡}t|jƒd }|j}t t¡�" | j	j
||d gd |d� W 5 Q R X t t¡�" | j	j
|d |gd |d� W 5 Q R X t t¡�$ | j	j
|d g|gd |d� W 5 Q R X t t¡� | j	j
dgdg|d� W 5 Q R X d S )Nr'   r   r$   r   rB   )r   rú   rû   rü   r+   rý   rk   r÷   rø   rL   rH   )re   r   rÿ   r   r  r   r   r   Útest_integers_broadcast_errors½  s    

&&(z"RNG.test_integers_broadcast_errorsN)Jrj   Ú
__module__Ú__qualname__Úclassmethodr\   rY   rf   rg   rn   rq   rz   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  r   r   r   r   rO   ^   s�   


		




&!rO   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestMT19937c                 C   sJ   t | _d | _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  t
| _d S )Ni! ! rØ   )r   rS   rT   rU   r   rL   rV   rW   rX   rY   rø   rc   rZ   r   r   r   r\   Ð  s    zTestMT19937.setup_classc                 C   sh   t j ¡ }| d¡ | ¡ }|| jj_| jjj}t|d |d d k 	¡ ƒ t|d |d d kƒ d S )Néc   r$   rV   r=   r'   Úpos)
r   rD   ZRandomStaterF   Z	get_staterL   rS   rV   r   rw   )re   ZnprgrV   r<   r   r   r   Útest_numpy_stateÛ  s    



zTestMT19937.test_numpy_stateN)rj   r  r  r	  r\   r  r   r   r   r   r
  Ï  s   

r
  c                   @   s   e Zd Zedd„ ƒZdS )Ú
TestPhiloxc                 C   sD   t | _d| _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S ©Nl         rP   rQ   )
r
   rS   rT   rU   r   rL   rV   rW   rX   rY   rZ   r   r   r   r\   æ  s    zTestPhilox.setup_classN©rj   r  r  r	  r\   r   r   r   r   r  å  s   r  c                   @   s   e Zd Zedd„ ƒZdS )Ú	TestSFC64c                 C   sD   t | _d | _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S )NrP   éÀ   )
r   rS   rT   rU   r   rL   rV   rW   rX   rY   rZ   r   r   r   r\   ò  s    zTestSFC64.setup_classNr  r   r   r   r   r  ñ  s   r  c                   @   s   e Zd Zedd„ ƒZdS )Ú	TestPCG64c                 C   sD   t | _d| _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S r  rR   rZ   r   r   r   r\   þ  s    zTestPCG64.setup_classNr  r   r   r   r   r  ý  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestPCG64DXSMc                 C   sD   t | _d| _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S r  )
r	   rS   rT   rU   r   rL   rV   rW   rX   rY   rZ   r   r   r   r\   
  s    zTestPCG64DXSM.setup_classNr  r   r   r   r   r  	  s   r  c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestDefaultRNGc                 C   sB   t | _d| _dg| _tjj| jŽ | _| jjj| _	d| _
|  ¡  d S r  )r   rS   rT   rU   r   rD   Údefault_rngrL   rV   rW   rX   rY   rZ   r   r   r   r\     s    zTestDefaultRNG.setup_classc                 C   s   t t| jjtƒƒ d S r   )r   r4   rL   rS   r   rd   r   r   r   Útest_default_is_pcg64"  s    z$TestDefaultRNG.test_default_is_pcg64c              	   C   s–   t j ¡  t j d ¡ t j d¡ t j d¡ t j d¡ t j ddg¡ t t¡� t j d¡ W 5 Q R X t t¡� t j ddg¡ W 5 Q R X d S )NrP   r   l	   -µtE+�IÌ6Í%ÆYl  l	   )	Ë�~¬eR :TI* 6Ò rt   )r   rD   r  rk   r÷   rø   rd   r   r   r   r’   '  s    
ÿzTestDefaultRNG.test_seedN)rj   r  r  r	  r\   r  r’   r   r   r   r   r    s   
r  )F)N)'rÔ   Ú	functoolsr   Znumpyr   rk   Znumpy.testingr   r   r   Znumpy.randomr   r   r   r	   r
   r   Zfixturerú   Zint8Zint16Zint32Zint64Zuint8Zuint16r–   rI   r   r    r3   r6   rN   rO   r
  r  r  r  r  r  r   r   r   r   Ú<module>   s:       ÿÿ

!
    u