o
    Ô­j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)ÚscopeÚparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úZ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/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	¡}|rVd
}|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*   r4   c                 C   s´   d}t | tƒr| D ]}|t| | || ƒM }q	|S t| ƒt|ƒkr-|t| ƒt|ƒkM }|S t | tttjfƒrRt |tttjfƒrRt| |ƒD ]\}}|t||ƒM }qD|S || |kM }|S )NT)	Ú
isinstanceÚdictÚ
comp_stateÚtypeÚlistÚtupler   ÚndarrayÚzip)Ústate1Ústate2Ú	identicalÚkeyÚs1Ús2r   r   r   r7   >   s    

÷úÿÿr7   c                 C   s¸   |d u 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   

rQ   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   óD   t | _d | _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S )Né90  é@   ©
r   Úbit_generatorÚadvanceÚseedr   rO   Ú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   rb   )r   r)   Úvec_1dÚvec_2dr*   ÚmatÚ	TypeErrorÚ
seed_errorr^   r   r   r   r]   j   s   
zRNG._extra_setupc                 C   s   | j | jj_d S r   )r[   rO   rW   rZ   ©Ú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   rW   rZ   rI   r   r7   )ri   rO   rZ   Ú	new_stater   r   r   Ú	test_initt   s   

zRNG.test_initc                 C   sb   | j jj}t| j jdƒr!| j j | j¡ tt|| j jjƒ ƒ d S | j jjj}t	 
d|› �¡ d S )NrX   zAdvance is not supported by )rO   rW   rZ   ÚhasattrrX   r   r7   Ú	__class__Ú__name__ÚpytestÚskip)ri   rZ   Úbitgen_namer   r   r   Útest_advance}   s   
zRNG.test_advancec                 C   sª   | j jj}t| j jdƒr:| j j ¡ }|j}tt||ƒ ƒ | j  d¡ || j j_| j j ¡ }|j}tt||ƒƒ d S | j jjj	}|dvrKt
d|› �ƒ‚t d|› �¡ d S )NÚjumpedi.Ê )r   zno "jumped" in zJump is not supported by )rO   rW   rZ   rm   rt   r   r7   rG   rn   ro   ÚAttributeErrorrp   rq   )ri   rZ   Úbit_gen2Újumped_stateÚbit_gen3Úrejumped_staterr   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   )rO   Úuniformr   ÚlenÚall©ri   Ú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 )Nr{   r   r|   r   r}   r   )rO   r~   r   r+   r   r   r€   r�   r   r   r   Útest_uniform_array�   s   ÿzRNG.test_uniform_arrayc                 C   ó(   t t| j d¡ƒdkƒ t| jjƒ d S ©Nr   )r   r   rO   rG   r!   rh   r   r   r   Útest_random¬   ó   zRNG.test_randomc                 C   s   t t| j d¡ƒdkƒ d S r†   )r   r   rO   rI   rh   r   r   r   Útest_standard_normal_zig°   s   zRNG.test_standard_normal_zigc                 C   r…   r†   )r   r   rO   rI   r!   rh   r   r   r   Útest_standard_normal³   rˆ   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   r   rO   rM   r   r+   r4   rh   r   r   r   Útest_standard_gamma·   s   &zRNG.test_standard_gammac                 C   r…   r†   )r   r   rO   Ústandard_exponentialr!   rh   r   r   r   Útest_standard_exponential¼   rˆ   zRNG.test_standard_exponentialc                 C   sH   | j jddd�}tt|ƒdkƒ |jtjksJ ‚tt| j jdd�ƒ d S )Nr   rJ   rE   ©	rO   rŒ   r   r   r   r   rJ   r!   r   ©ri   Ú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sJ ‚tt| j jddd�ƒ d S )Nr   rJ   Úinv)r   ÚmethodrŽ   r�   r   r   r   Ú#test_standard_exponential_float_logÆ   s   
ÿÿz'RNG.test_standard_exponential_float_logc                 C   r…   r†   )r   r   rO   Ústandard_cauchyr!   rh   r   r   r   Útest_standard_cauchyÎ   rˆ   zRNG.test_standard_cauchyc                 C   s*   t t| j dd¡ƒdkƒ t| jjƒ d S r†   )r   r   rO   Ú
standard_tr4   rh   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   rO   Úbinomialrh   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        )rO   rW   rZ   rK   r   )ri   rZ   Úint_1Ú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   rW   r   r7   rZ   ©ri   rO   Ú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   rW   rY   rG   r   r7   rZ   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   rW   rY   rI   rZ   r   ©ri   rO   rZ   Ún1r    Ú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   rF   éx   rE   r   )r   rW   rY   rK   r   Úuint32rZ   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 )NrJ   rE   r   ©r   r   )r   rW   rY   rG   rZ   r   r€   r£   r   r   r   Útest_reset_state_float  s   zRNG.test_reset_state_floatc                 C   ó.   t  ddd¡}| j |¡}t||k ¡ ƒ d S ©NéÈ   r   r}   ©r   r)   rO   Úpermutationr   Úany©ri   ÚoriginalÚpermutedr   r   r   Útest_shuffle  ó   zRNG.test_shufflec                 C   r¬   r­   r¯   r²   r   r   r   Útest_permutation  r¶   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   )rO   Úbetar   r   r   r+   r   ©ri   Úvalsr   r   r   Ú	test_beta  s   &(zRNG.test_betac                 C   s    | j  d¡}tt|ƒdkƒ d S r†   )rO   Úbytesr   r   r¹   r   r   r   Ú
test_bytes"  s   zRNG.test_bytesc                 C   ó.   | j  dd¡}tt|ƒdkƒ t| j jƒ d S ©Nr"   r   )rO   Ú	chisquarer   r   r4   r¹   r   r   r   Útest_chisquare&  ó   zRNG.test_chisquarec                 C   r¾   r¿   )rO   Úexponentialr   r   r4   r¹   r   r   r   Útest_exponential+  rÂ   zRNG.test_exponentialc                 C   ó$   | j  ddd¡}tt|ƒdkƒ d S )Né   r™   r   )rO   r   r   r   r¹   r   r   r   Útest_f0  ó   z
RNG.test_fc                 C   rÅ   )NrÆ   r(   r   )rO   Úgammar   r   r¹   r   r   r   Ú
test_gamma4  rÈ   zRNG.test_gammac                 C   s2   | j  dd¡}tt|ƒdkƒ t| j jdd� d S )Nr&   r   T©r-   )rO   Ú	geometricr   r   r4   rÃ   r¹   r   r   r   Útest_geometric8  ó   zRNG.test_geometricc                 C   ó$   | j  ddd¡}tt|ƒdkƒ d S r¿   )rO   Úgumbelr   r   r¹   r   r   r   Útest_gumbel=  rÈ   zRNG.test_gumbelc                 C   rÏ   r¿   )rO   Úlaplacer   r   r¹   r   r   r   Útest_laplaceA  rÈ   zRNG.test_laplacec                 C   rÏ   r¿   )rO   Úlogisticr   r   r¹   r   r   r   Útest_logiticE  rÈ   zRNG.test_logiticc                 C   ó"   | j  dd¡}tt|ƒdkƒ d S )Nr&   r   )rO   Ú	logseriesr   r   r¹   r   r   r   Útest_logseriesI  ó   zRNG.test_logseriesc                 C   ó$   | j  ddd¡}tt|ƒdkƒ d S ©Nr   çš™™™™™É?)rO   Únegative_binomialr   r   r¹   r   r   r   Útest_negative_binomialM  rÈ   zRNG.test_negative_binomialc                 C   rÚ   )Nr   r(   )rO   Únoncentral_chisquarer   r   r¹   r   r   r   Útest_noncentral_chisquareQ  rÈ   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   )rO   Únoncentral_fr   r   r   r+   r¹   r   r   r   Útest_noncentral_fU  s   zRNG.test_noncentral_fc                 C   rÚ   rÛ   )rO   Únormalr   r   r¹   r   r   r   Útest_normal_  rÈ   zRNG.test_normalc                 C   rÖ   )Nr$   r   )rO   Úparetor   r   r¹   r   r   r   Útest_paretoc  rÙ   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†   )rO   Úpoissonr   r   r   r+   r4   r¹   r   r   r   Útest_poissong  s
   zRNG.test_poissonc                 C   rÖ   )NrÜ   r   )rO   Úpowerr   r   r¹   r   r   r   Ú
