
    g/                        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. ZDd/S )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                  v     t           d          t           fdddt           j        fD                       sJ d S )N)r(   r%   c              3   :   K   | ]}|t                    v V  d S N)str).0sx12s     j/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_indexing.py	<genexpr>z)test_symbolic_indexing.<locals>.<genexpr>'   s-      99qCHH}999999    12)r   allname)r/   s   @r0   test_symbolic_indexingr7   %   sD    
D'C9999sC&89999999999r2   c                      t           t          z   t          t          f         t           t          t          f         t          t          t          f         z   k    sJ d S r+   )r   r   ij r2   r0   test_add_indexr<   ,   s:    E1a4=AadGa1g-------r2   c                     t           t          z  d         t           d         t          d         z  t           d         t          d         z  z   k    sJ t           t          z                                  t                                           t                                          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
        d	         t                    sJ |j
        d
         d
d          |j
        d
         d
d          k    sJ d S )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BS!QAS!QAc3ZF1QT71QT7?Q1q5M22H;q>""8=#3Q77777;q>!""q!1!""!5555555r2   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 d S )Nr%   r>   r?   r@   rD   r(   r(   rA   )r   r$   r   r   )QrD   Q2s      r0   test_pow_indexrP   <   sV   q!AT7agqj1T71T7?2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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QR	

 
 
 
 
 
 
