§
    1�Åjû  ã                  ón   — d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 dd„Z
dd„Z G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚBase)ÚexpectÚEqnÚstrÚOperandsútuple[np.ndarray, ...]Úreturnú
np.ndarrayc                ó&   — t          j        | g|¢R Ž S )N)ÚnpÚeinsum)r   r   s     úSC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/einsum.pyÚeinsum_reference_implementationr      s   € õ Œ9�SÐ$˜8Ð$Ð$Ð$Ð$ó    c                óœ   — d„ |D ¦   «         }t          j        t          j        | g|¢R Ž ¦  «                             t          j        ¦  «        S )Nc                óL   — g | ]!}|                      t          j        ¦  «        ‘Œ"S © )Úastyper   Úfloat32)Ú.0Úoperands     r   ú
<listcomp>z<einsum_bfloat16_reference_implementation.<locals>.<listcomp>   s&   € ÐCÐCÐC¨w�—’�rœzÑ*Ô*ÐCÐCÐCr   )r   Úasarrayr   r   Ú	ml_dtypesÚbfloat16)r   r   Úpromoteds      r   Ú(einsum_bfloat16_reference_implementationr      sK   € ð DÐC¸(ÐCÑCÔC€HÝŒ:•b”i Ð/ hÐ/Ð/Ð/Ñ0Ô0×7Ò7½	Ô8JÑKÔKÐKr   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
edd
„¦   «         Zedd„¦   «         ZdS )ÚEinsumr
   ÚNonec                 óà   — d} t           j                             ddgdg| ¬¦  «        }t          j                             dd¦  «        }t          | |f¦  «        }t          ||g|gd¬	¦  «         d S )
