U
    ZÊ¹j	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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ˆ ˆ ƒsŒt‚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>   úl/var/www/html/bwave/python/venv/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 )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"   ÚAssertionErrorr-   Ú
ValueErrorr   r>   r>   rF   r?   Útest_matrix_symbol_creation"   s    rJ   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   r:   ©r   r   r4   )
r4   ÚshaperD   ÚmrH   r5   ÚlÚindicesÚsymbolÚnamer>   r>   r>   r?   Útest_matexpr_properties4   s
    rS   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 ©Nr;   )
r3   r4   rM   rH   Ú	__class__r   r+   r5   rD   rO   r>   r>   r>   r?   Útest_matexpr<   s    rV   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s´t‚tdƒ}ˆ tdƒ|¡j	|ddfksÜt‚ˆd  ˆˆ ¡ˆ d ksøt‚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�sÖt‚d S )Nr4   r5   r6   ÚWé   ÚXr;   ÚYr:   ÚZÚy©r:   r:   c                      s   ˆ d   ˆ ˆ¡S )Nr]   ©Úsubsr>   )rY   rZ   r>   r?   r@   [   rA   z#test_matexpr_subs.<locals>.<lambda>rK   ©r;   r:   c                      s   ˆ d   ˆ ˆ¡S )N©r;   r;   r^   r>   )rW   r[   r>   r?   r@   b   rA   c                      s   ˆ d   ˆ tdƒ¡S )Nra   r;   )r_   r   r>   )rW   r>   r?   r@   d   rA   é   r7   )r"   rD   rN   rO   r_   rM   rH   Z	is_squarer	   Úargsr-   Ú
IndexErrorr#   r    r   )r4   r5   r6   r\   r7   r>   )rW   rY   rZ   r[   r?   Útest_matexpr_subsC   s.     re   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s®t‚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>   rg   r>   r?   r@   v   rA   c                      s   dˆ  S rh   r>   r>   rg   r>   r?   r@   w   rA   c                   S   s   t ttƒtj S ©N)r+   rD   rN   r   ÚZeror>   r>   r>   r?   r@   z   rA   )r"   rD   rN   Ú
isinstancer   rH   rM   r   r-   Ú	TypeErrorr+   ©r5   r>   rg   r?   Útest_additionm   s     ro   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sŒt‚|ttƒ |j ttƒksªt‚ˆ d t	j
ˆ  ksÀt‚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 )	Nr4   r5   r6   r;   r   c                      s   dˆ  S rT   r>   r>   rn   r>   r?   r@   ‹   rA   z%test_multiplication.<locals>.<lambda>rX   )r"   rD   rN   rO   rM   rH   r+   r,   ÚIr   ÚHalfr-   ÚNotImplementedError)r4   r6   r>   rn   r?   Útest_multiplication}   s      rs   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sŒt‚| d d | ks t‚| d d | d ks¸t‚| tj	 t
| ƒksÎt‚| tddƒ t| ƒksèt‚ttdd	„ ƒ d S )
Nr4   r;   r   r:   r<   rX   é   c                   S   s   t dddƒd S )Nr5   rX   r;   r=   r>   r>   r>   r?   r@   ¦   rA   ztest_MatPow.<locals>.<lambda>)r"   rD   r   r   rH   Úbaser,   r   r   rq   r   r   r   r-   r'   )r4   ZAAr>   r>   r?   Útest_MatPow–   s    
rv   c                     sV   t dƒ\‰‰ ‰tdˆˆ ƒ} | jˆˆ fks,t‚tt‡ ‡‡fdd„ƒ |  ¡ | ksRt‚d S )Nzn,m,trY   c                      s   t dˆˆ ƒˆƒS )NrY   r=   r>   ©rN   rD   Útr>   r?   r@   ­   rA   z#test_MatrixSymbol.<locals>.<lambda>)r   r"   rM   rH   r-   rm   Údoit©rY   r>   rw   r?   Útest_MatrixSymbol©   s
    r{   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 )NrY   r;   c                    s   ˆ | |f S rj   r>   ©ÚiÚjrz   r>   r?   r@   ³   rA   z'test_dense_conversion.<locals>.<lambda>c                    s   ˆ | |f S rj   r>   r|   rz   r>   r?   r@   ´   rA   )r"   r   rH   r    r>   r>   rz   r?   Útest_dense_conversion±   s     r   c                   C   s   t t jt thkst‚d S rj   )r6   r7   Zfree_symbolsrH   r>   r>   r>   r?   Útest_free_symbols·   s    r€   c                   C   s    t tjtdddƒ tƒst‚d S )NrY   r;   )rl   r   rk   r"   r!   rH   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 ©Nr4   r:   r;   )	r"   r   r   r   r   r3   r   r    rH   rg   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   r3   r   r    rH   rg   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 )Nr4   r5   rY   r;   r<   r   )r"   rD   rN   rO   r,   r+   r   r   r$   r%   r   r   rU   rc   rH   )r4   r5   rY   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 )Nr4   ©r:   r;   r:   r;   éþÿÿÿr<   )r"   rD   rN   rO   ÚkÚrange)r4   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s„t‚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sæt‚d S )Nr4   r;   rX   r:   rK   ©r:   r   rL   r]   c                      s   ˆ d S )Nrt   r>   r>   rg   r>   r?   r@   ç   rA   z&test_single_indexing.<locals>.<lambda>c                      s   ˆ t  S rj   rF   r>   rg   r>   r?   r@   è   rA   r5   c                      s   ˆ d S rf   r>   r>   rn   r>   r?   r@   ê   rA   )r"   rH   ÚintÚlistr-   rd   rD   rN   r>   r>   ©r4   r5   r?   Útest_single_indexingá   s    8r�   c                   C   s(   t d t d  t d t d  ks$t‚d S )NrK   rŒ   )r4   rH   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 )Nr4   rb   rL   r]   ra   )rX   rX   )r;   rX   )rX   r;   r‡   r`   )rX   r:   )r:   rX   rK   rŒ   )r;   r   ©rX   r   ©r   r;   )r   rX   r5   )r"   Úas_explicitr)   rH   r(   ry   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’   rL   )r4   r   rH   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Úur;   r:   rX   ri   rL   )r"   r   r_   ry   rH   )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s˜t‚t|dƒ ¡ |ks®t‚t|dƒ ¡ |d ksÈt‚t|dƒ ¡ |d ksât‚d S )NrX   r   r;   rˆ   rb   )r,   rD   r   ry   rH   )Ú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s�t‚tt‡fdd„ƒ ˆd tˆdƒ ¡ ks¼t‚ˆd tdƒksÐt‚tt‡fd	d„ƒ d S )
