U
    qh                     @  sd   d dl mZ d dlZd dlmZ dd Zdd Zdd	 Zd
d Z	G dd deZ
G dd deZdS )    )annotationsN)OpRunc                 C  s0   t | || }|d k	r,|dkr,||| 7 }|S Nr   )npdotabcalphabetao r   >/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_gemm.py_gemm00   s    r   c                 C  s2   t | |j| }|d k	r.|dkr.||| 7 }|S r   r   r   Tr   r   r   r   _gemm01   s    r   c                 C  s2   t | j|| }|d k	r.|dkr.||| 7 }|S r   r   r   r   r   r   _gemm10   s    r   c                 C  s4   t | j|j| }|d k	r0|dkr0||| 7 }|S r   r   r   r   r   r   _gemm11    s    r   c                   @  s   e Zd ZdddZdS )Gemm_6Nc	                 C  s   |dkr||r|rt nt}	n|r"tnt}	|	||d ||}
|d krL|
|jfS |j|
jkrrtd|j d|
j d|
| fS |r|rt nt}	n|rtnt}	|	||||||jfS )Nr   zUnable to add shape z
 to shape z without broadcast.)r   r   r   r   astypedtypeshape
ValueError)selfr   r	   r
   r   r   transAtransB	broadcast_methresr   r   r   _run(   s     
zGemm_6._run)NNNNNN__name__
__module____qualname__r!   r   r   r   r   r   '   s         r   c                   @  s   e Zd ZdddZdS )Gemm_7Nc           	      C  s8   |r|rt nt}n|rtnt}|||||||jfS )N)r   r   r   r   r   r   )	r   r   r	   r
   r   r   r   r   r   r   r   r   r!   H   s    zGemm_7._run)NNNNNr"   r   r   r   r   r&   G   s   r&   )
__future__r   Znumpyr   Zonnx.reference.op_runr   r   r   r   r   r   r&   r   r   r   r   <module>   s    