test_powern  rÙ   zRNG.test_powerc                 C   rÚ   )Nr   rD   )rO   rK   r   r   r¹   r   r   r   Útest_integersr  rÈ   zRNG.test_integersc                 C   s2   | j  dd¡}tt|ƒdkƒ t| j jdd� d S )NrÜ   r   TrË   )rO   Úrayleighr   r   r4   r¹   r   r   r   Útest_rayleighv  rÎ   zRNG.test_rayleighc                 C   rÚ   rÛ   )rO   Úvonmisesr   r   r¹   r   r   r   Útest_vonmises{  rÈ   zRNG.test_vonmisesc                 C   rÏ   ©Nç      ð?r   )rO   Úwaldr   r   r¹   r   r   r   Ú	test_wald  rÈ   zRNG.test_waldc                 C   rÖ   rð   )rO   Úweibullr   r   r¹   r   r   r   Útest_weibullƒ  rÙ   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   rb   )r%   rb   ra   )rO   Úzipfr   r   rc   rd   r   re   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é   rD   r   r   )rO   Úhypergeometricr   r   r   r+   r   r¹   r   r   r   Útest_hypergeometric‘  ó   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   )rO   Ú
triangularr   r   r   r+   r   r¹   r   r   r   Útest_triangular—  rû   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%   rb   éˆ  )rÿ   r(   )rO   Úmultivariate_normalr   r   r±   )ri   ÚmeanÚcovÚxÚx_zigÚ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 )Nrb   gUUUUUUÕ?gUUUUUUå?)r(   r   r   r'   )rO   Ú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Æ   rD   )rD   rÆ   )rO   Ú	dirichletr   r   )ri   Ú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ÚdumpsrO   Úloadsr   r8   r7   rW   rZ   )ri   ÚpickÚunpickr   r   r   Útest_pickle²  s   
ÿ

ÿzRNG.test_picklec                 C   sX  | j d u r| jj}t d|› �¡ | j dkrt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%   rE   é   r   iÜ  r(   )r\   rW   ro   rp   rq   r   r¨   rL   r+   rZ   r   r7   r)   Úmod)ri   rr   r   rY   Ú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 )NrT   rC   rE   )r   rW   rQ   rZ   rG   r   rJ   r   r   r   r   r7   ©ri   rO   rZ   Úr1r    Ú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      @rC   rE   )r   rW   rQ   rZ   rM   r   rJ   r   r   r   r   r7   r  r   r   r   Útest_gamma_floatsò  s   
zRNG.test_gamma_floatsc                 C   óŠ   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 ©NrC   rE   ©r   rW   rQ   rZ   rI   r   rJ   r   r   r   r   r7   r  r   r   r   Útest_normal_floatsÿ  ó   
zRNG.test_normal_floatsc                 C   r  r  r  r  r   r   r   Útest_normal_zig_floats  r   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   rE   ©r'  r   rª   )	rO   rW   rZ   r   ÚemptyrI   r   r   rJ   )ri   rO   rZ   r   ÚexistingÚdirectÚsizedr   r   r   Útest_output_fill  s$   


