
    \h/                     L   S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJr  S S	KJr  S S
KJrJrJr  S SKJrJr  S SKJr  S SKJ r   S SK!J"r"J#r#  \" SSS9u  r$r%r&r'\" SSS9u  r(r)\" S\$\%5      r*\" S\%\&5      r+\" S\%\&5      r,\" S\&\'5      r-\" S\&\&5      r.\" S\&\&5      r/\" S\&\&5      r0\" S\&\&5      r1\" SSS5      r2\" SSS5      r3\" SSS5      r4\" SSS5      r5S  r6S! r7S" r8S# r9S$ r:S% r;S& r<S' r=S( r>S) r?\"S* 5       r@S+ rAS, rBS- rCS. rDg/)0    )Sum)symbolsSymbolDummy)sqrt)KroneckerDelta)eye)BlockMatrix)HadamardPower)MatrixSymbol
MatrixExprMatrixElement)MatPow)
ZeroMatrixIdentity	OneMatrix)Tracetrace)ImmutableMatrix)ArrayTensorProduct)XFAILraisesk l m nT)integeri jWXYZX1X2X3X4A   Bx   c                  r   ^  [         S   m [        U 4S jSS[         R                  4 5       5      (       d   eg )N)r(   r%   c              3   >   >#    U  H  o[        T5      ;   v   M     g 7fN)str).0sx12s     f/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/tests/test_indexing.py	<genexpr>)test_symbolic_indexing.<locals>.<genexpr>'   s     9&8CH}&8s   12)r   allname)r/   s   @r0   test_symbolic_indexingr7   %   s.    
D'C9sC&899999    c                      [         [        -   [        [        4   [         [        [        4   [        [        [        4   -   :X  d   eg r+   )r   r   ij r8   r0   test_add_indexr=   ,   s1    E1a4=AadGa1g----r8   c                     [         [        -  S   [         S   [        S   -  [         S   [        S   -  -   :X  d   e[         [        -  R                  5       [         R                  5       [        R                  5       -  :X  d   e[	        S[
        [        5      n [	        S[        [        5      nX-  S   n[        U S[        4   U[        S4   -  [        S	[        S
-
  45      nUR                  S	   R                  UR                  S	   [        5      (       d   eUR                  S
   S
S  UR                  S
   S
S  :X  d   eg )Nr   r   r   r(   r(   r   r   r   )   r%   rB   r%   r   r(   )r$   yr&   
as_mutabler   nmkr   r:   argsdummy_eq)r   r   resultexpecteds       r0   test_mul_indexrL   0   s	   aC;!D'!D'/AdGAdGO;;;;aC!,,.1<<>"ABBBS!QAS!QAc3ZF1QT71QT7?Q1q5M2H;;q>""8==#3Q7777;;q>!"q!1!"!5555r8   c            
         [        [        S5      n U S   [        S   S-  [        S   [        S   -  -   :X  d   e[        S5      n[        U-  nUS   S[        [        S   [        S   -   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   5      * S-  [        S   S-  -   [        S   S-  -   U-  -  [        S   -  [        S   -  [        [        S   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   [        S   S-  -   5      [        S   -   [        S   -
  [        [        S   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   [        S   S-  -   5      -  -  S[        [        S   [        S   -   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   5      S-  [        S   S-  -   [        S   S-  -   U-  -  [        S   -  [        S   -  [        [        S   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   [        S   S-  -   5      * [        S   -   [        S   -
  [        [        S   S-  S[        S   -  [        S   -  -
  S[        S   -  [        S   -  -   [        S   S-  -   5      -  -  -
  :X  d   eg )Nr%   r?   r@   rA   rE   r(   r(   rB   )r   r$   r   r   )QrE   Q2s      r0   test_pow_indexrQ   <   s&   q!AT7agqj1T71T7?2222A	
ABd8q1T7QtW$q(1QtW9QtW+<<agIag   !#$T719-/0wqy9  	
$	 $	
 !D'1*q4y4001QtW9QtW3DDD'1*  !$(*+D'24!a$i$//!AdG)AdG2CCagqjPQR
 !D'AdG#a'!AdG)AdG*;;agIag  !#$T719-/0wqy9  w w 1T7A:!D'	!D' 11AagIag4EEdGQJ  D'"$%dG,4!a$i$//!AdG)AdG2CCagqjPQR	

 
 
 
r8   c                  l    [         R                  [        [        4   [         [        [        4   :X  d   eg r+   )r   Tr:   r;   r<   r8   r0   test_transpose_indexrT   S   s$    33q!t9!Q$r8   c                    ^  [        S5      m T S   T S   s=:X  a  T S   s=:X  a  S:X  d   e   eT S   T S   s=:X  a  T S   s=:X  a  S	:X  d   e   eT [        S	4   R                  S
:X  d   e[        [        U 4S j5        g )N   r?   rN   )r%   r%   r(   rA   r@   )r%   r(   r   )r   r%   c                     > T S   $ )NrV   rV   r<   Is   r0   <lambda>%test_Identity_index.<locals>.<lambda>\   s	    qwr8   )r   r:   delta_ranger   
IndexErrorrY   s   @r0   test_Identity_indexr_   W   s    AT7ag-4-A-----T7ag-4-A-----QT7&(((
:'r8   c                      [        S5      n [        SS5      n[        X /X //5      n[        [	        S5      5      n[        X3/X3//5      nUS   US   s=:X  a  US   s=:X  a  US   s=:X  a  S:X  d   e   eUS   US   s=:X  a  S	:X  d   e   e[        X3/X3//5      nUR                  5       UR                  5       :X  d   e[        X/X//5      nUR                  5       R                  [	        S
5      5      (       d   eg )NrV   r?   )rV   r   )r   rV   rX   r(   )rB   rV   )   r(   r      )r   r   r
   r   r	   as_explicitequals)rZ   r   r&   e3BBBIs         r0   test_block_indexrh   _   s   A1aAaVaV$%A	Q	 B	rh)	*BT7ag848AdG8q88888T7ag""""""	rh)	*B==?bnn....	qfqf%	&B>>""3q6****r8   c                  j   [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        X/X#//5      nUS   [        USS5      :X  d   eU[        S-
  [        S-
  4   U [        S-
  [        S-
  4   :X  d   eU[        [        4   US   :X  d   eU[        [        -   S-
  S4   [        U[        [        -   S-
  S5      :X  d   eUS[        [        -   S-
  4   [        US[        [        -   S-
  5      :X  d   eU[        [        -   S-
  [        [        -   S-
  4   [        U[        [        -   S-
  [        [        -   S-
  5      :X  d   eU[        [        4   [        U[        [        5      :X  d   eU[        [        -   [        [        -   4   [        U[        [        -   [        [        -   5      :X  d   eU[        [        -
  S-
  [        [        -
  S-
  4   [        U[        [        -
  S-
  [        [        -
  S-
  5      :X  d   eg )NA1A2A3A4r?   r   r(   )	r   rE   rG   lrF   r
   r   r:   r;   )rj   rk   rl   rm   r$   s        r0   test_block_index_symbolicro   p   s    
dAq	!B	dAq	!B	dAq	!B	dAq	!BbXx()AT7mAq!,,,,QUAE\?bQA....QT7bhQUQY\?mAq1uqy!<<<<QA	\?mAq!a%!)<<<<QUQYA	!"mAq1uqy!a%!)&LLLLQT7mAq!,,,,QUAE\?mAq1ua!e<<<<QUQYA	!"mAq1uqy!a%!)&LLLLr8   c                  L   [        SSSS9u  pp#[        SSSS9u  pE[        SX05      n[        SX15      n[        SX 5      n[        S	X!5      n	[        Xg/X//5      n
U
S
   US
   :X  d   eXU-   S-
  S4   XS-
  S4   :X  d   eU
SX-   S-
  4   USUS-
  4   :X  d   eXU-   S-
  X-   S-
  4   XS-
  US-
  4   :X  d   eXU4   [        XU5      :X  d   eXU-   X-   4   XU4   :X  d   eXU-
  S-
  X-
  S-
  4   XcU-
  S-
  X-
  S-
  4   :X  d   eU
SU-  SU -  4   XU 4   :X  d   eg )Nr   Tr   positiver   r   nonnegativerj   rk   rl   rm   r?   r(   r   r%   r   r   r
   r   )rG   rn   rF   rE   r:   r;   rj   rk   rl   rm   r$   s              r0   !test_block_index_symbolic_nonzerorv      s    D4@JA!5$D9DA	dA	!B	dA	!B	dA	!B	dA	!BbXx()AT7bhUQY\?bQl***Q	\?bAEl***UQY	!"bQA&6666T7mA!,,,,UAE\?bAh&&&UQY	!"bQAEAI)=&>>>>QUAE\?bAh&&&r8   c                  v   [        SSSS9u  pn[        SSSS9n[        SX 5      n[        SX5      n[        SX5      n[        S	X5      n[        S
X5      n[        SX5      n	[        SX 5      n
[        SX!5      n[        SX"5      n[        XEU/XxU	/XU//5      nXU-   X-   4   [        XU-   X-   5      :X  d   eg )Nzn m kTrq   r:   rs   rj   rk   rl   rm   A5A6A7A8A9ru   )rE   rF   rG   r:   rj   rk   rl   rm   rx   ry   rz   r{   r|   r$   s                 r0   test_block_index_larger}      s    gtd;GA!Tt4A	dA	!B	dA	!B	dA	!B	dA	!B	dA	!B	dA	!B	dA	!B	dA	!B	dA	!Bbb\BB<"">?AUAE\?mA1uae<<<<r8   c                      [        S[        S5      n [        S[        S5      n[        U /U//5      nUS[        -  S4   U[        S4   :X  d   eg )Nrj   r(   rk   r%   r   )r   rE   rF   r
   )rj   rk   r$   s      r0   test_block_index_symbolic_failr      sT    
 
dAq	!B	dAq	!BbTB4L!AQUAX;"QT("""r8   c                  :    [         R                  5       SS S 24     g )Nr   )r$   rc   r<   r8   r0   test_slicingr      s    MMOAqDr8   c                  H    [        [        S 5        [        [        S 5        g )Nc                      [        S5      S   $ Nr%   )r(   r%   rV   rB   ra   r   r<   r8   r0   r[   test_errors.<locals>.<lambda>   s    x{=9r8   c                  "    [        S5      / SQ   $ r   r   r<   r8   r0   r[   r      s    x{?;r8   )r   r^   r<   r8   r0   test_errorsr      s    
:9:
:;<r8   c                  	   [        S5      u  p[        S5      u  p#nS n[        [        -  [        -  nU" UR	                  X5      5      [        [        X4   [        X#4   -  [        X14   -  US[        S-
  4US[        S-
  45      :X  d   e[        R                  " UR	                  X5      5      U:X  d   e[        R                  [        R                  -  [        R                  -  nU" UR	                  X5      5      [        [        X4   [        X24   -  [        X 4   -  US[        S-
  4US[        S-
  45      :X  d   e[        R                  " UR	                  X5      U 5      U:X  d   e[        [        -  [        -  [        [        -  [        -  -   nU" UR	                  X5      5      [        [        X4   [        X#4   -  [        X14   -  US[        S-
  4US[        S-
  45      [        [        X4   [        X#4   -  [        X14   -  US[        S-
  4US[        S-
  45      -   :X  d   e[        R                  " UR	                  X5      5      U:X  d   eS[        -  [        -  [        -  S[        -  [        -  [        -  -   nU" UR	                  X5      5      S[        [        X4   [        X#4   -  [        X14   -  US[        S-
  4US[        S-
  45      -  S[        [        X4   [        X#4   -  [        X14   -  US[        S-
  4US[        S-
  45      -  -   :X  d   e[        R                  " UR	                  X5      5      U:X  d   e[        [        [        -   -  [        -  nU" UR	                  X5      5      [        [        X4   [        X#4   [        X#4   -   -  [        X14   -  US[        S-
  4US[        S-
  45      :X  d   e[        R                  " UR	                  X5      5      U:X  d   e[        [        S-  -  [        -  n[        [        -  [        [        -  -   [         -  nU" UR	                  X5      5      [        [        [        X4   [        X24   -  US[        S-
  45      [        [        XB4   [        X4   -  US[        S-
  45      -   [         X!4   -  US[        S-
  45      :X  d   eg )Nzi, jzi_1:4c                     U R                  [        5       Vs0 s H  o[        UR                  5      _M     nnU R	                  U5      $ s  snf r+   )atomsr   r   r6   xreplace)exprr:   repls      r0   replace_dummies:test_matrix_expression_to_indices.<locals>.replace_dummies   s@    +/::e+<=+<a6!&&>!+<=}}T"" >s   A
r   r(   r%   rV   )r   r   r   r   _entryr   rn   rF   r   from_index_summationrS   r   r$   r&   r    r!   r"   )r:   r;   i1i2i3r   r   s          r0   !test_matrix_expression_to_indicesr      s   6?DA!JBB# Q3q5D4;;q,-AaeHQrvYqx'"a1Aqs|DE E E**4;;q+<=EEE33qss7133;D4;;q,-AaeHQrvYqx'"a1Aqs|DE E E**4;;q+<a@DHHHQ3q51Q3q5=D4;;q,-AaeHQrvYqx'"a1Aqs|DAaeHQrvYqx'"a1Aqs|D	EE E E **4;;q+<=EEEQ3q57QqSU1WD4;;q,-	#ahqy 25)B1Q3<"a1
FF	#ahqy 25)B1Q3<"a1
FF	GG G G **4;;q+<=EEEa!e9Q;D4;;q,-!%!BF)ai/0259B1Q3<"aQRSTQTVW W W**4;;q+<=EEEQT6!8D
 rEBrEM2D4;;q,-BquI26
*RAEN;c"RV*rRSRWyBX[]_`bcfgbgZh>iimoun Aq1u~'' ' 'r8   c            
        ^^ SSK JmJn JnJn  [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        S[        S5      n[        S[        S	9u  pxpn[        [        TU 4   [        X4   -  [        X4   -  U S[        S-
  4US[        S-
  45      m[        R                   " TT5      [        [        -  [        -  :X  d   e[        [        R"                  U T4   [        X4   -  [        X4   -  U S[        S-
  4US[        S-
  45      m[        R                   " TT5      [        [        -  [        -  :X  d   e[        X0T4   X@U4   -  XQU4   -  U S[        S-
  4US[        S-
  45      m[
        R                   " TT5      UR"                  U-  U-  :X  d   e[        X0T4   XAU 4   -  XQU4   -  U S[        S-
  4US[        S-
  45      m[
        R                   " TT5      UR"                  UR"                  -  U-  :X  d   e[        XQU4   X0T4   -  XAU 4   -  U S[        S-
  4US[        S-
  45      m[
        R                   " TT5      UR"                  UR"                  -  U-  :X  d   e[        UTU 4   UTU 4   -   TS[        S-
  4U S[        S-
  45      m[        R                   " TT5      [%        S[        5      U-  [%        [        S5      -  [%        S[        5      U-  [%        [        S5      -  -   :X  d   e[        UTU 4   S
-  TS[        S-
  4U S[        S-
  45      m[        R                   " TT5      ['        X3R"                  -  5      :X  d   e[        UTU 4   S-  TS[        S-
  4U S[        S-
  45      m[        R                   " TT5      ['        [)        UR"                  S
5      U-  5      :X  d   e[        UTU 4   UTU 4   -   XPU4   -  U S[        S-
  45      m[        R                   " TT5      X4-   U-  :X  d   e[        UTU 4   X@T4   -   XPU4   -  U S[        S-
  45      m[        R                   " TT5      X4R"                  -   U-  :X  d   e[        UTU 4   X0U4   -  X1U4   -  U S[        S-
  4US[        S-
  45      m[        R                   " TT5      US-  :X  d   e[        UTU 4   X0U4   -  XAU4   -  U S[        S-
  4US[        S-
  45      m[        R                   " TT5      US
-  U-  :X  d   e[        UTT4   TS[        S-
  45      m[        R                   " TS 5      [+        U5      :X  d   e[        UTT4   X@U4   -  XQU4   -  TS[        S-
  4US[        S-
  45      m[        R                   " TU 5      [+        U5      U-  U-  :X  d   e[        [        TU 4   [        X4   -  [        X4   -  U S[        S-
  4US[        45      m[-        [.        UU4S j5        [        [        TU 4   [        X4   -  [        X4   -  U S[        S-
  4US[        S-
  45      m[-        [.        UU4S j5        [        UTU 4   [        X@U4   XQU4   -  US[        S-
  45      -  U S[        S-
  45      m[        R                   " TT5      X4-  U-  :X  d   e[        UTU 4   [1        X5      -  XAU4   -  U S[        S-
  4US[        S-
  45      m[        R                   " TT5      X4-  :X  d   e[        [1        U[        5      [1        U	[2        5      -  U[4        U4   -  U[6        U	4   -  US[        S-
  4U	S[        S-
  45      m[        R                   " T[        5      [9        UR"                  U5      :X  d   e[        X8U	4   XiS4   -  U	S[        S-
  45      m[        R                   " TU5      [;        X6-  US5      :X  d   e[        X8U	4   XIS4   -  U	S[        S-
  45      m[        R                   " TU5      [;        X4-  US5      :X  d   eg )Nr   )abcdr$   r&   Cw1r(   zi0:5)clsr%   rV   c                  2   > [         R                  " TT 5      $ r+   r   r   r   r   s   r0   r[   =test_matrix_expression_from_index_summation.<locals>.<lambda>      z>>tQGr8   c                  2   > [         R                  " TT 5      $ r+   r   r   s   r0   r[   r     r   r8   )	sympy.abcr   r   r   r   r   rG   r   r   r   r   r   r   rn   rF   r   r   rS   r   r   r   r   r   
ValueErrorr   rE   r:   r;   r   r   )r   r   r   r$   r&   r   r   i0r   r   r   i4r   r   s               @@r0   +test_matrix_expression_from_index_summationr      s   !!S!QAS!QAS!QA	dAq	!B U3BBBq1vaf}QqsV#aAaC[1a1+>D**43qs1u<<<qss1Q3x!#qv%1ac{Q1Q3K@D**43qs1u<<<qAwqAwqAw&AqsaAaC[AD,,T15Qq@@@qAwqAwqAw&AqsaAaC[AD,,T15QSSBBBqAwqAwqAw&AqsaAaC[AD,,T15QSSBBBqAw1a4 1a1+1ac{;D**43yAq7HSTVW7X[defhi[jkl[lmvwxz{m|[|7||||qAwzAq!a%=1aQ-8D**43uQW~EEEqAwzAq!a%=1aQ-8D**43u]133PQ=RUV=V7WWWW!Q$!AqD'!1T7*Q1Q3K8D**43Qw>>>!Q$!qD'!1T7*Q1Q3K8D**43##qy@@@qAwqAwqAw&AqsaAaC[AD**43q!t;;;qAwqAwqAw&AqsaAaC[AD**43q!tAv=== qAwAqs$D**46%(BBBqAwqAwqAw&AqsaAaC[AD**43uQxz!|CCC
 q1vaf}QqsV#aAaC[1a)<D
:GHq1vaf}QqsV#aAaC[1a1+>D
:GH qAws1T71T7?Q1Q3K881a1+FD**43qs1u<<< qAw~a++AdG3aAaC[1a1+ND**43qs:::~b!$^B%::1QU8CAaeHLrSTVWXYVYl]_abdefgdg\hiD**437I!##q7QQQQ qRyE"RAaCL1D**44adBPQ8RRRRqRyq5!B1Q3<0D**44ac2q8QQQQr8   N)Esympy.concrete.summationsr   sympy.core.symbolr   r   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.special.tensor_functionsr   sympy.matrices.denser	   &sympy.matrices.expressions.blockmatrixr
   #sympy.matrices.expressions.hadamardr   "sympy.matrices.expressions.matexprr   r   r   !sympy.matrices.expressions.matpowr   "sympy.matrices.expressions.specialr   r   r    sympy.matrices.expressions.tracer   r   sympy.matrices.immutabler   0sympy.tensor.array.expressions.array_expressionsr   sympy.testing.pytestr   r   rG   rn   rF   rE   r:   r;   r   r   r   r   r    r!   r"   r#   r$   r&   r'   rC   r7   r=   rL   rQ   rT   r_   rh   ro   rv   r}   r   r   r   r   r   r<   r8   r0   <module>r      sj   ) 4 4 9 C $ > =  4  9 4 O .Y-
1aud#1aaaa$1$1$1$1aaaa:.	6
. (+"M&'(=  # #=
+'\BRr8   