o
    GZŽ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ˆ ˆ ƒsFJ ‚td
dd‰ tt‡ fdd„ƒ td
dd‰ tt‡ fdd„ƒ d S )Né   r   c                   S   ó
   t ddƒS ©Néÿÿÿÿr   ©r   © r   r   ú\/var/www/auris/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_special.pyÚ<lambda>   ó   
 z+test_zero_matrix_creation.<locals>.<lambda>c                   S   r   ©Nç       @r   r   r   r   r   r   r      r   c                   S   r   ©Nù               @r   r   r   r   r   r   r      r   c                   S   r   ©Nr   r   r   r   r   r   r   r      r   c                   S   r   ©Nr   r   r   r   r   r   r   r      r   c                   S   r   ©Nr   r!   r   r   r   r   r   r      r   ÚnF©Úintegerc                      ó
   t ˆ ˆ ƒS ©Nr   r   ©r%   r   r   r      r   T©Únegativec                      r(   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sJ ‚|ˆ ks!J ‚ˆ js&J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tƒ ˆ ksHJ ‚tˆ |ƒt|ƒksSJ ‚tˆ ƒ d S )	Nr%   Tr&   ÚAc                      ó   ˆ j S r)   ©Úshaper   ©Úzr   r   r   /   ó    z*test_generic_zero_matrix.<locals>.<lambda>c                      r0   r)   ©Úrowsr   r3   r   r   r   0   r5   c                      r0   r)   ©Úcolsr   r3   r   r   r   1   r5   )r   r   r   Zis_ZeroMatrixr   Ú	TypeErrorr   Úhash©r%   r/   r   r3   r   Útest_generic_zero_matrix$   s   
r=   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 ˆ ƒ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   ó   t dƒS )Nr   ©r   r   r   r   r   r   <   ó    z/test_identity_matrix_creation.<locals>.<lambda>c                   S   r>   )Nr   r?   r   r   r   r   r   =   r@   c                   S   r>   )Nr!   r?   r   r   r   r   r   >   r@   r%   Fr&   c                      ó   t ˆ ƒS r)   r?   r   r*   r   r   r   C   r@   Tr+   c                      rA   r)   r?   r   r*   r   r   r   E   r@   )r   r   r-   r   r   r   r*   r   Útest_identity_matrix_creation9   s   rB   c                     sÂ   t ƒ ‰ tddd} td| | ƒ}ˆ ˆ ksJ ‚ˆ |ksJ ‚|ˆ ks!J ‚ˆ js&J ‚ˆ d ˆ ks.J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tƒ ˆ ksPJ ‚tˆ |ƒt|ƒks[J ‚tˆ ƒ d S )
Nr%   Tr&   r/   r   c                      r0   r)   r1   r   ©ÚIr   r   r   T   r5   z'test_generic_identity.<locals>.<lambda>c                      r0   r)   r6   r   rC   r   r   r   U   r5   c                      r0   r)   r8   r   rC   r   r   r   V   r5   )r   r   r   Zis_Identityr   r:   r   r;   r<   r   rC   r   Útest_generic_identityH   s   
rE   c                      sÞ   t ddƒsJ ‚t ddƒsJ ‚tt ddƒt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 ˆ ˆ ƒsOJ ‚tddd‰ tt‡ fdd„ƒ tddd‰ tt‡ fdd„ƒ d S )Nr   r   é   c                   S   r   r   ©r   r   r   r   r   r   b   r   z*test_one_matrix_creation.<locals>.<lambda>c                   S   r   r   rG   r   r   r   r   r   c   r   c                   S   r   r    rG   r   r   r   r   r   d   r   c                   S   r   r"   rG   r   r   r   r   r   e   r   c                   S   r   r#   rG   r   r   r   r   r   f   r   c                   S   r   r$   rG   r   r   r   r   r   g   r   r%   Fr&   c                      r(   r)   rG   r   r*   r   r   r   l   r   Tr+   c                      r(   r)   rG   r   r*   r   r   r   n   r   )r   r   r   r   r-   r   r   r   r*   r   Útest_one_matrix_creation^   s   rH   c                  C   s  t ddd\} }td| |ƒ}t| |ƒ}|| |ksJ ‚||j t| | ƒks'J ‚||j t| | ƒks3J ‚|| t|jŽ ks>J ‚|sBJ ‚| ¡ t|| ƒksMJ ‚| ¡ |ksUJ ‚| ¡ t|| ƒks`J ‚t|ƒ|kshJ ‚t	|ƒ|kspJ ‚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   ÚTr2   Ú	transposeÚ	conjugateÚadjointr	   r   r   Úas_explicitr   Zzeros)r%   Úmr/   ÚZr   r   r   Útest_ZeroMatrixq   s   
"rR   c                  C   ób   t ddd} tt| | dd| ƒ}t|jtƒsJ ‚| ¡ td|  | ƒks%J ‚t| ¡ jtƒs/J ‚d S ©Nr%   Tr&   F)Úevaluater   )r   r   r   Ú
isinstancer7   Údoitr   )r%   ZZnnr   r   r   Útest_ZeroMatrix_doit‡   ó
   rX   c                  C   s  t ddd\} }td| |ƒ}t| |ƒ}|j| |fksJ ‚t|| tƒs%J ‚| ¡ t|| ƒks0J ‚| ¡ |ks8J ‚| ¡ t|| ƒksCJ ‚t	|ƒ|ksKJ ‚t
