
    sh7                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJ	r	  \" SSS/5      r
\R                  " \R                  \R                  \R                  R                  \R                  R                   SS9\R                  R                  \R                  R                   SS9\R                  \R                  R                  \R                  R                   SS9\R                  R                  \R                  R                   SS9\R                  \R                  5	      " \	R"                  S	   5      r " S
 S\5      rS r " S S\5      r " S S\5      rSS jrSS jrS rS rg)    )
namedtupleN)
_helperlibExtentbeginend   )ndimattempt_nocopy_reshapec                   J    \ rS rSrSrSrS rS rS rS r	S r
SS
 jrS rSrg	)Dim   zA single dimension of the array

Attributes
----------
start:
    start offset
stop:
    stop offset
size:
    number of items
stride:
    item stride
startstopsizestridesinglec                 `    Xl         X l        X0l        X@l        XPl        U(       a	  US:X  d   eg g Nr   r   selfr   r   r   r   r   s         q/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/cudadrv/dummyarray.py__init__Dim.__init__*   s.    
		TQY&&Y6    c                    [        U[        5      (       a  UR                  U R                  5      u  p#nX@R                  -  nU R
                  U[        U R                  5      -  -   nU R
                  U[        U R                  5      -  -   nUS:X  a  SnO[        X#U5      n[        UUUUSS9nU$ US:w  a  XUS-    OU SS  nUR                  S:w  a  [        e[        UR
                  UR                  UR                  UR                  SS9$ )Nr   r   Fr   T)
isinstancesliceindicesr   r   r   abs_compute_sizer   
IndexErrorr   )	r   itemr   r   stepr   r   retsliceds	            r   __getitem__Dim.__getitem__2   s    dE"" $TYY 7EKK'FJJT[[)9!99E::s4;;'7 77D{$U&9C J,0BJTtax(DIF{{a  ll[[[[}} r   c                 8    U R                   XR                  -  -   $ N)r   r   )r   idxs     r   
get_offsetDim.get_offsetP   s    zzC++---r   c                 f    SnXR                   U R                  U R                  U R                  4-  $ )Nz*Dim(start=%s, stop=%s, size=%s, stride=%s))r   r   r   r   )r   strfmts     r   __repr__Dim.__repr__S   s)    =TYY		4;;GGGr   c                     [        U R                  U-
  U R                  U-
  U R                  U R                  U R
                  S9$ )Nr   )r   r   r   r   r   r   )r   bases     r   	normalizeDim.normalizeW   s:    d*T1A		$++dkkK 	Kr   Nc                     Uc  U R                   nUc  U R                  nUc  U R                  nUc  U R                  nUc  U R                  n[        XX4U5      $ r+   )r   r   r   r   r   r   r   s         r   copyDim.copy[   sW    =JJE<99D<99D>[[F>[[F5f55r   c                      U R                   U:H  $ r+   r   )r   itemsizes     r   is_contiguousDim.is_contiguoush   s    {{h&&r   )r   r   r   r   r   )NNNNN)__name__
__module____qualname____firstlineno____doc__	__slots__r   r(   r-   r1   r5   r8   r=   __static_attributes__ r   r   r   r      s3     <I'<.HK6'r   r   c                 8    [        S [        X5       5       5      $ )Nc              3   H   #    U  H  u  pUR                  U5      v   M     g 7fr+   )r-   ).0ids      r   	<genexpr> compute_index.<locals>.<genexpr>m   s     >+=41q||A+=s    ")sumzip)r    dimss     r   compute_indexrQ   l   s    >3w+=>>>r   c                   $    \ rS rSrSrS rS rSrg)Elementp   Fc                     Xl         g r+   extent)r   rW   s     r   r   Element.__init__s   s    r   c              #   (   #    U R                   v   g 7fr+   rV   r   s    r   iter_contiguous_extentElement.iter_contiguous_extentv   s     kks   rV   N)r?   r@   rA   rB   is_arrayr   r[   rE   rF   r   r   rS   rS   p   s    Hr   rS   c                       \ rS rSrSrSr\S 5       rS rS r	S r
S rS	 r\S
 5       r\S 5       rS rS rSS jrSS jrSrg)Arrayz   a  A dummy numpy array-like object.  Consider it an array without the
actual data, but offset from the base data pointer.

Attributes
----------
dims: tuple of Dim
    describing each dimension of the array

ndim: int
    number of dimension

shape: tuple of int
    size of each dimension

strides: tuple of int
    stride of each dimension

itemsize: int
    itemsize

extent: (start, end)
    start and end offset containing the memory region
Tc           	          / n[        X#5       H(  u  pg[        XXg-  -   XgSS9nUR                  U5        SnM*     U " XT5      $ )NF)r   r   )rO   r   append)	clsoffsetshapestridesr<   rP   ashapeastridedims	            r   	from_descArray.from_desc   sO    "52OFfv'77"$CKKF	  3
 4""r   c                    [        U5      U l        [        U R                  5      U l        [        S U R                   5       5      U l        [        S U R                   5       5      U l        X l        [        R                  " [        R                  U R                  S5      U l        U R                  5       U l        U R                  5       U l        g )Nc              3   8   #    U  H  oR                   v   M     g 7fr+   )r   rI   ri   s     r   rL   !Array.__init__.<locals>.<genexpr>   s     9y88y   c              3   8   #    U  H  oR                   v   M     g 7fr+   r;   rn   s     r   rL   ro      s     =9CZZ9rp   r   )tuplerP   lenr	   re   rf   r<   	functoolsreduceoperatormulr   _compute_extentrW   _compute_layoutflags)r   rP   r<   s      r   r   Array.__init__   s    $K			N	9tyy99
=499== $$X\\4::qA	**,))+
r   c                 V   U R                   (       d  SSS.$ [        U R                    Vs/ s H  oR                  S:H  PM     sn5      (       a  SSS.$ SSS.nU R                  n[	        U R                   5       HO  nUR
                  S:X  a  SSS.s  $ UR
                  S:w  d  M,  UR                  U:w  a  SUS'   X1R
                  -  nMQ     U R                  nU R                    H<  nUR
                  S:w  d  M  UR                  U:w  a	  SUS'   Us  $ X1R
                  -  nM>     U$ s  snf )NT)C_CONTIGUOUSF_CONTIGUOUSr   Fr   r}   r~   )rP   anyr   r<   reversedr   )r   ri   rz   sds       r   ry   Array._compute_layout   s    yy$($?? 49959C

a9566$)5AA!%t< ]]DII&Cxx1}(,dCCxx1}::#,1E.)hh ' ]]99Cxx1}::#,1E.) Lhh  3 6s   D&c                    S/U R                   -  nU R                   Vs/ s H  o"S-
  PM	     nn[        XR                  5      n[        X0R                  5      U R                  -   n[        XT5      n[        XE5      $ s  snf )Nr   r   )r	   re   rQ   rP   r<   maxr   )r   firstidxslastidxr   r   s         r   rx   Array._compute_extent   sj    3?"&**-*Qq5*-h		2Wii04==@4e""	 .s   A<c                 @    SU R                   < SU R                  < S3$ )Nz<Array dims=z
 itemsize=>)rP   r<   rZ   s    r   r1   Array.__repr__   s    04		4==IIr   c                    [        U[        5      (       d  U/nO[        U5      n[        U5      n[        U R                  5      nX#:  a  [        SX#-
  4-  5      e[        U5      U:  a,  UR                  [        S S 5      5        [        U5      U:  a  M,  [        U R                  U5       VVs/ s H  u  pEUR                  U5      PM     nnnU Vs/ s H!  owR                  (       a  M  UR                  PM#     nn[        X`R                  5      n	U(       a  U	R                  " U6 S   $ [        U	R                   5      $ s  snnf s  snf )Nz%d extra indices givenr   )r   rr   listrs   rP   r#   rb   r   rO   r(   r   r   r_   r<   reshaperS   rW   )
r   r$   nitemr	   ri   itrP   rK   newshapearrs
             r   r(   Array.__getitem__   s   $&&6D:DD	499~<5GHH $i$KKdD)* $i$ 47tyy$3GH3G#3GH$(9DqFAFFD9D--(;;)!,,3::&& I9s   /E E+Ec                      U R                   S   $ )Nr}   rz   rZ   s    r   is_c_contigArray.is_c_contig       zz.))r   c                      U R                   S   $ )Nr~   r   rZ   s    r   is_f_contigArray.is_f_contig   r   r   c              #   j  #    U R                   (       d  U R                  (       a  U R                  v   gU R                  S   R                  U R                  S   R                  :  a.  U R                  S   nU R                  SS nU R
                  SS nO-U R                  S   nU R                  SS nU R
                  SS nUR                  U R                  5      (       a_  U Vs/ s H  n[        U5      PM     nn[        R                  " U6  H,  n[        Xb5      nXqR                  -   XqR                  -   4v   M.     gU R
                   Vs/ s H  n[        U5      PM     nn[        R                  " U6  H*  n[        X`R                  5      nXU R                  -   4v   M,     gs  snf s  snf 7f)zGenerates extents
        r   r   r   N)r   r   rW   rP   r   re   r=   r<   range	itertoolsproductrQ   r   r   )	r   innerdim	outerdims
outershaper   oslenr    r4   rd   s	            r   r[   Array.iter_contiguous_extent   s^     t//++yy|""TYYr]%9%9999Q< IIabM	!ZZ^
99R= IIcrN	!ZZ_
%%dmm44+56:aq:6(00%8G(<D/1EEE  9 ,0::6:aq:6(00%8G*7II>F 4=="888  9 7
 7s    C%F3'F)<AF3F.%AF3c                    U R                   n[        U5      nXR                  :X  a  U S 4$ UR                  SS5      nU(       a  [	        SUR                  5       -  5      eUS;  a  [        S5      eSnSn[        U5       H$  u  pU	S:  a  US:X  a  UnM  [        S	5      eXy-  nM&     US:  aB  US:X  d  U R                  U-  S:w  a  [        S
5      eUSU U R                  U-  4-   XS-   S  -   n[        R                  " [        R                  US5      n
US:X  a  U R                  (       a  SOSnXR                  :w  a  [        S5      eU R                  (       d  U R                  (       aC  US:X  a  [        [!        X5      5      nGO US:X  a  [        [#        X5      5      nGO[%        S5      e[&        R(                  " U[&        R*                  R,                  5      n[&        R.                  " U R                  [&        R*                  R,                  S9n[&        R.                  " U R0                  [&        R*                  R,                  S9n[&        R.                  " U[&        R*                  R,                  S9n[3        UUUUUUU R4                  US:H  5      (       d  [7        S5      eU R9                  U R:                  R<                  UXR4                  S9nU[        U R?                  5       5      4$ )NorderCzunknown keyword arguments %sCFAorder not C|F|Ar   r   r   z&can only specify one unknown dimensionz.cannot infer valid shape for unknown dimensionAFz%reshape changes the size of the arrayunreachable)dtypezreshape would require copyre   rf   r<   ) r	   rs   re   pop	TypeErrorkeys
ValueError	enumerater   rt   ru   rv   rw   r   r   r   iter_strides_c_contigiter_strides_f_contigAssertionErrornpempty	ctypeslibc_intparrayrf   r
   r<   NotImplementedErrorrj   rW   r   r[   )r   newdimskwsoldndnewndr   
unknownidx	knownsizerJ   ri   newsize
newstridesolddims
oldstridesr&   s                  r   r   Array.reshape  s   		Gjj :%:SXXZGHH.// 
	(FAQw#!"J$%MNN 	 ) ?A~Y!6!!;  "9 : : "!J/yyI-/01no./ ""8<<!<C<++CEiiDEEt//|!"7"FG
#!"7"FG
$]33%)<)<=J hhtzz1D1DEG$,,bll6I6IJJhhwbll.A.ABG)	 	 **FGGnnT[[..g%/--  I D446777r   Nc                    / / p2UcT  [        U R                  U R                  5       H/  u  pEUS:w  d  M  UR                  U5        UR                  U5        M1     O[	        U[
        5      (       d  U4nU H!  nU R                  U   S:w  d  M  [        S5      e   [        [        U R                  U R                  5      5       H1  u  nu  pEXq;  d  M  UR                  U5        UR                  U5        M3     U R                  U R                  R                  UUU R                  S9nU[        U R                  5       5      4$ )Nr   zDcannot select an axis to squeeze out which has size not equal to oner   )rO   re   rf   rb   r   rr   r   r   rj   rW   r   r<   r   r[   )	r   axisr   r   lengthr   axrJ   newarrs	            r   squeezeArray.squeeze`  s   !2*<"%djj$,,"?Q;OOF+%%f- #@
 dE**w::b>Q&$+   (1TZZ1N'O##F=OOF+%%f- (P KK]]	   
 tD779:::r   c                 b   US;  a  [        S5      eUS;   a  U R                  (       d  US;   aw  U R                  (       af  U R                  4nU R                  4nU R                  U R                  R                  X#U R                  5      nU[        U R                  5       5      4$ [        S5      e)Nr   r   CAFAzravel on non-contiguous array)r   r   r   r   r<   rj   rW   r   r   r[   r   )r   r   r   r   r   s        r   ravelArray.ravel|  s    .//TMd..D=T%5%5		|H--)J..!2!2H!%0CT88:;;; &&EFFr   )rP   rW   rz   r<   r	   re   r   rf   r+   )r   )r?   r@   rA   rB   rC   r]   classmethodrj   r   ry   rx   r1   r(   propertyr   r   r[   r   r   r   rE   rF   r   r   r_   r_   z   sz    . H# #,$L#J'0 * * * *94K8Z;8Gr   r_   c              #   ~   #    Uc  U R                   OUnU R                  nUv   SnUSS  H  nX4-  nX2-  v   M     g7f)z$yields the f-contiguous strides
    Nr   r   )re   r<   )r   re   r<   rN   r   s        r   r   r     sH      CIIEE||H
N
C3BZn s   ;=c              #      ^^#    Tc  U R                   OTmU R                  mUU4S jn[        [        U" 5       5      5       H  nUv   M	     g7f)z$yields the c-contiguous strides
    Nc               3   Z   >#    Tv   Sn [        TSS  5       H  nX-  n U T-  v   M     g 7fr   )r   )rN   r   r<   re   s     r   gen"iter_strides_c_contig.<locals>.gen  s6     %)$AHC.  %s   (+)re   r<   r   r   )r   re   r   rJ   r<   s    `  @r   r   r     sA      CIIEE||H! d35k" #s   A
Ac                     [        U [        5      (       a  g[        U [        5      (       a(  [        U 5      U:X  a  [	        S U  5       5      (       d  ggg)NFc              3   B   #    U  H  n[        U[        5      v   M     g 7fr+   )r   r   )rI   r   s     r   rL   &is_element_indexing.<locals>.<genexpr>  s     <tz"e,,ts   T)r   r   rr   rs   r   )r$   r	   s     r   is_element_indexingr     sI    $	D%	 	 t9<t<<<
  r   c                 L    US:  a  U nUnOUnU nU* nX4:  a  gXC-
  S-
  U-  S-   $ )z1Algorithm adapted from cpython rangeobject.c
    r   r   rF   )r   r   r%   lohis        r   r"   r"     sD     axu	xGaKD 1$$r   r+   )collectionsr   r   rt   rv   ctypesnumpyr   numbar   r   	CFUNCTYPEc_intc_longr   	ndpointerr   	c_helpersr
   objectr   rQ   rS   r_   r   r   r   r"   rF   r   r   <module>r      s>   "      	Hw.	/))
LL
MMLL2<<..Q7LL2<<..Q7
MMLL2<<..Q7LL2<<..Q7
MM
LL
 /0
2 O'& O'd?f OGF OGd	"%r   