§
    1@Äjó  ã                   óè   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZmZ dZdZej        d„ ¦   «         Zej        d	„ ¦   «         Z G d
„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Úcuda)Úunittest)Úskip_on_cudasimÚCUDATestCase)Úxoroshiro128p_uniform_float32Úxoroshiro128p_normal_float32Úxoroshiro128p_uniform_float64Úxoroshiro128p_normal_float64é   é   c                 óÜ   — t          j        d¦  «        }t          |¦  «        D ]G}||z  |z   }|t          k    rt	          | |¦  «        ||<   Œ)|t
          k    rt          | |¦  «        ||<   ŒHd S ©Nr   )r   ÚgridÚrangeÚUNIFORMr   ÚNORMALr   ©ÚstatesÚoutÚcountÚdistributionÚ	thread_idÚiÚidxs          úTC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_random.pyÚrng_kernel_float32r      ó€   € å”	˜!‘”€Iå�5‰\Œ\ð Gð GˆØ˜%Ñ !Ñ#ˆà�7Ò"Ð"Ý4°V¸YÑGÔGˆC�‰HˆHØ�VÒ#Ð#Ý3°F¸IÑFÔFˆC�‰HøðGð Gó    c                 óÜ   — t          j        d¦  «        }t          |¦  «        D ]G}||z  |z   }|t          k    rt	          | |¦  «        ||<   Œ)|t
          k    rt          | |¦  «        ||<   ŒHd S r   )r   r   r   r   r	   r   r
   r   s          r   Úrng_kernel_float64r        r   r   c                   óˆ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Z ed¦  «        d„ ¦   «         Z	d„ Z
d	„ Z ed¦  «        d
„ ¦   «         ZdS )ÚTestCudaRandomXoroshiro128pc                 óÚ   — t           j                             dd¬¦  «        }|                     ¦   «         }|                      t          t          j        |¦  «        ¦  «        d¦  «         d S )Né
   r   ©Úseed)r   ÚrandomÚcreate_xoroshiro128p_statesÚcopy_to_hostÚassertEqualÚlenÚnpÚunique)Úselfr   Úss      r   Útest_createz'TestCudaRandomXoroshiro128p.test_create.   sY   € Ý”×8Ò8¸À!Ð8ÑDÔDˆØ×ÒÑ!Ô!ˆØ×Ò��RœY q™\œ\Ñ*Ô*¨BÑ/Ô/Ð/Ð/Ð/r   c                 ó<  — t           j                             dd¬¦  «        }|                     ¦   «         }t           j                             ddd¬¦  «        }|                     ¦   «         }t          j                             |dd …         |d d…         ¦  «         d S )Nr$   r   r%   é   )r&   Úsubsequence_startéýÿÿÿ)r   r'   r(   r)   r,   ÚtestingÚassert_array_equal)r.   r   Ús1Ús2s       r   Útest_create_subsequence_startz9TestCudaRandomXoroshiro128p.test_create_subsequence_start3   s“   € Ý”×8Ò8¸À!Ð8ÑDÔDˆØ× Ò Ñ"Ô"ˆå”×8Ò8¸À!ØKLð 9ñ Nô Nˆà× Ò Ñ"Ô"ˆõ 	Œ
×%Ò% b¨¨¨¤f¨b°°"°¬gÑ6Ô6Ð6Ð6Ð6r   c                 ó  — t          j        ¦   «         }t           j                             dd|¬¦  «        }|                     ¦   «         }|                      t          t          j        |¦  «        ¦  «        d¦  «         d S )Nr$   r   )r&   Ústream)	r   r;   r'   r(   r)   r*   r+   r,   r-   )r.   r;   r   r/   s       r   Útest_create_streamz.TestCudaRandomXoroshiro128p.test_create_stream>   so   € Ý”‘”ˆÝ”×8Ò8¸À!Ø@Fð 9ñ Hô Hˆà×ÒÑ!Ô!ˆØ×Ò��RœY q™\œ\Ñ*Ô*¨BÑ/Ô/Ð/Ð/Ð/r   c                 ó:  — t           j                             dd¬¦  «        }t          j        dt          j        ¬¦  «        } |d         ||dt          ¦  «         |                      |                     ¦   «         dd	¬
¦  «         |                      | 	                    ¦   «         dd	¬
¦  «         |                      | 
                    ¦   «         dd¬
