
    ,iit              	          d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZmZ d dlmZmZmZ ej        ej        ej        ej        ej        ej        ej        ej        ej        f	Zd ZddZd	 Zdd
Z e G d d                      Z! G d d          Z" G d de"          Z# G d de"          Z$ G d de"          Z% G d de"          Z& G d de"          Z' G d de"          Z(dS )    N)	dataclass)partial)MT19937PCG64	PCG64DXSMSFC64	GeneratorPhilox)assert_assert_array_equalassert_equalc                 v    |             }t          t          j        |                      | d          }t          |j        dk                | d          }t          |j        dk                | d          }t          |j        dk                | d          }t          |j        dk               d S )N
   r   r   r   r   r   r   )   r   size)r   npisscalarshape)fvals     c/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/numpy/random/tests/test_smoke.pyparams_0r      s    
!##CBK
!B%%CCI
!H++CCI!"""
!L//CCI%&&&
!...CCI         Fc                    d}t          j        dd          }t          j        dd                              d          }t          j        dd                              d          }t          j        ddg          }t          j        dd                              d	          }|rd
}|d|                                z  z  }|d|                                z  z  }|d|                                z  z  }|d|                                z  z  }|d|                                z  z  } | |            | |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gs           r   params_1r1      s   A
	#tA
	#u%%h//A
	#v&&|44A
#sA
	#t$$Z00A  quuwwquuwwquuwwquuwwquuww AaDDDAahAaDDDAaDDDAaDDDAabMMMMAagAalr   c                    d}t          | t                    r%| D ]!}|t          | |         ||                   z  }"nt          |           t          |          k    r$|t          |           t          |          k    z  }nt          | t          t
          t          j        f          rQt          |t          t
          t          j        f          r*t          | |          D ]\  }}|t          ||          z  }n	|| |k    z  }|S )NT)	
isinstancedict
comp_statetypelisttupler   ndarrayzip)state1state2	identicalkeys1s2s         r   r5   r5   =   s   I&$ 
& 	> 	>CF3K===II	>	ff	%	%T&\\T&\\11		
VdE2:6
7
7 &JT5"*-=/ =/ &&&)) 	, 	,FBB+++II	, 	Vv%%	r   c                    |#dt           j                            dd          z   }|                     |           |                     |           |                     |t           j                   |                     |t           j                   |                     dd|t           j                   |                     dd|t           j                   |                     d|           |                     d|t           j                   |                     |t           j                   |                     |t           j                   d S )N   r      dtype   l          g      &@)	r   randomrandintstandard_normalfloat32integersuint64standard_gammafloat64)rgns     r   warmuprQ   M   s"   y""1b)))qqq
+++q
+++KK7ARYK///KK7ARYK///dAdARZ000IIarzI"""IIarzI"""""r   c                   n    e Zd ZU eej        j                 ed<   eed<   e	e         ed<   e
ed<   eed<   dS )RNGDatabit_generatoradvanceseedrO   seed_vector_bitsN)__name__
__module____qualname__r6   r   rG   BitGenerator__annotations__intr7   r	    r   r   rS   rS   \   sS         	.////LLL
s)OOOMMMr   rS   c                   |   e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDeEjF        G                    dBeH          dC             ZIeEjF        G                    dBeH          dD             ZJeEjF        G                    dBeH          dE             ZKdFS )GRNGc                 h    t           }d }dg}t           ||           }d}t          |||||          S )N90  @   r   r	   rS   clsrT   rU   rV   rO   rW   s         r   _create_rngzRNG._create_rngf   sF     w}}d+,,}gtR9IJJJr   c                    |                                  }t          |                                          |_        |j        j        j        }|j                            d           |j                            d           ||j        j        _        |j        j        j        }t          t          ||                     d S )Nr"   )rg   r	   rT   rO   staterI   r   r5   )selfdatari   	new_states       r   	test_initzRNG.test_initp   s    !!D..0011%+""""""&+#G)/	
5),,-----r   c                    |                                  }|j        j        j        }t	          |j        j        d          rS|j        j                            |j                   t          t          ||j        j        j                              d S |j        j        j        j	        }t          j        d|            d S )NrU   zAdvance is not supported by )rg   rO   rT   ri   hasattrrU   r   r5   	__class__rX   pytestskip)rj   rk   ri   bitgen_names       r   test_advancezRNG.test_advancez   s    !!%+47()44 	FG!))$,777
5$'*?*EFFFGGGGG'/9BKKD{DDEEEEEr   c                 2   |                                  j        }|j        j        }t	          |j        d          r|j                                        }|j        }t          t          ||                      |                    d           ||j        _        |j                                        }|j        }t          t          ||                     d S |j        j	        j
        }|dvrt          d|           t          j        d|            d S )Njumpedi. )r   zno "jumped" in zJump is not supported by )rg   rO   rT   ri   ro   rv   r   r5   rG   rp   rX   AttributeErrorrq   rr   )rj   rO   ri   bit_gen2jumped_statebit_gen3rejumped_staters   s           r   	test_jumpzRNG.test_jump   s   " &2#X.. 	C'..00H#>L
5,777888II2333%*B"'..00H%^NJ|^<<=====*4=K*,,$%D{%D%DEEEKAKAABBBBBr   c                 <   |                                  j        }|                    ddd          }t          t	          |          dk               t          |dk                                               t          |dk                                               d S )N              r   r   r   )rg   rO   uniformr   lenallrj   rO   rs      r   test_uniformzRNG.test_uniform   s    "JJtSrJ**A"Rar   c                    |                                  j        }|                    t          j        dgdz            dd          }t          t          |          dk               t          |dk                                               t          |dk                                               |                    t          j        dgdz            t          j        dgdz            d          }t          t          |          dk               t          |dk                                               t          |dk                                               |                    dt          j        dgdz            d          }t          t          |          dk               t          |dk                                               t          |dk                                               d S )Nr~   r   r   r   r   r   )rg   rO   r   r   r(   r   r   r   r   s      r   test_uniform_arrayzRNG.test_uniform_array   s   "JJrx,,cJ;;A"RaJJrx,,HcURZ00r  ; ;A"RaJJtRXsebj11J;;A"Rar   c                     |                                  j        }t          t          |                    d                    dk               t          |j                   d S Nr   )rg   rO   r   r   rG   r   rj   rO   s     r   test_randomzRNG.test_random   sQ    "BIIbMM""b()))r   c                     |                                  j        }t          t          |                    d                    dk               d S r   )rg   rO   r   r   rI   r   s     r   test_standard_normal_zigzRNG.test_standard_normal_zig   sE    "B&&r**++r122222r   c                     |                                  j        }t          t          |                    d                    dk               t          |j                   d S r   )rg   rO   r   r   rI   r   r   s     r   test_standard_normalzRNG.test_standard_normal   V    "B&&r**++r1222#$$$$$r   c           
      \   |                                  j        }t          t          |                    dd                    dk               t          t          |                    t          j        dgdz            d                    dk               t          |j                   d S r   )rg   rO   r   r   rM   r   r(   r1   r   s     r   test_standard_gammazRNG.test_standard_gamma   s    "B%%b"--.."4555B%%bhtby&9&92>>??2EFFF"#####r   c                     |                                  j        }t          t          |                    d                    dk               t          |j                   d S r   )rg   rO   r   r   standard_exponentialr   r   s     r   test_standard_exponentialzRNG.test_standard_exponential   sV    "B++B//00B6777()))))r   c                    |                                  j        }|                    dd          }t          t	          |          dk               |j        t          j        k    sJ t          t          |j        d                     d S )Nr   rJ   rD   
rg   rO   r   r   r   rE   r   rJ   r   r   rj   rO   randomss      r   test_standard_exponential_floatz#RNG.test_standard_exponential_float   s    "))"I)>>G"###}
****0	BBBCCCCCr   c                    |                                  j        }|                    ddd          }t          t	          |          dk               |j        t          j        k    sJ t          t          |j        dd                     d S )Nr   rJ   inv)rE   methodr   r   s      r   #test_standard_exponential_float_logz'RNG.test_standard_exponential_float_log   s    "))"I6; * = =G"###}
****0	 %' ' ' 	( 	( 	( 	( 	(r   c                     |                                  j        }t          t          |                    d                    dk               t          |j                   d S r   )rg   rO   r   r   standard_cauchyr   r   s     r   test_standard_cauchyzRNG.test_standard_cauchy   r   r   c                     |                                  j        }t          t          |                    dd                    dk               t          |j                   d S r   )rg   rO   r   r   
standard_tr1   r   s     r   test_standard_tzRNG.test_standard_t   sU    "BMM"b))**b0111r   c                     |                                  j        }t          |                    dd          dk               t          |                    dd          dk               d S )Nr   r#   r     )rg   rO   r   binomialr   s     r   test_binomialzRNG.test_binomial   s^    "B##q()))D"%%*+++++r   c                     |                                  j        }|j        j        }|                    d          }||j        _        |                    d          }t          ||k               d S )Nl        )rg   rO   rT   ri   rK   r   )rj   rO   ri   int_1int_2s        r   test_reset_statezRNG.test_reset_state   sf    " &E""!&E""r   c                     |                                  j        }t           |                      }t           |                      }t          t	          |j        j        |j        j                              d S N)rg   rT   r	   r   r5   ri   )rj   rT   rO   rg2s       r   test_entropy_initzRNG.test_entropy_init   sz    ((**8}}''((Jr/5"068 8 8 	9 	9 	9 	9 	9r   c                 P   |                                  }t           |j        |j                   }t           |j        |j                   }|                                 |                                 t          t          |j        j        |j        j                             d S r   )rg   r	   rT   rV   rG   r   r5   ri   )rj   rk   rO   r   s       r   	test_seedzRNG.test_seed   s    !!)t)49566**DI677
		


2+133D3JKKLLLLLr   c                 x   |                                  }t           |j        |j                   }|                                 |j        j        }|                    d          }t          |                                          }||j        _        |                    d          }t          ||           d S )Nr   r   )rg   r	   rT   rV   rI   ri   r   rj   rk   rO   ri   n1r   n2s          r   test_reset_state_gausszRNG.test_reset_state_gauss   s    !!)t)49566
 &R((**,,--"'  b ))2r"""""r   c                    |                                  }t           |j        |j                   }|                    dddt
          j                   |j        j        }|                    dddt
          j                  }t          |                                          }||j        _        |                    dddt
          j                  }t          ||           d S )Nr   rF   x   rD   r   )	rg   r	   rT   rV   rK   r   uint32ri   r   r   s          r   test_reset_state_uint32zRNG.test_reset_state_uint32  s    !!)t)49566
