B
    `#              *   @   s~  d Z ddlZddlZddlmZmZmZ 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g(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jkZikjZGEMMZijlZjlkZ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td S )N)r   Zcan_blasAssertionError)inp	benchmarkresult r   I/home/dcms/DCMS/lib/python3.7/site-packages/opt_einsum/tests/test_blas.pytest_can_blasC   s    
r   c       
      C   s   |dkrd S | \}}}d |d | }t|dkr<ds<tt|\}}t|||}t||d ||d ||}	t	||	std S )NF,z->   r      )
joinlenr
   r   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\ttd| |||d t |t | ||std S )N   )r   r   z	ij,jk->ik)outzij,jk,kl->il)r   randomZrandemptyr   r   dotr
   )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\   