
    Opf#                     b   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#             Zej
                            d"e	          d$             Zd% ZdS )&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                 2    t          j        |  }||k    sJ d S )N)r   can_blas)inp	benchmarkresults      Z/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/opt_einsum/tests/test_blas.pytest_can_blasr&   C   s%    ]C FY    c                 P   |du rd S | \  }}}d                     |          dz   |z   }t          |          dk    rJ t          j        |          \  }}t	          j        |||          }t          j        ||d         ||d         ||          }	t	          j        ||	          sJ d S )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#/
;;IzIj)Z@@M"9k!nj+VW.Z`bmnnK;}k2222222r'   c                  
   t           j                            dd          } t           j                            dd          }t           j                            dd          }t          j        d          }t	          d| ||           t          j        |t          j        | |                    sJ t	          d| |||           t          j        |t          j        | |                              |                    sJ d S )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[!QA&&&&;q"&A,,'''''^Q1!,,,,;q"&A,,**1--.......r'   )__doc__numpyr/   pytest
opt_einsumr   r   r   set
blas_testsmarkparametrizer&   r;   rG    r'   r%   <module>rQ      s-         . . . . . . . . . .6
Cj"cc#hh'6 enb##e**%u-6 TlD##c((#V,6 endCCII&/6 TlD##c((#V,6 endCCII&/6 TlD##c((#V,6 endCCII&/6 TlD##c((#V,6 endCCII&/6$ TlD##c((#V,%6& endCCII&/'6( TlD##c((#V,)6* endCCII&/+6, TlD##c((#V,-6. endCCII&//60 TlD##c((#V,162 endCCII&/368 endCCII&/96: endCCII&/;6< endCCII&/=6> endCCII&/?6@ endCCII&/A6B endCCII&/C6D endCCII&/E6F endCCII&/G6L endCCII&/M6N endCCII&/O6P endCCII&/Q6R endCCII&/S6T endCCII&/U6V endCCII&/W6X endCCII&/Y6Z endCCII&/[6` enb##e**%|4a6b Cj$/c6d dmS##d))$m4e6f dmT33s88$e,g6h clD##%% %(i6j TlD##%% %(k6
r *55  65
 *553 3 653*
/ 
/ 
/ 
/ 
/r'   