Aw29555 &[[GRry[99**,,--"'\\!Wb	\::2r"""""r   c                    |                                  }t           |j        |j                   }|                    d           |j        j        }|                    dd          }t          |                                          }||j        _        |                    dd          }t          ||k                                               d S )NrJ   rD   r   r   rE   )rg   r	   rT   rV   rG   ri   r   r   r   s          r   test_reset_state_floatzRNG.test_reset_state_float  s    !!)t)49566
				""" &YYBiY00**,,--"'ZZRyZ11r  !!!!!r   c                     |                                  j        }t          j        ddd          }|                    |          }t          ||k                                               d S N   r   r   rg   rO   r   r&   permutationr   anyrj   rO   originalpermuteds       r   test_shufflezRNG.test_shuffle  _    "9S!R((>>(++X%**,,-----r   c                     |                                  j        }t          j        ddd          }|                    |          }t          ||k                                               d S r   r   r   s       r   test_permutationzRNG.test_permutation#  r   r   c                 P   |                                  j        }|                    ddd          }t          t	          |          dk               |                    t          j        dgdz            d          }t          t	          |          dk               |                    dt          j        dgdz                      }t          t	          |          dk               |                    t          j        dgdz            t          j        dgdz                      }t          t	          |          dk               |                    t          j        dgdz            t          j        dggdz                      }t          |j        dk               d S )Nr   r   r   )rg   rO   betar   r   r   r(   r   rj   rO   valss      r   	test_betazRNG.test_beta)  sT   "wwsC$$D		R   wwrx
++S11D		R   wwsBHcURZ0011D		R   wwrx
++RXsebj-A-ABBD		R   wwrx
++RXugl-C-CDD
h&'''''r   c                     |                                  j        }|                    d          }t          t	          |          dk               d S r   )rg   rO   bytesr   r   r   s      r   
test_byteszRNG.test_bytes6  sC    "xx||D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               t          |j                   d S Nr   r   )rg   rO   	chisquarer   r   r1   r   s      r   test_chisquarezRNG.test_chisquare;  sW    "||C$$D		R   r   c                     |                                  j        }|                    dd          }t          t	          |          dk               t          |j                   d S r   )rg   rO   exponentialr   r   r1   r   s      r   test_exponentialzRNG.test_exponentialA  sW    "~~c2&&D		R        r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S )N   r   r   )rg   rO   r   r   r   r   s      r   test_fz
RNG.test_fG  sI    "ttAtR  D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S )Nr   r%   r   )rg   rO   gammar   r   r   s      r   
test_gammazRNG.test_gammaL  sI    "xx1b!!D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               t          |j        d           d S )Nr#   r   Tr*   )rg   rO   	geometricr   r   r1   r   r   s      r   test_geometriczRNG.test_geometricQ  s\    "||C$$D		R   ......r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S r   )rg   rO   gumbelr   r   r   s      r   test_gumbelzRNG.test_gumbelW  sI    "yyc2&&D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S r   )rg   rO   laplacer   r   r   s      r   test_laplacezRNG.test_laplace\  sI    "zz#sB''D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S r   )rg   rO   logisticr   r   r   s      r   test_logiticzRNG.test_logitica  sI    "{{3R((D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               d S )Nr#   r   )rg   rO   	logseriesr   r   r   s      r   test_logserieszRNG.test_logseriesf  sG    "||C$$D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S Nr   皙?)rg   rO   negative_binomialr   r   r   s      r   test_negative_binomialzRNG.test_negative_binomialk  sK    "##BR00D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S )Nr   r%   )rg   rO   noncentral_chisquarer   r   r   s      r   test_noncentral_chisquarezRNG.test_noncentral_chisquarep  sK    "&&r1b11D		R     r   c                 v   |                                  j        }|                    dddd          }t          t	          |          dk               |                    t          j        dgdz            dd          }t          t	          |          dk               |                    dt          j        dgdz            d          }t          t	          |          dk               |                    ddt          j        dgdz                      }t          t	          |          dk               d S )Nr   r   r%   r   )rg   rO   noncentral_fr   r   r   r(   r   s      r   test_noncentral_fzRNG.test_noncentral_fu  s   "q$2..D		R   rxb114;;D		R   q"(D6B;"7"7;;D		R   q$!r(:(:;;D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S r   )rg   rO   normalr   r   r   s      r   test_normalzRNG.test_normal  sI    "yyS"%%D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               d S )Nr!   r   )rg   rO   paretor   r   r   s      r   test_paretozRNG.test_pareto  sG    "yyb!!D		R     r   c                 b   |                                  j        }|                    dd          }t          t	          |          dk               |                    t          j        dgdz                      }t          t	          |          dk               t          |j                   d S r   )rg   rO   poissonr   r   r   r(   r1   r   s      r   test_poissonzRNG.test_poisson  s    "zz"b!!D		R   zz"(B4"9--..D		R   r   c                     |                                  j        }|                    dd          }t          t	          |          dk               d S )Nr   r   )rg   rO   powerr   r   r   s      r   
test_powerzRNG.test_power  sG    "xxR  D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S )Nr   rC   )rg   rO   rK   r   r   r   s      r   test_integerszRNG.test_integers  sI    "{{2r2&&D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               t          |j        d           d S )Nr   r   Tr   )rg   rO   rayleighr   r   r1   r   s      r   test_rayleighzRNG.test_rayleigh  s\    "{{3##D		R   d++++++r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S r   )rg   rO   vonmisesr   r   r   s      r   test_vonmiseszRNG.test_vonmises  sI    "{{2sB''D		R     r   c                     |                                  j        }|                    ddd          }t          t	          |          dk               d S N      ?r   )rg   rO   waldr   r   r   s      r   	test_waldzRNG.test_wald  sI    "wwsC$$D		R     r   c                     |                                  j        }|                    dd          }t          t	          |          dk               d S r  )rg   rO   weibullr   r   r   s      r   test_weibullzRNG.test_weibull  sG    "zz#r""D		R     r   c                 |   |                                  j        }t          j        dd          }t          j        dd          d d d f         }t          j        ddd                              d          }|                    dd          }t          t          |          dk               |                    |          }t          t          |          dk               |                    |          }t          |j        dk               |                    |          }t          |j        dk               d S )Nr   r    g{Gz?)d   r  r   r  )r"   r  )	rg   rO   r   r&   r'   zipfr   r   r   )rj   rO   vec_1dvec_2dmatr   s         r   	test_zipfzRNG.test_zipf  s   "3&&3&&tQQQw/iUD))11*==wwr2D		R   wwvD		S !!!wwv
h&'''wws||
j()))))r   c                 2   |                                  j        }|                    ddd          }t          t	          j        |                     |                    t	          j        dgdz            dd          }t          |j        dk               d S )N   rC   r   r   )rg   rO   hypergeometricr   r   r   r(   r   r   s      r   test_hypergeometriczRNG.test_hypergeometric  s    "  R,,D!!"""  2$)!4!4b"==
e#$$$$$r   c                 2   |                                  j        }|                    ddd          }t          t	          j        |                     |                    dt	          j        dgdz            d          }t          |j        dk               d S )Nr   r   r   r   )rg   rO   
triangularr   r   r   r(   r   r   s      r   test_triangularzRNG.test_triangular  s    "}}RA&&D!!"""}}R1#(!3!3Q77
e#$$$$$r   c                    |                                  j        }ddg}ddgddgg}|                    ||d          }t          |j        dk               |                    ||d          }t          |j        dk               |                    ||d          }t          |j        dk               t          ||k                                               d S )Nr   r"   r    )r)  r%   )rg   rO   multivariate_normalr   r   r   )rj   rO   meancovxx_zigx_invs          r   test_multivariate_normalzRNG.test_multivariate_normal  s    "1v1v3x ""4d339$%%%&&tS$779$%%%&&tS$779$%%%%$$&&'''''r   c                     |                                  j        }|                    dddg          }t          |j        dk               |                    dddgd          }t          |j        dk               d S )Nr  gUUUUUU?gUUUUUU?)r%   r   r   r$   )rg   rO   multinomialr   r   r   s      r   test_multinomialzRNG.test_multinomial  sz    "~~cGW#566
d"###~~cGW#5B~??
g%&&&&&r   c                     |                                  j        }|                    dd          }t          |j        dk               d S )N)r   r   r   rC   )rC   r   )rg   rO   	dirichletr   r   )rj   rO   ss      r   test_dirichletzRNG.test_dirichlet  sD    "LLR((7"#####r   c                 P   |                                  j        }t          j        |          }t          j        |          }t          t          |          t          |          k               t          t          |j        j	        |j        j	                             t          j        |          }t          j        |          }t          t          |          t          |          k               t          t          |j        j	        |j        j	                             d S r   )
rg   rO   pickledumpsloadsr   r6   r5   rT   ri   )rj   rO   pickunpicks       r   test_picklezRNG.test_pickle  s    "|Bd##RDLL()))
2+1!/57 7 	8 	8 	8 |Bd##RDLL()))
2+1!/57 7 	8 	8 	8 	8 	8r   c                    |                                  }|j        #|j        j        }t	          j        d|            |j        dk    rt          j        }nt          j        }t          j	        dg|          }|                    |          }|j
        }|                    d          }|j
        }t          t          ||                     t          j        d|          }|                    |          }|j
        }|                    |d                   }|j
        }t          t          ||                      t          j        d|          }|                    |          }|j
        }|                    |d                   }|j
        }t          t          ||                      dt          j        t          j        d|          |j        dz
            z  dz   }|                    |          }|j
        }|                    |d                   }|j
        }t          t          ||                      d S )	Nz#Vector seeding is not supported by     r"   rD      r   i  r%   )rg   rW   rT   rX   rq   rr   r   r   rL   r(   ri   r   r5   r&   mod)rj   rk   rs   rE   rV   bgr;   r<   s           r   test_seed_arrayzRNG.test_seed_array  s#   !! (,5KKKkKKLLL B&&IEEIEx5)))%%""