r2   c                  |    t           j        t          t          f         t           t          t          f         k    sJ d S r+   )r   Tr9   r:   r;   r2   r0   test_transpose_indexrS   S   s+    3q!t9!Q$r2   c                  2    t          d            d          d         cxk    r d         cxk    rdk    sn J  d          d         cxk    r d         cxk    rd	k    sn J  t          d	f         j        d
k    sJ t          t           fd           d S )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 r2   )r   r9   delta_ranger   
IndexErrorrX   s   @r0   test_Identity_indexr]   W   s    AT7ag----4----A------T7ag----4----A------QT7&((((
:'''''r2   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n J |d         |d         cxk    rd	k    sn J t          ||g||gg          }|                                |                                k    sJ t          | |g|| gg          }|                                                    t	          d
                    sJ d S )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   _   sh   A1aAaVaV$%%A	Q	 	 B	r2hR)	*	*BT7ag888848888AdG8888q888888T7ag""""""""""	r2hR)	*	*B==??bnn......	q!fq!f%	&	&B>>""3q66*******r2   c                  v   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 d S )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LLQT7mAq!,,,,,,QUAE\?mAq1ua!e<<<<<<QUQYA	!"mAq1uqy!a%!)&L&LLLLLLLr2   c                  &   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 d S )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99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6QT7mAq!,,,,,,QUAE\?bAh&&&&QUQYA	!"bQAEAI)=&>>>>>QUAE\?bAh&&&&&&r2   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 d S )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44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<<<<<<<<r2   c                      t          dt          d          } t          dt          d          }t          | g|gg          }|dt          z  df         |t          df         k    sJ d S )Nrh   r(   ri   r%   r   )r   rD   rE   r
   )rh   ri   r$   s      r0   test_block_index_symbolic_failr}      sf    
 
dAq	!	!B	dAq	!	!BbTB4L!!AQUAX;"QT(""""""r2   c                  L    t                                           dd d f          d S )Nr   )r$   ra   r;   r2   r0   test_slicingr      s#    MMOOAqqqDr2   c                  ^    t          t          d            t          t          d            d S )Nc                  ,    t          d          d         S Nr%   )r(   r%   rU   rA   r_   r   r;   r2   r0   rZ   ztest_errors.<locals>.<lambda>   s    x{{=9 r2   c                  0    t          d          g d         S r   r   r;   r2   r0   rZ   ztest_errors.<locals>.<lambda>   s    x{{???; r2   )r   r\   r;   r2   r0   test_errorsr      s0    
:99:::
:;;<<<<<r2   c                     t          d          \  } }t          d          \  }}}d }t          t          z  t          z  } ||                    | |                    t          t          | |f         t          ||f         z  t          ||f         z  |dt          dz
  f|dt          dz
  f          k    sJ t          j	        |                    | |                    |k    sJ t          j
        t          j
        z  t          j
        z  } ||                    | |                    t          t          ||f         t          ||f         z  t          || f         z  |dt          dz
  f|dt          dz
  f          k    sJ t          j	        |                    | |          |           |k    sJ t          t          z  t          z  t          t          z  t          z  z   } ||                    | |                    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	        |                    | |                    |k    sJ dt          z  t          z  t          z  dt          z  t          z  t          z  z   } ||                    | |                    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	        |                    | |                    |k    sJ t          t          t          z   z  t          z  } ||                    | |                    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	        |                    | |                    |k    sJ t          t          dz  z  t          z  }t          t          z  t          t          z  z   t           z  } ||                    | |                    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 d S )Nzi, jzi_1:4c                 t    d |                      t                    D             }|                     |          S )Nc                 8    i | ]}|t          |j                  S r;   )r   r6   )r-   r9   s     r0   
<dictcomp>zNtest_matrix_expression_to_indices.<locals>.replace_dummies.<locals>.<dictcomp>   s"    ===a6!&>>===r2   )atomsr   xreplace)exprrepls     r0   replace_dummiesz:test_matrix_expression_to_indices.<locals>.replace_dummies   s3    ==4::e+<+<===}}T"""r2   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      st   6??DAq!!JBB# # # Q3q5D?4;;q!,,--AaeHQr2vYqQx'"a1Aqs|DDE E E E*4;;q!+<+<==EEEE3qs713;D?4;;q!,,--AaeHQr2vYqQx'"a1Aqs|DDE E E E*4;;q!+<+<a@@DHHHHQ3q51Q3q5=D?4;;q!,,--AaeHQr2vYqQx'"a1Aqs|DDAaeHQr2vYqQx'"a1Aqs|DD	EE E E E *4;;q!+<+<==EEEEQ3q57QqSU1WD?4;;q!,,--	#a2hqRy 2q5)B1Q3<"a1
F
FF	#a2hqRy 2q5)B1Q3<"a1
F
FF	GG G G G *4;;q!+<+<==EEEEa!e9Q;D?4;;q!,,--!R%!BF)aBi/02q59B1Q3<"aQRSTQTVVW W W W*4;;q!+<+<==EEEEQT6!8D
 rEBrEM2D?4;;q!,,--Bq"uI2r6
*RAEN;;c"RV*rRSUWRWyBX[]_`bcfgbgZh>i>iimo1un Aq1u~' '' ' ' ' ' 'r2   c            
      t   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 d S )Nr   )abcdr$   r&   Cw1r(   zi0:5)clsr%   rU   c                  .    t          j                   S r+   r   r   r   r   s   r0   rZ   z=test_matrix_expression_from_index_summation.<locals>.<lambda>      z>tQGG r2   c                  .    t          j                   S r+   r   r   s   r0   rZ   z=test_matrix_expression_from_index_summation.<locals>.<lambda>  r   r2   )	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      sZ	   !!!!!!!!!!!!S!QAS!QAS!QA	dAq	!	!B U333BBBq1va!f}QqsV#aAaC[1a1+>>D*433qs1u<<<<qs1Q3x!A#q1v%1ac{Q1Q3K@@D*433qs1u<<<<qAwqAwqAw&AqsaAaC[AAD,T155Qq@@@@qAwqAwqAw&AqsaAaC[AAD,T155QSBBBBqAwqAwqAw&AqsaAaC[AAD,T155QSBBBBqAw1a4 1a1+1ac{;;D*433yAq7HSTVW7X[defhi[j[jkl[lmvwxz{m|m|[|7|||||qAwzAq!a%=1aQ-88D*433uQW~~EEEEqAwzAq!a%=1aQ-88D*433u]13PQ=R=RUV=V7W7WWWWW!Q$!AqD'!1QT7*Q1Q3K88D*433!Qw>>>>!Q$!AqD'!1QT7*Q1Q3K88D*433!#qy@@@@qAwqAwqAw&AqsaAaC[AAD*433q!t;;;;qAwqAwqAw&AqsaAaC[AAD*433q!tAv==== qAwAqs$$D*466%((BBBBqAwqAwqAw&AqsaAaC[AAD*433uQxxz!|CCCC
 q1va!f}QqsV#aAaC[1a)<<D
:GGGGGHHHq1va!f}QqsV#aAaC[1a1+>>D
:GGGGGHHH qAws1QT71QT7?Q1Q3K8881a1+FFD*433qs1u<<<< qAw~a+++AadG3aAaC[1a1+NND*433qs::::~b!$$^B%:%::1QU8CAaeHLrSTVWXYVYl]_abdefgdg\hiiD*4337I!#q7Q7QQQQQ qRyBE"RAaCL11D*444adBPQ8R8RRRRRqRy2q5!B1Q3<00D*444ac2q8Q8QQQQQQQr2   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   r7   r<   rK   rP   rS   r]   rf   rm   rt   r{   r}   r   r   r   r   r;   r2   r0   <module>r      sv   ) ) ) ) ) ) 4 4 4 4 4 4 4 4 4 4 9 9 9 9 9 9 C C C C C C $ $ $ $ $ $ > > > > > > = = = = = =          4 4 4 4 4 4          9 9 9 9 9 9 9 9 4 4 4 4 4 4 O O O O O O . . . . . . . .WY---
1awud###1LaLaLaLa\$1\$1\$1\$1LaLaLaLa: : :. . .	6 	6 	6
 
 
.     ( ( (+ + +"M M M&' ' '(= = =  # # #  = = =
+' +' +'\BR BR BR BR BRr2   