U
    rh%	                     @  sZ   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d	d
Z	G dd deZ
dS )    )annotationsN)Base)expectstrztuple[np.ndarray, ...]z
np.ndarray)EqnOperandsreturnc                 C  s   t j| f| }|S )N)npZeinsum)r   r   Z r   F/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/einsum.pyeinsum_reference_implementation   s    r   c                   @  sf   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZdS )EinsumNone)r   c                  C  sN   d} t jjddgdg| d}tjdd}t| |f}t||g|gdd	 d S )
Nzij->jir   xyinputsoutputsZequation      Ztest_einsum_transposer   r   nameonnxhelperZ	make_noder	   randomZrandnr   r   )r   nodeXYr   r   r   export_einsum_transpose   s       zEinsum.export_einsum_transposec                  C  sN   d} t jjddgdg| d}tjdd}t| |f}t||g|gdd	 d S )
Nzij->ir   r   r   r   r   r   Ztest_einsum_sumr   r   r   r   r   r
   r   r   r   export_einsum_sum!   s       zEinsum.export_einsum_sumc                  C  sP   d} t jjddgdg| d}tjddd}t| |f}t||g|gdd	 d S )
Nz...ii ->...ir   r   r   r   r      Ztest_einsum_batch_diagonalr   r   r!   r   r   r   export_einsum_batch_diagonal-   s       z#Einsum.export_einsum_batch_diagonalc                  C  s^   d} t jjdddgdg| d}tjd}tjd}t| ||f}t|||g|gdd	 d S )
Nzi,ir   r   r   zr   r#   Ztest_einsum_inner_prodr   r   r   r   r   r   r
   r   r   r   export_einsum_inner_prod9   s       zEinsum.export_einsum_inner_prodc                  C  sf   d} t jjdddgdg| d}tjddd	}tjdd	d
}t| ||f}t|||g|gdd d S )Nzbij, bjk -> bikr   r   r   r%   r   r#      r   r   Ztest_einsum_batch_matmulr   r   r&   r   r   r   export_einsum_batch_matmulF   s       z!Einsum.export_einsum_batch_matmulN)	__name__
__module____qualname__staticmethodr    r"   r$   r'   r)   r   r   r   r   r      s   r   )
__future__r   Znumpyr	   r   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   