66**+++y%(((%%Q((Jvv...///yU+++%%Q((Jvv...///BF29T7770146 6 689:%%Q((Jvv.../////r   c                 F   |                                  j        }t           |d                    }t          |           |j        j        }|                    dt          j                  }t           |                      }t          |           ||j        _        |                    dt          j                  }t          ||           t          |j
        t          j                   t          t          |j        j        |j        j                             d S )Nrb   rB   rD   )rg   rT   r	   rQ   ri   rG   r   rJ   r   r   rE   r   r5   rj   rT   rO   ri   r1r   r2s          r   test_uniform_floatzRNG.test_uniform_float  s    ((**8}}U++,,r


 &YYrY,,((s"'ZZ"*Z--2r"""RXrz***
2+133D3JKKLLLLLr   c                 H   |                                  j        }t           |                      }t          |           |j        j        }|                    ddt          j                  }t           |                      }t          |           ||j        _        |                    ddt          j                  }t          ||           t          |j
        t          j                   t          t          |j        j        |j        j                             d S )Ng      @rB   rD   )rg   rT   r	   rQ   ri   rM   r   rJ   r   r   rE   r   r5   rF  s          r   test_gamma_floatszRNG.test_gamma_floats(  s    ((**8}}''r


 &sBbj99((s"'Rrz::2r"""RXrz***
2+133D3JKKLLLLLr   c                 D   |                                  j        }t           |                      }t          |           |j        j        }|                    dt          j                  }t           |                      }t          |           ||j        _        |                    dt          j                  }t          ||           t          |j
        t          j                   t          t          |j        j        |j        j                             d S NrB   rD   rg   rT   r	   rQ   ri   rI   r   rJ   r   r   rE   r   r5   rF  s          r   test_normal_floatszRNG.test_normal_floats6      ((**8}}''r


 &"*55((s"'  2: 662r"""RXrz***