|ƒt| |ƒksVJ ‚t| | ƒd t| ƒkscJ ‚t| | ƒ}|d dkspJ ‚tdd	ƒ}| ¡ t dd	¡ksJ ‚d S )
NrI   Tr&   r/   r   )rF   r   rF   r   rJ   )r   r   r   r2   rV   r   rL   rM   rN   r	   r   r   r   rO   r   Zones)r%   rP   r/   ÚUr   r   r   Útest_OneMatrix   s   


r[   c                  C   rS   rT   )r   r   r   rV   r7   rW   r   )r%   ZUnnr   r   r   Útest_OneMatrix_doit¥   rY   r\   c                  C   sx   t ddd\} }}td| dƒ}t| |ƒt||ƒ t| |ƒ| ks"J ‚|tddƒ |ks-J ‚tddƒ|j |jks:J ‚d S )Nzn m kTr&   ÚwrF   )r   r   r   rK   )r%   rP   Úkr]   r   r   r   Útest_OneMatrix_mul­   s
   &r_   c                  C   s,  t ddd\} }td| |ƒ}t dƒ\}}t| ƒ}t|ƒ}|| |ks$J ‚|| |ks,J ‚| ¡ |ks4J ‚| ¡ |ks<J ‚| ¡ |ksDJ ‚| ¡ |ksLJ ‚t|ƒ|ksTJ ‚t|ƒt	| | ƒks_J ‚|||f dksiJ ‚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s§J ‚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sJ ‚d S )NrI   Tr&   r/   zi jr   rF   rJ   r   )r   T)r   r   r   rL   ZinverserM   rN   r	   r   r   r   ÚsubsrW   Zdummy_eqr
   rO   r   Úeye)r%   rP   r/   ÚiÚjÚInZImÚexprr   r   r   Útest_Identityµ   sB   <@þÿþ
ÿ rf   c                  C   s^   t ddd} tt| | ddƒ}t|jtƒsJ ‚| ¡ td|  ƒks#J ‚t| ¡ jtƒs-J ‚d S rT   )r   r   r   rV   r7   rW   r   )r%   ZInnr   r   r   Útest_Identity_doitß   s
   rg   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.   r=   rB   rE   rH   rR   rX   r[   r\   r_   rf   rg   r   r   r   r   Ú<module>   s4    *