
    /ji                    \    d dl mZ d dlZd dlZd dlmZ d dlmZ d Z	 G d de          Z
dS )    )annotationsN)Base)expectc                   t          j        | j                  |         }|r| }t          j        || f|          }t          j        | |          }|r,t          j        ||          }t          j        ||          }t          j        |t          j        |          |          }t          j        |t          j        |          |          }|t          j        |t           j	                  fS )N)axisdtype)
npindicesshapelexsortsortfliptakearangearrayint64)	Xkr   largestind_axissorted_indicessorted_valuestopk_sorted_indicestopk_sorted_valuess	            e/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/topk.pytopk_sorted_implementationr      s    z!'""4(H 9Z1D999NGAD)))M :d;;;D999'.")A,,TJJJ	!4HHHrx(;28LLLLL    c                      e Zd Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd	            Z
d
S )TopKreturnNonec                 L   d} d}d}t           j                            dddgddg|           }t          j        g d	g d
g dgt          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )N      r    xr   valuesr   inputsoutputsr   r   r$      r%                  	   
      r   
test_top_kr)   r*   name	onnxhelper	make_noder
   r   float32r   r   r   r   r   r   noder   K
values_refindices_refs           r   export_top_kzTopK.export_top_k   s    {$$C:)/D4 % 
 
 H
 *
 
 
 HaS)))"<Q4"Q"Q
K 	!Q*k)B	
 	
 	
 	
 	
 	
r   c                 L   d} d}d}t           j                            dddgddg|           }t          j        g d	g d
g dgt          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )Nr$   r%   r    r&   r   r'   r   r(   r+   r-   r2   r   test_top_k_uint64r8   )	r;   r<   r=   r
   r   uint64r   r   r   r?   s           r   export_top_k_uint64zTopK.export_top_k_uint64=   s    {$$C:)/D4 % 
 
 H
 )
 
 
 HaS)))"<Q4"Q"Q
K 	q6-$		
 	
 	
 	
 	
 	
r   c                 >   d} d}d}t           j                            dddgddg|           }t          j        g d	t          j        
          }t          j        |gt          j        
          }t          ||| |          \  }}t          |||g||gd           d S )Nr   r%   r    r&   r   r'   r   r(   r   r   r   r   r   test_top_k_same_valuesr8   r;   r<   r=   r
   r   r   r   r   r?   s           r   export_top_k_same_valueszTopK.export_top_k_same_valuesa   s    {$$C:)/D4 % 
 
 HLL(
 
 
 HaS)))"<Q4"Q"Q
K 	q6-)		
 	
 	
 	
 	
 	
r   c                 >   d} d}d}t           j                            dddgddg| 	          }t          j        g d
t          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )Nr   r$   r%   r    r&   r   r'   r   r(   rJ   r   test_top_k_same_values_largestr8   rL   r?   s           r    export_top_k_same_values_largestz%TopK.export_top_k_same_values_largest}   s    {$$C:)/D4 % 
 
 HLL(
 
 
 HaS)))"<Q4"Q"Q
K 	q6-1		
 	
 	
 	
 	
 	
r   c                 L   d} d}d}t           j                            dddgddg|           }t          j        g d	g d
g dgt          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )Nr$   r%   r    r&   r   r'   r   r(   rJ   )r$   r$   r$   r$   )r,   r,   r$   r$   r   test_top_k_same_values_2dr8   rL   r?   s           r   export_top_k_same_values_2dz TopK.export_top_k_same_values_2d   s    {$$C:)/D4 % 
 
 H\\<<<6(
 
 
 HaS)))"<Q4"Q"Q
K 	q6-,		
 	
 	
 	
 	
 	
r   c                 T   d} d}d}d}t           j                            dddgddg| ||	          }t          j        g d
g dg dgt          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )Nr$   r   r%   r    r&   r   r'   r   )r)   r*   r   r   sortedr+   r-   )r6   r5   r4   r3   r   test_top_k_smallestr8   r:   )	r   r   sorted_r   r@   r   rA   rB   rC   s	            r   export_top_k_smallestzTopK.export_top_k_smallest   s    {$$:y) % 
 
 H
 *
 
 
 HaS)))"<Q4"Q"Q
K 	q6-&		
 	
 	
 	
 	
 	
r   c                 L   d} d}d}t           j                            dddgddg| 	          }t          j        g d
g dg dgt          j                  }t          j        |gt          j                  }t          ||| |          \  }}t          |||g||gd           d S )Nr$   r%   r    r&   r   r'   r   r(   r+   r-   r2   r   test_top_k_negative_axisr8   r:   r?   s           r   export_top_k_negative_axiszTopK.export_top_k_negative_axis   s    {$$C:)/D4 % 
 
 H
 *
 
 
 HaS)))"<Q4"Q"Q
K 	q6-+		
 	
 	
 	
 	
 	
r   N)r!   r"   )__name__
__module____qualname__staticmethodrD   rH   rM   rP   rS   rX   r\    r   r   r    r       s        
 
 
 \
@ !
 !
 !
 \!
F 
 
 
 \
6 
 
 
 \
6 
 
 
 \
> (
 (
 (
 \(
T !
 !
 !
 \!
 !
 !
r   r    )
__future__r   numpyr
   r;   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r    ra   r   r   <module>rf      s    # " " " " "      , , , , , , . . . . . .M M Mk
 k
 k
 k
 k
4 k
 k
 k
 k
 k
r   