
    Opf?                     N    d Z ddlZddlZddlmZmZ d Zd Zd Z	d Z
d Zd	 ZdS )
zf
Tets a series of opt_einsum contraction paths to ensure the results are the same for different paths
    N)contractcontract_expressionc            
         t          j        t                    5  t          dddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddd           d d d            n# 1 swxY w Y   t	          j        d          } t          j        t                    5  t          ddd|            d d d            n# 1 swxY w Y   t          ddd          }t          j        t                    5 } |t          j                            d	d
                     d d d            n# 1 swxY w Y   dt          |j	                  v sJ t          j        t                    5 } |t          j                            d	d
          t          j                            d	d
          t          j                            d	d
                     d d d            n# 1 swxY w Y   dt          |j	                  v sJ t          j        t                    5 } |t          j                            d	d
d          t          j                            d
d                     d d d            n# 1 swxY w Y   dt          |j	                  v sJ t          j        t                    5 } |t          j                            d	d          t          j                            d
dd                     d d d            n# 1 swxY w Y   dt          |j	                  v sJ t          j        t                    5 } |t          j                            d	d
          t          j                            d
d          t          j                            d	dd                     d d d            n# 1 swxY w Y   dt          |j	                  v sJ t          j        t                    5 } |t          j                            d	d
          t          j                            d
d          d           d d d            n# 1 swxY w Y   dt          |j	                  v sJ d S )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/nettyfy-visnx/env/lib/python3.11/site-packages/opt_einsum/tests/test_edge_cases.pytest_contract_expression_checksr      s9   	z	"	" I IK%HHHHI I I I I I I I I I I I I I I 
z	"	" C CKBBBC C C C C C C C C C C C C C C (6

C	z	"	" B BKSAAAAB B B B B B B B B B B B B B B {FF;;D 
z	"	" #cRY^^Aq!!"""# # # # # # # # # # # # # # #1S^^CCCC 
z	"	" OcRY^^Aq!!29>>!Q#7#719M9MNNNO O O O O O O O O O O O O O O1S^^CCCC 
z	"	" <cRY^^Aq!$$binnQ&:&:;;;< < < < < < < < < < < < < < <AS^^SSSS	z	"	" <cRY^^Aq!!29>>!Q#:#:;;;< < < < < < < < < < < < < < <AS^^SSSS	z	"	" VcRY^^Aq!!29>>!Q#7#7RY^^AqRS=T=TUUUUV V V V V V V V V V V V V V VAS^^SSSS 
z	"	" DcRY^^Aq!!29>>!Q#7#7sCCCCD D D D D D D D D D D D D D DCs39~~UUUUUUs   :>>A==BB5CCC
*E  EE<A(G00G47G4,A
JJ	J>A
LLLA*OO
O
AQQ Qc                  >   t           j                            ddd          } t           j                            dd          }t           j                            dd          }t           j                            d          }t          d| ||d          }t          d| ||d	          }t          j        ||          sJ ||z  }t          d
| |||d          }t          d
| |||d	          }t          j        ||          sJ t          j        ||          sJ d S )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+q!Q???J+q!Q>>>J;z:.....!^F
#Q1a%
@
@
@C
#Q1a$
?
?
?C;sF#####;sF#######    c                  B   t           j                            dddd          } t           j                            dd          }t           j                            dd          }t           j                            dd          }t          d| ||d          }t          d| ||d	          }t          j        ||          sJ ||z  }t          d
| |||d          }t          d
| |||d	          }t          j        ||          sJ t          j        ||          sJ d S )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,1a%@@@J,1a$???J;z:.....!^F
&1aU
C
C
CC
&1aT
B
B
BC;sF#####;sF#######r.   c                     t           j                            ddd          } t           j                            ddd          }t           j                            dd          }t           j                            dd          }t          d| |||d          }t          d| |||d	          }t          j        ||          sJ d S )
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
&1aU
C
C
CC
&1aT
B
B
BC;sC       r.   c                      t          j        d                              ddd          } t          d| | d          }t          d| | d          }t          j        ||          sJ d S )	N@   r   r      zobk,ijk->iojFr	   T)r   arangereshaper   r"   )r$   r+   r,   s      r   test_broadcasting_contraction4r9   l   sk    
	"aA&&A
>1a%
8
8
8C
>1a$
7
7
7C;sC       r.   c                      t          dddd          } | j        d         d         dk    sJ | j        d         d         d	u sJ | j        d
         d         dk    sJ | j        d
         d         dk    sJ d S )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    HHD #A&,6666 #B'50000 #A&-7777 #B'6111111r.   )__doc__numpyr   r   
opt_einsumr   r   r   r-   r1   r3   r9   r?    r.   r   <module>rD      s          4 4 4 4 4 4 4 4)V )V )VX$ $ $($ $ $(
! 
! 
!! ! !2 2 2 2 2r.   