zRNG.test_output_fillc                 C   óœ   | 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   rE   r(  rª   )rO   rW   rZ   r   r)  rG   r   rJ   ©ri   rO   rZ   r   r*  r+  r   r   r   Útest_output_filling_uniform/  ó   

zRNG.test_output_filling_uniformc                 C   r.  r/  )rO   rW   rZ   r   r)  rŒ   r   rJ   r0  r   r   r   Útest_output_filling_exponentialA  r2  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   rE   r(  rª   )rO   rW   rZ   r   ÚzerosrM   r   rJ   r0  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   rE   r(  rª   )	rO   rW   rZ   r   r)   r4  rM   r   rJ   )ri   rO   rZ   r   Úmur*  r+  r   r   r   Ú#test_output_filling_gamma_broadcaste  s    

z'RNG.test_output_filling_gamma_broadcastc                 C   sþ  | j }d}t |¡}t t¡� |j|tjd� W d   ƒ n1 s"w   Y  t t¡� |j|d d d… d� W d   ƒ n1 sBw   Y  tj|tjd�}t t¡� |j|tj	d� W d   ƒ n1 sgw   Y  tj
|tjd�}t t¡� |jd|tj	d� W d   ƒ n1 s�w   Y  t t¡� |jd|d d d… tjd� W d   ƒ n1 s°w   Y  tj
|tj	d�}t t¡� |jd|tjd� W d   ƒ n1 sÖw   Y  t t¡� |jd|d d d… d� W d   ƒ d S 1 søw   Y  d S )Nr"  r(  rÆ   r&  rE   rñ   )rO   r   r)  rp   Úraisesrf   rI   rJ   Ú
ValueErrorrN   r4  rM   )ri   rO   r   r*  r   r   r   Útest_output_fill_errorx  s6   
ÿÿÿÿÿÿ"ÿ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   rE   rª   )r   Úbool_ÚiinfoÚintr,   Úminrj   rO   rK   r   r+   Úobject)
ri   r   ÚupperÚlowerÚinfor.   r/   r0   r1   r2   r   r   r   Útest_integers_broadcast�  sB   




