U
    -e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tt ddds t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  st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<   n/var/www/html/Darija-Ai-Train/env/lib/python3.8/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"   AssertionErrorr-   
ValueErrorr   r<   r<   rD   r=   test_matrix_symbol_creation"   s    rH   c                   C   sd   t jttfkstt t jttfks(tt d jdks:tt d jt ksLtt d jj	dks`td S )Nr   r8   r   r   r2   )
r2   shaperB   mrF   r3   lindicessymbolnamer<   r<   r<   r=   test_matexpr_properties4   s
    rQ   c                   C   s^   t t jtjkstt t jtks&tdt t t ttj ksDttt jtt	fksZtd S Nr9   )
r1   r2   rK   rF   	__class__r   r+   r3   rB   rM   r<   r<   r<   r=   test_matexpr<   s    rT   c                     s  t dtt} t dtt}t dtt}| ttjttfks>t| | ||| | ksZt| | ttjsptt ddd t dddt dd	dt d
tdksttd}td|j	|ddfkstd   d kstt
tfdd d d ks*t d  d ksHt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std S )Nr2   r3   r4   W   Xr9   Yr8   Zyr8   r8   c                      s    d   S )Nr[   subsr<   )rW   rX   r<   r=   r>   [   r?   z#test_matexpr_subs.<locals>.<lambda>rI   r9   r8   c                      s    d   S )Nr9   r9   r\   r<   )rU   rY   r<   r=   r>   b   r?   c                      s    d   tdS )Nr_   r9   )r]   r   r<   )rU   r<   r=   r>   d   r?      r5   )r"   rB   rL   rM   r]   rK   rF   Z	is_squarer	   argsr-   
IndexErrorr#   r    r   )r2   r3   r4   rZ   r5   r<   )rU   rW   rX   rY   r=   test_matexpr_subsC   s.     rc   c                     s   t dtt t dtt} t |  ts*t |  j jks>tt   d|   tsXttt	 fdd tt	 fdd tt	 fdd  t
tt   t
ttkst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<   re   r<   r=   r>   v   r?   c                      s   d  S rf   r<   r<   re   r<   r=   r>   w   r?   c                   S   s   t tttj S N)r+   rB   rL   r   Zeror<   r<   r<   r=   r>   z   r?   )r"   rB   rL   
isinstancer   rF   rK   r   r-   	TypeErrorr+   r3   r<   re   r=   test_additionm   s     rm   c                     s`  t dtt} t dtt t dtt}d|    jttfks>t| d   tttksXtd|  j| jkslt| ttt   tttkst|tt |j ttkst d t	j
  ksttt fdd t dtt} t dtt tt|    |   kst| d |  | d ks"t| d | jd  | jks@t| d | jd  | ks\td S )	Nr2   r3   r4   r9   r   c                      s   d  S rR   r<   r<   rl   r<   r=   r>      r?   z%test_multiplication.<locals>.<lambda>rV   )r"   rB   rL   rM   rK   rF   r+   r,   Ir   Halfr-   NotImplementedError)r2   r4   r<   rl   r=   test_multiplication}   s      rq   c                  C   s   t dtt} t| d}|jdks$t|j| ks2t| t jtksDt| d ttksXt| d | ksht| d |ksxt| d t| kst| d d | kst| d d | d kst| tj	 t
| kst| tdd t| kstttdd	  d S )
Nr2   r9   r   r8   r:   rV      c                   S   s   t dddd S )Nr3   rV   r9   r;   r<   r<   r<   r=   r>      r?   ztest_MatPow.<locals>.<lambda>)r"   rB   r   r   rF   baser,   r   r   ro   r   r   r   r-   r'   )r2   ZAAr<   r<   r=   test_MatPow   s    
rt   c                     sV   t d\ td } | j fks,ttt fdd |  | ksRtd S )Nzn,m,trW   c                      s   t d S )NrW   r;   r<   rL   rB   tr<   r=   r>      r?   z#test_MatrixSymbol.<locals>.<lambda>)r   r"   rK   rF   r-   rk   doitrW   r<   ru   r=   test_MatrixSymbol   s
    ry   c                      sP   t ddd t tdd fddks,tt tdd fddksLtd S )NrW   r9   c                    s    | |f S rh   r<   ijrx   r<   r=   r>      r?   z'test_dense_conversion.<locals>.<lambda>c                    s    | |f S rh   r<   rz   rx   r<   r=   r>      r?   )r"   r   rF   r    r<   r<   rx   r=   test_dense_conversion   s     r}   c                   C   s   t t jt thkstd S rh   )r4   r5   Zfree_symbolsrF   r<   r<   r<   r=   test_free_symbols   s    r~   c                   C   s    t tjtddd tstd S )NrW   r9   )rj   r   ri   r"   r!   rF   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sLtd S Nr2   r8   r9   )	r"   r   r   r   r   r1   r   r    rF   re   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sLtd S r   )	r"   r   r   r   r   r1   r   r    rF   re   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svtqvd S )Nr2   r3   rW   r9   r:   r   )r"   rB   rL   rM   r,   r+   r   r   r$   r%   r   r   rS   ra   rF   )r2   r3   rW   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  qXqJd S )Nr2   r8   r9   r8   r9   r:   )r"   rB   rL   rM   krange)r2   r{   r|   r<   r<   r=   test_matexpr_indexing   s    r   c                      s   t ddd  d  d ks t td  d ks8t d  d ksLtt d dd df  d  d  d  d gkst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std S )Nr2   r9   rV   r8   rI   r8   r   rJ   r[   c                      s    d S )Nrr   r<   r<   re   r<   r=   r>      r?   z&test_single_indexing.<locals>.<lambda>c                      s    t  S rh   rD   r<   re   r<   r=   r>      r?   r3   c                      s    d S rd   r<   r<   rl   r<   r=   r>      r?   )r"   rF   intlistr-   rb   rB   rL   r<   r<   r2   r3   r=   test_single_indexing   s    8r   c                   C   s(   t d t d  t d t d  ks$td S )NrI   r   )r2   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tt ddd}t| |  t| |   kr^| |  ksdn td S )Nr2   r`   rJ   r[   r_   )rV   rV   )r9   rV   )rV   r9   r   r^   )rV   r8   )r8   rV   rI   r   )r9   r   rV   r   r   r9   )r   rV   r3   )r"   as_explicitr)   rF   r(   rw   r   r<   r<   r=   test_MatrixSymbol_determinant   sd    (		

