
    J/Ph                         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 Zd Zd Zd Zd Zd	 Z G d
 de          Zedk    r e
j                     dS dS )    N)cudafloat64int8int32void)unittestCUDATestCasec                     t          j        d          \  }}|j        \  }}||k    s||k    rd S t          j        | ||f         t          |                    |||f<   d S N   )r   gridshapemathpowr   Apowerpower_Ayxmns          a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_powi.pycu_mat_powerr      s_    9Q<<DAq=DAqAvvaHQq!tWeEll33GAqDMMM    c                     t          j        d          \  }}|j        \  }}||k    s||k    rd S | ||f         |z  |||f<   d S r   )r   r   r   r   s          r   cu_mat_power_binopr      sR    9Q<<DAq=DAqAvvaadGu$GAqDMMMr   c                     t          j        d          }|t          |           k     r!t          ||         ||                   | |<   d S d S N   )r   r   lenr   rr   r   is       r   vec_powr%      sB    	!A3q66zz1Q41! zr   c                     t          j        d          }|t          |           k     r||         ||         z  | |<   d S d S r   r   r   r!   r"   s       r   vec_pow_binopr(   "   s>    	!A3q66zztqt|! zr   c                     t          j        d          }|t          |           k     r| |xx         ||         z  cc<   d S d S r   r'   )r#   r   r$   s      r   vec_pow_inplace_binopr*   )   sB    	!A3q66zz	!1 zr   c                     t           j                            d           t           j                            d          t           j                            d          dz  z   S )N{   r                  ?)nprandomseed)Ns    r   random_complexr2   0   sF    INN3IQ")"2"21"5"5"::;r   c                   N    e Zd Zd Zd ZddZd Zd Zd Zd Z	dd	Z
d
 Zd ZdS )TestCudaPowic           
         t          j        t          t          d d d d f         t          t          d d d d f                             } |t
                    }d}t          j        dt          j                                      dd          }t          j	        |          } |d|j
        f         |||           |                     t          j        |||z                       d S Nr   
   dtype   r    )r   jitr   r   r   r   r.   arangereshape
empty_liker   
assertTrueallcloseselfdeckernelr   r   Aouts         r   	test_powizTestCudaPowi.test_powi6   s    htGAAAqqqDM4AAA??@@\""Ib
+++33Aq99}Qq!'z1eT***D!u*5566666r   c           
         t          j        t          t          d d d d f         t          t          d d d d f                             } |t
                    }d}t          j        dt          j                                      dd          }t          j	        |          } |d|j
        f         |||           |                     t          j        |||z                       d S r6   )r   r;   r   r   r   r   r.   r<   r=   r>   r   r?   r@   rA   s         r   test_powi_binopzTestCudaPowi.test_powi_binop@   s    htGAAAqqqDM4AAA??@@'((Ib
+++33Aq99}Qq!'z1eT***D!u*5566666r   Hz>c                 N   d}t          |                              |          }t          |                              |          }t          j        |          }t	          j        |          } |d|f         |||           t          j                            |||z  |           t          j        ddg|          }t          j        ddg|          }t          j        |          } |d         |||           t          j                            |||z  |           d S )	N    r    rtoly                r-   r8   g      ?)r    r   )	r2   astyper.   
zeros_liker   r;   testingassert_allcloseasarray)	rB   r9   funcrM   r1   r   r   r#   cfuncs	            r   
_test_cpowzTestCudaPowi._test_cpowL   s   1$$U++1$$U++M!adAq!

""1a1f4"888 Jd|5111Jc{%000M!dAq!

""1a1f4"88888r   c                 T    |                      t          j        t          d           d S Ngv!>rL   )rU   r.   	complex64r%   rB   s    r   test_cpow_complex64_powz$TestCudaPowi.test_cpow_complex64_pow^   s"    gF;;;;;r   c                 T    |                      t          j        t          d           d S rW   )rU   r.   rX   r(   rY   s    r   test_cpow_complex64_binopz&TestCudaPowi.test_cpow_complex64_binopa   s"    m&AAAAAr   c                 P    |                      t          j        t                     d S N)rU   r.   
complex128r%   rY   s    r   test_cpow_complex128_powz%TestCudaPowi.test_cpow_complex128_powd   s    w/////r   c                 P    |                      t          j        t                     d S r^   )rU   r.   r_   r(   rY   s    r   test_cpow_complex128_binopz'TestCudaPowi.test_cpow_complex128_binopg   s    }55555r   c                 :   d}t          |                              |          }t          |                              |          }||z  }t          j        t                    } |d|f         ||           t
          j                            |||           d S )NrK   r    rL   )r2   rN   r   r;   r*   r.   rP   rQ   )rB   r9   rM   r1   r   r   r#   rT   s           r   _test_cpow_inplace_binopz%TestCudaPowi._test_cpow_inplace_binopj   s    1$$U++1$$U++F.//adAq

""1ad"33333r   c                 H    |                      t          j        d           d S rW   )rd   r.   rX   rY   s    r   !test_cpow_complex64_inplace_binopz.TestCudaPowi.test_cpow_complex64_inplace_binopt   s#    %%bl%@@@@@r   c                 H    |                      t          j        d           d S rW   )rd   r.   r_   rY   s    r   "test_cpow_complex128_inplace_binopz/TestCudaPowi.test_cpow_complex128_inplace_binopw   s#    %%bm&%AAAAAr   N)rI   )__name__
__module____qualname__rF   rH   rU   rZ   r\   r`   rb   rd   rf   rh    r   r   r4   r4   5   s        7 7 77 7 79 9 9 9$< < <B B B0 0 06 6 64 4 4 4A A AB B B B Br   r4   __main__)r   numpyr.   numbar   r   r   r   r   numba.cuda.testingr   r	   r   r   r%   r(   r*   r2   r4   ri   mainrl   r   r   <module>rr      s        2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 5 5 5 5 5 5 54 4 4% % %      < < <
CB CB CB CB CB< CB CB CBL zHMOOOOO r   