o
    GZh/                     @   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Zx12 ]/var/www/auris/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   &r4   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r7   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%   Z
as_mutabler   nmkr   r5   argsZdummy_eq)r   r   resultexpectedr-   r-   r.   test_mul_index0   s   0 (,rC   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$   r8   r9   r:   r=   r'   r'   r;   )r   r#   r   r   )Qr=   ZQ2r-   r-   r.   test_pow_index<   sr   
((

4
B(

4
BrF   c                   C   s"   t jttf t ttf ksJ d S r(   )r   Tr5   r6   r-   r-   r-   r.   test_transpose_indexS   s   "rH   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   r8   rD   )r$   r$   r'   r:   r9   )r$   r'   r   )r   r$   c                      s    d S )NrI   rI   r-   r-   Ir-   r.   <lambda>\   s    z%test_Identity_index.<locals>.<lambda>)r   r5   Zdelta_ranger   
IndexErrorr-   r-   rK   r.   test_Identity_indexW   s
   22rO   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 )NrI   r8   )rI   r   )r   rI   rJ   r'   )r;   rI   )   r'   r      )r   r   r	   r   r   as_explicitequals)rL   r   r%   Ze3BBZBIr-   r-   r.   test_block_index_   s   
@$rU   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A4r8   r   r'   )	r   r=   r?   lr>   r	   r   r5   r6   )rV   rW   rX   rY   r#   r-   r-   r.   test_block_index_symbolicp   s   ,,,<,@r[   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   Zpositiver   r   ZnonnegativerV   rW   rX   rY   r8   r'   r   r$   r   r   r	   r   )r?   rZ   r>   r=   r5   r6   rV   rW   rX   rY   r#   r-   r-   r.   !test_block_index_symbolic_nonzero   s   ((4$<(r_   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 kTr\   r5   r]   rV   rW   rX   rY   A5A6A7A8A9r^   )r=   r>   r?   r5   rV   rW   rX   rY   r`   ra   rb   rc   rd   r#   r-   r-   r.   test_block_index_large   s    0re   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 )NrV   r'   rW   r$   r   )r   r=   r>   r	   )rV   rW   r#   r-   r-   r.   test_block_index_symbolic_fail   s   $rf   c                   C   s   t  dd d f  d S )Nr   )r#   rR   r-   r-   r-   r.   test_slicing   s   rg   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t dd S Nr$   )r'   r$   rI   r;   rP   r   r-   r-   r-   r.   rM          ztest_errors.<locals>.<lambda>c                   S   s   t dg d S rh   ri   r-   r-   r-   r.   rM      s    )r   rN   r-   r-   r-   r.   test_errors   s   rk   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   r3   )r*   r5   r-   r-   r.   
<dictcomp>   s    zNtest_matrix_expression_to_indices.<locals>.replace_dummies.<locals>.<dictcomp>)Zatomsr   Zxreplace)exprreplr-   r-   r.   replace_dummies   s   
z:test_matrix_expression_to_indices.<locals>.replace_dummiesr   r'   r$   rI   )r   r   r   r   Z_entryr   rZ   r>   r   from_index_summationrG   r   r#   r%   r   r    r!   )r5   r6   i1i2i3ro   rm   r-   r-   r.   !test_matrix_expression_to_indices   sR   >>>> BB
J
Rrt   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$   rI   c                         t  S r(   r   rp   r-   ru   rm   r-   r.   rM     rj   z=test_matrix_expression_from_index_summation.<locals>.<lambda>c                      r|   r(   r}   r-   r~   r-   r.   rM     rj   )Z	sympy.abcru   rv   rw   rx   r   r?   r   r   r   r   r   r   rZ   r>   r   rp   rG   r   r   r
   r   r   
ValueErrorr   r=   r5   r6   r   r   )rv   rw   rx   r#   r%   ry   rz   Zi0rq   rr   rs   i4r-   r~   r.   +test_matrix_expression_from_index_summation   s`   @B@@ @"4B, ,&44 @@@"<@D>H("(&r   N)EZsympy.concrete.summationsr   Zsympy.core.symbolr   r   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.special.tensor_functionsr   Zsympy.matrices.denser   Z&sympy.matrices.expressions.blockmatrixr	   Z#sympy.matrices.expressions.hadamardr
   Z"sympy.matrices.expressions.matexprr   r   r   Z!sympy.matrices.expressions.matpowr   Z"sympy.matrices.expressions.specialr   r   r   Z sympy.matrices.expressions.tracer   r   Zsympy.matrices.immutabler   Z0sympy.tensor.array.expressions.array_expressionsr   Zsympy.testing.pytestr   r   r?   rZ   r>   r=   r5   r6   r   r   r   r   r   r    r!   r"   r#   r%   r&   r<   r4   r7   rC   rF   rH   rO   rU   r[   r_   re   rf   rg   rk   rt   r   r-   r-   r-   r.   <module>   sX    

.