2+133D3JKKLLLLLr   c                 D   |                                  j        }t           |                      }t          |           |j        j        }|                    dt          j                  }t           |                      }t          |           ||j        _        |                    dt          j                  }t          ||           t          |j
        t          j                   t          t          |j        j        |j        j                             d S rM  rN  rF  s          r   test_normal_zig_floatszRNG.test_normal_zig_floatsD  rP  r   c                    |                                  j        }|j        j        }d}t	          j        |          }||j        _        |                    |           ||j        _        |                    |          }t          ||           t	          j        |          }||j        _        |                    ||j                   t	          j        |t          j	                  }||j        _        |                    |t          j	                   ||j        _        |                    |t          j	                  }t          ||           d S )N      a   outr   )rY  r   rD   rY  rE   r   )
rg   rO   rT   ri   r   emptyrI   r   r   rJ   )rj   rO   ri   r   existingdirectsizeds          r   test_output_fillzRNG.test_output_fillR  s0   " &8D>>!&
x(((!&###..VX&&&!&
u5;7778D
333!&
xrz:::!&##RZ#@@VX&&&&&r   c                 8   |                                  j        }|j        j        }d}t	          j        |          }||j        _        |                    |           ||j        _        |                    |          }t          ||           t	          j        |t          j                  }||j        _        |                    |t          j                   ||j        _        |                    |t          j                  }t          ||           d S NrT  rX  r   rD   rZ  r   )	rg   rO   rT   ri   r   r[  rG   r   rJ   rj   rO   ri   r   r\  r]  s         r   test_output_filling_uniformzRNG.test_output_filling_uniformh  s    " &8D>>!&
		h	!&%%VX&&&8D
333!&
		hbj	111!&BJ77VX&&&&&r   c                 8   |                                  j        }|j        j        }d}t	          j        |          }||j        _        |                    |           ||j        _        |                    |          }t          ||           t	          j        |t          j                  }||j        _        |                    |t          j                   ||j        _        |                    |t          j                  }t          ||           d S ra  )	rg   rO   rT   ri   r   r[  r   r   rJ   rb  s         r   test_output_filling_exponentialz#RNG.test_output_filling_exponentialz  s    " &8D>>!&
H---!&((d(33VX&&&8D
333!&
HBJ???!&((d"*(EEVX&&&&&r   c                 @   |                                  j        }|j        j        }d}t	          j        |          }||j        _        |                    d|           ||j        _        |                    d|          }t          ||           t	          j        |t          j                  }||j        _        |                    d|t          j                   ||j        _        |                    d|t          j                  }t          ||           d S )NrT  r  rX  r   rD   rZ  r   )	rg   rO   rT   ri   r   zerosrM   r   rJ   rb  s         r   test_output_filling_gammazRNG.test_output_filling_gamma  s   " &8D>>!&
#8,,,!&""3T"22VX&&&8D
333!&
#82:>>>!&""3T"DDVX&&&&&r   c                 n   |                                  j        }|j        j        }d}t	          j        d          dz   }t	          j        |          }||j        _        |                    ||           ||j        _        |                    ||          }t          ||           t	          j        |t          j	                  }||j        _        |                    ||t          j	                   ||j        _        |                    ||t          j	                  }t          ||           d S )	NrT  g     @X@r  rX  r   rD   rZ  r   )
rg   rO   rT   ri   r   r&   rg  rM   r   rJ   )rj   rO   ri   r   mur\  r]  s          r   #test_output_filling_gamma_broadcastz'RNG.test_output_filling_gamma_broadcast  s   " &Yt__s"8D>>!&
"(+++!&""2D"11VX&&&8D
333!&
"("*===!&""2D
"CCVX&&&&&r   c                    |                                  j        }d}t          j        |          }t	          j        t                    5  |                    |t          j                   d d d            n# 1 swxY w Y   t	          j        t                    5  |                    |d d d                    d d d            n# 1 swxY w Y   t          j        |t          j                  }t	          j        t                    5  |                    |t          j
                   d d d            n# 1 swxY w Y   t          j        |t          j                  }t	          j        t                    5  |                    d|t          j
                   d d d            n# 1 swxY w Y   t	          j        t                    5  |                    d|d d d         t          j                   d d d            n# 1 swxY w Y   t          j        |t          j
                  }t	          j        t                    5  |                    d|t          j                   d d d            n# 1 swxY w Y   t	          j        t                    5  |                    d|d d d                    d d d            d S # 1 swxY w Y   d S )NrT  rZ  r   rX  rD   r  )rg   rO   r   r[  rq   raises	TypeErrorrI   rJ   
ValueErrorrN   rg  rM   )rj   rO   r   r\  s       r   test_output_fill_errorzRNG.test_output_fill_error  sL   "8D>>]9%% 	? 	?82:>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]:&& 	2 	28CCaC=111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	28D
333]9%% 	? 	?82:>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 8D
333]9%% 	C 	CcxrzBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C]:&& 	H 	Hcx!}BJGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H8D
333]9%% 	C 	CcxrzBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C]:&& 	6 	6cx!}555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s~   	"A77A;>A; CCC"D99D= D==#F,,F03F0,HHH#I;;I?I?!KKKrE   c                 b   |                                  j        }|j        j        fd}|t          j        k    rd}d}n2t	          j        |          }t          |j                  dz   }|j	        } ||           |j        _        |
                    ||gdz  |          } ||           |
                    |gdz  ||          }t          ||            ||           |
                    ||d|          }	t          ||	            ||           |
                    t	          j        |gdz            t	          j        |gt                    d|          }
