o
    GZh	H                     @   s  d dl mZ d dlmZ d dlmZ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 d dlmZ d d	lmZmZmZmZmZmZmZ d d
lmZmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ eddd\ZAZBZCZDZEedZFe,deAeBZGe,deBeCZHe,deAeAZIe,deAeAZJe,deBeAZKe,deAdZLdd ZMd d! ZNd"d# ZOd$d% ZPd&d' ZQd(d) ZRd*d+ ZSd,d- ZTd.d/ ZUd0d1 ZVd2d3 ZWd4d5 ZXd6d7 ZYd8d9 ZZd:d; Z[d<d= Z\d>d? Z]d@dA Z^dBdC Z_dDdE Z`dFdG ZadHdI ZbdJdK ZcdLdM ZddNdO Zee=dPdQ ZfdRdS ZgdTdU ZhdVdW ZidXdY ZjdZd[ Zkd\d] Zld^d_ Zme=d`da Zndbdc Zoddde Zpdfdg Zqdhdi Zrdjdk Zsdldm Ztdndo Zudpdq ZvdrS )s    )Sum)	gcd_terms)diffexpand)Eq)DummySymbolStr)KroneckerDelta)zeros)factor)SsymbolsAddMulSympifyErrorRationalFunction)sincostansqrtcbrtexp)simplify)ImmutableMatrixInverseMatAddMatMulMatPowMatrix
MatrixExprMatrixSymbolSparseMatrix	TransposeAdjoint	MatrixSet)NonSquareMatrixError)Determinantdet)MatrixElement)
ZeroMatrixIdentity)raisesXFAILskip)versionz	n m l k pTintegerxABCDEw   c                      s   t dddsJ t dddsJ ttdd  ttdd  ttdd  ttdd  ttd	d  ttd
d  td t d  sFJ tddd tt fdd tddd tt fdd d S )Nr4      r   c                   S      t dddS )Nr4   r;   r"    r?   r?   \/var/www/auris/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_matexpr.py<lambda>%       z-test_matrix_symbol_creation.<locals>.<lambda>c                   S   r<   )Nr4          @r;   r>   r?   r?   r?   r@   rA   &   rB   c                   S   r<   )Nr4                  @r;   r>   r?   r?   r?   r@   rA   '   rB   c                   S   r<   )Nr4   r;   r=   r>   r?   r?   r?   r@   rA   (   rB   c                   S   r<   )Nr4   r;   rC   r>   r?   r?   r?   r@   rA   )   rB   c                   S   r<   )Nr4   r;   rD   r>   r?   r?   r?   r@   rA   *   rB   nFr1   c                         t d  S Nr4   r>   r?   rE   r?   r@   rA   /   rB   T)negativec                      rF   rG   r>   r?   rH   r?   r@   rA   1   rB   )r"   r-   
ValueErrorr   r?   r?   rH   r@   test_matrix_symbol_creation"   s   rK   c                   C   sd   t jttfks	J t t jttfksJ t d jdksJ t d jt ks&J t d jjdks0J d S )Nr   r:   r   r   r4   )	r4   shaperE   mr5   lindicessymbolnamer?   r?   r?   r@   test_matexpr_properties4   s
   rT   c                   C   s^   t t jtjks
