o
    g/                     @   s  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d\Z$Z%Z&Z'ed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&Z0ede&e&Z1edddZ2edddZ3edddZ4edddZ5d d! Z6d"d# Z7d$d% Z8d&d' Z9d(d) Z:d*d+ Z;d,d- Z<d.d/ Z=d0d1 Z>d2d3 Z?e"d4d5 Z@d6d7 ZAd8d9 ZBd:d; ZCd<d= ZDd>S )?    )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                      s.   t d  t fddddt jfD sJ d S )N)r'   r$   c                 3   s    | ]	}|t  v V  qd S N)str).0sx12 e/var/www/visachat/venv/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_indexing.py	<genexpr>'   s    z)test_symbolic_indexing.<locals>.<genexpr>12)r   allnamer.   r.   r,   r/   test_symbolic_indexing%   s   &r5   c                   C   s0   t t ttf t ttf tttf  ksJ d S r(   )r   r   ijr.   r.   r.   r/   test_add_index,   s   0r8   c                  C   s   t t d t d td  t d td   ksJ t t  t  t  ks(J tdtt} tdtt}| | d }t| dt	f |t	df  t	d	td
 f}|j
d	 |j
d	 t	s\J |j
d
 d
d  |j
d
 d
d  kspJ d S )Nr   r   r   r'   r'   r   r   r   )   r$   r<   r$   r   r'   )r#   yr%   
as_mutabler   nmkr   r6   argsdummy_eq)r   r   resultexpectedr.   r.   r/   test_mul_index0   s   0 (,rF   c               	   C   sp  t td} | d td d td td   ksJ td}t| }|d dttd td  d dtd  td   dtd  td    d td d  td d  |  td  td  ttd d dtd  td   dtd  td   td d  td  td  ttd d dtd  td   dtd  td   td d    dttd td  d dtd  td   dtd  td   d td d  td d  |  td  td  ttd d dtd  td   dtd  td   td d   td  td  ttd d dtd  td   dtd  td   td d     ks6J d S )Nr$   r9   r:   r;   r?   r'   r'   r<   )r   r#   r   r   )Qr?   Q2r.   r.   r/   test_pow_index<   sr   
((

4
B(

4
BrJ   c                   C   s"   t jttf t ttf ksJ d S r(   )r   Tr6   r7   r.   r.   r.   r/   test_transpose_indexS   s   "rL   c                      s   t d  d  d   kr d   krdksJ  J  d  d   kr3 d   kr3d	ks6J  J  td	f jd
ksAJ tt fdd d S )N   r9   rG   )r$   r$   r'   r;   r:   )r$   r'   r   )r   r$   c                      s    d S )NrM   rM   r.   r.   Ir.   r/   <lambda>\   s    z%test_Identity_index.<locals>.<lambda>)r   r6   delta_ranger   
IndexErrorr.   r.   rO   r/   test_Identity_indexW   s
   22rT   c                  C   s   t d} tdd}t| | g| | gg}ttd}t||g||gg}|d |d   kr@|d   kr@|d   kr@dksCJ  J |d |d   krRd	ksUJ  J t||g||gg}| | ksiJ t| |g|| gg}| td
s~J d S )NrM   r9   )rM   r   )r   rM   rN   r'   )r<   rM   )   r'   r      )r   r   r	   r   r   as_explicitequals)rP   r   r%   e3BBBIr.   r.   r/   test_block_index_   s   
@$r\   c                  C   s  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 td f | td td f ksDJ |ttf |d ksPJ |tt d df t|tt d dksfJ |dtt d f t|dtt d ks|J |tt d tt d f t|tt d tt d ksJ |ttf t|ttksJ |tt tt f t|tt tt ksJ |tt d tt d f t|tt d tt d ksJ d S )NA1A2A3A4r9   r   r'   )	r   r?   rA   lr@   r	   r   r6   r7   )r]   r^   r_   r`   r#   r.   r.   r/   test_block_index_symbolicp   s   ,,,<,@rb   c                  C   s  t dddd\} }}}t dddd\}}td|| }td||}td|| }td	||}	t||g||	gg}
|
d
 |d
 ks@J |
|| d df ||d df ksTJ |
d| | d f |d|d f kshJ |
|| d | | d f |	|d |d f ksJ |
||f t|
||ksJ |
|| | | f |	||f ksJ |
|| d | | d f ||| d | | d f ksJ |
d| d|  f |	|| f ksJ d S )Nr   Tr   positiver   r   nonnegativer]   r^   r_   r`   r9   r'   r   r$   r   r   r	   r   )rA   ra   r@   r?   r6   r7   r]   r^   r_   r`   r#   r.   r.   r/   !test_block_index_symbolic_nonzero   s   ((4$<(rh   c                  C   s   t dddd\} }}t d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}|| | | | f t|| | | | ksmJ d S )Nzn m kTrc   r6   re   r]   r^   r_   r`   A5A6A7A8A9rg   )r?   r@   rA   r6   r]   r^   r_   r`   ri   rj   rk   rl   rm   r#   r.   r.   r/   test_block_index_large   s    0rn   c                  C   sL   t dtd} t dtd}t| g|gg}|dt df |tdf ks$J d S )Nr]   r'   r^   r$   r   )r   r?   r@   r	   )r]   r^   r#   r.   r.   r/   test_block_index_symbolic_fail   s   $ro   c                   C   s   t  dd d f  d S )Nr   )r#   rW   r.   r.   r.   r/   test_slicing   s   rp   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t dd S Nr$   )r'   r$   rM   r<   rU   r   r.   r.   r.   r/   rQ          ztest_errors.<locals>.<lambda>c                   S   s   t dg d S rq   rr   r.   r.   r.   r/   rQ      s    )r   rS   r.   r.   r.   r/   test_errors   s   rt   c               
   C   s  t d\} }t d\}}}dd }tt t }||| |tt| |f t||f  t||f  |dtd f|dtd fksAJ t	|| ||ksNJ tj
