U
    hâËdÌ  ã                   @   s�   d dl Z d dlZd dlmZmZmZmZmZ d dl	m
Z
mZ dd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ ZG dd„ deƒZedkrŒe
 ¡  dS )é    N)ÚcudaÚfloat64Úint8Úint32Úvoid)ÚunittestÚCUDATestCasec                 C   sP   t  d¡\}}|j\}}||ks(||kr,d S t | ||f t|ƒ¡|||f< d S ©Né   )r   ÚgridÚshapeÚmathÚpowr   ©ÚAÚpowerZpower_AÚyÚxÚmÚn© r   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_powi.pyÚcu_mat_power   s
    
r   c                 C   sH   t  d¡\}}|j\}}||ks(||kr,d S | ||f | |||f< d S r	   )r   r   r   r   r   r   r   Úcu_mat_power_binop   s
    
r   c                 C   s0   t  d¡}|t| ƒk r,t|| || ƒ| |< d S ©Né   )r   r   Úlenr   ©Úrr   r   Úir   r   r   Úvec_pow   s    
r    c                 C   s.   t  d¡}|t| ƒk r*|| ||  | |< d S r   ©r   r   r   r   r   r   r   Úvec_pow_binop"   s    
r"   c                 C   s.   t  d¡}|t| ƒk r*| |  || C  < d S r   r!   )r   r   r   r   r   r   Úvec_pow_inplace_binop)   s    
r#   c                 C   s(   t j d¡ t j d¡t j d¡d  S )Né{   r   ù              ð?)ÚnpÚrandomÚseed)ÚNr   r   r   Úrandom_complex0   s    r*   c                   @   s`   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	ddd„Z
dd„ Zdd„ ZdS )ÚTestCudaPowic              	   C   s�   t  ttd d …d d …f ttd d …d d …f ƒ¡}|tƒ}d}tjdtjd� dd¡}t 	|¡}|d|j
f |||ƒ |  t ||| ¡¡ d S ©Nr
   é
   ©Údtypeé   r   )r   Újitr   r   r   r   r&   ÚarangeÚreshapeÚ
empty_liker   Ú
assertTrueÚallclose©ÚselfÚdecZkernelr   r   ZAoutr   r   r   Ú	test_powi6   s    2
zTestCudaPowi.test_powic              	   C   s�   t  ttd d …d d …f ttd d …d d …f ƒ¡}|tƒ}d}tjdtjd� dd¡}t 	|¡}|d|j
f |||ƒ |  t ||| ¡¡ d S r,   )r   r1   r   r   r   r   r&   r2   r3   r4   r   r5   r6   r7   r   r   r   Útest_powi_binop@   s    2
zTestCudaPowi.test_powi_binopçH¯¼šò×z>c           	      C   s¶   d}t |ƒ |¡}t |ƒ |¡}t |¡}t |¡}|d|f |||ƒ tjj||| |d� tjddg|d�}tjddg|d�}t |¡}|d |||ƒ tjj||| |d� d S )	Né    r   ©Úrtoly                r%   r.   g      ð?)r   r
   )	r*   Úastyper&   Z
zeros_liker   r1   ÚtestingÚassert_allcloseZasarray)	r8   r/   Úfuncr?   r)   r   r   r   Úcfuncr   r   r   Ú
_test_cpowL   s    


zTestCudaPowi._test_cpowc                 C   s   | j tjtdd� d S ©Ngvƒôõ!”>r>   )rE   r&   Ú	complex64r    ©r8   r   r   r   Útest_cpow_complex64_pow^   s    z$TestCudaPowi.test_cpow_complex64_powc                 C   s   | j tjtdd� d S rF   )rE   r&   rG   r"   rH   r   r   r   Útest_cpow_complex64_binopa   s    z&TestCudaPowi.test_cpow_complex64_binopc                 C   s   |   tjt¡ d S ©N)rE   r&   Ú
complex128r    rH   r   r   r   Útest_cpow_complex128_powd   s    z%TestCudaPowi.test_cpow_complex128_powc                 C   s   |   tjt¡ d S rK   )rE   r&   rL   r"   rH   r   r   r   Útest_cpow_complex128_binopg   s    z'TestCudaPowi.test_cpow_complex128_binopc                 C   sZ   d}t |ƒ |¡}t |ƒ |¡}|| }t t¡}|d|f ||ƒ tjj|||d� d S )Nr=   r   r>   )r*   r@   r   r1   r#   r&   rA   rB   )r8   r/   r?   r)   r   r   r   rD   r   r   r   Ú_test_cpow_inplace_binopj   s    
z%TestCudaPowi._test_cpow_inplace_binopc                 C   s   | j tjdd� d S rF   )rO   r&   rG   rH   r   r   r   Ú!test_cpow_complex64_inplace_binopt   s    z.TestCudaPowi.test_cpow_complex64_inplace_binopc                 C   s   | j tjdd� d S rF   )rO   r&   rL   rH   r   r   r   Ú"test_cpow_complex128_inplace_binopw   s    z/TestCudaPowi.test_cpow_complex128_inplace_binopN)r<   )r<   )Ú__name__Ú
__module__Ú__qualname__r:   r;   rE   rI   rJ   rM   rN   rO   rP   rQ   r   r   r   r   r+   5   s   



r+   Ú__main__)r   Únumpyr&   Znumbar   r   r   r   r   Znumba.cuda.testingr   r   r   r   r    r"   r#   r*   r+   rR   Úmainr   r   r   r   Ú<module>   s   

F