o
    >~#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)scopeparamsc                 C   s   | j S N)param)request r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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 ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdS )RNGc                 C   D   t | _d | _dg| _t| j| j | _| jjj| _d| _| 	  d S )N90  @   
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{Gz?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 )Nr   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 sw   Y  tt |jd|d d d tjd W d    n1 sw   Y  tj
|tj	d}tt |jd|tjd W d    n1 sw   Y  tt |jd|d d d d W d    d S 1 sw   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 sw   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 )Nc   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+I6%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