
    sg                         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y)    )symbolsSPowFunction)exp)raises)IdxIndexedBase)IndexConformanceException)get_contraction_structureget_indicesc                     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 y )Nzx y)r   r   set)xys     X/var/www/html/venv/lib/python3.12/site-packages/sympy/tensor/tests/test_index_methods.pytest_trivial_indicesr   
   s~    5>DAqq>ceR[(((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 y )Nr   ijr
   r	   r   )r   r   r   s      r   test_get_indices_Indexedr      sc    CAs8SXqAqAwQFB<///qAwQFB<///r   c                      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 y )Nfr   r   )r   r	   r   r   )r   r   r   s      r   test_get_indices_Idxr      s    As8SXqAqtAvAq62,...qAwQFB<///qtAv35"+---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 y Nr   r   r   r   r   r   r   r   r   s       r   test_get_indices_mulr    !   su    CACAs8SXqAqtAaDy!q!fb\111qtAaDy!q!fb\111r   c                       t        d      t        d      t        d      t        d      c t        t         fd       y )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 r   )r
   r	   r   r   r#   s   @@@@r   test_get_indices_exceptionsr%   )   s6    CACAs8SXDAq
$&F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 y r   r   r   s       r   test_scalar_broadcastr'   0   sy    CACAs8SXqAqta1g~&A3)333qta1g~&A3)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 y )	Nr   r   Ar   r   k      r   r   r   r)   r   r   r*   s         r   test_get_indices_addr.   8   se   CACACA#hC#c(!qAqta!f}%1#r222qta!Q$i!n,-1#r:::qta1!Q$!!4556A3)CCCqtadAadGaK001qc2Y>>>	!qtAaDy!A$1a41-..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 y )Nr   r   r)   r   r   r*   r+   )r
   r	   r   r   r   r-   s         r   test_get_indices_Powr0   E   s(   CACACA#hC#c(!qAs1Q41'QFB<777s1QT7AadG,-1a)R@@@s1QT7AaD1QT71Q4<$789q!fb\IIIs1ad|$C!I(>>>> s1Q4|$!b	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 y )Nr   r   r   r   r,   )r
   r	   r   r   Oner   s       r   $test_get_contraction_structure_basicr3   S   s;   CACAs8SXqA$QqT!A$Y/D1Q4!9+3FFFF$QqTAaD[1dQqT1Q4L5IIII$QqT!A$Y/QD1Q4!9+3FFFF$	AaD1I!%%1$1ad<= = =$QqT1Q4Z0TAaD!A$J<4HHHHr   c                  z   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 y )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#hC#c(!qAaD1QT71Q4<E
1qAwqt|n	-B$U+r111!AqD'MAaD E
1uQq!tW}ouQq!tW}rd	CB$U+r111r   c            	      r   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 y Nr   r   r   r   r*   r5   )r   r   r   r   r*   ii_jjii_jks          r   %test_contraction_structure_simple_Powr?   l   s"   CACA#h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 y 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#h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2F	
zlC!Qq!tW-.AaD1a4L!1Q4!Q$<.aD1a4LQD1QT7)#4"5% $ 
	H Xr   c            
         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 y )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      sK   CACA#hC#c(!qAQq!tWAadG,IykAEE7QD1QT7),AEE7QD1QT7),
H 'y1FXQq!tW!a1g+.I!Q$!qAw{+,AEE7QD1QT7),
J )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 y )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#h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            	      4   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 y )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      sj   AACACAs8SXqAAq1wQC9,,,q1qt}%1a&"555q1wq1w'CE2;666qAaDz"sBi///qAaD!A$'!A$/0aS"I===q1Q4z"sBi///$QqtW-$1Q4	1BBBB$	!A$!A$TAadGAadGO#456 6 6$	!A$!AaD'
!"q1wq1Q4z'9&:;< < <$	!A$!a!g$%4!AaD!A$-!A$*?)@"A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]      sh    0 0  ' 1 @ O,0.2H4
=2	I
2,8"4;,Br   