t          ||
            ||           |
                    t	          j        |gdz            t	          j        |gdz            d|          }t          ||            ||           |
                    d|d|          } ||           |
                    |gdz  |          }t          ||           d S )Nc                      | j         _        d S r   )rT   ri   )rnginitial_states    r   reset_statez0RNG.test_integers_broadcast.<locals>.reset_state  s    &3C###r   r%   r   r"   r   rD   r   )rg   rO   rT   ri   r   booliinfor]   r)   minrK   r   r(   object)rj   rE   rO   ru  upperlowerinfor+   r,   r-   r.   r/   rt  s               @r   test_integers_broadcastzRNG.test_integers_broadcast  sM   "(.	4 	4 	4 	4 	4 BGEEE8E??DMMA%EHEB!.KKw|5K99BKK"e5K99QBKKu2UK;;QBKKGbL 8UG6:::    	QBKKHeWr\""BHeWr\$:$:    	QBKK5rK77BKK"EK22Qr   c                    |                                  j        }t          j        dg          }t          j        dg          }|                    |||          }|j        dk    sJ |                    |d         ||          }|j        dk    sJ |                    ||d         |          }|j        dk    sJ d S )Nr"   r   rD   )r"   )rg   rO   r   r(   rK   r   )rj   rE   rO   highlowrY  s         r   test_integers_numpyzRNG.test_integers_numpy  s    "x}}hsmmkk#t5k11yD    kk#a&$ek44yD    kk#tAwek44yD      r   c                 @   |                                  j        }|t          j        k    rd}d}n2t          j        |          }t          |j                  dz   }|j        }t          j	        t                    5  |                    ||dz   gdz  |           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    |dz
  |gdz  |           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    |dz
  g|gdz  |           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    dgdg|           d d d            d S # 1 swxY w Y   d S )Nr%   r   r"   r   rD   )rg   rO   r   rv  rw  r]   r)   rx  rq   rm  ro  rK   )rj   rE   rO   rz  r{  r|  s         r   test_integers_broadcast_errorsz"RNG.test_integers_broadcast_errors   s   "BGEEE8E??DMMA%EHE]:&& 	> 	>KK	{R/uK===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:&& 	> 	>KK	E7R<uK===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:&& 	@ 	@KKeWr\K???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@]:&& 	/ 	/KKaSK...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sH   : B&&B*-B*
 C66C:=C:!EEE+FFFN)LrX   rY   rZ   classmethodrg   rm   rt   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  r3  r7  r>  rD  rI  rK  rO  rR  r_  rc  re  rh  rk  rp  rq   markparametrizeDTYPES_BOOL_INT_UINTr}  r  r  r^   r   r   r`   r`   e   s       K K [K. . .F F FC C C$             
3 3 3% % %
$ $ $* * *
D D D( ( (% % %
     
, , ,
     9 9 9M M M	# 	# 	#	# 	# 	#	" 	" 	". . .. . .( ( (! ! !
  ! ! !! ! !
! ! !
/ / /! ! !
! ! !
! ! !
! ! !
! ! !
! ! !
	! 	! 	!! ! !
! ! !
  ! ! !
! ! !
, , ,! ! !
! ! !
! ! !
* * *% % %% % %
( 
( 
(' ' '$ $ $
8 8 8%0 %0 %0NM M MM M MM M MM M M' ' ',' ' '$' ' '$' ' '$' ' '&6 6 6. [W&:;;& & <;&P [W&:;;! ! <;! [W&:;;/ / <;/ / /r   r`   c                   *    e Zd Zed             Zd ZdS )TestMT19937c                 h    t           }d }dg}t           ||           }d}t          |||||          S )Ni! ! r@  )r   r	   rS   re   s         r   rg   zTestMT19937._create_rng  sE    ./}}d+,,}gtR9IJJJr   c                    |                                  j        }t          j                                        }|                    d           |                                }||j        _        |j        j        }t          |d         |d         d         k    
                                           t          |d         |d         d         k               d S )Nc   r"   ri   r>   r%   pos)rg   rO   r   rG   RandomStaterI   	get_staterT   ri   r   r   )rj   rO   nprgri   r<   s        r   test_numpy_statezTestMT19937.test_numpy_state  s    "y$$&&R     !&!'qVG_U3388::;;;aF7OE2233333r   N)rX   rY   rZ   r  rg   r  r^   r   r   r  r    s?        K K [K4 4 4 4 4r   r  c                   $    e Zd Zed             ZdS )
TestPhiloxc                 h    t           }d}dg}t           ||           }d}t          |||||          S Nl         rb   rc   )r
   r	   rS   re   s         r   rg   zTestPhilox._create_rng*  sD    +w}}d+,,}gtR9IJJJr   NrX   rY   rZ   r  rg   r^   r   r   r  r  )  2        K K [K K Kr   r  c                   $    e Zd Zed             ZdS )	TestSFC64c                 h    t           }d }dg}t           ||           }d}t          |||||          S )Nrb      )r   r	   rS   re   s         r   rg   zTestSFC64._create_rng5  sD    w}}d+,,}gtR9IJJJr   Nr  r^   r   r   r  r  4  r  r   r  c                   $    e Zd Zed             ZdS )	TestPCG64c                 h    t           }d}dg}t           ||           }d}t          |||||          S r  rd   re   s         r   rg   zTestPCG64._create_rng@  sD    +w}}d+,,}gtR9IJJJr   Nr  r^   r   r   r  r  ?  r  r   r  c                   $    e Zd Zed             ZdS )TestPCG64DXSMc                 h    t           }d}dg}t           ||           }d}t          |||||          S r  )r   r	   rS   re   s         r   rg   zTestPCG64DXSM._create_rngK  sD    !+w}}d+,,}gtR9IJJJr   Nr  r^   r   r   r  r  J  r  r   r  c                   0    e Zd Zed             Zd Zd ZdS )TestDefaultRNGc                 j    t           }d}dg}t          j        j        | }d}t	          |||||          S r  )r   r   rG   default_rngrS   re   s         r   rg   zTestDefaultRNG._create_rngV  sA     +wY"D)}gtR9IJJJr   c                     |                                  j        }t          t          |j        t
                               d S r   )rg   rO   r   r3   rT   r   r   s     r   test_default_is_pcg64z$TestDefaultRNG.test_default_is_pcg64a  s9     "
