a
    kº”h`  ã                   @   s   d dl mZ d dlmZ d dlmZ d dlmZ 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 d d
lmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlm Z  dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd „ Z)d!d"„ Z*d#d$„ Z+d%d&„ Z,d'S )(é    )ÚAdd)Ú	unchanged)ÚMul)Úsymbols)ÚEq)ÚSum)ÚimÚre)Ú	Piecewise)ÚImmutableDenseMatrix)ÚMatrixSymbol)ÚMatAdd)Ú
ZeroMatrixÚGenericZeroMatrixÚIdentityÚGenericIdentityÚ	OneMatrix)ÚMatMul)Úraisesc                      sÌ   t tddƒsJ ‚t t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 tˆ ˆ ƒsŒJ ‚td
dd‰ tt‡ fdd„ƒ td
dd‰ tt‡ fdd„ƒ d S )Né   r   c                   S   s
   t ddƒS ©Néÿÿÿÿr   ©r   © r   r   ú[/var/www/auris/lib/python3.9/site-packages/sympy/matrices/expressions/tests/test_special.pyÚ<lambda>   ó    z+test_zero_matrix_creation.<locals>.<lambda>c                   S   s
   t ddƒS ©Nç       @r   r   r   r   r   r   r      r   c                   S   s
   t ddƒS ©Nù               @r   r   r   r   r   r   r      r   c                   S   s
   t ddƒS ©Nr   r   r   r   r   r   r   r      r   c                   S   s
   t ddƒS ©Nr   r   r   r   r   r   r   r      r   c                   S   s
   t ddƒS ©Nr   r    r   r   r   r   r   r      r   ÚnF©Úintegerc                      s
   t ˆ ˆ ƒS ©Nr   r   ©r$   r   r   r      r   T©Únegativec                      s
   t ˆ ˆ ƒS r'   r   r   r(   r   r   r   !   r   )r   r   r   Ú
ValueErrorr   r   r   r(   r   Útest_zero_matrix_creation   s    r,   c                     s²   t ƒ ‰ tddd} td| | ƒ}ˆ ˆ ks*J ‚ˆ |ks6J ‚|ˆ ksBJ ‚ˆ jsLJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tƒ ˆ ksJ ‚tˆ |ƒt|ƒks¦J ‚tˆ ƒ d S )	Nr$   Tr%   ÚAc                      s   ˆ j S r'   ©Úshaper   ©Úzr   r   r   /   r   z*test_generic_zero_matrix.<locals>.<lambda>c                      s   ˆ j S r'   ©Úrowsr   r0   r   r   r   0   r   c                      s   ˆ j S r'   ©Úcolsr   r0   r   r   r   1   r   )r   r   r   Zis_ZeroMatrixr   Ú	TypeErrorr   Úhash©r$   r-   r   r0   r   Útest_generic_zero_matrix$   s    
r9   c                      s–   t dƒsJ ‚t dƒsJ ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ tdƒ‰ t ˆ ƒsVJ ‚tddd	‰ tt‡ fd
d„ƒ tddd‰ tt‡ fdd„ƒ d S )Nr   r   c                   S   s   t dƒS )Nr   ©r   r   r   r   r   r   <   r   z/test_identity_matrix_creation.<locals>.<lambda>c                   S   s   t dƒS )Nr   r:   r   r   r   r   r   =   r   c                   S   s   t dƒS )Nr    r:   r   r   r   r   r   >   r   r$   Fr%   c                      s   t ˆ ƒS r'   r:   r   r(   r   r   r   C   r   Tr)   c                      s   t ˆ ƒS r'   r:   r   r(   r   r   r   E   r   )r   r   r+   r   r   r   r(   r   Útest_identity_matrix_creation9   s    r;   c                     sÂ   t ƒ ‰ tddd} td| | ƒ}ˆ ˆ ks*J ‚ˆ |ks6J ‚|ˆ ksBJ ‚ˆ jsLJ ‚ˆ d ˆ ks\J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tƒ ˆ ks J ‚tˆ |ƒt|ƒks¶J ‚tˆ ƒ d S )
Nr$   Tr%   r-   r   c                      s   ˆ j S r'   r.   r   ©ÚIr   r   r   T   r   z'test_generic_identity.<locals>.<lambda>c                      s   ˆ j S r'   r2   r   r<   r   r   r   U   r   c                      s   ˆ j S r'   r4   r   r<   r   r   r   V   r   )r   r   r   Zis_Identityr   r6   r   r7   r8   r   r<   r   Útest_generic_identityH   s    
r>   c                      sÞ   t ddƒsJ ‚t ddƒsJ ‚tt ddƒtdƒƒs4J ‚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 ˆ ˆ ƒsžJ ‚tddd‰ tt‡ fdd„ƒ tddd‰ tt‡ fdd„ƒ d S )Nr   r   é   c                   S   s
   t ddƒS r   ©r   r   r   r   r   r   b   r   z*test_one_matrix_creation.<locals>.<lambda>c                   S   s
   t ddƒS r   r@   r   r   r   r   r   c   r   c                   S   s
   t ddƒS r   r@   r   r   r   r   r   d   r   c                   S   s
   t ddƒS r!   r@   r   r   r   r   r   e   r   c                   S   s
   t ddƒS r"   r@   r   r   r   r   r   f   r   c                   S   s
   t ddƒS r#   r@   r   r   r   r   r   g   r   r$   Fr%   c                      s
   t ˆ ˆ ƒS r'   r@   r   r(   r   r   r   l   r   Tr)   c                      s
   t ˆ ˆ ƒS r'   r@   r   r(   r   r   r   n   r   )r   r   r   r   r+   r   r   r   r(   r   Útest_one_matrix_creation^   s    rA   c                  C   s  t ddd\} }td| |ƒ}t| |ƒ}|| |ks6J ‚||j t| | ƒksNJ ‚||j t| | ƒksfJ ‚|| t|jŽ ks|J ‚|s„J ‚| ¡ t|| ƒksšJ ‚| ¡ |ksªJ ‚| ¡ t|| ƒksÀJ ‚t|ƒ|ksÐJ ‚t	|ƒ|ksàJ ‚t| | ƒd t
| ƒksúJ ‚tddƒ ¡ t dd¡ksJ ‚d S )Nún mTr%   r-   r   é   )r   r   r   ÚTr/   Ú	transposeÚ	conjugateÚadjointr	   r   r   Úas_explicitr   Úzeros)r$   Úmr-   ÚZr   r   r   Útest_ZeroMatrixq   s    
rL   c                  C   sb   t ddd} tt| | dd| ƒ}t|jtƒs0J ‚| ¡ td|  | ƒksJJ ‚t| ¡ jtƒs^J ‚d S ©Nr$   Tr%   F)Úevaluater   )r   r   r   Ú
isinstancer3   Údoitr   )r$   ZZnnr   r   r   Útest_ZeroMatrix_doit‡   s
    rQ   c                  C   s  t ddd\} }td| |ƒ}t| |ƒ}|j| |fks8J ‚t|| tƒsJJ ‚| ¡ t|| ƒks`J ‚| ¡ |kspJ ‚| ¡ t|| ƒks†J ‚t	|ƒ|ks–J ‚t
