a
    kh	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  sJ tddd tt fdd tddd tt fdd d S )Nr4      r   c                   S   s   t dddS )Nr4   r;   r"    r>   r>   [/var/www/auris/lib/python3.9/site-packages/sympy/matrices/expressions/tests/test_matexpr.py<lambda>%       z-test_matrix_symbol_creation.<locals>.<lambda>c                   S   s   t dddS )Nr4          @r;   r=   r>   r>   r>   r?   r@   &   rA   c                   S   s   t dddS )Nr4                  @r;   r=   r>   r>   r>   r?   r@   '   rA   c                   S   s   t dddS )Nr4   r;   r<   r=   r>   r>   r>   r?   r@   (   rA   c                   S   s   t dddS )Nr4   r;   rB   r=   r>   r>   r>   r?   r@   )   rA   c                   S   s   t dddS )Nr4   r;   rC   r=   r>   r>   r>   r?   r@   *   rA   nFr1   c                      s   t d  S Nr4   r=   r>   rD   r>   r?   r@   /   rA   T)negativec                      s   t d  S rE   r=   r>   rF   r>   r?   r@   1   rA   )r"   r-   
ValueErrorr   r>   r>   rF   r?   test_matrix_symbol_creation"   s    rI   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sLJ t d jjdks`J d S )Nr   r:   r   r   r4   )	r4   shaperD   mr5   lindicessymbolnamer>   r>   r>   r?   test_matexpr_properties4   s
    rR   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sDJ tt jttfksZJ d S Nr;   )	r3   r4   rL   	__class__r   r+   r5   rD   rN   r>   r>   r>   r?   test_matexpr<   s    rU   c                     s  t dtt} t dtt}t dtt}| ttjttfks>J | | ||| | ksZJ | | ttjspJ t ddd t dddt dd	dt d
tdksJ td}td|j|ddfksJ d   d ksJ t	t
fdd d d ks*J  d  d ksHJ 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                      s    d   S )Nr\   subsr>   )rX   rY   r>   r?   r@   [   rA   z#test_matexpr_subs.<locals>.<lambda>rJ   r;   r:   c                      s    d   S )Nr;   r;   r]   r>   )rV   rZ   r>   r?   r@   b   rA   c                      s    d   tdS )Nr`   r;   )r^   r   r>   )rV   r>   r?   r@   d   rA      r7   )r"   rD   rM   rN   r^   rL   Z	is_squarer	   argsr-   
IndexErrorr#   r    r   )r4   r5   r6   r[   r7   r>   )rV   rX   rY   rZ   r?   test_matexpr_subsC   s.     rd   c                     s   t dtt t dtt} t |  ts*J  |  j jks>J t   d|   tsXJ tt fdd tt fdd tt fdd  t	tt   t	ttksJ ttdd  d S )	Nr4   r5   r;   c                      s    d S Nr:   r>   r>   r4   r>   r?   r@   u   rA   ztest_addition.<locals>.<lambda>c                      s   d  S N   r>   r>   rf   r>   r?   r@   v   rA   c                      s   d  S rg   r>   r>   rf   r>   r?   r@   w   rA   c                   S   s   t tttj S N)r+   rD   rM   r   Zeror>   r>   r>   r?   r@   z   rA   )
r"   rD   rM   
isinstancer   rL   r   r-   	TypeErrorr+   r5   r>   rf   r?   test_additionm   s     rn   c                     s`  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sXJ d|  j| jkslJ | ttt   tttksJ |tt |j ttksJ  d tj	  ksJ t
t fdd t dtt} t dtt tt|    |   ksJ | d |  | d ks"J | d | jd  | jks@J | d | jd  | ks\J d S )	Nr4   r5   r6   r;   r   c                      s   d  S rS   r>   r>   rm   r>   r?   r@      rA   z%test_multiplication.<locals>.<lambda>rW   )r"   rD   rM   rN   rL   r+   r,   Ir   Halfr-   NotImplementedError)r4   r6   r>   rm   r?   test_multiplication}   s      rr   c                  C   s   t dtt} t| d}|jdks$J |j| ks2J | t jtksDJ | d ttksXJ | d | kshJ | d |ksxJ | d t| ksJ | d d | ksJ | d d | d ksJ | tj t	| ksJ | t
dd t| ksJ ttdd	  d S )
Nr4   r;   r   r:   r<   rW      c                   S   s   t dddd S )Nr5   rW   r;   r=   r>   r>   r>   r?   r@      rA   ztest_MatPow.<locals>.<lambda>)r"   rD   r   r   baser,   r   r   rp   r   r   r   r-   r'   )r4   ZAAr>   r>   r?   test_MatPow   s    
ru   c                     sV   t d\ td } | j fks,J tt fdd |  | ksRJ d S )Nzn,m,trX   c                      s   t d S )NrX   r=   r>   rM   rD   tr>   r?   r@      rA   z#test_MatrixSymbol.<locals>.<lambda>)r   r"   rL   r-   rl   doitrX   r>   rv   r?   test_MatrixSymbol   s
    rz   c                      sP   t ddd t tdd fddks,J t tdd fddksLJ d S )NrX   r;   c                    s    | |f S ri   r>   ijry   r>   r?   r@      rA   z'test_dense_conversion.<locals>.<lambda>c                    s    | |f S ri   r>   r{   ry   r>   r?   r@      rA   )r"   r   r    r>   r>   ry   r?   test_dense_conversion   s     r~   c                   C   s   t t jt thksJ d S ri   )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 )NrX   r;   )rk   r   rj   r"   r!   r>   r>   r>   r?   test_zero_matmul   s    r   c                  C   sP   t ddd} tt| tttd ttd  ggt| tdggksLJ d S Nr4   r:   r;   )r"   r   r   r   r   r3   r   r    rf   r>   r>   r?   test_matadd_simplify   s    (r   c                  C   sP   t ddd} tt| tttd ttd  ggt| tdggksLJ d S r   )r"   r   r   r   r   r3   r   r    rf   r>   r>   r?   test_matmul_simplify   s    (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svJ qvd S )Nr4   r5   rX   r;   r<   r   )r"   rD   rM   rN   r,   r+   r   r   r$   r%   r   r   rT   rb   )r4   r5   rX   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  qXqJd S )Nr4   r:   r;   r:   r;   r<   )r"   rD   rM   rN   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s8J  d  d ksLJ t d dd df  d  d  d  d gksJ 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sJ d S )Nr4   r;   rW   r:   rJ   r:   r   rK   r\   c                      s    d S )Nrs   r>   r>   rf   r>   r?   r@      rA   z&test_single_indexing.<locals>.<lambda>c                      s    t  S ri   rF   r>   rf   r>   r?   r@      rA   r5   c                      s    d S re   r>   r>   rm   r>   r?   r@      rA   )r"   intlistr-   rc   rD   rM   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 )NrJ   r   rf   r>   r>   r>   r?   test_MatrixElement_commutative   s    r   c                  C   sh  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sJ t ddd}t| |  t| |   kr^| |  ksdn J d S )Nr4   ra   rK   r\   r`   )rW   rW   )r;   rW   )rW   r;   r   r_   )rW   r:   )r:   rW   rJ   r   )r;   r   rW   r   r   r;   )r   rW   r5   )r"   as_explicitr)   r(   rx   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   rK   )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s8J d S )Nur;   r:   rW   rh   rK   )r"   r   r^   rx   )r   vr>   r>   r?   test_MatrixElement_doit  s    r   c                  C   s   t t} t| d | d ks"J | t | ks2J t| d | d ksLJ | d | ks\J t| d | d ksvJ t d}t|d |t ksJ t|d |ksJ t|d |d ksJ t|d |d ksJ d S )NrW   r   r;   r   ra   )r,   rD   r   rx   )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sZJ tt fdd t ddtd d ksJ ttfdd d td ksJ d tdksJ ttfd	d d S )
