
    xKg                         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(                          yy)    N)cudafloat64int8int32void)unittestCUDATestCasec                     t        j                  d      \  }}|j                  \  }}||k\  s||k\  ry t        j                  | ||f   t        |            |||f<   y N   )r   gridshapemathpowr   Apowerpower_Ayxmns          e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_powi.pycu_mat_powerr      sT    99Q<DAq==DAqAvaHHQq!tWeEl3GAqDM    c                     t        j                  d      \  }}|j                  \  }}||k\  s||k\  ry | ||f   |z  |||f<   y r   )r   r   r   r   s          r   cu_mat_power_binopr      sJ    99Q<DAq==DAqAvaadGu$GAqDMr   c                 v    t        j                  d      }|t        |       k  rt        ||   ||         | |<   y y N   )r   r   lenr   rr   r   is       r   vec_powr%      s6    		!A3q6z1Q41! r   c                 h    t        j                  d      }|t        |       k  r||   ||   z  | |<   y y r   r   r   r!   r"   s       r   vec_pow_binopr(   "   s4    		!A3q6ztqt|! r   c                 l    t        j                  d      }|t        |       k  r| |xx   ||   z  cc<   y y r   r'   )r#   r   r$   s      r   vec_pow_inplace_binopr*   )   s0    		!A3q6z	!1 r   c                     t         j                  j                  d       t         j                  j                  d      t         j                  j                  d      dz  z   S )N{   r                  ?)nprandomseed)Ns    r   random_complexr2   0   s@    IINN3IIQ"))"2"21"5"::;r   c                   L    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y)TestCudaPowic           
         t        j                  t        t        d d d d f   t        t        d d d d f               } |t
              }d}t        j                  dt        j                        j                  dd      }t        j                  |      } |d|j                  f   |||       | j                  t        j                  |||z               y 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    hhtGAqDM4A?@\"IIb

+33Aq9}}Qq!''z1eT*D!u*5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                        j                  dd      }t        j                  |      } |d|j                  f   |||       | j                  t        j                  |||z               y 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    hhtGAqDM4A?@'(IIb

+33Aq9}}Qq!''z1eT*D!u*56r   c                    d}t        |      j                  |      }t        |      j                  |      }t        j                  |      }t	        j
                  |      } |d|f   |||       t        j                  j                  |||z  |       t        j                  ddg|      }t        j                  ddg|      }t        j                  |      } |d   |||       t        j                  j                  |||z  |       y )	N    r    rtoly                r-   r8   g      ?)r    r   )	r2   astyper.   
zeros_liker   r;   testingassert_allcloseasarray)	rB   r9   funcrL   r1   r   r   r#   cfuncs	            r   
_test_cpowzTestCudaPowi._test_cpowL   s    1$$U+1$$U+MM!adAq!


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


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


""1ad"3r   c                 F    | j                  t        j                  d       y rV   )rc   r.   rW   rX   s    r   !test_cpow_complex64_inplace_binopz.TestCudaPowi.test_cpow_complex64_inplace_binopt   s    %%bll%@r   c                 F    | j                  t        j                  d       y rV   )rc   r.   r^   rX   s    r   "test_cpow_complex128_inplace_binopz/TestCudaPowi.test_cpow_complex128_inplace_binopw   s    %%bmm&%Ar   N)gHz>)__name__
__module____qualname__rF   rH   rT   rY   r[   r_   ra   rc   re   rg    r   r   r4   r4   5   s7    779$<B064ABr   r4   __main__)r   numpyr.   numbar   r   r   r   r   numba.cuda.testingr   r	   r   r   r%   r(   r*   r2   r4   rh   mainrk   r   r   <module>rq      s]      2 2 54%<
CB< CBL zHMMO r   