
    bIg                    T    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
y)    )annotationsN)Base)expectc                   t        j                  | |      }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argsortsortfliptakearangearrayint64)Xkr   largestsorted_indicessorted_valuestopk_sorted_indicestopk_sorted_valuess           ]/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/case/node/topk.pytopk_sorted_implementationr      s    ZZ-NGGAD)Md;D9''."))A,TJ		!4Hrxx(;288LLL    c                  B    e Zd Zedd       Zedd       Zedd       Zy)TopKc                 N   d} d}d}t         j                  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       y )N      r   xr   valuesindices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 % 
 HH
 **
 HHaS)"<Q4"Q
K 	!Q*k)B	
r   c                 V   d} d}d}d}t         j                  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       y )Nr   r   r    r   r!   r   r"   r#   )r%   r&   r   r   sortedr'   r)   )r2   r1   r0   r/   r   test_top_k_smallestr4   r6   )	r   r   rB   r   r<   r   r=   r>   r?   s	            r   export_top_k_smallestzTopK.export_top_k_smallest:   s    {{$$:y) % 
 HH
 **
 HHaS)"<Q4"Q
K 	q6-&		
r   c                 N   d} d}d}t         j                  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       y )Nr   r    r   r!   r   r"   r#   r$   r'   r)   r.   r   test_top_k_negative_axisr4   r6   r;   s           r   export_top_k_negative_axiszTopK.export_top_k_negative_axise   s    {{$$C:)/D4 % 
 HH
 **
 HHaS)"<Q4"Q
K 	q6-+		
r   N)returnNone)__name__
__module____qualname__staticmethodr@   rD   rH    r   r   r   r      s>    
 
@ (
 (
T !
 !
r   r   )
__future__r   numpyr
   r7   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   rO   r   r   <module>rT      s*    #   , .Mo
4 o
r   