
    Qi                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )symbolsSPowFunction)exp)raises)IdxIndexedBase)IndexConformanceException)get_contraction_structureget_indicesc                  T   t          d          \  } }t          |           t                      i fk    sJ t          | |z            t                      i fk    sJ t          | |z             t                      i fk    sJ t          | |z            t                      i fk    sJ d S )Nzx y)r   r   set)xys     }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/tensor/tests/test_index_methods.pytest_trivial_indicesr   
   s    5>>DAqq>>ceeR[((((qsr{****q1u#%%,,,,q!t++++++    c                      t          d          } t          d          t          d          }}t          | ||f                   ||hi fk    sJ t          | ||f                   ||hi fk    sJ d S )Nr   ijr
   r	   r   )r   r   r   s      r   test_get_indices_Indexedr      s|    CAs88SXXqAqAwQFB<////qAwQFB<//////r   c                  N   t          d          } t          d          t          d          }}t           | |          |z            ||hi fk    sJ t           | ||                    ||hi fk    sJ t           | |          |z            t                      i fk    sJ d S )Nfr   r   )r   r	   r   r   )r   r   r   s      r   test_get_indices_Idxr      s    As88SXXqAqqttAvAq62,....qqAwwQFB<////qqttAv355"+------r   c                     t          d          } t          d          }t          d          t          d          }}t          | |         ||         z            ||hi fk    sJ t          | |         ||         z            ||hi fk    sJ d S Nr   r   r   r   r   r   r   r   r   s       r   test_get_indices_mulr    !   s    CACAs88SXXqAqtAaDy!!q!fb\1111qtAaDy!!q!fb\111111r   c                       t          d          t          d          t          d          t          d          c t          t           fd           d S )Nr   r   r   r   c                  @    t                             z             S )N)r   r   r   r   r   s   r   <lambda>z-test_get_indices_exceptions.<locals>.<lambda>-   s    k!A$1+.F.F r   )r
   r	   r   r   r#   s   @@@@r   test_get_indices_exceptionsr%   )   sa    CACAs88SXXDAq
$&F&F&F&F&F&F&FGGGGGr   c                  "   t          d          } t          d          }t          d          t          d          }}t          | |         |||f         z             |hi fk    sJ t          | |         |||f         z             |hi fk    sJ d S r   r   r   s       r   test_scalar_broadcastr'   0   s    CACAs88SXXqAqta1g~&&A3)3333qta1g~&&A3)333333r   c                     t          d          } t          d          }t          d          }t          d          t          d          t          d          }}}t          | |         d||         z  z             |hi fk    sJ t          ||         d|||f         z  | |         z  z             |hi fk    sJ t          ||         d| |         |||f         | |         z  z   z  z             |hi fk    sJ t          ||         | |         |||f         dz   z  z             |hi fk    sJ t          ||         | |         | |         z  ||         |||f         | |         z  z   z  z             |hi fk    sJ d S )	Nr   r   Ar   r   k      r   r   r   r)   r   r   r*   s         r   test_get_indices_addr.   8   s   CACACA#hhC#c((!qAqta!f}%%1#r2222qta!Q$i!n,--1#r::::qta1!Q$!!45566A3)CCCCqtadAadGaK0011qc2Y>>>>	!qtAaDy!A$1a41-..0 056C9= = = = = =r   c            	         t          d          } t          d          }t          d          }t          d          t          d          t          d          }}}t          t          | |         ||                             ||hi fk    sJ t          t          | ||f         |||f                             |||hi fk    sJ t          t          |||f         ||         |||f         | |         z  z                       ||hi fk    sJ t          t          d| |                             t          t	          | |                             k    sJ t          t          | |         d                    |hi fk    sJ d S )Nr   r   r)   r   r   r*   r+   )r
   r	   r   r   r   r-   s         r   test_get_indices_Powr0   E   sl   CACACA#hhC#c((!qAs1Q41''QFB<7777s1QT7AadG,,--1a)R@@@@s1QT7AaD1QT71Q4<$78899q!fb\IIIIs1ad||$$C!II(>(>>>>> s1Q4||$$!b	111111r   c                     t          d          } t          d          }t          d          t          d          }}t          | |         ||         z            d | |         ||         z  hik    sJ t          | |         ||         z             d | |         ||         hik    sJ t          | |         ||         z            |f| |         ||         z  hik    sJ t          d| |         ||         z  z             d t          j        h|f| |         ||         z  hik    sJ t          | |         ||         z            d | |         ||         z  hik    sJ d S )Nr   r   r   r   r,   )r
   r	   r   r   Oner   s       r   $test_get_contraction_structure_basicr3   S   sk   CACAs88SXXqA$QqT!A$Y//D1Q4!9+3FFFFF$QqTAaD[11dQqT1Q4L5IIIII$QqT!A$Y//QD1Q4!9+3FFFFF$	AaD1I !%1$1ad<= = = =$QqT1Q4Z00TAaD!A$J<4HHHHHHHr   c                     t          d          } t          d          }t          d          }t          d          t          d          t          d          }}}||         |||f         | |         z  z   }d ||         h|f|||f         | |         z  hi}t          |          |k    sJ ||||f         z  | |         z   }d | |         h|f||||f         z  h||||f         z  |gi}	t          |          |	k    sJ d S )Nr   r   r)   r   r   r*   r
   r	   r   )
r   r   r)   r   r   r*   expr1d1expr2d2s
             r   &test_get_contraction_structure_complexr:   _   s   CACACA#hhC#c((!qAaD1QT71Q4<E
1qAwqt|n	-B$U++r1111!AqD'MAaD E
1uQq!tW}ouQq!tW}rd	CB$U++r111111r   c            	         t          d          } t          d          }t          d          t          d          t          d          }}}| ||f         |||f         z  }t          |          d |h||f| ||f         hi|f|||f         higik    sJ | ||f         |||f         z  }t          |          d | ||f         |||f         z  h| ||f         |||f         z  |f| ||f         higik    sJ d S Nr   r   r   r   r*   r5   )r   r   r   r   r*   ii_jjii_jks          r   %test_contraction_structure_simple_Powr?   l   sH   CACA#hhC#c((!qAadGQq!tWE$U++ugTAadG9TAadG9
0     adGQq!tWE$U++qAw!Q$ 	!Q$1a4TAadG9
0      r   c                     t          d          } t          d          }t          d          t          d          t          d          }}}| |         ||         | |         z  z  }t          |          d |hik    sJ | |         ||         z  ||         z  }t          |          d |hik    sJ | |         | |         ||         z  ||         z  z  }t          |          |f|hik    sJ | |         | |         ||         | |         z  z  z  }t          |          |f|hik    sJ | |         ||         z  t          ||         |||f         z            z  }	t          |	          }
|f|	h|	d t          ||         |||f         z            ht          ||         |||f         z            d ||         |||f         z  h||         |||f         z  |f|||f         higigigi}|
|k    sJ d S r<   )r
   r	   r   r   )r   r   r   r   r*   i_jiij_ij_ij_ij_i_ji
