a
    {dD                     @   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= eddd\Z>Z?Z@ZAZBedZCe,de>e?ZDe,de?e@ZEe,de>e>ZFe,de>e>ZGe,de?e>ZHe,de>dZIdd ZJdd  ZKd!d" ZLd#d$ ZMd%d& ZNd'd( ZOd)d* ZPd+d, ZQd-d. ZRd/d0 ZSd1d2 ZTd3d4 ZUd5d6 ZVd7d8 ZWd9d: ZXd;d< ZYd=d> ZZd?d@ Z[dAdB Z\dCdD Z]dEdF Z^dGdH Z_dIdJ Z`dKdL ZadMdN Zbe=dOdP ZcdQdR ZddSdT ZedUdV ZfdWdX ZgdYdZ Zhe=d[d\ Zid]d^ Zjd_d` Zkdadb Zldcdd Zmdedf Zndgdh Zodidj Zpdkdl ZqdmS )n    )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XFAILz	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 )Nr2      r   c                   S   s   t dddS )Nr2   r9   r"    r<   r<   v/var/www/html/stable-diffusion-webui/venv/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 )Nr2          @r9   r;   r<   r<   r<   r=   r>   &   r?   c                   S   s   t dddS )Nr2                  @r9   r;   r<   r<   r<   r=   r>   '   r?   c                   S   s   t dddS )Nr2   r9   r:   r;   r<   r<   r<   r=   r>   (   r?   c                   S   s   t dddS )Nr2   r9   r@   r;   r<   r<   r<   r=   r>   )   r?   c                   S   s   t dddS )Nr2   r9   rA   r;   r<   r<   r<   r=   r>   *   r?   nFr/   c                      s   t d  S Nr2   r;   r<   rB   r<   r=   r>   /   r?   T)negativec                      s   t d  S rC   r;   r<   rD   r<   r=   r>   1   r?   )r"   r-   
ValueErrorr   r<   r<   rD   r=   test_matrix_symbol_creation"   s    rG   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   r8   r   r   r2   )	r2   shaperB   mr3   lindicessymbolnamer<   r<   r<   r=   test_matexpr_properties4   s
    rP   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 Nr9   )	r1   r2   rJ   	__class__r   r+   r3   rB   rL   r<   r<   r<   r=   test_matexpr<   s    rS   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 )Nr2   r3   r4   W   Xr9   Yr8   Zyr8   r8   c                      s    d   S )NrZ   subsr<   )rV   rW   r<   r=   r>   [   r?   z#test_matexpr_subs.<locals>.<lambda>rH   r9   r8   c                      s    d   S )Nr9   r9   r[   r<   )rT   rX   r<   r=   r>   b   r?   c                      s    d   tdS )Nr^   r9   )r\   r   r<   )rT   r<   r=   r>   d   r?      r5   )r"   rB   rK   rL   r\   rJ   Z	is_squarer	   argsr-   
IndexErrorr#   r    r   )r2   r3   r4   rY   r5   r<   )rT   rV   rW   rX   r=   test_matexpr_subsC   s.     rb   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 )	Nr2   r3   r9   c                      s    d S Nr8   r<   r<   r2   r<   r=   r>   u   r?   ztest_addition.<locals>.<lambda>c                      s   d  S N   r<   r<   rd   r<   r=   r>   v   r?   c                      s   d  S re   r<   r<   rd   r<   r=   r>   w   r?   c                   S   s   t tttj S N)r+   rB   rK   r   Zeror<   r<   r<   r=   r>   z   r?   )
r"   rB   rK   
isinstancer   rJ   r   r-   	TypeErrorr+   r3   r<   rd   r=   test_additionm   s     rl   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 )	Nr2   r3   r4   r9   r   c                      s   d  S rQ   r<   r<   rk   r<   r=   r>      r?   z%test_multiplication.<locals>.<lambda>rU   )r"   rB   rK   rL   rJ   r+   r,   Ir   Halfr-   NotImplementedError)r2   r4   r<   rk   r=   test_multiplication}   s      rp   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 )
Nr2   r9   r   r8   r:   rU      c                   S   s   t dddd S )Nr3   rU   r9   r;   r<   r<   r<   r=   r>      r?   ztest_MatPow.<locals>.<lambda>)r"   rB   r   r   baser,   r   r   rn   r   r   r   r-   r'   )r2   ZAAr<   r<   r=   test_MatPow   s    
rs   c                     sV   t d\ td } | j fks,J tt fdd |  | ksRJ d S )Nzn,m,trV   c                      s   t d S )NrV   r;   r<   rK   rB   tr<   r=   r>      r?   z#test_MatrixSymbol.<locals>.<lambda>)r   r"   rJ   r-   rj   doitrV   r<   rt   r=   test_MatrixSymbol   s
    rx   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 )NrV   r9   c                    s    | |f S rg   r<   ijrw   r<   r=   r>      r?   z'test_dense_conversion.<locals>.<lambda>c                    s    | |f S rg   r<   ry   rw   r<   r=   r>      r?   )r"   r   r    r<   r<   rw   r=   test_dense_conversion   s     r|   c                   C   s   t t jt thksJ d S rg   )r4   r5   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 )NrV   r9   )ri   r   rh   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 Nr2   r8   r9   )r"   r   r   r   r   r1   r   r    rd   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   r1   r   r    rd   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 )Nr2   r3   rV   r9   r:   r   )r"   rB   rK   rL   r,   r+   r   r   r$   r%   r   r   rR   r`   )r2   r3   rV   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 )Nr2   r8   r9   r8   r9   r:   )r"   rB   rK   rL   krange)r2   rz   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 )Nr2   r9   rU   r8   rH   r8   r   rI   rZ   c                      s    d S )Nrq   r<   r<   rd   r<   r=   r>      r?   z&test_single_indexing.<locals>.<lambda>c                      s    t  S rg   rD   r<   rd   r<   r=   r>      r?   r3   c                      s    d S rc   r<   r<   rk   r<   r=   r>      r?   )r"   intlistr-   ra   rB   rK   r<   r<   r2   r3   r=   test_single_indexing   s    8r   c                   C   s(   t d t d  t d t d  ks$J d S )NrH   r   rd   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 )Nr2   r_   rI   rZ   r^   )rU   rU   )r9   rU   )rU   r9   r   r]   )rU   r8   )r8   rU   rH   r   )r9   r   rU   r   r   r9   )r   rU   r3   )r"   as_explicitr)   r(   rv   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   rI   )r2   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ur9   r8   rU   rf   rI   )r"   r   r\   rv   )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 )NrU   r   r9   r   r_   )r,   rB   r   rv   )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 )
