
    sg/                     X   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZ d dlmZmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#  edd      \  Z$Z%Z&Z' edd      \  Z(Z) ede$e%      Z* ede%e&      Z+ ede%e&      Z, ede&e'      Z- ede&e&      Z. ede&e&      Z/ ede&e&      Z0 ede&e&      Z1 eddd      Z2 eddd      Z3 eddd      Z4 eddd      Z5d  Z6d! Z7d" Z8d# Z9d$ Z:d% Z;d& Z<d' Z=d( Z>d) Z?e"d*        Z@d+ ZAd, ZBd- ZCd. ZDy/)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                  f     t         d    t         fdddt         j                  fD              sJ y )N)r(   r%   c              3   8   K   | ]  }|t              v   y wN)str).0sx12s     a/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_indexing.py	<genexpr>z)test_symbolic_indexing.<locals>.<genexpr>'   s     9qCH}9s   12)r   allname)r/   s   @r0   test_symbolic_indexingr6   %   s+    
D'C9sC&89999    c                      t         t        z   t        t        f   t         t        t        f   t        t        t        f   z   k(  sJ y r+   )r   r   ij r7   r0   test_add_indexr<   ,   s1    E1a4=AadGa1g----r7   c                  z   t         t        z  d   t         d   t        d   z  t         d   t        d   z  z   k(  sJ t         t        z  j                         t         j                         t        j                         z  k(  sJ t	        dt
        t              } t	        dt        t              }| |z  d   }t        | dt        f   |t        df   z  t        d	t        d
z
  f      }|j                  d	   j                  |j                  d	   t              sJ |j                  d
   d
d  |j                  d
   d
d  k(  sJ y )Nr   r   r   r(   r(   r   r   r   )   r%   rA   r%   r   r(   )r$   yr&   
as_mutabler   nmkr   r9   argsdummy_eq)r   r   resultexpecteds       r0   test_mul_indexrK   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;;q>!"q!1!"!5555r7   c            
         t        t        d      } | d   t        d   dz  t        d   t        d   z  z   k(  sJ t        d      }t        |z  }|d   dt        t        d   t        d   z   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z          dz  t        d   dz  z   t        d   dz  z   |z  z  t        d   z  t        d   z  t        t        d   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z   t        d   dz  z         t        d   z   t        d   z
  t        t        d   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z   t        d   dz  z         z  z  dt        t        d   t        d   z   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z         dz  t        d   dz  z   t        d   dz  z   |z  z  t        d   z  t        d   z  t        t        d   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z   t        d   dz  z          t        d   z   t        d   z
  t        t        d   dz  dt        d   z  t        d   z  z
  dt        d   z  t        d   z  z   t        d   dz  z         z  z  z
  k(  sJ y )Nr%   r>   r?   r@   rD   r(   r(   rA   )r   r$   r   r   )QrD   Q2s      r0   test_pow_indexrP   <   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	

 
 
 
