
    sh                         S SK r S SKrS SKJr  S SKJr  S SKJrJr  S SK	J
r
JrJrJr  SrSr\R                   S 5       r\R                   S	 5       r " S
 S\5      r\S:X  a  \R*                  " 5         gg)    N)cuda)unittest)skip_on_cudasimCUDATestCase)xoroshiro128p_uniform_float32xoroshiro128p_normal_float32xoroshiro128p_uniform_float64xoroshiro128p_normal_float64      c                     [         R                  " S5      n[        U5       H<  nXB-  U-   nU[        :X  a  [	        X5      X'   M#  U[
        :X  d  M/  [        X5      X'   M>     g Nr   )r   gridrangeUNIFORMr   NORMALr   statesoutcountdistribution	thread_idiidxs          w/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_random.pyrng_kernel_float32r      R    		!I5\!#7"4VGCHV#3FFCH     c                     [         R                  " S5      n[        U5       H<  nXB-  U-   nU[        :X  a  [	        X5      X'   M#  U[
        :X  d  M/  [        X5      X'   M>     g r   )r   r   r   r   r	   r   r
   r   s          r   rng_kernel_float64r        r   r   c                   v    \ rS rSrS rS rS rS rS r\	" S5      S 5       r
S	 rS
 r\	" S5      S 5       rSrg)TestCudaRandomXoroshiro128p-   c                     [         R                  R                  SSS9nUR                  5       nU R	                  [        [        R                  " U5      5      S5        g )N
   r   seed)r   randomcreate_xoroshiro128p_statescopy_to_hostassertEquallennpunique)selfr   ss      r   test_create'TestCudaRandomXoroshiro128p.test_create.   sF    88!8D!RYYq\*B/r   c                 
   [         R                  R                  SSS9nUR                  5       n[         R                  R                  SSSS9nUR                  5       n[        R
                  R                  USS  US S 5        g )Nr%   r   r&      )r'   subsequence_start)r   r(   r)   r*   r-   testingassert_array_equal)r/   r   s1s2s       r   test_create_subsequence_start9TestCudaRandomXoroshiro128p.test_create_subsequence_start3   sz    88!8D  "88!KL 9 N  " 	

%%bfb"g6r   c                     [         R                  " 5       n[         R                  R                  SSUS9nUR	                  5       nU R                  [        [        R                  " U5      5      S5        g )Nr%   r   )r'   stream)	r   r>   r(   r)   r*   r+   r,   r-   r.   )r/   r>   r   r0   s       r   test_create_stream.TestCudaRandomXoroshiro128p.test_create_stream>   sY    88!@F 9 H!RYYq\*B/r   c                    [         R                  R                  SSS9n[        R                  " S[        R
                  S9nUS   " X4S[        5        U R                  UR                  5       SS	S
9  U R                  UR                  5       SS	S
9  U R                  UR                  5       SSS
9  U R                  UR                  5       SS[        R                  " S5      -  -  SS
9  g )N@   r   r&      dtyper       rG           gMbP?delta      ?g      ?gQ?r   r4   g~jtx?)r   r(   r)   r-   zerosfloat32r   assertAlmostEqualminmaxmeanstdmathsqrtr/   kernel_funcrE   r   r   s        r   check_uniform)TestCudaRandomXoroshiro128p.check_uniformE   s    88a8Hhh{"**5E6G4swwy#T:swwy#T:sxxz3f=swwy#TYYq\1A*B$Or   c                 L    U R                  [        [        R                  5        g N)rW   r   r-   rM   r/   s    r   test_uniform_float320TestCudaRandomXoroshiro128p.test_uniform_float32O   s    -rzz:r   z!skip test for speed under cudasimc                 L    U R                  [        [        R                  5        g rZ   )rW   r    r-   float64r[   s    r   test_uniform_float640TestCudaRandomXoroshiro128p.test_uniform_float64R   s    -rzz:r   c                    [         R                  R                  SSS9n[        R                  " SUS9nUS   " X4S[
        5        U R                  UR                  5       SS	S
9  U R                  UR                  5       SSS
9  g )NrB   r   r&   rC   rD   rF   rG   rH   gMbp?rI   rK   gMb`?)	r   r(   r)   r-   rL   r   rN   rQ   rR   rU   s        r   check_normal(TestCudaRandomXoroshiro128p.check_normalV   sr    88a8Hhh{%0E6F3sxxz3d;swwy#T:r   c                 L    U R                  [        [        R                  5        g rZ   )rc   r   r-   rM   r[   s    r   test_normal_float32/TestCudaRandomXoroshiro128p.test_normal_float32_   s    ,bjj9r   c                 L    U R                  [        [        R                  5        g rZ   )rc   r    r-   r_   r[   s    r   test_normal_float64/TestCudaRandomXoroshiro128p.test_normal_float64b   s    ,bjj9r    N)__name__
__module____qualname____firstlineno__r1   r;   r?   rW   r\   r   r`   rc   rf   ri   __static_attributes__rk   r   r   r"   r"   -   sZ    0
	70P; 89; :;;: 89: ::r   r"   __main__)rS   numpyr-   numbar   numba.cuda.testingr   r   r   numba.cuda.randomr   r   r	   r
   r   r   jitr   r    r"   rl   mainrk   r   r   <module>rx      s       ' <@ @ 	
 	G 
	G 	G 
	G7:, 7:t zMMO r   