§
    1�ÅjÏ  ã                  ój   — d dl mZ d dlZd dlZd dlmZ d dlmZ 	 	 	 	 	 ddd„Z	 G d„ de¦  «        Z
dS )é    )ÚannotationsN)ÚBase)Úexpectç      ð?ÚAú
np.ndarrayÚBÚCúnp.ndarray | NoneÚalphaÚfloatÚbetaÚtransAÚintÚtransBÚreturnc                óÞ   — |dk    r| n| j         } |dk    r|n|j         }|�|nt          j        d¦  «        }|t          j        | |¦  «        z  ||z  z   }|                     | j        ¦  «        S )Nr   )ÚTÚnpÚarrayÚdotÚastypeÚdtype)r   r	   r
   r   r   r   r   ÚYs           úQC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/gemm.pyÚgemm_reference_implementationr      sp   € ð �qŠ[ˆ[ˆˆ˜aœc€AØ�qŠ[ˆ[ˆˆ˜aœc€AØˆ]ˆˆ¥¤¨¡¤€Aà•”�q˜!‘”Ñ˜t a™xÑ'€Aà�8Š8�A”GÑÔÐó    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edd„¦   «         Zedd„¦   «         ZdS )ÚGemmr   ÚNonec                 óþ  — t           j                             dg d¢dg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j        ddg¦  «                             t          j        ¦  «        }t          |||¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr   ©ÚaÚbÚcÚy©ÚinputsÚoutputsé   é   é   é   Útest_gemm_default_zero_bias©r(   r)   Úname©ÚonnxÚhelperÚ	make_noder   ÚrandomÚranfr   Úfloat32Úzerosr   r   ©Únoder#   r$   r%   r&   s        r   Úexport_default_zero_biaszGemm.export_default_zero_bias    sÌ   € åŒ{×$Ò$ V°O°O°OÈcÈUÐ$ÑSÔSˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒH�a˜�VÑÔ×#Ò#¥B¤JÑ/Ô/ˆÝ)¨!¨Q°Ñ2Ô2ˆÝˆt˜Q  1˜I°¨sÐ9VÐWÑWÔWÐWÐWÐWr   c                 ó”  — t           j                             dddgdg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          ||¦  «        }t          | ||g|gd	¬
¦  «         d S )Nr   r#   r$   r&   r'   é   é
   r*   Útest_gemm_default_no_biasr/   ©
r2   r3   r4   r   r5   r6   r   r7   r   r   )r:   r#   r$   r&   s       r   Úexport_default_no_biaszGemm.export_default_no_bias)   s¥   € åŒ{×$Ò$ V°S¸#°JÈÈÐ$ÑNÔNˆÝŒI�NŠN˜A˜r˜7Ñ#Ô#×*Ò*­2¬:Ñ6Ô6ˆÝŒI�NŠN˜B ˜7Ñ#Ô#×*Ò*­2¬:Ñ6Ô6ˆÝ)¨!¨QÑ/Ô/ˆÝˆt˜Q ˜F¨Q¨CÐ6QÐRÑRÔRÐRÐRÐRr   c                 óú  — t           j                             dg d¢dg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j        d¦  «                             t          j        ¦  «        }t          |||¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr   r"   r&   r'   r=   r*   r,   g…ëQ¸	@Útest_gemm_default_scalar_biasr/   )r2   r3   r4   r   r5   r6   r   r7   r   r   r   r9   s        r   Úexport_default_scalar_biaszGemm.export_default_scalar_bias1   sÓ   € åŒ{×$Ò$ V°O°O°OÈcÈUÐ$ÑSÔSˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒH�T‰NŒN×!Ò!¥"¤*Ñ-Ô-ˆÝ)¨!¨Q°Ñ2Ô2ˆÝØ˜!˜Q ˜¨Q¨CÐ6Uð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — t           j                             dg d¢dg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             dg¦  «                             t          j        ¦  «        }t          |||¦  «        }t          | |||g|gd¬	¦  «         d S )
Nr   r"   r&   r'   r*   é   r-   Ú)test_gemm_default_single_elem_vector_biasr/   r@   r9   s        r   Ú&export_default_single_elem_vector_biasz+Gemm.export_default_single_elem_vector_bias<   sÝ   € åŒ{×$Ò$ V°O°O°OÈcÈUÐ$ÑSÔSˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜3ÑÔ×&Ò&¥r¤zÑ2Ô2ˆÝ)¨!¨Q°Ñ2Ô2ˆÝØØ�q˜!�9Ø�CØ<ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — t           j                             dg d¢dg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          |||¦  «        }t          | |||g|gd	¬
¦  «         d S )Nr   r"   r&   r'   r=   rF   r,   r-   Útest_gemm_default_vector_biasr/   r@   r9   s        r   Úexport_default_vector_biaszGemm.export_default_vector_biasJ   óÝ   € åŒ{×$Ò$ V°O°O°OÈcÈUÐ$ÑSÔSˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ)¨!¨Q°Ñ2Ô2ˆÝØ˜!˜Q ˜¨Q¨CÐ6Uð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — t           j                             dg d¢dg¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          |||¦  «        }t          | |||g|gd¬	¦  «         d S )
Nr   r"   r&   r'   r*   é   r,   Útest_gemm_default_matrix_biasr/   r@   r9   s        r   Úexport_default_matrix_biaszGemm.export_default_matrix_biasU   rL   r   c                 ó  — t           j                             dg d¢dgd¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j        ddg¦  «                             t          j        ¦  «        }t          |||d¬	¦  «        }t          | |||g|gd
¬¦  «         d S )Nr   r"   r&   r-   )r(   r)   r   rN   r*   r,   )r   Útest_gemm_transposeAr/   r1   r9   s        r   Úexport_transposeAzGemm.export_transposeA`   óÜ   € åŒ{×$Ò$Ø˜?˜?˜?°S°EÀ!ð %ñ 
ô 
ˆõ ŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒH�a˜�VÑÔ×#Ò#¥B¤JÑ/Ô/ˆÝ)¨!¨Q°¸!Ð<Ñ<Ô<ˆÝˆt˜Q  1˜I°¨sÐ9OÐPÑPÔPÐPÐPÐPr   c                 ó  — t           j                             dg d¢dgd¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j        ddg¦  «                             t          j        ¦  «        }t          |||d¬	¦  «        }t          | |||g|gd
¬¦  «         d S )Nr   r"   r&   r-   )r(   r)   r   r*   rN   r,   )r   Útest_gemm_transposeBr/   r1   r9   s        r   Úexport_transposeBzGemm.export_transposeBk   rT   r   c                 ó  — t           j                             dg d¢dgd¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j        d	dg¦  «                             t          j        ¦  «        }t          |||d¬
¦  «        }t          | |||g|gd¬¦  «         d S )Nr   r"   r&   ç      à?)r(   r)   r   r*   r+   r,   r-   )r   Útest_gemm_alphar/   r1   r9   s        r   Úexport_alphazGemm.export_alphav   sÜ   € åŒ{×$Ò$Ø˜?˜?˜?°S°EÀð %ñ 
ô 
ˆõ ŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒH�a˜�VÑÔ×#Ò#¥B¤JÑ/Ô/ˆÝ)¨!¨Q°¸Ð=Ñ=Ô=ˆÝˆt˜Q  1˜I°¨sÐ9JÐKÑKÔKÐKÐKÐKr   c                 ó  — t           j                             dg d¢dgd¬¦  «        } t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             ddg¦  «                             t          j        ¦  «        }t          j                             d	dg¦  «                             t          j        ¦  «        }t          |||d¬
¦  «        }t          | |||g|gd¬¦  «         d S )Nr   r"   r&   rY   )r(   r)   r   r=   rF   r,   r-   )r   Útest_gemm_betar/   r@   r9   s        r   Úexport_betazGemm.export_beta�   sà   € åŒ{×$Ò$Ø˜?˜?˜?°S°EÀð %ñ 
ô 
ˆõ ŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ)¨!¨Q°¸Ð<Ñ<Ô<ˆÝˆt˜Q  1˜I°¨sÐ9IÐJÑJÔJÐJÐJÐJr   c            	     ó&  — t           j                             dg d¢dgdddd¬¦  «        } t          j                             dd	g¦  «                             t          j        ¦  «        }t          j                             d
dg¦  «                             t          j        ¦  «        }t          j                             dd
g¦  «                             t          j        ¦  «        }t          |||dddd¬¦  «        }t          | |||g|gd¬¦  «         d S )Nr   r"   r&   g      Ð?gffffffÖ?r-   )r(   r)   r   r   r   r   r,   r*   r+   )r   r   r   r   Útest_gemm_all_attributesr/   r@   r9   s        r   Úexport_all_attributeszGemm.export_all_attributesŒ   sû   € åŒ{×$Ò$ØØ"�?�?Ø�EØØØØð %ñ 
ô 
ˆõ ŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"×)Ò)­"¬*Ñ5Ô5ˆÝ)Øˆq�!˜A a¨t¸$ð
ñ 
ô 
ˆõ 	ˆt˜Q  1˜I°¨sÐ9SÐTÑTÔTÐTÐTÐTr   N)r   r    )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr;   rA   rD   rH   rK   rP   rS   rW   r[   r^   ra   © r   r   r   r      s�  € € € € € ØðXð Xð Xñ „\ðXð ðSð Sð Sñ „\ðSð ð
ð 
ð 
ñ „\ð
ð ð
ð 
ð 
ñ „\ð
ð ð
ð 
ð 
ñ „\ð
ð ð
ð 
ð 
ñ „\ð
ð ðQð Qð Qñ „\ðQð ðQð Qð Qñ „\ðQð ðLð Lð Lñ „\ðLð ðKð Kð Kñ „\ðKð ðUð Uð Uñ „\ðUð Uð Ur   r   )Nr   r   r   r   )r   r   r	   r   r
   r   r   r   r   r   r   r   r   r   r   r   )Ú
__future__r   Únumpyr   r2   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r   r   rf   r   r   ú<module>rk      sÄ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð  ØØØØðð ð ð ð ð$~Uð ~Uð ~Uð ~Uð ~Uˆ4ñ ~Uô ~Uð ~Uð ~Uð ~Ur   