r7   c                  j    t         j                  t        t        f   t         t        t        f   k(  sJ y r+   )r   Tr9   r:   r;   r7   r0   test_transpose_indexrS   S   s$    33q!t9!Q$r7   c                       t        d        d    d   cxk(  r d   cxk(  rdk(  sJ  J  d    d   cxk(  r d   cxk(  rd	k(  sJ  J  t        d	f   j                  d
k(  sJ t        t         fd       y )N   r>   rM   )r%   r%   r(   r@   r?   )r%   r(   r   )r   r%   c                       d   S )NrU   rU   r;   Is   r0   <lambda>z%test_Identity_index.<locals>.<lambda>\   s    qw r7   )r   r9   delta_ranger   
IndexErrorrX   s   @r0   test_Identity_indexr]   W   s    AT7ag-4-A-----T7ag-4-A-----QT7&(((
:'r7   c                     t        d      } t        dd      }t        | | g| | gg      }t        t	        d            }t        ||g||gg      }|d   |d   cxk(  r|d   cxk(  r|d   cxk(  rdk(  sJ  J |d   |d   cxk(  rd	k(  sJ  J t        ||g||gg      }|j                         |j                         k(  sJ t        | |g|| gg      }|j                         j                  t	        d
            sJ y )NrU   r>   )rU   r   )r   rU   rW   r(   )rA   rU   )   r(   r      )r   r   r
   r   r	   as_explicitequals)rY   r   r&   e3BBBIs         r0   test_block_indexrf   _   s   A1aAaVaV$%A	Q	 B	r2hR)	*BT7ag848AdG8q88888T7ag""""""	r2hR)	*B==?bnn....	q!fq!f%	&B>>""3q6***r7   c                  \   t        dt        t              } t        dt        t              }t        dt        t              }t        dt        t              }t        | |g||gg      }|d   t        |dd      k(  sJ |t        dz
  t        dz
  f   | t        dz
  t        dz
  f   k(  sJ |t        t        f   |d   k(  sJ |t        t        z   dz
  df   t        |t        t        z   dz
  d      k(  sJ |dt        t        z   dz
  f   t        |dt        t        z   dz
        k(  sJ |t        t        z   dz
  t        t        z   dz
  f   t        |t        t        z   dz
  t        t        z   dz
        k(  sJ |t        t        f   t        |t        t              k(  sJ |t        t        z   t        t        z   f   t        |t        t        z   t        t        z         k(  sJ |t        t        z
  dz
  t        t        z
  dz
  f   t        |t        t        z
  dz
  t        t        z
  dz
        k(  sJ y )NA1A2A3A4r>   r   r(   )	r   rD   rF   lrE   r
   r   r9   r:   )rh   ri   rj   rk   r$   s        r0   test_block_index_symbolicrm   p   s    
dAq	!B	dAq	!B	dAq	!B	dAq	!Bb"XBx()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Lr7   c                  z   t        ddd      \  } }}}t        ddd      \  }}t        d||       }t        d||      }t        d||       }t        d	||      }	t        ||g||	gg      }
|
d
   |d
   k(  sJ |
||z   dz
  df   ||dz
  df   k(  sJ |
d| |z   dz
  f   |d|dz
  f   k(  sJ |
||z   dz
  | |z   dz
  f   |	|dz
  |dz
  f   k(  sJ |
||f   t        |
||      k(  sJ |
||z   | |z   f   |	||f   k(  sJ |
||z
  dz
  | |z
  dz
  f   |||z
  dz
  | |z
  dz
  f   k(  sJ |
d|z  d| z  f   |	|| f   k(  sJ y )Nr   Tr   positiver   r   nonnegativerh   ri   rj   rk   r>   r(   r   r%   r   r   r
   r   )rF   rl   rE   rD   r9   r:   rh   ri   rj   rk   r$   s              r0   !test_block_index_symbolic_nonzerort      s    D4@JAq!Q5$D9DAq	dAq	!B	dAq	!B	dAq	!B	dAq	!Bb"XBx()AT7bhQUQY\?bQl***QA	\?bAEl***QUQYA	!"bQA&6666QT7mAq!,,,,QUAE\?bAh&&&QUQYA	!"bQAEAI)=&>>>>QUAE\?bAh&&&r7   c                     t        ddd      \  } }}t        ddd      }t        d| |       }t        d| |      }t        d| |      }t        d	||       }t        d
||      }t        d||      }	t        d||       }
t        d||      }t        d||      }t        |||g|||	g|
||gg      }|| |z   | |z   f   t        || |z   | |z         k(  sJ y )Nzn m kTro   r9   rq   rh   ri   rj   rk   A5A6A7A8A9rs   )rD   rE   rF   r9   rh   ri   rj   rk   rv   rw   rx   ry   rz   r$   s                 r0   test_block_index_larger{      s    gtd;GAq!Tt4A	dAq	!B	dAq	!B	dAq	!B	dAq	!B	dAq	!B	dAq	!B	dAq	!B	dAq	!B	dAq	!Bb"b\BB<"b">?AQUAE\?mAq1ua!e<<<<r7   c                      t        dt        d      } t        dt        d      }t        | g|gg      }|dt        z  df   |t        df   k(  sJ y )Nrh   r(   ri   r%   r   )r   rD   rE   r
   )rh   ri   r$   s      r0   test_block_index_symbolic_failr}      sT    
 
dAq	!B	dAq	!BbTB4L!AQUAX;"QT("""r7   c                  :    t         j                         dd d f    y )Nr   )r$   ra   r;   r7   r0   test_slicingr      s    MMOAqDr7   c                  H    t        t        d        t        t        d        y )Nc                      t        d      d   S Nr%   )r(   r%   rU   rA   r_   r   r;   r7   r0   rZ   ztest_errors.<locals>.<lambda>   s    x{=9 r7   c                  "    t        d      g d   S r   r   r;   r7   r0   rZ   ztest_errors.<locals>.<lambda>   s    x{?; r7   )r   r\   r;   r7   r0   test_errorsr      s    
:9:
:;<r7   c                  	   t        d      \  } }t        d      \  }}}d }t        t        z  t        z  } ||j	                  | |            t        t        | |f   t        ||f   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      k(  sJ t        j                  |j	                  | |            |k(  sJ t        j                  t        j                  z  t        j                  z  } ||j	                  | |            t        t        ||f   t        ||f   z  t        || f   z  |dt        dz
  f|dt        dz
  f      k(  sJ t        j                  |j	                  | |      |       |k(  sJ t        t        z  t        z  t        t        z  t        z  z   } ||j	                  | |            t        t        | |f   t        ||f   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      t        t        | |f   t        ||f   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      z   k(  sJ t        j                  |j	                  | |            |k(  sJ dt        z  t        z  t        z  dt        z  t        z  t        z  z   } ||j	                  | |            dt        t        | |f   t        ||f   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      z  dt        t        | |f   t        ||f   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      z  z   k(  sJ t        j                  |j	                  | |            |k(  sJ t        t        t        z   z  t        z  } ||j	                  | |            t        t        | |f   t        ||f   t        ||f   z   z  t        ||f   z  |dt        dz
  f|dt        dz
  f      k(  sJ t        j                  |j	                  | |            |k(  sJ t        t        dz  z  t        z  }t        t        z  t        t        z  z   t         z  } ||j	                  | |            t        t        t        | |f   t        ||f   z  |dt        dz
  f      t        t        ||f   t        | |f   z  |dt        dz
  f      z   t         ||f   z  |dt        dz
  f      k(  sJ y )Nzi, jzi_1:4c                     | j                  t              D ci c]  }|t        |j                         }}| j	                  |      S c c}w r+   )atomsr   r   r5   xreplace)exprr9   repls      r0   replace_dummiesz:test_matrix_expression_to_indices.<locals>.replace_dummies   s?    +/::e+<=a6!&&>!==}}T"" >s   Ar   r(   r%   rU   )r   r   r   r   _entryr   rl   rE   r   from_index_summationrR   r   r$   r&   r    r!   r"   )r9   r:   i1i2i3r   r   s          r0   !test_matrix_expression_to_indicesr      s   6?DAq!JBB# Q3q5D4;;q!,-AaeHQr2vYqQx'"a1Aqs|DE E E**4;;q!+<=EEE33qss7133;D4;;q!,-AaeHQr2vYqQx'"a1Aqs|DE E E**4;;q!+<a@DHHHQ3q51Q3q5=D4;;q!,-AaeHQr2vYqQx'"a1Aqs|DAaeHQr2vYqQx'"a1Aqs|D	EE E E **4;;q!+<=EEEQ3q57QqSU1WD4;;q!,-	#a2hqRy 2q5)B1Q3<"a1