Núij->jir    ÚxÚy©ÚinputsÚoutputsÚequationé   é   Útest_einsum_transpose©r'   r(   Úname©ÚonnxÚhelperÚ	make_noder   ÚrandomÚrandnr   r   ©r   ÚnodeÚXÚYs       r   Úexport_einsum_transposezEinsum.export_einsum_transpose   sz   € àˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜qÑ!Ô!ˆÝ+¨C°!°Ñ6Ô6ˆåˆt˜Q˜C¨!¨Ð3JÐKÑKÔKÐKÐKÐKr   c                 óà   — d} t           j                             ddgdg| ¬¦  «        }t          j                             dd¦  «        }t          | |f¦  «        }t          ||g|gd¬	¦  «         d S )
Núij->ir    r$   r%   r&   r*   r+   Útest_einsum_sumr-   r/   ©r   r6   r7   ÚZs       r   Úexport_einsum_sumzEinsum.export_einsum_sum)   sz   € àˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜qÑ!Ô!ˆÝ+¨C°!°Ñ6Ô6ˆåˆt˜Q˜C¨!¨Ð3DÐEÑEÔEÐEÐEÐEr   c                 óâ   — d} t           j                             ddgdg| ¬¦  «        }t          j                             ddd¦  «        }t          | |f¦  «        }t          ||g|gd¬	¦  «         d S )
Nz...ii ->...ir    r$   r%   r&   r*   é   Útest_einsum_batch_diagonalr-   r/   r=   s       r   Úexport_einsum_batch_diagonalz#Einsum.export_einsum_batch_diagonal5   s|   € àˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q !Ñ$Ô$ˆÝ+¨C°!°Ñ6Ô6ˆåˆt˜Q˜C¨!¨Ð3OÐPÑPÔPÐPÐPÐPr   c                 ó"  — d} t           j                             dddgdg| ¬¦  «        }t          j                             d¦  «        }t          j                             d¦  «        }t          | ||f¦  «        }t          |||g|gd¬	¦  «         d S )
Nzi,ir    r$   r%   Úzr&   rA   Útest_einsum_inner_prodr-   r/   ©r   r6   r7   r8   r>   s        r   Úexport_einsum_inner_prodzEinsum.export_einsum_inner_prodA   s‘   € àˆÝŒ{×$Ò$Ø˜c 3˜Z°#°Àð %ñ 
ô 
ˆõ ŒI�OŠO˜AÑÔˆÝŒI�OŠO˜AÑÔˆÝ+¨C°!°Q°Ñ8Ô8ˆåˆt˜Q ˜F¨Q¨CÐ6NÐOÑOÔOÐOÐOÐOr   c                 ó*  — d} t           j                             dddgdg| ¬¦  «        }t          j                             ddd	¦  «        }t          j                             dd	d
¦  «        }t          | ||f¦  «        }t          |||g|gd¬¦  «         d S )Núbij, bjk -> bikr    r$   r%   rE   r&   rA   é   r*   r+   Útest_einsum_batch_matmulr-   r/   rG   s        r   Úexport_einsum_batch_matmulz!Einsum.export_einsum_batch_matmulN   s™   € àˆÝŒ{×$Ò$Ø˜c 3˜Z°#°Àð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q !Ñ$Ô$ˆÝŒI�OŠO˜A˜q !Ñ$Ô$ˆÝ+¨C°!°Q°Ñ8Ô8ˆåˆt˜Q ˜F¨Q¨CÐ6PÐQÑQÔQÐQÐQÐQr   c                 óÊ  — d} t           j                             dddgdg| ¬¦  «        }t          j        d¦  «                             dd	d
¦  «        d	z                       t          j        ¦  «        }t          j        d¦  «                             dd
d¦  «        d	z                       t          j        ¦  «        }t          | ||f¦  «        }t          |||g|gd¬¦  «         d S )NrJ   r    r$   r%   rE   r&   é   rA   rK   r*   é<   r+   Ú!test_einsum_batch_matmul_bfloat16r-   ©r0   r1   r2   r   ÚarangeÚreshaper   r   r   r   r   rG   s        r   Ú#export_einsum_batch_matmul_bfloat16z*Einsum.export_einsum_batch_matmul_bfloat16[   sâ   € àˆÝŒ{×$Ò$Ø˜c 3˜Z°#°Àð %ñ 
ô 
ˆõ ŒY�r‰]Œ]×"Ò" 1 a¨Ñ+Ô+¨aÑ/×7Ò7½	Ô8JÑKÔKˆÝŒY�r‰]Œ]×"Ò" 1 a¨Ñ+Ô+¨aÑ/×7Ò7½	Ô8JÑKÔKˆÝ4°S¸1¸a¸&ÑAÔAˆåØ˜!˜Q˜¨!¨Ð3Vð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó*  — d} t           j                             ddgdg| ¬¦  «        }t          j        d¦  «                             dd¦  «                             t          j        ¦  «        }t          | |f¦  «        }t          ||g|gd	¬
¦  «         d S )Nr;   r    r$   r%   r&   é   r*   r+   Útest_einsum_sum_bfloat16r-   rR   r=   s       r   Úexport_einsum_sum_bfloat16z!Einsum.export_einsum_sum_bfloat16l   s•   € ð ˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒI�b‰MŒM×!Ò! ! QÑ'Ô'×.Ò.­yÔ/AÑBÔBˆÝ4°S¸1¸$Ñ?Ô?ˆåˆt˜Q˜C¨!¨Ð3MÐNÑNÔNÐNÐNÐNr   c                 ó*  — d} t           j                             ddgdg| ¬¦  «        }t          j        d¦  «                             dd¦  «                             t          j        ¦  «        }t          | |f¦  «        }t          ||g|gd	¬
¦  «         d S )Nr#   r    r$   r%   r&   rW   r*   r+   Útest_einsum_transpose_bfloat16r-   rR   r5   s       r   Ú export_einsum_transpose_bfloat16z'Einsum.export_einsum_transpose_bfloat16z   s“   € àˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒI�b‰MŒM×!Ò! ! QÑ'Ô'×.Ò.­yÔ/AÑBÔBˆÝ4°S¸1¸$Ñ?Ô?ˆåˆt˜Q˜C¨!¨Ð3SÐTÑTÔTÐTÐTÐTr   c                 óÈ   — d} t           j                             ddgdg| ¬¦  «        }t          j        d¦  «        }t          | |f¦  «        }t          ||g|gd¬¦  «         d S )	Nz->r    r$   r%   r&   g      @Útest_einsum_scalarr-   )r0   r1   r2   r   Úarrayr   r   r=   s       r   Úexport_einsum_scalarzEinsum.export_einsum_scalar†   sr   € àˆÝŒ{×$Ò$Ø˜c˜U¨S¨E¸Cð %ñ 
ô 
ˆõ ŒH�S‰MŒMˆÝ+¨C°!°Ñ6Ô6ˆåˆt˜Q˜C¨!¨Ð3GÐHÑHÔHÐHÐHÐHr   N)r
   r!   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr9   r?   rC   rH   rM   rU   rY   r\   r`   r   r   r   r    r       sT  € € € € € Øð	Lð 	Lð 	Lñ „\ð	Lð ð	Fð 	Fð 	Fñ „\ð	Fð ð	Qð 	Qð 	Qñ „\ð	Qð ð
Pð 
Pð 
Pñ „\ð
Pð ð
Rð 
Rð 
Rñ „\ð
Rð ð
ð 
ð 
ñ „\ð
ð  ðOð Oð Oñ „\ðOð ð	Uð 	Uð 	Uñ „\ð	Uð ð	Ið 	Ið 	Iñ „\ð	Ið 	Ið 	Ir   r    )r   r   r   r	   r
   r   )Ú
__future__r   r   Únumpyr   r0   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r   r   r    r   r   r   ú<module>ri      sÒ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð%ð %ð %ð %ðLð Lð Lð LðtIð tIð tIð tIð tIˆTñ tIô tIð tIð tIð tIr   