Nrb   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   ry   r>   rž   r>   r?   r@   %  rA   rX   c                      s   ˆ d S )Néýÿÿÿr>   r>   ©Úz2r>   r?   r@   (  rA   c                      s   t ˆ dƒ ¡ S ©Nr<   r    r>   r¢   r>   r?   r@   +  rA   )r+   rD   rH   r-   rI   r,   r   ry   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ƒ¡s¼t‚|  ¡ tttf ksÔt‚d S )Nr   r:   rL   Ú_i_1)r   r7   r9   r‰   ÚprH   r
   rD   r   Zdummy_eqr   ry   )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s¦t‚| ˆ|||	i¡|||	f ks|t‚q|tdddƒ}
|
d	  |
ˆ ¡| ksît‚|
ˆ|f  |
ˆ ¡ˆ ˆ|f k�st‚ˆ ˆ|f  ˆ |
¡|
ˆ|f k�s:t‚tˆ dˆ d |f tƒ�sZt‚ˆ dˆ d |f  ˆd
|di¡ˆ d k�sŠt‚tˆ ˆdf tƒ�s¢t‚ˆ ˆdf  ˆd¡ˆ d	 k�sÄt‚ˆ dˆf  ˆd
¡ˆ d k�sæt‚ˆ ˆ|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, jr;   rX   rb   ri   )rL   rK   rŒ   r]   r4   rL   r:   r   rŒ   rK   c                      s   ˆ ˆdf S rT   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 rT   r>   r>   r©   r>   r?   r@   S  rA   c                      s   ˆ dˆf S r¤   r>   r>   r©   r>   r?   r@   T  rA   )r   r    rl   r*   rH   r#   r_   r"   r   r-   rI   )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 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s¼t‚d S )Nr5   rX   r<   rY   r:   rL   r;   r]   rK   rŒ   )r"   ÚinvrH   r”   r    )r5   rY   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sôt‚d S )Nr4   r5   r<   )r"   rD   r6   r7   rH   r   r   r,   )r4   r5   Úexpr1Úexpr2Úexprrp   r>   r>   r?   Útest_factor_expandf  s     8r±   c                     sÌ   zddl m‰m}  W n tk
r0   tdƒ Y nX tdddƒ‰ ˆtˆ ddƒtˆ ddƒgtˆ ddƒtˆ ddƒggƒ}| ˆˆ ƒ|ƒs„t‚| ˆˆ dd�|ƒsšt‚tt	d	ƒ 
d
¡d ƒdkrÈt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*   rH   r�   r0   Úsplitr-   rm   )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sdt‚d S )Nr4   ri   r;   rL   rK   rŒ   r]   )r"   ÚTrp   r”   r    rH   rg   r>   r>   r?   Útest_issue_2749‚  s    .ÿr½   c                  C   s:   t dddƒ} | j|   ¡ d t| d d ggƒks6t‚d S )Nr3   r:   r<   rL   rˆ   )r"   r¼   r”   r    rH   )r3   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 )	Nr4   rX   r:   r5   r;   FrŒ   T)r"   r   rH   Ú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¸t‚d S )Nrx   r3   )r   r   r   r   r   r   r    rH   )rx   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s’t‚t|d tƒ ¡ |ks¬t‚d S )Nr4   r;   rX   r5   r—   rK   rŒ   r]   r`   r‡   rL   )r"   r    Zadjugater_   r3   r   rH   ry   )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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s–n t‚tdddƒ}t||ƒt||ƒksºt‚t||ƒt||ƒksÒt‚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�s’t‚t|||ƒt||d ƒk�s²t‚t|||ƒt|d |ƒk�sÒt‚t|||ƒt|||ƒk�sðt‚t|t||tƒt||d ƒk�st‚d S ©Nr;   r   r:   rX   rb   r4   )r   r+   r   rH   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$t‚d S rT   )r   r   r   ÚNaNrH   )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s�t‚t|tƒsžt‚|jtj| fks²t‚t| tjƒ}t|tƒsÌt‚|jtj| fksàt‚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�ràt||t
ƒ  k�ràtt
||ƒ  k�ràt|t
|ƒ  k�ràt||t
ƒk�sæn t‚t|tƒ�söt‚|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ƒ�s�t‚|jdt
 |d|  fk�s°t‚d S rÅ   )r   r   rH   r   ÚInfinityrl   rc   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 t‚tdt t dt t  ƒ} t | ƒtksLt‚| jdt t dt t fksnt‚d S )Nr;   rb   )Útyper   r6   r7   r   rH   rc   )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 )Nr4   r;   r5   r   )r"   r   rH   rl   )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<t‚|jd |jd ksTt‚d S )Nr4   T)Úcomplexr;   rX   r   )r   r"   ry   r_   rc   rH   )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sHt‚ttd
