
    )`i                          d Z ddlmZ ddlmZ ddlmZ ddlmZ d Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd ZddZddZddZddZdedeef         deeef         fdZdedeef         fdZdS )z&
Functions for manipulating IntTuples
    )reduce)chain)Union   )Integerc                 ,    t          | t                    S N)
isinstancer   xs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/flashinfer/data/cutlass/python/pycute/int_tuple.pyis_intr   +   s    	Aw		    c                 ,    t          | t                    S r	   )r
   tupler   s    r   is_tupler   /   s    	Au		r   c                     t          |           r.t          |           dk    rdS t          d | D                       S | fS )Nr    c              3   >   K   | ]}t          |          D ]}|V  d S r	   )flatten).0ais      r   	<genexpr>zflatten.<locals>.<genexpr>8   s5      4444A14444444r   )r   lenr   )ts    r   r   r   3   sH    a[[ 
1vv{{R44a4444444Kr   c                 P    t          | dk              t          | dk               z
  S )Nr   )boolr   s    r   signumr    =   s!    	a!etAE{{	""r   c                 H    t          |           rt          d | d          S | S )Nc                 &    | t          |          z  S r	   )product)valelems     r   <lambda>zproduct.<locals>.<lambda>C   s    C$5 r   r   )r   r   r   s    r   r#   r#   A   s+    a[[ 55q!<<<Hr   c                     t          |           rIt          |           t          |          k    sJ t          d t          | |          D                       S t          |          rJ | |z  S )Nc              3   <   K   | ]\  }}t          ||          V  d S r	   )inner_productr   r   ys      r   r   z inner_product.<locals>.<genexpr>K   s0      66ca}Qq!!666666r   )r   r   sumzipr   bs     r   r)   r)   H   sl    a[[ q66SVV66S1XX666666{{?q5Lr   c                 V    t          |           rt          d | D                       S | S )Nc              3   4   K   | ]}t          |          V  d S r	   )	tuple_max)r   r   s     r   r   ztuple_max.<locals>.<genexpr>S   s(      ''y||''''''r   )r   maxr   s    r   r2   r2   Q   s2    a[[ ''Q''''''Hr   c                 6   t          |           rZt          |          rIt          |           t          |          k    sJ t          d t          | |          D                       S J t          |          rt	          | t          |                    S | |z  S )Nc              3   <   K   | ]\  }}t          ||          V  d S r	   )
elem_scaler*   s      r   r   zelem_scale.<locals>.<genexpr>\   s.      77sq:a??777777r   )r   r   r   r-   r6   r#   r.   s     r   r6   r6   X   s    a[[ 
{{ VVs1vv77c!Ahh777777U{{ 71::&&&Ulr   c                    t          |           rt          |          rIt          |           t          |          k    sJ t          d t          | |          D                       S g }| D ]B}|                    t          ||                     t          |t          |                    }Ct          |          S t          |          rt          | t          |                    S | |z  dk    s|| z  dk    sJ | |z   dz
  |z  S )Nc              3   <   K   | ]\  }}t          ||          V  d S r	   )	shape_divr*   s      r   r   zshape_div.<locals>.<genexpr>k   s.      66ca9Qq>>666666r   r   r   )r   r   r   r-   appendr9   r#   )r   r/   rvs       r   r9   r9   g   s   a[[ {{ 	VVs1vv66S1XX666666 a $ $!	1Q   a

##1XXo{{ q'!**%%%UaZZ1q5A:::%!eaiAr   c                    t          |           rt          |          rIt          |           t          |          k    sJ t          d t          | |          D                       S g }| D ]7}|                    t          ||                     |t          |          z  }8t          |          S t          |          rJ |S )Nc              3   <   K   | ]\  }}t          ||          V  d S r	   )prefix_product)r   r   r   s      r   r   z!prefix_product.<locals>.<genexpr>   s0      >>31Q>!A&&>>>>>>r   )r   r   r   r-   r:   r?   r#   )r   initr;   r<   s       r   r?   r?   {   s    a[[ ~~ 	VVs4yy    >>#a++>>>>>> a ! !!	$''(((gajj 1XXo~~ Ukr   Nc                     |t          |          }t                     r{t          |          rjt                     t          |          k    r t                     t          |          k    sJ t          d t	           ||          D                       S J t          |          rKt          |          t          |          k    sJ t           fdt	          ||          D                       S  |z  |z  S )Nc              3   @   K   | ]\  }}}t          |||          V  d S r	   idx2crd)r   r   sds       r   r   zidx2crd.<locals>.<genexpr>   s4      II1a71a##IIIIIIr   Fc              3   @   K   | ]\  }}t          ||          V  d S r	   rC   )r   rE   rF   idxs      r   r   zidx2crd.<locals>.<genexpr>   s3      CC#!A731%%CCCCCCr   )r?   r   r   r   r-   )rH   shapestrides   `  r   rD   rD      s    ^E""Fc]] % XXU##CCKK(?(?(??II3s53H3HIIIIIIU %ZZ3v;;&&&&CCCCU61B1BCCCCCCVmu$$r   c           	         |t          |          }t          |           rt          |          rjt          |           t          |          k    r t          |           t          |          k    sJ t          d t	          | ||          D                       S J d|  d|             | d} t          |          rt          |          t          |          k    sJ d}t          t          |          dz
            D ]P}|t          | t          ||                   z  ||         ||                   z  }| t          ||                   z  } Q|t          | |d         |d                   z   S | |z  S )Nc              3   @   K   | ]\  }}}t          |||          V  d S r	   )crd2idx)r   crE   rF   s       r   r   zcrd2idx.<locals>.<genexpr>   s4      IIgaAAq!!IIIIIIr   Fzcrd=z, shape=r   r   )r?   r   r   r,   r-   rangerM   r#   )crdrI   rJ   resultr   s        r   rM   rM      su   ^E""Fc]]  0XXU##CCKK(?(?(??IIS%1H1HIIIIII//3//////U
{c ZZ3v;;&&&&fSZZ\"" ' '!'#a 1 1158VAYGGGWU1X&&&gc59fRj99996\r   c                 J   t          |           rlt          |          rIt          |           t          |          k    sJ t          d t          | |          D                       S |J t	          | |          S t          |          rt          | |          S | |k     sJ | S )Nc              3   <   K   | ]\  }}t          ||          V  d S r	   )crd2crdr*   s      r   r   zcrd2crd.<locals>.<genexpr>   s.      @@TQ71a==@@@@@@r   )r   r   r   r-   rM   rD   )rQ   	dst_shape	src_shapes      r   rU   rU      s    c]] 	 %XXY''''@@SY-?-?@@@@@@ """S)$$$	 S)$$$9____jr   rQ   trgc                    t          |           rpt          |          r_t          |           t          |          k    sJ t          t          t	          d d t          | |          D                                  S J | |fS dS )Nc                     | dk    S )Nr   r   r   s    r   r&   zslice_.<locals>.<lambda>   s
    17 r   c                 4    g | ]\  }}t          ||          S r   )slice_)r   rN   rE   s      r   
<listcomp>zslice_.<locals>.<listcomp>   s$    4\4\4\daVAq\\4\4\4\r   Fr   )r   r   r   r   filterr-   )rQ   rX   s     r   r\   r\      s    c]] }} XXS!!!!5&!2!24\4\cRUWZmm4\4\4\]]^___U
{6M2r   r   c                 Z    t          |           rt          d | D                       S | d u S )Nc              3   4   K   | ]}t          |          V  d S r	   )has_none)r   r<   s     r   r   zhas_none.<locals>.<genexpr>   s(      &&qx{{&&&&&&r   )r   anyr   s    r   ra   ra      s7    a[[ &&A&&&&&&9r   )r   r	   )__doc__	functoolsr   	itertoolsr   typingr   r   r   r   r   r    r#   r)   r2   r6   r9   r?   rD   rM   rU   r   intr\   ra   r   r   r   <module>rh      s  B                                  # # #          (   &% % % %$   4   $dE3&' eSj!   "dE3&'      r   