Nra   c                      s    d S Nr   r>   r>   z1r>   r?   r@   "  rA   z!test_Zero_power.<locals>.<lambda>r   r;   c                      s   t  d S r   r   rx   r>   r   r>   r?   r@   %  rA   rW   c                      s    d S )Nr>   r>   z2r>   r?   r@   (  rA   c                      s   t  d S Nr<   r   r>   r   r>   r?   r@   +  rA   )r+   rD   r-   rH   r,   r   rx   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szJ td}| t	t|tdtd ftt|f  |dtd fsJ | 
 tttf ksJ d S )Nr   r:   rK   _i_1)r   r7   r9   r   pr
   rD   r   Zdummy_eqr   rx   )Zdexprr   r>   r>   r?   test_matrixelement_diff.  s    "::r   c                     sn  t d\} }}}t| |g||gg t d\} |f }t|tsJJ tddgddgg}||f }t|tsxJ dD ]L\}}	||||	i ||	f ksJ ||||	i|||	f ks|J q|tddd}
|
d	 |
 | ksJ |
|f |
  |f ksJ  |f  |
|
|f ks:J t d d |f tsZJ  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;   rW   ra   rh   )rK   rJ   r   r\   r4   rK   r:   r   r   rJ   c                      s    df S rS   r>   r>   r   r|   r>   r?   r@   Q  rA   z0test_MatrixElement_with_values.<locals>.<lambda>c                      s    df S r   r>   r>   r   r>   r?   r@   R  rA   c                      s    df S rS   r>   r>   r   r>   r?   r@   S  rA   c                      s    df S r   r>   r>   r   r>   r?   r@   T  rA   )
r   r    rk   r*   r#   r^   r"   r   r-   rH   )r3   r[   zr9   r}   ZMijZMsZmsijZoiZojr4   r>   r   r?   test_MatrixElement_with_values8  s2    "$&& 0""4r   c                  C   s   t ddd} |  | d ks J t ddd }| td|d  ggksPJ t ddd }|d |d  |d	 |d
   }t|d |d	  g|d
  |d gg| }| |ksJ d S )Nr5   rW   r<   rX   r:   rK   r;   r\   rJ   r   )r"   invr   r    )r5   rX   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sTJ t||ksdJ t||kstJ |d | d |d  | d t |d   d  | d  }tt}t||t |d | d |t  |d  d  | d  fv sJ d S )Nr4   r5   r<   )r"   rD   r6   r7   r   r   r,   )r4   r5   expr1expr2exprro   r>   r>   r?   test_factor_expandf  s     8r   c                     s   zddl mm}  W n ty.   td Y n0 tddd t ddt ddgt ddt ddgg}|  |sJ |  dd|sJ ttd		d
