o
    e#                     @   s  d Z ddlZddlZddlmZmZmZ g ddgdedfdfddgdedfdfdd	gd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfdd	gd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfdd	gdedfdfddgdedfdfddgdedfdfddgdedfdfdd	gdedfdfddgdedfdfddgdedfdfddgdedfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgd
edfdfddgdedfdfddgde fdfdd
gded
fdfd d	gd
edfd!fddgde fd!fddgde fd!fZ	ej
d"e	d#d$ Zej
d"e	d%d& Zd'd( ZdS ))z7
Tests thte BLAS capability for the opt_einsum module.
    N)blascontracthelpersk DOTZijkZijZjkikjZGEMMZijlZjlkjlZkjZkjlZjiZjliZkiZiljZTDOTZljkZkljZljiZljZikjz
DOT/EINSUMizOUTER/EINSUMzGEMV/EINSUMZijjFzinp,benchmarkc                 C   s   t j|  }||ksJ d S )N)r   Zcan_blas)inp	benchmarkresult r   JD:\Projects\ConvertPro\env\Lib\site-packages\opt_einsum/tests/test_blas.pytest_can_blasC   s   
r   c           
      C   s   |du rd S | \}}}d |d | }t|dkrJ t|\}}t|||}t||d ||d ||}	t||	s@J d S )NF,z->   r      )	joinlenr   Zbuild_viewsnpZeinsumr   Ztensor_blasallclose)
r   r   Ztensor_strsoutputZreduced_idxZ
einsum_strZ	view_leftZ
view_rightZeinsum_resultZblas_resultr   r   r   test_tensor_blasI   s   
r   c                  C   s   t jdd} t jdd}t jdd}t d}td| ||d t |t | |s.J td| |||d t |t | ||sFJ d S )N   )r   r   z	ij,jk->ik)outzij,jk,kl->il)r   randomZrandemptyr   r   dot)abcdr   r   r   test_blas_out_   s   
"r$   )__doc__numpyr   ZpytestZ
opt_einsumr   r   r   setZ
blas_testsmarkZparametrizer   r   r$   r   r   r   r   <module>   s    	
 !"#&'()*+,-0123459

