§
    1�Åjo  ã                  ó\   — 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	            úQC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/topk.pyÚtopk_sorted_implementationr      sÞ   € ÝŒz˜!œ'Ñ"Ô" 4Ô(€HØð Ø�9ˆÝ”Z ¨1 °DÐ9Ñ9Ô9€NÝ”G˜A DÐ)Ñ)Ô)€MØð :Ýœ °dÐ;Ñ;Ô;ˆÝœ °DÐ9Ñ9Ô9ˆÝœ' .µ"´)¸A±,´,ÀTÐJÑJÔJÐÝœ µ´	¸!±´À4ÐHÑHÔHÐØ�rœxÐ(;Å2Ä8Ð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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHà��Ø��Ø��ðõ
 ”*ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHà��Ø��Ø��ðõ
 ”)ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø$ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHØˆLˆLÝ”(ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø)ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHØˆLˆLÝ”(ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHØˆ\ˆ\˜<˜<˜<¨¨¨Ð6Ý”(ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø,ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
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à��Ø��Ø��ðõ
 ”*ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø&ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
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 )Néÿÿÿÿr$   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 ˜:°¸)Ð/DÈ4ð %ñ 
ô 
ˆõ ŒHà��Ø��Ø��ðõ
 ”*ð
ñ 
ô 
ˆõ ŒH�a�S¥¤Ð)Ñ)Ô)ˆÝ"<¸QÀÀ4ÈÑ"QÔ"QÑˆ
�Kõ 	ØØ�q�6Ø Ð-Ø+ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
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   