J t t jtksJ dt t t ttj ks"J tt jttfks-J d S Nr;   )	r3   r4   rN   	__class__r   r+   r5   rE   rP   r?   r?   r?   r@   test_matexpr<   s   rW   c                     s  t dtt} t dtt}t dtt}| ttjttfksJ | | ||| | ks-J | | ttjs8J t ddd t dddt dd	dt d
tdksZJ td}td|j|ddfksnJ d   d ks|J t	t
fdd d d ksJ  d  d ksJ t	t
 fdd t	t
 fdd td	dgddgg} td	dgddgg}t dddt ddd}}|| || ||it| |ksJ d S )Nr4   r5   r6   W   Xr;   Yr:   Zyr:   r:   c                          d   S )Nr^   subsr?   )rZ   r[   r?   r@   rA   [       z#test_matexpr_subs.<locals>.<lambda>rL   r;   r:   c                      r_   )Nr;   r;   r`   r?   )rX   r\   r?   r@   rA   b   rb   c                      s    d   tdS )Nrd   r;   )ra   r   r?   )rX   r?   r@   rA   d   s       r7   )r"   rE   rO   rP   ra   rN   Z	is_squarer	   argsr-   
IndexErrorr#   r    r   )r4   r5   r6   r]   r7   r?   )rX   rZ   r[   r\   r@   test_matexpr_subsC   s.    (rh   c                     s   t dtt t dtt} t |  tsJ  |  j jksJ t   d|   ts,J tt fdd tt fdd tt fdd  t	tt   t	ttksWJ ttdd  d S )	Nr4   r5   r;   c                      s    d S Nr:   r?   r?   r4   r?   r@   rA   u       ztest_addition.<locals>.<lambda>c                      s   d  S N   r?   r?   rj   r?   r@   rA   v   rk   c                      s   d  S rl   r?   r?   rj   r?   r@   rA   w   rk   c                   S   s   t tttj S N)r+   rE   rO   r   Zeror?   r?   r?   r@   rA   z   rb   )
r"   rE   rO   
isinstancer   rN   r   r-   	TypeErrorr+   r5   r?   rj   r@   test_additionm   s    rs   c                     sX  t dtt} t dtt t dtt}d|    jttfksJ | d   tttks,J d|  j| jks6J | ttt   tttksFJ |tt |j ttksUJ  d tj	  ks`J t
t fdd t dtt} t dtt tt|    |   ksJ | d |  | d ksJ | d | jd  | jksJ | d | jd  | ksJ d S )	Nr4   r5   r6   r;   r   c                      s   d  S rU   r?   r?   rr   r?   r@   rA      rk   z%test_multiplication.<locals>.<lambda>rY   )r"   rE   rO   rP   rN   r+   r,   Ir   Halfr-   NotImplementedError)r4   r6   r?   rr   r@   test_multiplication}   s     rw   c                  C   s   t dtt} t| d}|jdksJ |j| ksJ | t jtks"J | d ttks,J | d | ks4J | d |ks<J | d t| ksFJ | d d | ksPJ | d d | d ks\J | tj t	| ksgJ | t
dd t| kstJ ttdd	  d S )
Nr4   r;   r   r:   r=   rY      c                   S   s   t dddd S )Nr5   rY   r;   r>   r?   r?   r?   r@   rA      rb   ztest_MatPow.<locals>.<lambda>)r"   rE   r   r   baser,   r   r   ru   r   r   r   r-   r'   )r4   ZAAr?   r?   r@   test_MatPow   s   
rz   c                     sV   t d\ td } | j fksJ tt fdd |  | ks)J d S )Nzn,m,trZ   c                      s   t d S )NrZ   r>   r?   rO   rE   tr?   r@   rA      rb   z#test_MatrixSymbol.<locals>.<lambda>)r   r"   rN   r-   rq   doitrZ   r?   r{   r@   test_MatrixSymbol   s
   r   c                      sP   t ddd t tdd fddksJ t tdd fddks&J d S )NrZ   r;   c                        | |f S rn   r?   ijr~   r?   r@   rA      rB   z'test_dense_conversion.<locals>.<lambda>c                    r   rn   r?   r   r~   r?   r@   rA      rB   )r"   r   r    r?   r?   r~   r@   test_dense_conversion   s    $r   c                   C   s   t t jt thksJ d S rn   )r6   r7   Zfree_symbolsr?   r?   r?   r@   test_free_symbols   s   r   c                   C   s    t tjtddd tsJ d S )NrZ   r;   )rp   r   ro   r"   r!   r?   r?   r?   r@   test_zero_matmul   s    r   c                  C   P   t ddd} tt| tttd ttd  ggt| tdggks&J d S Nr4   r:   r;   )r"   r   r   r   r   r3   r   r    rj   r?   r?   r@   test_matadd_simplify      (r   c                  C   r   r   )r"   r   r   r   r   r3   r   r    rj   r?   r?   r@   test_matmul_simplify   r   r   c                  C   s   t dtt} t dtt}t dtt}ttttt| t| |t| | t| t	| t
|t|dt|dt|dg}|D ]}||j|j ksGJ q;d S )Nr4   r5   rZ   r;   r=   r   )r"   rE   rO   rP   r,   r+   r   r   r$   r%   r   r   rV   rf   )r4   r5   rZ   Zobjsobjr?   r?   r@   test_invariants   s    "r   c                  C   sp   t dtt} | d  | ttf  | td td f  t ddd} tddD ]}tddD ]}| ||f  q,q%d S )Nr4   r:   r;   r:   r;   r=   )r"   rE   rO   rP   krange)r4   r   r   r?   r?   r@   test_matexpr_indexing   s   r   c                      s   t ddd  d  d ksJ  td  d ksJ  d  d ks&J t d dd df  d  d  d  d gksBJ tt fd	d
 tt fdd
 t dttttfdd
 t dtdd d kssJ d S )Nr4   r;   rY   r:   rL   r:   r   rM   r^   c                          d S )Nrx   r?   r?   rj   r?   r@   rA      rk   z&test_single_indexing.<locals>.<lambda>c                      s    t  S rn   rH   r?   rj   r?   r@   rA      rk   r5   c                      r   ri   r?   r?   rr   r?   r@   rA      rk   )r"   intlistr-   rg   rE   rO   r?   r?   r4   r5   r@   test_single_indexing   s   8r   c                   C   s(   t d t d  t d t d  ksJ d S )NrL   r   rj   r?   r?   r?   r@   test_MatrixElement_commutative   s   (r   c                  C   sj  t ddd} |   | d | d  | d  | d  | d | d  | d  | d   | d | d	  | d
  | d   | d | d	  | d  | d   | d | d  | d
  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d	  | d  | d   | d | d	  | d  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d
  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d
  | d   | d | d  | d
  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d  | d  | d   | d | d	  | d  | d   | d | d	  | d
  | d   ksJ t ddd}t| |  t| |   kr| |  ksJ  J d S )Nr4   re   rM   r^   rd   )rY   rY   )r;   rY   )rY   r;   r   rc   )rY   r:   )r:   rY   rL   r   )r;   r   rY   r   r   r;   )r   rY   r5   )r"   as_explicitr)   r(   r}   r   r?   r?   r@   test_MatrixSymbol_determinant   sd   (		

@r   c                   C   s*   t d t d  t d t d ksJ d S )Nr   rM   )r4   r   r?   r?   r?   r@   test_MatrixElement_diff  s   *r   c                  C   s<   t ddd} tddg}| d | | |d ksJ d S )Nur;   r:   rY   rm   rM   )r"   r   ra   r}   )r   vr?   r?   r@   test_MatrixElement_doit  s   $r   c                  C   s   t t} t| d | d ksJ | t | ksJ t| d | d ks&J | d | ks.J t| d | d ks;J t d}t|d |t ksLJ t|d |ksWJ t|d |d ksdJ t|d |d ksqJ d S )NrY   r   r;   r   re   )r,   rE   r   r}   )MNr?   r?   r@   test_identity_powers  s   r   c                      s   t tt  d  ksJ tt fdd  d ttks J t d  d ks-J tt fdd t ddtd d ksHJ ttfdd d td ks^J d tdkshJ ttfd	d d S )
Nre   c                          d S Nr   r?   r?   z1r?   r@   rA   "  rk   z!test_Zero_power.<locals>.<lambda>r   r;   c                         t  d S r   r   r}   r?   r   r?   r@   rA   %      rY   c                      r   )Nr?   r?   z2r?   r@   rA   (  rk   c                      r   Nr=   r   r?   r   r?   r@   rA   +  r   )r+   rE   r-   rJ   r,   r   r}   r?   r?   )r   r   r@   test_Zero_power  s   

r   c               	   C   s   t tt tdf ttdf } tttf  tttf dks J tttf  td tdtdtd ftdtd ks=J td}| t	t|tdtd ftt|f  |dtd fs^J | 
 tttf ksjJ d S )Nr   r:   rM   _i_1)r   r7   r9   r   pr
   rE   r   Zdummy_eqr   r}   )Zdexprr   r?   r?   r@   test_matrixelement_diff.  s   "::r   c                     s`  t d\} }}}t| |g||gg t d\} |f }t|ts%J tddgddgg}||f }t|ts<J dD ]&\}}	||||	i ||	f ksSJ ||||	i|||	f ksdJ q>tddd}