ij_exp_kkiresultexpecteds               r   &test_contraction_structure_Mul_and_PowrH      s-   CACA#hhC#c((!qAQ4!A$qt)D$T**tdVn<<<<aD1I1D$T**tdVn<<<<qT1Q4!9!%%F$V,,!x0@@@@@qT!A$1ad##F$V,,!x0@@@@@1ad3qtAadG|,,,J&z22F	
zlC!Qq!tW--.AaD1a4L!!1Q4!Q$<.aD1a4LQD1QT7)#4"5% $ 
	H Xr   c            
      N   t          d          } t          d          }t          d          t          d          t          d          }}}d| ||f         z   d|||f         z   z  }d |h|d t          j        h|f| ||f         hid t          j        h|f|||f         higi}t	          |          }||k    sJ d| ||f         z   d|||f         z   z  }d | ||f         dz   |||f         dz   z  h|d t          j        h|f| ||f         higi}	t	          |          }
|
|	k    sJ d S )Nr   r   r   r   r*   r,   )r
   r	   r   r2   r   )r   r   r   r   r*   	s_ii_jj_srG   rF   	s_ii_jk_s
expected_2result_2s              r   %test_contraction_structure_Add_in_PowrN      sc   CACA#hhC#c((!qAQq!tWAadG,IykAE7QD1QT7),AE7QD1QT7),
H 'y11FXQq!tW!a1g+.I!Q$!qAw{+,AE7QD1QT7),
J )33Hz!!!!!!r   c                     t          d          } t          d          }t          d          }t          d          t          d          t          d          }}}| ||f         |||f         |||f         z  z  }d |h||f| ||f         hid |||f         |||f         z  h|||f         |||f         z  |f|||f         hi|f|||f         higigi}t          |          |k    sJ d S )Nr   r   zr   r   r*   r5   )r   r   rP   r   r   r*   ii_jj_kkrG   s           r   %test_contraction_structure_Pow_in_PowrR      s!   CACACA#hhC#c((!qAAw!Q$1a4((HxjTAadG9qAw!Q$'(!Q$1a4 TAadG9%TAadG9%#	
H %X..(::::::r   c            	         t          d          } t          d          }t          d          }t          d          }t          d          t          d          }}t          d          }t	           | ||                             |hi fk    sJ t	           | ||         ||                             ||hi fk    sJ t	           | ||                    |||                   z            t                      i fk    sJ t	           | |||                             |hi fk    sJ t	           | |||         ||                    |||                   z            |hi fk    sJ t	           | | ||                                       |hi fk    sJ t           | ||                             d  | ||                   hik    sJ t           | ||                    |||                   z            |f | ||                    |||                   z  hik    sJ t           | ||                    | | ||                             z            |f | ||                    | | ||                             z  hik    sJ t           | ||         ||                    |||                   z            |f | ||         ||                    |||                   z  hik    sJ d S )Nr   gr   r   r   r   a)r   r
   r	   r   r   r   r   )r   rT   r   r   r   r   rU   s          r   test_ufunc_supportrV      s6   AACACAs88SXXqAAqq1wwQC9,,,,qq1qt}}%%1a&"5555qq1wwqq1ww''CEE2;6666qqAaDzz""sBi////qqAaD!A$''!A$/00aS"I====qq1Q4zz""sBi////$QQqtWW--$1Q4	1BBBBB$	!A$!A$ TAAadGGAAadGGO#456 6 6 6$	!A$!!AaD''

 !"qq1wwqq1Q4zz'9&:;< < < <$	!A$!aa!gg $%4!!AaD!A$--!A$*?)@"AB B B B B Br   N)
sympy.corer   r   r   r   sympy.functionsr   sympy.testing.pytestr   sympy.tensor.indexedr	   r
   sympy.tensor.index_methodsr   r   r   r   r   r   r    r%   r'   r.   r0   r3   r:   r?   rH   rN   rR   rV    r   r   <module>r]      s   0 0 0 0 0 0 0 0 0 0 0 0       ' ' ' ' ' ' 1 1 1 1 1 1 1 1 @ @ @ @ @ @ O O O O O O O O, , ,0 0 0. . .2 2 2H H H4 4 4
= 
= 
=2 2 2	I 	I 	I
2 
2 
2  ,  8" " "4; ; ;,B B B B Br   