U
    9%e                     @   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re
  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   `/var/www/html/Darija-Ai-API/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_binopHz>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