
    `i8                     J   d dl Z d dl mZmZ dededeeef         fdZdeded	ed
edeeeef                  f
dZdedededee         fdZdedededefdZ	deedf         deedf         deedf         deeedf                  fdZ
deedf         deedf         deedf         deedf         fdZdeedf         deedf         deedf         fdZdeedf         dedeedf         fdZdeedf         deeef         deeeeedf                  f         fdZdS )    N)AnyOptionalabreturnc                 V    | |}}d\  }}|r||z  }||||z  z
  }}||||z  z
  }}|||fS )N)   r    )r   r   cdxurs          x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/distributed/array/_index_arith.py_extgcdr      s`    
 aqADAq  F!a!e)1!a!e)1	   a4K    a1n1a2n2c                     t          ||          \  }}|| z
  |z  dk    rd S |||z  z  }| || z
  |z  |z  ||z  z  |z  z   }||k     r|||z
  dz
  |z  dz   |z  z  }||fS )Nr   r	   )r   )r   r   r   r   gm1nr   s           r   _crtr      s     BOOEAr 	R1}t
bAgA 	b2g!^b AG,r11A2vv	rAvza!#q((a4Kr   lengthc                     |                      |          \  }}}|                     |          \  }}}t          ||||          }	|	d S |	\  }
}t          ||          }|
|k    rd S t          |
||          S N)indicesr   minslice)r   r   r   a_starta_stopa_stepb_startb_stopb_step
crt_resultc_startc_stepc_stops                r   _slice_intersectionr,   1   s    ii//GVVii//GVVgvw77Jt OGV  F&t&&)))r   subc                     |                      |          \  }}}|                     |          \  }}}||z
  |z  }	||z
  dz
  |z  dz   }
||z  }t          |	|
|          S Nr	   )r   r!   )r   r-   r   r"   r#   r$   	sub_startsub_stopsub_stepr)   r+   r*   s               r   _index_for_subslicer3   B   sx      ii//GVV$'KK$7$7!Ix7"v-G 1$/!3FF&&)))r   a_idx.b_idxshapec                     t          |           t          |          k    sJ t          d t          | ||          D                       }d |v rd S t          j        t          t
          df         |          S )Nc              3   @   K   | ]\  }}}t          |||          V  d S r   )r,   ).0r   r   r   s       r   	<genexpr>z&_index_intersection.<locals>.<genexpr>V   sP       A A#q!V 'q!V44 A A A A A Ar   .)lentupleziptypingcastr!   )r4   r5   r6   results       r   _index_intersectionrA   P   s    
 u::U#### A A'*5%'?'?A A A A AF v~~t{5,f555r   sub_idxc                     t          |           t          |          k    sJ t          d t          | ||          D                       S )Nc              3   @   K   | ]\  }}}t          |||          V  d S r   )r3   )r9   r   r-   r   s       r   r:   z&_index_for_subindex.<locals>.<genexpr>e   sP       C C#QV %QV44 C C C C C Cr   )r;   r<   r=   )r4   rB   r6   s      r   _index_for_subindexrE   _   sc     u::W%%%% C C'*5'5'A'AC C C C C Cr   outer_shapeidxc                     t          |           }t          t          |                    D ]8}||                             ||                   \  }}}||z
  dz
  |z  dz   ||<   9t	          |          S r/   )listranger;   r   r<   )rF   rG   r6   istartstopsteps          r   _shape_after_indexingrO   i   sv     E3s88__ 2 2FNN5844tT5L1$-1a<<r   c           
         t          |t                    s|f}t          |           }t          |          |k    r#t          d| dt          |           d          |t	          d           f|t          |          z
  z  z   }g }t          |          D ]+}t          ||         t                    rj||         | |         k    r$t          d||          d| d| |                    |                    t	          ||         ||         dz   d                     t          ||         t                    rx||                             | |                   \  }}}|dk    rt          d	          ||k    rt          d
|           |                    t	          |||                     t          d|           t          |          S )Nz%too many indices for array: array is z-dimensional, but z were indexedzIndex z is out of bounds for axis z with size r	   r   zSlice step must be positive.zThe index is empty on axis zInvalid index on axis )

isinstancer<   r;   
IndexErrorr!   rJ   intappendr   
ValueError)r6   rG   ndimnew_idxrK   rL   rM   rN   s           r   _normalize_indexrX   t   s    c5!! fu::D
3xx$II I14SI I IJ J 	J t$S/2
2CG4[[ ; ;c!fc"" 	;1vq!! :SV : :!": :/4Qx: :; ; ; NN5QQ!Q778888A&& 	; #AuQx 8 8E4qyy !?@@@}} !Bq!B!BCCCNN5d3344449a99:::>>r   	index_mapc                      i }|                                 D ]D\  }}t          |t                    s|g} fd|D             }|                                 |||<   E|S )Nc                 0    g | ]}t          |          S r
   )rX   )r9   rG   r6   s     r   
<listcomp>z(_normalize_index_map.<locals>.<listcomp>   s$    === ,,===r   )itemsrQ   rI   sort)r6   rY   new_index_mapdevidxss   `    r   _normalize_index_maprb      sy     9;M__&& " "	T$%% 	6D=======		!cr   )r>   r   r   rS   r<   r   r   r!   r,   r3   rA   rE   rO   rX   dictrI   rb   r
   r   r   <module>rd      s                   s s uS#X    (S c s  sCx0I    0*5 *U *C *HUO * * * *"*5 *u *c *e * * * *66%*5#:%66c?6 eE3J 6 6 6 6CC',UCZ'8Cc?C 5#:C C C CsCx	ucz	 38_   E#s(O # %s
:K    Dc?'+CH~	#tE%*%&
&'     r   