|
d	 |
 | kswJ |
|f |
  |f ksJ  |f  |
|
|f ksJ t d d |f tsJ  d d |f d
|di d ksJ t df tsJ  df d d	 ksJ  df d
 d ksJ  |f | td
dgddgg|f ksJ tt	 fdd tt	 fdd tt	 fdd tt	 fdd d S )Nzx y z wzi, jr;   rY   re   rm   )rM   rL   r   r^   r4   rM   r:   r   r   rL   c                          df S rU   r?   r?   r   r   r?   r@   rA   Q  rB   z0test_MatrixElement_with_values.<locals>.<lambda>c                      r   r   r?   r?   r   r?   r@   rA   R  rB   c                          df S rU   r?   r?   r   r?   r@   rA   S  rB   c                      r   r   r?   r?   r   r?   r@   rA   T  rB   )
r   r    rp   r*   r#   ra   r"   r   r-   rJ   )r3   r]   zr9   r   ZMijZMsZmsijZoiZojr4   r?   r   r@   test_MatrixElement_with_values8  s2   "$$$.  4r   c                  C   s   t ddd} |  | d ksJ t ddd }| td|d  ggks(J t ddd }|d |d  |d	 |d
   }t|d |d	  g|d
  |d gg| }| |ks^J d S )Nr5   rY   r=   rZ   r:   rM   r;   r^   rL   r   )r"   invr   r    )r5   rZ   ZdetXZinvXr?   r?   r@   test_invW  s     r   c                  C   s   t dtt} t dtt}| | tt  }| t |t  | t  |t  }||ks*J t||ks2J t||ks:J |d | d |d  | d t |d   d  | d  }tt}t||t |d | d |t  |d  d  | d  fv szJ d S )Nr4   r5   r=   )r"   rE   r6   r7   r   r   r,   )r4   r5   expr1expr2exprrt   r?   r?   r@   test_factor_expandf  s    8Dr   c                     s   z