d dkrt
t fdd 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?   r@     rA   z'test_numpy_conversion.<locals>.<lambda>)r   r   r   ImportErrorr/   r"   r*   r   r0   splitr-   rl   )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sdJ d S )Nr4   rh   r;   rK   rJ   r   r\   )r"   Tro   r   r    rf   r>   r>   r?   test_issue_2749  s    .r   c                  C   s:   t ddd} | j|   d t| d d ggks6J d S )Nr3   r:   r<   rK   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 sFJ tdd} tdd}t| |dkslJ d S )	Nr4   rW   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sJ d S )Nrw   r3   )r   r   r   r   r   r   r    )rw   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sJ t|d t |ksJ d S )Nr4   r;   rW   r5   r   rJ   r   r\   r_   r   rK   )r"   r    Zadjugater^   r3   r   rx   )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r6| |fv s<n 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r|ksn J tddd}t||t||ksJ t||t||ksJ tt||}t|t|}t||t}||  kr |  kr t||ks&n J tt||}t|t|}t||t}||  krt|  krtt||kszn 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:   rW   ra   r4   )r   r+   r   r    r3   r"   r   )r   r   r   ZMxr4   abcr>   r>   r?   test_MatMul_postprocessor  s,    
* &00  r   c                  C   s(   t d} t| tjttj| ks$J d S rS   )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.n J ttj| }|t| tjksNJ t|ts\J |jtj| fkspJ ttj| }|t| tjksJ t|tsJ |jtj| fksJ t| tj}t|tsJ |jtj| fksJ tddgddgg}tt	|}|t|t	ksJ t|ts"J |jt	|fks6J t
ddd}t||t||  krj|| kspn J tt	||}|t|t	|  krt||t	  krtt	||  krt|t	|  krt||t	ksn J t|tsJ |jt	|| fksJ t||d| ks&J t|||t|||  krjt|||  krj|d|  kspn J t|t	||t	}t|tsJ |jdt	 |d|  fksJ d S r   )r   r   r   Infinityrk   rb   ZComplexInfinityr   r    r3   r"   )r   r   r   r4   r>   r>   r?   test_MatAdd_postprocessor  s:    &
.jJr   c                  C   sr   t ttt tt  tks J tdt t dt t  } t | tksLJ | jdt t dt t fksnJ d S )Nr;   ra   )typer   r6   r7   r   rb   )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sDJ || dksTJ t|trbJ t|trpJ d S )Nr4   r;   r5   r   )r"   r   rk   )r4   r5   r   r   r>   r>   r?   test_exp  s    r   c                   C   s   t tdd  d S )Nc                   S   s   t dddS )Nr:   r;   r4   r=   r>   r>   r>   r?   r@     rA   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sTJ d S )Nr4   T)complexr;   rW   r   )r   r"   rx   r^   rb   )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sHJ ttd
d  d S )NrZ   r;   rW   rK   rJ   r   r   r\   r   c                   S   s   t  S ri   )r4   r   r>   r>   r>   r?   r@   ,  rA   z"test_as_explicit.<locals>.<lambda>)r"   r   r   r-   rH   )rZ   r>   r>   r?   test_as_explicit&  s    r   c                     sT  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 sNJ tdd v sdJ tt fdd tt fd	d t t	t
tjd t v sJ 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sJ |  v tjks&J ttdd  ttdd  ttdd  d S )Nr;   )setr`   r:   rW   ra   c                      s   t  v S ri   rf   r>   r   r>   r?   r@   7  rA   z test_MatrixSet.<locals>.<lambda>c                      s   d v S re   r>   r>   r   r>   r?   r@   8  rA   c                      s   t  v S ri   )r6   r>   r   r>   r?   r@   ;  rA   c                      s    v S ri   r>   r>   r   rX   r>   r?   r@   <  rA   >   r:   r;   rW   c                   S   s   t ddtjS )Nr;   r   r&   r   Realsr>   r>   r>   r?   r@   B  rA   c                   S   s   t ddtjS )Ng333333@r<   r   r>   r>   r>   r?   r@   C  rA   c                   S   s   t dddS )Nr;   )r:   r;   rW   )r&   r>   r>   r>   r?   r@   D  rA   )r&   r   r   rL   r   r    r+   r-   rl   rD   rM   r4   falserH   )rY   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sJ |  |  |  | |  |ksJ | | |  || j|j    | d | |  || j  ||j  ksJ d S )Nr4   r;   r5   )r"   r+   r   r   r   )r4   r5   rZ   r>   r>   r?   test_matrixsymbol_solvingG  s    
  $$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   rD   rM   rN   r   r   r3   r4   r5   r6   r7   r8   r9   rI   rR   rU   rd   rn   rr   ru   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?   <module>   s   $ 8*



/	