U
    q±Ëh¤  ã                   @  s<   d dl mZ d dlZd dlmZ dd„ ZG dd„ deƒZdS )é    )ÚannotationsN)ÚOpRunBinaryNumc              
   C  s|   z8t | jƒdkr,t |jƒdkr,t | |¡W S t | |¡W S  tk
rv } z td| j›d|j›dƒ|‚W 5 d}~X Y nX dS )zUImplements a matmul product. See :func:`np.matmul`.
    Handles sparse matrices.
    é   zUnable to multiply shapes z, Ú.N)ÚlenÚshapeÚnpÚdotÚmatmulÚ
ValueError)ÚaÚbÚe© r   ú@/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_matmul.pyÚnumpy_matmul   s    r   c                   @  s   e Zd Zdd„ ZdS )ÚMatMulc                 C  s   t ||ƒfS )N)r   )Úselfr   r   r   r   r   Ú_run   s    zMatMul._runN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   )Ú
__future__r   Znumpyr   Zonnx.reference.ops._opr   r   r   r   r   r   r   Ú<module>   s   