ddl mm}  W n ty   td Y nw tddd t ddt ddgt ddt ddgg}|  |sAJ |  dd|sLJ ttd		d
d dkret
t fdd d S d S )Nr   )arrayarray_equalz?NumPy must be available to test creating matrices from ndarraysr4   r;   r:   Tcopynumpy.c                      s    ddS )NFr   r?   r?   r4   r   r?   r@   rA     rB   z'test_numpy_conversion.<locals>.<lambda>)r   r   r   ImportErrorr/   r"   r*   r   r0   splitr-   rq   )r   Znp_arrayr?   r   r@   test_numpy_conversionu  s   r   c                  C   sh   t ddd} | j|  j t| j|  jd | j|  jd g| j|  jd | j|  jd ggks2J d S )Nr4   rm   r;   rM   rL   r   r^   )r"   Trt   r   r    rj   r?   r?   r@   test_issue_2749  s   .r   c                  C   s:   t ddd} | j|   d t| d d ggksJ d S )Nr3   r:   r=   rM   r   )r"   r   r   r    )r3   r?   r?   r@   test_issue_2750  s   .r   c                  C   sp   t ddd} t ddd}t| |dksJ t| d |d jtu s#J tdd} tdd}t| |dks6J d S )	Nr4   rY   r:   r5   r;   Fr   T)r"   r   funcr+   r   r?   r?   r@   test_issue_7842  s   

r   c                  C   s   t d} td| }|| }t|t||  }t|t|||   }t|t|  || |  }t|g|g|gg}t||g||g||gg}|||ks\J d S )Nr|   r3   )r   r   r   r   r   r   r    )r|   r3   ZdxZexp1Zexp2Zexp3r4   r5   r?   r?   r@   test_issue_21195  s   
 &r   c                  C   s   t ddd} t ddd}| | }t| }t ddd}|| | t|  }|d |d  |d |d   |d	 |d
   }|d t|ksIJ t|d t |ksVJ d S )Nr4   r;   rY   r5   r   rL   r   r^   rc   r   rM   )r"   r    Zadjugatera   r3   r   r}   )r4   r5   JZJinvr   ZJkexpectedr?   r?   r@   test_issue_24859  s   0r   c                  C   s  t d} tdd}td| t| d  kr| |fv sJ  J tddgddgg}ttdt gdt dt gg}tt|t|t  krJ|ksMJ  J tddd}t||t||ks_J t||t||kskJ tt||}t|t|}t||t}||  kr|  krt||ksJ  J tt||}t|t|}t||t}||  kr|  krt||ksJ  J t|||d ksJ t|||t||d ksJ t|||t|d |ksJ t|||t|||ksJ t|t||tt||d ksJ d S Nr;   r   r:   rY   re   r4   )r   r+   r   r    r3   r"   r   )r   r   r   ZMxr4   abcr?   r?   r@   test_MatMul_postprocessor  s,   
