
    ,Vh                     4   d Z ddlmZ ddlZddl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                  j                  d#e      d$ed%ed&dfd'       Zd)d(Zy)*z6
Tests the BLAS capability for the opt_einsum module.
    )AnyN)blascontractk DOTijkijjkikjGEMMijljlkjlkjkjljijlikiiljTDOTljkkljljiljikjz
DOT/EINSUMizOUTER/EINSUMzGEMV/EINSUMijjFzinp,benchmarkinp	benchmarkreturnc                 6    t        j                  |  }||k(  sJ y )N)r   can_blas)r    r!   results      J/home/dcms/DCMS/lib/python3.12/site-packages/opt_einsum/tests/test_blas.pytest_can_blasr'   >   s    ]]C FY    c                  L   t        j                  d      } | j                  j                  dd      }| j                  j                  dd      }| j                  j                  dd      }| j	                  d      }t        d|||       | j                  j                  || j                  ||             | j                  || j                  ||            sJ t        d||||       | j                  j                  || j                  ||      j                  |             y )Nnumpy   )r+   r+   z	ij,jk->ik)outzij,jk,kl->il)
pytestimportorskiprandomrandemptyr   testingassert_allclosedotallclose)npabcds        r&   test_blas_outr;   D   s    			W	%B
		q!A
		q!A
		q!A
A[!QA&JJq"&&A,/;;q"&&A,'''^Q1!,JJq"&&A,"2"21"56r(   )r"   N)__doc__typingr   r-   
opt_einsumr   r   set
blas_testsmarkparametrizeboolr'   r;    r(   r&   <module>rE      s      %0
Cj"c#h'0 enb#e*%u-0 TlD#c(#V,0 endCI&/0 TlD#c(#V,0 endCI&/0 TlD#c(#V,0 endCI&/0 TlD#c(#V,0 endCI&/0 TlD#c(#V,0  endCI&/!0" TlD#c(#V,#0$ endCI&/%0& TlD#c(#V,'0( endCI&/)0* TlD#c(#V,+0, endCI&/-00 endCI&/102 endCI&/304 endCI&/506 endCI&/708 endCI&/90: endCI&/;0< endCI&/=0> endCI&/?0B endCI&/C0D endCI&/E0F endCI&/G0H endCI&/I0J endCI&/K0L endCI&/M0N endCI&/O0P endCI&/Q0T enb#e*%|4U0V Cj$/W0X dmS#d)$m4Y0Z dmT3s8$e,[0\ clD#% %(]0^ TlD#% %(_0
f *5s t   6
7r(   