o
    soi
                     @  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    r   V/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/einsum.pyeinsum_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	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%   Zr   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_prod8   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_matmulE   s   z!Einsum.export_einsum_batch_matmulc                  C  sJ   d} t jjddgdg| d}td}t| |f}t||g|gdd d S )	Nz->r   r   r   r   g      @test_einsum_scalarr   )r   r    r!   r   arrayr   r   r*   r   r   r   export_einsum_scalarR   s   
zEinsum.export_einsum_scalarN)r	   r   )
__name__
__module____qualname__staticmethodr'   r,   r/   r3   r6   r9   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   