FF	#a2hqRy 2q5)B1Q3<"a1
FF	GG G G **4;;q!+<=EEEa!e9Q;D4;;q!,-!R%!BF)aBi/02q59B1Q3<"aQRSTQTVW W W**4;;q!+<=EEEQT6!8D
 rEBrEM2D4;;q!,-Bq"uI2r6
*RAEN;c"RV*rRSUWRWyBX[]_`bcfgbgZh>iimo1un Aq1u~'' ' 'r7   c            
         ddl mm} m}m} t        dt        t              }t        dt        t              }t        dt        t              }t        dt        d      }t        dt        	      \  }}}	}
}t        t        | f   t        | |f   z  t        ||f   z  | dt        dz
  f|dt        dz
  f      t        j                         t        t        z  t        z  k(  sJ t        t        j"                  | f   t        | |f   z  t        ||f   z  | dt        dz
  f|dt        dz
  f      t        j                         t        t        z  t        z  k(  sJ t        || f   || |f   z  |||f   z  | dt        dz
  f|dt        dz
  f      t        j                         |j"                  |z  |z  k(  sJ t        || f   ||| f   z  |||f   z  | dt        dz
  f|dt        dz
  f      t        j                         |j"                  |j"                  z  |z  k(  sJ t        |||f   || f   z  ||| f   z  | dt        dz
  f|dt        dz
  f      t        j                         |j"                  |j"                  z  |z  k(  sJ t        || f   || f   z   dt        dz
  f| dt        dz
  f      t        j                         t%        dt              |z  t%        t        d      z  t%        dt              |z  t%        t        d      z  z   k(  sJ t        || f   d
z  dt        dz
  f| dt        dz
  f      t        j                         t'        ||j"                  z        k(  sJ t        || f   dz  dt        dz
  f| dt        dz
  f      t        j                         t'        t)        |j"                  d
      |z        k(  sJ t        || f   || f   z   || |f   z  | dt        dz
  f      t        j                         ||z   |z  k(  sJ t        || f   || f   z   || |f   z  | dt        dz
  f      t        j                         ||j"                  z   |z  k(  sJ t        || f   || |f   z  |||f   z  | dt        dz
  f|dt        dz
  f      t        j                         |dz  k(  sJ t        || f   || |f   z  |||f   z  | dt        dz
  f|dt        dz
  f      t        j                         |d
z  |z  k(  sJ t        |f   dt        dz
  f      t        j                   d       t+        |      k(  sJ t        |f   || |f   z  |||f   z  dt        dz
  f|dt        dz
  f      t        j                   |       t+        |      |z  |z  k(  sJ t        t        | f   t        | |f   z  t        ||f   z  | dt        dz
  f|dt        f      t-        t.        fd       t        t        | f   t        | |f   z  t        ||f   z  | dt        dz
  f|dt        dz
  f      t-        t.        fd       t        || f   t        || |f   |||f   z  |dt        dz
  f      z  | dt        dz
  f      t        j                         ||z  |z  k(  sJ t        || f   t1        | |      z  |||f   z  | dt        dz
  f|dt        dz
  f      t        j                         ||z  k(  sJ t        t1        |t              t1        |	t2              z  |t4        |f   z  |t6        |	f   z  |dt        dz
  f|	dt        dz
  f      t        j                   t              t9        |j"                  |      k(  sJ t        |||	f   ||	df   z  |	dt        dz
  f      t        j                   |      t;        ||z  |d      k(  sJ t        |||	f   ||	df   z  |	dt        dz
  f      t        j                   |      t;        ||z  |d      k(  sJ y )Nr   )abcdr$   r&   Cw1r(   zi0:5)clsr%   rU   c                  0    t        j                         S r+   r   r   r   r   s   r0   rZ   z=test_matrix_expression_from_index_summation.<locals>.<lambda>      z>>tQG r7   c                  0    t        j                         S r+   r   r   s   r0   rZ   z=test_matrix_expression_from_index_summation.<locals>.<lambda>  r   r7   )	sympy.abcr   r   r   r   r   rF   r   r   r   r   r   r   rl   rE   r   r   rR   r   r   r   r   r   
ValueErrorr   rD   r9   r:   r   r   )r   r   r   r$   r&   r   r   i0r   r   r   i4r   r   s               @@r0   +test_matrix_expression_from_index_summationr      sp   !!S!QAS!QAS!QA	dAq	!B U3BBBq1va!f}QqsV#aAaC[1a1+>D**43qs1u<<<qss1Q3x!A#q1v%1ac{Q1Q3K@D**43qs1u<<<qAwqAwqAw&AqsaAaC[AD,,T15Qq@@@qAwqAwqAw&AqsaAaC[AD,,T15QSSBBBqAwqAwqA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'!1QT7*Q1Q3K8D**43!Qw>>>!Q$!AqD'!1QT7*Q1Q3K8D**43!##qy@@@qAwqAwqAw&AqsaAaC[AD**43q!t;;;qAwqAwqAw&AqsaAaC[AD**43q!tAv=== qAwAqs$D**46%(BBBqAwqAwqAw&AqsaAaC[AD**43uQxz!|CCC
 q1va!f}QqsV#aAaC[1a)<D
:GHq1va!f}QqsV#aAaC[1a1+>D
:GH qAws1QT71QT7?Q1Q3K881a1+FD**43qs1u<<< qAw~a++AadG3aAaC[1a1+ND**43qs:::~b!$^B%::1QU8CAaeHLrSTVWXYVYl]_abdefgdg\hiD**437I!##q7QQQQ qRyBE"RAaCL1D**44adBPQ8RRRRqRy2q5!B1Q3<0D**44ac2q8QQQQr7   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   rF   rl   rE   rD   r9   r:   r   r   r   r   r    r!   r"   r#   r$   r&   r'   rB   r6   r<   rK   rP   rS   r]   rf   rm   rt   r{   r}   r   r   r   r   r;   r7   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r7   