r   c                   C   s*   t d t d  t d t d ks&td S )Nr   rJ   )r2   r   rF   r<   r<   r<   r=   test_MatrixElement_diff  s    r   c                  C   s<   t ddd} tddg}| d | | |d ks8td S )Nur9   r8   rV   rg   rJ   )r"   r   r]   rw   rF   )r   vr<   r<   r=   test_MatrixElement_doit  s    r   c                  C   s   t t} t| d | d ks"t| t | ks2tt| d | d ksLt| d | ks\tt| d | d ksvtt d}t|d |t kstt|d |kstt|d |d kstt|d |d kstd S )NrV   r   r9   r   r`   )r,   rB   r   rw   rF   )MNr<   r<   r=   test_identity_powers  s    r   c                      s   t tt  d  ksttt fdd  d ttks@tt d  d ksZttt fdd t ddtd d kstttfdd d td kstd tdkst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   rw   r<   r   r<   r=   r>   %  r?   rV   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   rF   r-   rG   r,   r   rw   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@ttttf  td tdtdtd ftdtd kszttd}| 	t
t|tdtd ftt|f  |dtd fst|  tttf kstd S )Nr   r8   rJ   _i_1)r   r5   r7   r   prF   r
   rB   r   Zdummy_eqr   rw   )Zdexprr   r<   r<   r=   test_matrixelement_diff.  s    "::r   c                     sn  t d\} }}}t| |g||gg t d\} |f }t|tsJttddgddgg}||f }t|tsxtdD ]L\}}	||||	i ||	f kst||||	i|||	f ks|tq|tddd}
|
d	 |
 | kst|
|f |
  |f kst |f  |
|
|f ks:tt d d |f tsZt d d |f d
|di d kstt df tst df d d	 kst df d
 d kst |f | td
dgddgg|f kst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   rV   r`   rg   )rJ   rI   r   r[   r2   rJ   r8   r   r   rI   c                      s    df S rR   r<   r<   r   r{   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 rR   r<   r<   r   r<   r=   r>   S  r?   c                      s    df S r   r<   r<   r   r<   r=   r>   T  r?   )r   r    rj   r*   rF   r#   r]   r"   r   r-   rG   )r1   rZ   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 tt ddd }| td|d  ggksPtt ddd }|d |d  |d	 |d
   }t|d |d	  g|d
  |d gg| }| |kstd S )Nr3   rV   r:   rW   r8   rJ   r9   r[   rI   r   )r"   invrF   r   r    )r3   rW   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sTtt||ksdtt||kstt|d | d |d  | d t |d   d  | d  }tt}t||t |d | d |t  |d  d  | d  fkstd S )Nr2   r3   r:   )r"   rB   r4   r5   rF   r   r   r,   )r2   r3   expr1expr2exprrn   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sdtd S )Nr2   rg   r9   rJ   rI   r   r[   )r"   Trn   r   r    rF   re   r<   r<   r=   test_issue_2749v  s    .r   c                  C   s:   t ddd} | j|   d t| d d ggks6td S )Nr1   r8   r:   rJ   r   )r"   r   r   r    rF   )r1   r<   r<   r=   test_issue_2750|  s    r   c                  C   sp   t ddd} t ddd}t| |dks*tt| d |d jtksFttdd} tdd}t| |dksltd S )	Nr2   rV   r8   r3   r9   Fr   T)r"   r   rF   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std S )Nrv   r1   )r   r   r   r   r   r   r    rF   )rv   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ks<n t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 ttddd}t||t||kstt||t||ksttt||}t|t|}t||t}||  kr |  kr t||ks&n ttt||}t|t|}t||t}||  krt|  krtt||kszn tt|||d kstt|||t||d kstt|||t|d |kstt|||t|||kstt|t||tt||d kstd S Nr9   r   r8   rV   r`   r2   )r   r+   r   rF   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$td S rR   )r   r   r   NaNrF   )r   r<   r<   r=   test_MatAdd_postprocessor_xfail  s    r   c                  C   s  t d} td| t| d  kr(| ks.n tttj| }|t| tjksNtt|ts\t|jtj| fksptttj| }|t| tjkstt|tst|jtj| fkstt| tj}t|tst|jtj| fkstt	ddgddgg}tt