¦  «         |                      |                     ¦   «         ddt          j        d¦  «        z  z  d¬
¦  «         d S )Né@   r   r%   é   ©Údtype©r   é    rC   ç        gü©ñÒMbP?©Údeltaç      ð?g      à?g¸…ëQ¸Ž?r   r2   gú~j¼t“x?)r   r'   r(   r,   ÚzerosÚfloat32r   ÚassertAlmostEqualÚminÚmaxÚmeanÚstdÚmathÚsqrt©r.   Úkernel_funcrA   r   r   s        r   Úcheck_uniformz)TestCudaRandomXoroshiro128p.check_uniformE   sñ   € Ý”×8Ò8¸ÀaÐ8ÑHÔHˆÝŒh�{­"¬*Ð5Ñ5Ô5ˆàˆ�EÔ˜6 3¨­GÑ4Ô4Ð4Ø×Ò˜sŸwšw™yœy¨#°TÐÑ:Ô:Ð:Ø×Ò˜sŸwšw™yœy¨#°TÐÑ:Ô:Ð:Ø×Ò˜sŸxšx™zœz¨3°fÐÑ=Ô=Ð=Ø×Ò˜sŸwšw™yœy¨#°µT´Y¸q±\´\Ñ1AÑ*BÈ$ÐÑOÔOÐOÐOÐOr   c                 óP   — |                       t          t          j        ¦  «         d S ©N)rS   r   r,   rI   ©r.   s    r   Útest_uniform_float32z0TestCudaRandomXoroshiro128p.test_uniform_float32O   s!   € Ø×ÒÕ-­r¬zÑ:Ô:Ð:Ð:Ð:r   z!skip test for speed under cudasimc                 óP   — |                       t          t          j        ¦  «         d S rU   )rS   r    r,   Úfloat64rV   s    r   Útest_uniform_float64z0TestCudaRandomXoroshiro128p.test_uniform_float64R   s!   € à×ÒÕ-­r¬zÑ:Ô:Ð:Ð:Ð:r   c                 óN  — t           j                             dd¬¦  «        }t          j        d|¬¦  «        } |d         ||dt
          ¦  «         |                      |                     ¦   «         dd	¬
¦  «         |                      |                     ¦   «         dd¬
¦  «         d S )Nr>   r   r%   r?   r@   rB   rC   rD   gü©ñÒMbp?rE   rG   gü©ñÒMb`?)	r   r'   r(   r,   rH   r   rJ   rM   rN   rQ   s        r   Úcheck_normalz(TestCudaRandomXoroshiro128p.check_normalV   s—   € Ý”×8Ò8¸ÀaÐ8ÑHÔHˆÝŒh�{¨%Ð0Ñ0Ô0ˆàˆ�EÔ˜6 3¨­FÑ3Ô3Ð3à×Ò˜sŸxšx™zœz¨3°dÐÑ;Ô;Ð;Ø×Ò˜sŸwšw™yœy¨#°TÐÑ:Ô:Ð:Ð:Ð:r   c                 óP   — |                       t          t          j        ¦  «         d S rU   )r\   r   r,   rI   rV   s    r   Útest_normal_float32z/TestCudaRandomXoroshiro128p.test_normal_float32_   s!   € Ø×ÒÕ,­b¬jÑ9Ô9Ð9Ð9Ð9r   c                 óP   — |                       t          t          j        ¦  «         d S rU   )r\   r    r,   rY   rV   s    r   Útest_normal_float64z/TestCudaRandomXoroshiro128p.test_normal_float64b   s!   € à×ÒÕ,­b¬jÑ9Ô9Ð9Ð9Ð9r   N)Ú__name__Ú
__module__Ú__qualname__r0   r9   r<   rS   rW   r   rZ   r\   r^   r`   © r   r   r"   r"   -   sÎ   € € € € € ð0ð 0ð 0ð
	7ð 	7ð 	7ð0ð 0ð 0ðPð Pð Pð;ð ;ð ;ð €_Ð8Ñ9Ô9ð;ð ;ñ :Ô9ð;ð;ð ;ð ;ð:ð :ð :ð €_Ð8Ñ9Ô9ð:ð :ñ :Ô9ð:ð :ð :r   r"   Ú__main__)rO   Únumpyr,   Únumbar   Únumba.cuda.testingr   r   r   Únumba.cuda.randomr   r   r	   r
   r   r   Újitr   r    r"   ra   Úmainrd   r   r   ú<module>rl      s;  ðØ €€€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð@ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð €Ø	
€ð „ð	Gð 	Gñ 
„ð	Gð „ð	Gð 	Gñ 
„ð	Gð7:ð 7:ð 7:ð 7:ð 7: ,ñ 7:ô 7:ð 7:ðt ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   