Nr_   c                      s    d S Nr   r<   r<   z1r<   r=   r>   "  r?   z!test_Zero_power.<locals>.<lambda>r   r9   c                      s   t  d S r   r   rv   r<   r   r<   r=   r>   %  r?   rU   c                      s    d S )Nr<   r<   z2r<   r=   r>   (  r?   c                      s   t  d S Nr:   r   r<   r   r<   r=   r>   +  r?   )r+   rB   r-   rF   r,   r   rv   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   r8   rI   _i_1)r   r5   r7   r   pr
   rB   r   Zdummy_eqr   rv   )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, jr9   rU   r_   rf   )rI   rH   r   rZ   r2   rI   r8   r   r   rH   c                      s    df S rQ   r<   r<   r   rz   r<   r=   r>   Q  r?   z0test_MatrixElement_with_values.<locals>.<lambda>c                      s    df S r   r<   r<   r   r<   r=   r>   R  r?   c                      s    df S rQ   r<   r<   r   r<   r=   r>   S  r?   c                      s    df S r   r<   r<   r   r<   r=   r>   T  r?   )
r   r    ri   r*   r#   r\   r"   r   r-   rF   )r1   rY   zr7   r{   ZMijZMsZmsijZoiZojr2   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 )Nr3   rU   r:   rV   r8   rI   r9   rZ   rH   r   )r"   invr   r    )r3   rV   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 )Nr2   r3   r:   )r"   rB   r4   r5   r   r   r,   )r2   r3   expr1expr2exprrm   r<   r<   r=   test_factor_expandf  s     8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 )Nr2   rf   r9   rI   rH   r   rZ   )r"   Trm   r   r    rd   r<   r<   r=   test_issue_2749v  s    .r   c                  C   s:   t ddd} | j|   d t| d d ggks6J d S )Nr1   r8   r:   rI   r   )r"   r   r   r    )r1   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 )	Nr2   rU   r8   r3   r9   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 )Nru   r1   )r   r   r   r   r   r   r    )ru   r1   ZdxZexp1Zexp2Zexp3r2   r3   r<   r<   r=   test_issue_21195  s    
 &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 Nr9   r   r8   rU   r_   r2   )r   r+   r   r    r1   r"   r   )r   r   r   ZMxr2   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 rQ   )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   Infinityri   r`   ZComplexInfinityr   r    r1   r"   )r   r   r   r2   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 )Nr9   r_   )typer   r4   r5   r   r`   )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 )Nr2   r9   r3   r   )r"   r   ri   )r2   r3   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 )Nr8   r9   r2   r;   r<   r<   r<   r=   r>     r?   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 )Nr2   T)complexr9   rU   r   )r   r"   rv   r\   r`   )ZA_labelr2   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 )NrX   r9   rU   rI   rH   r   r   rZ   r   c                   S   s   t  S rg   )r2   r   r<   r<   r<   r=   r>     r?   z"test_as_explicit.<locals>.<lambda>)r"   r   r   r-   rF   )rX   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 )Nr9   )setr^   r8   rU   r_   c                      s   t  v S rg   rd   r<   r   r<   r=   r>     r?   z test_MatrixSet.<locals>.<lambda>c                      s   d v S rc   r<   r<   r   r<   r=   r>     r?   c                      s   t  v S rg   )r4   r<   r   r<   r=   r>   "  r?   c                      s    v S rg   r<   r<   r   rV   r<   r=   r>   #  r?   >   r8   r9   rU   c                   S   s   t ddtjS )Nr9   r   r&   r   Realsr<   r<   r<   r=   r>   )  r?   c                   S   s   t ddtjS )Ng333333@r:   r   r<   r<   r<   r=   r>   *  r?   c                   S   s   t dddS )Nr9   )r8   r9   rU   )r&   r<   r<   r<   r=   r>   +  r?   )r&   r   r   rJ   r   r    r+   r-   rj   rB   rK   r2   falserF   )rW   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 )Nr2   r9   r3   )r"   r+   r   r   r   )r2   r3   rX   r<   r<   r=   test_matrixsymbol_solving.  s    
  $$r   N)rZ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.commonr'   Z&sympy.matrices.expressions.determinantr(   r)   Z"sympy.matrices.expressions.matexprr*   Z"sympy.matrices.expressions.specialr+   r,   Zsympy.testing.pytestr-   r.   rB   rK   rL   r   r   r1   r2   r3   r4   r5   r6   r7   rG   rP   rS   rb   rl   rp   rs   rx   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*



/	