|ƒt| |ƒks¬J ‚t| | ƒd t| ƒksÆJ ‚t| | ƒ}|d dksàJ ‚tdd	ƒ}| ¡ t dd	¡ksJ ‚d S )
NrB   Tr%   r-   r   )r?   r   r?   r   rC   )r   r   r   r/   rO   r   rE   rF   rG   r	   r   r   r   rH   r   Zones)r$   rJ   r-   ÚUr   r   r   Útest_OneMatrix   s    


rS   c                  C   sb   t ddd} tt| | dd| ƒ}t|jtƒs0J ‚| ¡ td|  | ƒksJJ ‚t| ¡ jtƒs^J ‚d S rM   )r   r   r   rO   r3   rP   r   )r$   ZUnnr   r   r   Útest_OneMatrix_doit¥   s
    rT   c                  C   sx   t ddd\} }}td| dƒ}t| |ƒt||ƒ t| |ƒ| ksDJ ‚|tddƒ |ksZJ ‚tddƒ|j |jkstJ ‚d S )Nzn m kTr%   Úwr?   )r   r   r   rD   )r$   rJ   ÚkrU   r   r   r   Útest_OneMatrix_mul­   s
    &rW   c                  C   s4  t ddd\} }td| |ƒ}t dƒ\}}t| ƒ}t|ƒ}|| |ksHJ ‚|| |ksXJ ‚| ¡ |kshJ ‚| ¡ |ksxJ ‚| ¡ |ksˆJ ‚| ¡ |ks˜J ‚t|ƒ|ks¨J ‚t|ƒt	| | ƒks¾J ‚|||f dksÒJ ‚t
|||f |d| d f|d| d fƒ | d¡ ¡ dksJ ‚t
t
|||f |d| d fƒ|d| d fƒ | d¡ ¡ dksRJ ‚t
|||f |d| d fƒ}| ¡ dks€J ‚t
|||f |d| d	 fƒ}| ¡  td|dk|| d	 k@ fd
ƒ¡sÊJ ‚t
|||f |d| d fƒ}| ¡  td|dk|| d k@ fd
ƒ¡sJ ‚tdƒ ¡ t d¡ks0J ‚d S )NrB   Tr%   r-   zi jr   r?   rC   r   )r   T)r   r   r   rE   ZinverserF   rG   r	   r   r   r   ÚsubsrP   Zdummy_eqr
   rH   r   Zeye)r$   rJ   r-   ÚiÚjÚInZImÚexprr   r   r   Útest_Identityµ   sB    >Bþÿ
þÿ
r]   c                  C   s^   t ddd} tt| | ddƒ}t|jtƒs.J ‚| ¡ td|  ƒksFJ ‚t| ¡ jtƒsZJ ‚d S rM   )r   r   r   rO   r3   rP   r   )r$   ZInnr   r   r   Útest_Identity_doitß   s
    r^   N)-Zsympy.core.addr   Zsympy.core.exprr   Zsympy.core.mulr   Zsympy.core.symbolr   Zsympy.core.relationalr   Zsympy.concrete.summationsr   Z$sympy.functions.elementary.complexesr   r	   Z$sympy.functions.elementary.piecewiser
   Zsympy.matrices.immutabler   Z"sympy.matrices.expressions.matexprr   Z!sympy.matrices.expressions.mataddr   Z"sympy.matrices.expressions.specialr   r   r   r   r   Z!sympy.matrices.expressions.matmulr   Zsympy.testing.pytestr   r,   r9   r;   r>   rA   rL   rQ   rS   rT   rW   r]   r^   r   r   r   r   Ú<module>   s2   *