
    i#                     h   S r SSKrSSKrSSKJrJrJr  / SS/S\" S5      4S4PSS/S\" S5      4S4PSS	/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS	/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS	/S\" S5      4S4PSS/S\" S5      4S4PSS/S\" S5      4S4PSS/S\" S5      4S4PSS	/S\" S5      4S4PSS/S\" S5      4S4PSS/S\" S5      4S4PSS/S\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S
\" S5      4S4PSS/S\" S5      4S4PSS/S\" 5       4S4PSS
/S\" S
5      4S4PS S	/S
\" S5      4S!4PSS/S\" 5       4S!4PSS/S\" 5       4S!4Pr	\R                  R                  S"\	5      S# 5       r\R                  R                  S"\	5      S$ 5       rS% rg)&z7
Tests thte BLAS capability for the opt_einsum module.
    N)blascontracthelpers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,benchmarkc                 8    [         R                  " U 6 nX!:X  d   eg )N)r   can_blas)inp	benchmarkresults      Z/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/opt_einsum/tests/test_blas.pytest_can_blasr&   C   s    ]]C F    c                 >   USL a  g U u  p#nSR                  U5      S-   U-   n[        U5      S:w  a   e[        R                  " U5      u  pg[        R
                  " XVU5      n[        R                  " XbS   XrS   X45      n	[        R                  " X5      (       d   eg )NF,z->   r      )	joinlenr   build_viewsnpeinsumr   tensor_blasallclose)
r"   r#   tensor_strsoutputreduced_idx
einsum_str	view_left
view_righteinsum_resultblas_results
             r%   test_tensor_blasr;   I   s     E'*$K+&-6J ;1u#//
;IIIjZ@M""9!njVW.Z`nK;;}2222r'   c                     [         R                  R                  SS5      n [         R                  R                  SS5      n[         R                  R                  SS5      n[         R                  " S5      n[	        SXUS9  [         R
                  " U[         R                  " X5      5      (       d   e[	        SXX#S9  [         R
                  " U[         R                  " X5      R                  U5      5      (       d   eg )N   )r=   r=   z	ij,jk->ik)outzij,jk,kl->il)r/   randomrandemptyr   r2   dot)abcds       r%   test_blas_outrG   _   s    
		q!A
		q!A
		q!A
A[!A&;;q"&&,''''^Q1,;;q"&&,**1-....r'   )__doc__numpyr/   pytest
opt_einsumr   r   r   set
blas_testsmarkparametrizer&   r;   rG    r'   r%   <module>rQ      s;     . .6
Cj"c#h'6 enb#e*%u-6 TlD#c(#V,6 endCI&/6 TlD#c(#V,6 endCI&/6 TlD#c(#V,6 endCI&/6 TlD#c(#V,6 endCI&/6$ TlD#c(#V,%6& endCI&/'6( TlD#c(#V,)6* endCI&/+6, TlD#c(#V,-6. endCI&//60 TlD#c(#V,162 endCI&/368 endCI&/96: endCI&/;6< endCI&/=6> endCI&/?6@ endCI&/A6B endCI&/C6D endCI&/E6F endCI&/G6L endCI&/M6N endCI&/O6P endCI&/Q6R endCI&/S6T endCI&/U6V endCI&/W6X endCI&/Y6Z endCI&/[6` enb#e*%|4a6b Cj$/c6d dmS#d)$m4e6f dmT3s8$e,g6h clD#% %(i6j TlD#% %(k6
r *5 6
 *53 63*
/r'   