, (,,(r   c                  C   s(   t d} t| tjttj| ksJ d S rU   )r   r   r   NaN)r   r?   r?   r@   test_MatAdd_postprocessor_xfail  s    r   c                  C   s  t d} td| t| d  kr| ksJ  J ttj| }|t| tjks(J t|ts/J |jtj| fks9J ttj| }|t| tjksIJ t|tsPJ |jtj| fksZJ t| tj}t|tsgJ |jtj| fksqJ tddgddgg}tt	|}|t|t	ksJ t|tsJ |jt	|fksJ t
ddd}t||t||  kr|| ksJ  J tt	||}|t|t	|  krt||t	  krtt	||  krt|t	|  krt||t	ksJ  J t|tsJ |jt	|| fksJ t||d| ks
J t|||t|||  kr-t|||  kr-|d|  ks0J  J t|t	||t	}t|ts@J |jdt	 |d|  fksPJ d S r   )r   r   r   Infinityrp   rf   ZComplexInfinityr   r    r3   r"   )r   r   r   r4   r?   r?   r@   test_MatAdd_postprocessor  s:   (
,bL$r   c                  C   sr   t ttt tt  tksJ tdt t dt t  } t | tks&J | jdt t dt t fks7J d S )Nr;   re   )typer   r6   r7   r   rf   )r   r?   r?   r@    test_simplify_matrix_expressions  s    &r   c                  C   st   t ddd} t ddd}t| t| }t|t|  }||ks"J || dks*J t|tr1J t|tr8J d S )Nr4   r;   r5   r   )r"   r   rp   )r4   r5   r   r   r?   r?   r@   test_exp  s   r   c                   C   s   t tdd  d S )Nc                   S   r<   )Nr:   r;   r4   r>   r?   r?   r?   r@   rA     rB   z#test_invalid_args.<locals>.<lambda>)r-   r   r?   r?   r?   r@   test_invalid_args  s   r   c                  C   sX   t ddd} t| dd}| }|dd}|j|jksJ |jd |jd ks*J d S )Nr4   T)complexr;   rY   r   )r   r"   r}   ra   rf   )ZA_labelr4   ZA_1ZA_2r?   r?   r@   test_matrixsymbol_from_symbol  s   r   c                  C   sZ   t ddd} |  t| d | d | d g| d | d | d	 ggks$J ttd
d  d S )Nr\   r;   rY   rM   rL   r   r   r^   r   c                   S   s   t  S rn   )r4   r   r?   r?   r?   r@   rA   ,  rk   z"test_as_explicit.<locals>.<lambda>)r"   r   r   r-   rJ   )r\   r?   r?   r@   test_as_explicit&  s   r   c                     sP  t ddtjd  jdksJ  jtjksJ tddgddgg v s'J tdd v s2J tt fdd tt fd	d t t	t
tjd t v sRJ tt fd
d tt fdd t ddh dd tddgddggtddgg}  v tjksJ |  v tjksJ ttdd  ttdd  ttdd  d S )Nr;   )setrd   r:   rY   re   c                         t  v S rn   rj   r?   r   r?   r@   rA   7  rk   z test_MatrixSet.<locals>.<lambda>c                      s   d v S ri   r?   r?   r   r?   r@   rA   8  rk   c                      r   rn   )r6   r?   r   r?   r@   rA   ;  rk   c                      s    v S rn   r?   r?   r   rZ   r?   r@   rA   <  rk   >   r:   r;   rY   c                   S      t ddtjS )Nr;   r   r&   r   Realsr?   r?   r?   r@   rA   B  r   c                   S   r   )Ng333333@r=   r   r?   r?   r?   r@   rA   C  r   c                   S   s   t dddS )Nr;   )r:   r;   rY   )r&   r?   r?   r?   r@   rA   D  rB   )r&   r   r   rN   r   r    r+   r-   rq   rE   rO   r4   falserJ   )r[   r?   r   r@   test_MatrixSet/  s*   
r   c                  C   s  t ddd} t ddd}tdd}|  |  |  | |ksJ |  |  |  |  |ks/J |  |  |  |  |ks?J |  |  |  | |  |ksQJ |  |  |  | |  |kscJ | | |  || j|j    | d | |  || j  ||j  ksJ d S )Nr4   r;   r5   )r"   r+   r   r   r   )r4   r5   r\   r?   r?   r@   test_matrixsymbol_solvingG  s   
  $$Lr   N)wZsympy.concrete.summationsr   Zsympy.core.exprtoolsr   Zsympy.core.functionr   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r   r	   Z(sympy.functions.special.tensor_functionsr
   Zsympy.matrices.denser   Zsympy.polys.polytoolsr   Z
sympy.corer   r   r   r   r   r   r   Zsympy.functionsr   r   r   r   r   r   Zsympy.simplifyr   Zsympy.matricesr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   Zsympy.matrices.exceptionsr'   Z&sympy.matrices.expressions.determinantr(   r)   Z"sympy.matrices.expressions.matexprr*   Z"sympy.matrices.expressions.specialr+   r,   Zsympy.testing.pytestr-   r.   r/   importlib.metadatar0   rE   rO   rP   r   r   r3   r4   r5   r6   r7   r8   r9   rK   rT   rW   rh   rs   rw   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r?   r?   r@   <module>   s    $ 8*



/	