|}|t|t
kstt|ts"t|jt
|fks6ttddd}t||t||  krj|| kspn ttt
||}|t|t
|  krt||t
  krtt
||  krt|t
|  krt||t
ksn tt|tst|jt
|| fkstt||d| ks&tt|||t|||  krjt|||  krj|d|  kspn tt|t
||t
}t|tst|jdt
 |d|  fkstd S r   )r   r   rF   r   Infinityrj   ra   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 ttdt t dt t  } t | tksLt| jdt t dt t fksntd S )Nr9   r`   )typer   r4   r5   r   rF   ra   )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sDt|| dksTtt|trbtt|trptd S )Nr2   r9   r3   r   )r"   r   rF   rj   )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<t|jd |jd ksTtd S )Nr2   T)complexr9   rV   r   )r   r"   rw   r]   ra   rF   )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sHtttd
d  d S )NrY   r9   rV   rJ   rI   r   r   r[   r   c                   S   s   t  S rh   )r2   r   r<   r<   r<   r=   r>     r?   z"test_as_explicit.<locals>.<lambda>)r"   r   r   rF   r-   rG   )rY   r<   r<   r=   test_as_explicit  s    r   c                     sV  t ddtjd  jdkst jtjks.ttddgddgg ksNttdd ksdttt	 fdd tt	 fd	d t t
ttjd t ksttt	 fd
d tt	 fdd t dddddhd tddgddggtddgg}  ktjkst|  ktjks(tttdd  ttdd  tt	dd  d S )Nr9   )setr_   r8   rV   r`   c                      s   t  kS rh   re   r<   r   r<   r=   r>     r?   z test_MatrixSet.<locals>.<lambda>c                      s   d kS rd   r<   r<   r   r<   r=   r>     r?   c                      s   t  kS rh   )r4   r<   r   r<   r=   r>   "  r?   c                      s    kS rh   r<   r<   r   rW   r<   r=   r>   #  r?   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   rV   )r&   r<   r<   r<   r=   r>   +  r?   )r&   r   r   rK   rF   r   r    r+   r-   rk   rB   rL   r2   falserG   )rX   r<   r   r=   test_MatrixSet  s*    
r   c                  C   s  t ddd} t ddd}tdd}|  |  |  | |ks>t|  |  |  |  |ks^t|  |  |  |  |ks~t|  |  |  | |  |kst|  |  |  | |  |kst| | |  || j|j    | d | |  || j  ||j  kstd S )Nr2   r9   r3   )r"   r+   rF   r   r   r   )r2   r3   rY   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   rL   rM   r   r   r1   r2   r3   r4   r5   r6   r7   rH   rQ   rT   rc   rm   rq   rt   ry   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*



/	