o
    wÖi2  ã                   @  s^   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d„Z	G dd„ deƒZ
dS )é    )ÚannotationsN)ÚBase)Úexpectç      ð?ÚAú
np.ndarrayÚBÚCúnp.ndarray | NoneÚalphaÚfloatÚbetaÚtransAÚintÚtransBÚreturnc                 C  s^   |dkr| n| j } |dkr|n|j }|d ur|nt d¡}|t | |¡ ||  }| | j¡S )Nr   )ÚTÚnpÚarrayÚdotÚastypeÚdtype)r   r   r	   r   r   r   r   ÚY© r   ú]/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/gemm.pyÚgemm_reference_implementation   s
   	r   c                   @  s¦   e Zd Zeddd„ƒZeddd„ƒZeddd„ƒZedd	d
„ƒZeddd„ƒZeddd„ƒZ	eddd„ƒZ
eddd„ƒZeddd„ƒZeddd„ƒZeddd„ƒZdS )ÚGemmr   ÚNonec                  C  s†   t jjdg d¢dgd} tj ddg¡ tj¡}tj ddg¡ tj¡}t ddg¡ tj¡}t	|||ƒ}t
| |||g|gd	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"   r   r   r   Úexport_default_zero_bias    s   zGemm.export_default_zero_biasc                  C  sl   t jjdddgdgd} tj ddg¡ tj¡}tj ddg¡ tj¡}t||ƒ}t	| ||g|gd	d
 d S )Nr   r   r    r"   r#   é   é
   r&   Útest_gemm_default_no_biasr+   ©
r.   r/   r0   r   r1   r2   r   r3   r   r   )r6   r   r    r"   r   r   r   Úexport_default_no_bias)   s
   
zGemm.export_default_no_biasc                  C  s‚   t jjdg d¢dgd} tj ddg¡ tj¡}tj ddg¡ tj¡}t d¡ tj¡}t	|||ƒ}t
| |||g|gd	d
 d S )Nr   r   r"   r#   r8   r&   r(   g…ëQ¸	@Útest_gemm_default_scalar_biasr+   )r.   r/   r0   r   r1   r2   r   r3   r   r   r   r5   r   r   r   Úexport_default_scalar_bias1   s   
ÿzGemm.export_default_scalar_biasc                  C  s†   t jjdg d¢dgd} 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	 d S )
Nr   r   r"   r#   r&   é   r)   Ú)test_gemm_default_single_elem_vector_biasr+   r;   r5   r   r   r   Ú&export_default_single_elem_vector_bias<   s   
üz+Gemm.export_default_single_elem_vector_biasc                  C  sˆ   t j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|||ƒ}t	| |||g|gd	d
 d S )Nr   r   r"   r#   r8   r?   r(   r)   Útest_gemm_default_vector_biasr+   r;   r5   r   r   r   Úexport_default_vector_biasJ   ó   
ÿzGemm.export_default_vector_biasc                  C  sˆ   t j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|||ƒ}t	| |||g|gdd	 d S )
Nr   r   r"   r#   r&   é   r(   Útest_gemm_default_matrix_biasr+   r;   r5   r   r   r   Úexport_default_matrix_biasU   rD   zGemm.export_default_matrix_biasc                  C  sŒ   t jjdg d¢dgdd} tj ddg¡ tj¡}tj ddg¡ tj¡}t ddg¡ tj¡}t	|||dd	}t
| |||g|gd
d d S )Nr   r   r"   r)   )r$   r%   r   rE   r&   r(   )r   Útest_gemm_transposeAr+   r-   r5   r   r   r   Úexport_transposeA`   ó   ÿzGemm.export_transposeAc                  C  sŒ   t jjdg d¢dgdd} tj ddg¡ tj¡}tj ddg¡ tj¡}t ddg¡ tj¡}t	|||dd	}t
| |||g|gd
d d S )Nr   r   r"   r)   )r$   r%   r   r&   rE   r(   )r   Útest_gemm_transposeBr+   r-   r5   r   r   r   Úexport_transposeBk   rJ   zGemm.export_transposeBc                  C  sŒ   t jjdg d¢dgdd} tj ddg¡ tj¡}tj ddg¡ tj¡}t d	dg¡ tj¡}t	|||dd
}t
| |||g|gdd d S )Nr   r   r"   ç      à?)r$   r%   r   r&   r'   r(   r)   )r   Útest_gemm_alphar+   r-   r5   r   r   r   Úexport_alphav   rJ   zGemm.export_alphac                  C  sŽ   t jjdg d¢dg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
}t	| |||g|gdd d S )Nr   r   r"   rM   )r$   r%   r   r8   r?   r(   r)   )r   Útest_gemm_betar+   r;   r5   r   r   r   Úexport_beta   s   ÿzGemm.export_betac               	   C  sš   t jjdg d¢dgd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d}t	| |||g|gd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;   r5   r   r   r   Úexport_all_attributesŒ   s    ù	ÿzGemm.export_all_attributesN)r   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr7   r<   r>   rA   rC   rG   rI   rL   rO   rQ   rS   r   r   r   r   r      s.    






r   )Nr   r   r   r   )r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   )Ú
__future__r   Únumpyr   r.   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r   r   r   r   r   r   Ú<module>   s   ù