d„ ƒ d S )Nr[   r;   rX   rL   rK   r“   rŒ   r]   r‡   c                   S   s   t  ¡ S rj   )r4   r”   r>   r>   r>   r?   r@   ,  rA   z"test_as_explicit.<locals>.<lambda>)r"   r”   r   rH   r-   rI   )r[   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s¤t‚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 )Nr;   )Úsetra   r:   rX   rb   c                      s   t ˆ kS rj   rg   r>   ©rš   r>   r?   r@   7  rA   z test_MatrixSet.<locals>.<lambda>c                      s   dˆ kS rf   r>   r>   rÖ   r>   r?   r@   8  rA   c                      s   t ˆ kS rj   )r6   r>   rÖ   r>   r?   r@   ;  rA   c                      s   ˆˆ kS rj   r>   r>   ©rš   rY   r>   r?   r@   <  rA   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;   rX   )r&   r>   r>   r>   r?   r@   D  rA   )r&   r   rÙ   rM   rH   rÕ   r    r+   r-   rm   rD   rN   r4   ÚfalserI   )rZ   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s¢t‚|  |  |  | |  ¡ |ksÆt‚| | |  || j|j    ¡ | d | |  || j  ||j  k�st‚d S )Nr4   r;   r5   )r"   r+   rH   r   r   r¼   )r4   r5   r[   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   rN   rO   r‰   r§   r3   r4   r5   r6   r7   r8   r9   rJ   rS   rV   re   ro   rs   rv   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*



/	