2+U3344444r   c                    t           j                                         t           j                            d            t           j                            d           t           j                            d           t           j                            d           t           j                            ddg           t          j        t
                    5  t           j                            d           d d d            n# 1 swxY w Y   t          j        t
                    5  t           j                            ddg           d d d            d S # 1 swxY w Y   d S )Nrb   r   l	   -tE+I6%Yl  l	   )	~eR :TI*6 r   )r   rG   r  rq   rm  ro  )rj   s    r   r   zTestDefaultRNG.test_seedg  s   
	
	d###
	e$$$
	a   
	DEEE
	EFH 	I 	I 	I]:&& 	& 	&I!!"%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&]:&& 	/ 	/I!!5"+...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s$    DDD%"EEEN)rX   rY   rZ   r  rg   r  r   r^   r   r   r  r  U  sN        K K [K5 5 5/ / / / /r   r  )Fr   ))r9  dataclassesr   	functoolsr   rq   numpyr   numpy.randomr   r   r   r   r	   r
   numpy.testingr   r   r   rv  int8int16int32int64uint8uint16r   rL   r  r   r1   r5   rQ   rS   r`   r  r  r  r  r  r  r^   r   r   <module>r     s    ! ! ! ! ! !            L L L L L L L L L L L L L L L L C C C C C C C C C C"(BHbh")RY	C 
! 
! 
!   B   # # # #        l
/ l
/ l
/ l
/ l
/ l
/ l
/ l
/^4 4 4 4 4# 4 4 4*K K K K K K K KK K K K K K K KK K K K K K K KK K K K KC K K K/ / / / /S / / / / /r   