
    i?                     L    S r SSKrSSKrSSKJrJr  S rS rS r	S r
S rS	 rg)
zf
Tets a series of opt_einsum contraction paths to ensure the results are the same for different paths
    N)contractcontract_expressionc            
      	   [         R                  " [        5         [        SSSSS9  S S S 5        [         R                  " [        5         [        SSSS5        S S S 5        [        R
                  " S5      n [         R                  " [        5         [        SSSU S9  S S S 5        [        SSS5      n[         R                  " [        5       nU" [        R                  R                  S	S
5      5        S S S 5        S[        WR                  5      ;   d   e[         R                  " [        5       nU" [        R                  R                  S	S
5      [        R                  R                  S	S
5      [        R                  R                  S	S
5      5        S S S 5        S[        UR                  5      ;   d   e[         R                  " [        5       nU" [        R                  R                  S	S
S5      [        R                  R                  S
S5      5        S S S 5        S[        UR                  5      ;   d   e[         R                  " [        5       nU" [        R                  R                  S	S5      [        R                  R                  S
SS5      5        S S S 5        S[        UR                  5      ;   d   e[         R                  " [        5       nU" [        R                  R                  S	S
5      [        R                  R                  S
S5      [        R                  R                  S	SS5      S9  S S S 5        S[        UR                  5      ;   d   e[         R                  " [        5       nU" [        R                  R                  S	S
5      [        R                  R                  S
S5      SS9  S S S 5        S[        UR                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GN.= f! , (       d  f       GN= f! , (       d  f       GN,= f! , (       d  f       GN= f! , (       d  f       GN+= f! , (       d  f       N= f)Nz	ab,bc->ac)      )r      Foptimize)*   r   )r   r   )outr   r   z$`ContractExpression` takes exactly 2r   z4Internal error while evaluating `ContractExpression`      F)orderz6only valid keyword arguments to a `ContractExpression`)
pytestraises
ValueErrorr   npemptyrandomrandstrvalue)r   exprerrs      `/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/opt_einsum/tests/test_edge_cases.pytest_contract_expression_checksr      s   	z	"K%H 
# 
z	"KB 
# ((6
C	z	"KSA 
# {FF;D 
z	"cRYY^^Aq!" 
#1S^CCC 
z	"cRYY^^Aq!299>>!Q#719MN 
#1S^CCC 
z	"cRYY^^Aq!$biinnQ&:; 
#AS^SSS	z	"cRYY^^Aq!299>>!Q#:; 
#AS^SSS	z	"cRYY^^Aq!299>>!Q#7RYY^^AqRS=TU 
#AS^SSS 
z	"cRYY^^Aq!299>>!Q#7sC 
#Cs399~UUUO 
#	" 
#	"
 
#	" 
#	"
 
#	"
 
#	" 
#	" 
#	"
 
#	"sp   O%
O7P	'P1A%P-AP?AQA$Q#<AQ5%
O47
P	
P
P*-
P<?
Q
Q #
Q25
Rc            	         [         R                  R                  SSS5      n [         R                  R                  SS5      n[         R                  R                  SS5      n[         R                  R                  S5      n[        SXUSS9n[        SXUS	S9n[         R                  " XE5      (       d   eXC-  n[        S
XX#SS9n[        S
XX#S	S9n[         R                  " Xv5      (       d   e[         R                  " X5      (       d   eg )N   r   r   r   
   z	ijk,kl,jlFr	   Tzijk,kl,jl,i->ir   r   r   r   allclose	abcd
ein_scalar
opt_scalarresulteinopts	            r   test_broadcasting_contractionr-   7   s    
		q!QA
		q!A
		q!A
		rA+qQ?J+qQ>J;;z....^F
#Q1%
@C
#Q1$
?C;;s####;;s####    c            	         [         R                  R                  SSSS5      n [         R                  R                  SS5      n[         R                  R                  SS5      n[         R                  R                  SS5      n[        SXUSS9n[        SXUS	S9n[         R                  " XE5      (       d   eXC-  n[        S
XX#SS9n[        S
XX#S	S9n[         R                  " Xv5      (       d   e[         R                  " X5      (       d   eg )Nr   r   r   r      z
abjk,kl,jlFr	   Tzabjk,kl,jl,ab->abr!   r#   s	            r   test_broadcasting_contraction2r1   K   s    
		q!Q"A
		q!A
		q!A
		q!A,a%@J,a$?J;;z....^F
&aU
CC
&aT
BC;;s####;;s####r.   c            	      r   [         R                  R                  SSS5      n [         R                  R                  SSS5      n[         R                  R                  SS5      n[         R                  R                  SS5      n[        SXX#SS9n[        SXX#S	S9n[         R                  " XE5      (       d   eg )
Nr   r   r   r   r0   zajk,kbl,jl,ab->abFr	   Tr!   )r$   r%   r&   r'   r+   r,   s         r   test_broadcasting_contraction3r3   _   s    
		q!QA
		q!QA
		q!A
		q!A
&aU
CC
&aT
BC;;s    r.   c                      [         R                  " S5      R                  SSS5      n [        SX SS9n[        SX SS9n[         R                  " X5      (       d   eg )	N@   r   r      zobk,ijk->iojFr	   T)r   arangereshaper   r"   )r$   r+   r,   s      r   test_broadcasting_contraction4r9   l   sO    
		"aA&A
>1%
8C
>1$
7C;;s    r.   c                      [        SSSS5      n U R                  S   S   S:X  d   eU R                  S   S   S	L d   eU R                  S
   S   S:X  d   eU R                  S
   S   S:X  d   eg )Nzab,bc,bd->acd)r   r   )r   r   )r      r   r   z
bc,ab->bcaFr   zbca,bd->acdGEMM)r   contraction_list)r   s    r   ,test_can_blas_on_healed_broadcast_dimensionsr?   u   s    HD  #A&,666  #B'5000  #A&-777  #B'6111r.   )__doc__numpyr   r   
opt_einsumr   r   r   r-   r1   r3   r9   r?    r.   r   <module>rD      s5      4)VX$($(
!!2r.   