tj
 tj
 }||| |tt||f t||f  t|| f  |dtd f|dtd fksJ t	|| || |ksJ tt t tt t  }||| |tt| |f t||f  t||f  |dtd f|dtd ftt| |f t||f  t||f  |dtd f|dtd f ksJ t	|| ||ksJ dt t t dt t t  }||| |dtt| |f t||f  t||f  |dtd f|dtd f dtt| |f t||f  t||f  |dtd f|dtd f  ksQJ t	|| ||ks_J ttt  t }||| |tt| |f t||f t||f   t||f  |dtd f|dtd fksJ t	|| ||ksJ ttd  t }tt tt  t }||| |ttt| |f t||f  |dtd ftt||f t| |f  |dtd f t||f  |dtd fksJ d S )	Nzi, jzi_1:4c                 S   s   dd |  tD }| |S )Nc                 S   s   i | ]}|t |jqS r.   )r   r4   )r*   r6   r.   r.   r/   
<dictcomp>   s    zNtest_matrix_expression_to_indices.<locals>.replace_dummies.<locals>.<dictcomp>)atomsr   xreplace)exprreplr.   r.   r/   replace_dummies   s   
z:test_matrix_expression_to_indices.<locals>.replace_dummiesr   r'   r$   rM   )r   r   r   r   _entryr   ra   r@   r   from_index_summationrK   r   r#   r%   r   r    r!   )r6   r7   i1i2i3rz   rx   r.   r.   r/   !test_matrix_expression_to_indices   sR   >>>> BB
J
Rr   c                     s  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d	\}}}	}
}t	t
 | f t| |f  t||f  | dtd f|dtd ft t
t t ks]J t	t
j|  f t| |f  t||f  | dtd f|dtd ft t
t t ksJ t	||  f || |f  |||f  | dtd f|dtd ft |j| | ksJ t	||  f ||| f  |||f  | dtd f|dtd ft |j|j | ksJ t	|||f ||  f  ||| f  | dtd f|dtd ft |j|j | ksJ t	| | f | | f   dtd f| dtd ft tdt| ttd tdt| ttd  ksWJ t	| | f d
  dtd f| dtd ft t||j ks}J t	| | f d  dtd f| dtd ft tt|jd
| ksJ t	| | f | | f  || |f  | dtd ft || | ksJ t	| | f ||  f  || |f  | dtd ft ||j | ksJ t	| | f || |f  |||f  | dtd f|dtd ft |d ks&J t	| | f || |f  |||f  | dtd f|dtd ft |d
 | ksUJ t	|  f  dtd ftd t|kspJ t	|  f || |f  |||f   dtd f|dtd ft| t|| | ksJ t	t
 | f t| |f  t||f  | dtd f|dtftt fdd t	t
 | f t| |f  t||f  | dtd f|dtd ftt fdd t	| | f t	|| |f |||f  |dtd f | dtd ft || | ks$J t	| | f t| | |||f  | dtd f|dtd ft || ksPJ t	t|tt|	t |t|f  |t|	f  |dtd f|	dtd fttt|j|ksJ t	|||	f ||	df  |	dtd ft|t|| |dksJ t	|||	f ||	df  |	dtd ft|t|| |dksJ d S )Nr   )abcdr#   r%   Cw1r'   zi0:5)clsr$   rM   c                         t  S r(   r   r|   r.   r   rx   r.   r/   rQ     rs   z=test_matrix_expression_from_index_summation.<locals>.<lambda>c                      r   r(   r   r.   r   r.   r/   rQ     rs   )	sympy.abcr   r   r   r   r   rA   r   r   r   r   r   r   ra   r@   r   r|   rK   r   r   r
   r   r   
ValueErrorr   r?   r6   r7   r   r   )r   r   r   r#   r%   r   r   i0r}   r~   r   i4r.   r   r/   +test_matrix_expression_from_index_summation   s`   @B@@ @"4B, ,&44 @@@"<@D>H("(&r   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   rA   ra   r@   r?   r6   r7   r   r   r   r   r   r    r!   r"   r#   r%   r&   r=   r5   r8   rF   rJ   rL   rT   r\   rb   rh   rn   ro   rp   rt   r   r   r.   r.   r.   r/   <module>   sX    

.