o
    wi%	                     @  sR   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 deZ
dS )    )annotationsN)Base)expectEqnstrOperandstuple[np.ndarray, ...]return
np.ndarrayc                 C  s   t j| g|R  }|S )N)npeinsum)r   r   Z r   _/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/einsum.pyeinsum_reference_implementation   s   r   c                   @  sR   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dS )Einsumr	   Nonec                  C  N   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outputsequation      test_einsum_transposer   r   nameonnxhelper	make_noder   randomrandnr   r   )r   nodeXYr   r   r   export_einsum_transpose      zEinsum.export_einsum_transposec                  C  r   )
Nzij->ir   r   r   r   r   r   test_einsum_sumr   r   r   r%   r&   r   r   r   r   export_einsum_sum!   r)   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      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-   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   r0   r   r-      r   r   test_einsum_batch_matmulr   r   r2   r   r   r   export_einsum_batch_matmulF   s   z!Einsum.export_einsum_batch_matmulN)r	   r   )	__name__
__module____qualname__staticmethodr(   r,   r/   r3   r6   r   r   r   r   r      s    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   