ÿþ
þ
zRNG.test_integers_broadcastc                 C   s„   t  dg¡}t  dg¡}| jj|||d�}|jdksJ ‚| jj|d ||d�}|jdks.J ‚| jj||d |d�}|jdks@J ‚d S )Nr%   r   rE   )r%   )r   r+   rO   rK   r   )ri   r   ÚhighÚlowr'  r   r   r   Útest_integers_numpy°  s   zRNG.test_integers_numpyc                 C   sL  |t jkr
d}d}nt  |¡}t|jƒd }|j}t t¡� | j	j
||d gd |d� W d   ƒ n1 s7w   Y  t t¡� | j	j
|d |gd |d� W d   ƒ n1 sZw   Y  t t¡� | j	j
|d g|gd |d� W d   ƒ n1 s~w   Y  t t¡� | j	j
dgdg|d� W d   ƒ d S 1 sŸw   Y  d S )Nr(   r   r%   r   rE   )r   r;  r<  r=  r,   r>  rp   r8  r9  rO   rK   )ri   r   r@  rA  rB  r   r   r   Útest_integers_broadcast_errors½  s$   

ÿÿ ÿ"ÿz"RNG.test_integers_broadcast_errorsN)Jro   Ú
__module__Ú__qualname__Úclassmethodr`   r]   rj   rl   rs   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-  r1  r3  r5  r7  r:  rC  rF  rG  r   r   r   r   rR   ^   s’    


		




&!rR   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   rW   rX   rY   r   rO   rZ   r[   r\   r]   r9  rg   r^   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%   rZ   r@   r(   Úpos)
r   rG   ÚRandomStaterI   Ú	get_staterO   rW   rZ   r   r€   )ri   ÚnprgrZ   r>   r   r   r   Útest_numpy_stateÛ  s   



zTestMT19937.test_numpy_stateN)ro   rH  rI  rJ  r`   rQ  r   r   r   r   rK  Ï  s    

rK  c                   @   ó   e Zd Zedd„ ƒZdS )Ú
TestPhiloxc                 C   óD   t | _d| _dg| _t| j| jŽ ƒ| _| jjj| _d| _|  	¡  d S ©Nl         rT   rU   )
r
   rW   rX   rY   r   rO   rZ   r[   r\   r]   r^   r   r   r   r`   æ  ó   zTestPhilox.setup_classN©ro   rH  rI  rJ  r`   r   r   r   r   rS  å  ó    rS  c                   @   rR  )Ú	TestSFC64c                 C   rS   )NrT   éÀ   )
r   rW   rX   rY   r   rO   rZ   r[   r\   r]   r^   r   r   r   r`   ò  rV  zTestSFC64.setup_classNrW  r   r   r   r   rY  ñ  rX  rY  c                   @   rR  )Ú	TestPCG64c                 C   rT  rU  rV   r^   r   r   r   r`   þ  rV  zTestPCG64.setup_classNrW  r   r   r   r   r[  ý  rX  r[  c                   @   rR  )ÚTestPCG64DXSMc                 C   rT  rU  )
r	   rW   rX   rY   r   rO   rZ   r[   r\   r]   r^   r   r   r   r`   
  rV  zTestPCG64DXSM.setup_classNrW  r   r   r   r   r\  	  rX  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 rU  )r   rW   rX   rY   r   rG   Údefault_rngrO   rZ   r[   r\   r]   r^   r   r   r   r`     s   zTestDefaultRNG.setup_classc                 C   s   t t| jjtƒƒ d S r   )r   r5   rO   rW   r   rh   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 d   ƒ n1 s;w   Y  t t¡� t j ddg¡ W d   ƒ d S 1 sYw   Y  d S )NrT   r   l	   -µtE+�IÌ6Í%ÆYl  l	   )	Ë�~¬eR :TI* 6Ò r}   )r   rG   r^  rp   r8  r9  rh   r   r   r   r¢   '  s   
ÿÿ"ÿzTestDefaultRNG.test_seedN)ro   rH  rI  rJ  r`   r_  r¢   r   r   r   r   r]    s
    
r]  )Fr   )'r  Ú	functoolsr   Únumpyr   rp   Únumpy.testingr   r   r   Únumpy.randomr   r   r   r	   r
   r   Úfixturer;  Úint8Úint16Úint32Úint64Úuint8Úuint16r¨   rL   r   r!   r4   r7   rQ   rR   rK  rS  rY  r[  r\  r]  r   r   r   r   Ú<module>   s6     ÿÿ

!
    u