o
    …º¥g`  ã                   @   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   úd/var/www/visachat/venv/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   Ú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   =   rA   c                   S   r?   )Nr!   r@   r   r   r   r   r   >   rA   r%   Fr&   c                      ó   t ˆ ƒS r)   r@   r   r*   r   r   r   C   rA   Tr+   c                      rB   r)   r@   r   r*   r   r   r   E   rA   )r   r   r-   r   r   r   r*   r   Útest_identity_matrix_creation9   s   rC   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   rD   r   r   r   U   r5   c                      r0   r)   r8   r   rD   r   r   r   V   r5   )r   r   r   Úis_Identityr   r;   r   r<   r=   r   rD   r   Útest_generic_identityH   s   
rG   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   rI   r   r   r   r   r   c   r   c                   S   r   r    rI   r   r   r   r   r   d   r   c                   S   r   r"   rI   r   r   r   r   r   e   r   c                   S   r   r#   rI   r   r   r   r   r   f   r   c                   S   r   r$   rI   r   r   r   r   r   g   r   r%   Fr&   c                      r(   r)   rI   r   r*   r   r   r   l   r   Tr+   c                      r(   r)   rI   r   r*   r   r   r   n   r   )r   r   r   r   r-   r   r   r   r*   r   Útest_one_matrix_creation^   s   rJ   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   Úzeros)r%   Úmr/   ÚZr   r   r   Útest_ZeroMatrixq   s   
"rU   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%   ÚZnnr   r   r   Útest_ZeroMatrix_doit‡   ó
   r\   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 )
NrK   Tr&   r/   r   )rH   r   rH   r   rL   )r   r   r   r2   rY   r   rN   rO   rP   r	   r   r   r   rQ   r   Úones)r%   rS   r/   ÚUr   r   r   Útest_OneMatrix   s   


r`   c                  C   rV   rW   )r   r   r   rY   r7   rZ   r   )r%   ÚUnnr   r   r   Útest_OneMatrix_doit¥   r]   rb   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&   ÚwrH   )r   r   r   rM   )r%   rS   Úkrc   r   r   r   Útest_OneMatrix_mul­   s
   &re   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 )NrK   Tr&   r/   zi jr   rH   rL   r   )r   T)r   r   r   rN   ÚinverserO   rP   r	   r   r   r   ÚsubsrZ   Údummy_eqr
   rQ   r   Úeye)r%   rS   r/   ÚiÚjÚInÚImÚexprr   r   r   Útest_Identityµ   sB   <@þÿþ
ÿ ro   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 rW   )r   r   r   rY   r7   rZ   r   )r%   ÚInnr   r   r   Útest_Identity_doitß   s
   rq   N)-Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.mulr   Úsympy.core.symbolr   Úsympy.core.relationalr   Úsympy.concrete.summationsr   Ú$sympy.functions.elementary.complexesr   r	   Ú$sympy.functions.elementary.piecewiser
   Úsympy.matrices.immutabler   Ú"sympy.matrices.expressions.matexprr   Ú!sympy.matrices.expressions.mataddr   Ú"sympy.matrices.expressions.specialr   r   r   r   r   Ú!sympy.matrices.expressions.matmulr   Úsympy.testing.pytestr   r.   r>   rC   rG   rJ   rU   r\   r`   rb   re   ro   rq   r   r   r   r   Ú<module>   s4    *