U
    —9%eç  ã                   @   sè   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
 d dlmZ d dlmZmZmZ d dl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 )#é    )ÚPermutation)Ú	unchanged)ÚMatrix)ÚMatMulÚBlockDiagMatrixÚDeterminantÚInverse)ÚMatrixSymbol)Ú
ZeroMatrixÚ	OneMatrixÚIdentity)ÚMatrixPermuteÚPermutationMatrix)Úraises)ÚSymbolc                  C   sn   t ddgƒ} tt| ƒst‚ttdd„ ƒ t| ƒ ¡ tddgddggƒksLt‚tt| ƒt	dddƒ t
ƒsjt‚d S )Né   r   c                   S   s   t dƒS )N)r   r   é   )r   © r   r   úp/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/matrices/expressions/tests/test_permutation.pyÚ<lambda>   ó    z.test_PermutationMatrix_basic.<locals>.<lambda>ÚAr   )r   r   r   ÚAssertionErrorr   Ú
ValueErrorÚas_explicitr   Ú
isinstancer	   r   ©Úpr   r   r   Útest_PermutationMatrix_basic   s
    $r   c                  C   s¸   t dddgƒ} t| ƒ}tdddgdddgddd	ggƒ}||  ¡ | ¡ | ksRt‚||  ¡ || ¡  ksnt‚tt dddgƒƒ}tt dddgƒƒ}tt dddgƒƒ}|| |ks´t‚d S )
Nr   r   r   é   é   é   é   é   é   )r   r   r   r   r   )r   ÚPÚMÚP1ÚP2ZP3r   r   r   Útest_PermutationMatrix_matmul   s     r)   c                  C   sT   t dddgƒ} t| ƒ}t dddgƒ}t|ƒ}|d |ks<t‚|d tdƒksPt‚d S )Nr   r   r   r   )r   r   r   r   )Úp1r'   Úp2r(   r   r   r   Útest_PermutationMatrix_matpow#   s    r,   c                  C   s8   t ddgƒ} t| ƒjst‚t ddgƒ} t| ƒjr4t‚d S )Nr   r   )r   r   Zis_Identityr   r   r   r   r   Útest_PermutationMatrix_identity,   s    r-   c                  C   sv   t tdddgƒƒ} t| ƒ ¡ dks&t‚t tdddgƒƒ} t| ƒ ¡ dksLt‚t tdddgƒƒ} t| ƒ ¡ dksrt‚d S )Nr   r   r   éÿÿÿÿ)r   r   r   Údoitr   ©r%   r   r   r   Ú"test_PermutationMatrix_determinant4   s    r1   c                  C   s4   t tdddƒƒ} t| ƒ ¡ t tdddƒƒks0t‚d S )Nr   r   r   )r   r   r   r/   r   r0   r   r   r   Útest_PermutationMatrix_inverse=   s    r2   c                  C   s‚  t tddddddgƒƒ} t tdgƒƒ}|  t¡t||||||ƒksFt‚t tddddddgƒƒ} t tddƒƒ}|  t¡t|||||ƒksŠt‚t tddddddgƒƒ} |  t¡t|||ƒks¼t‚t tddddddgƒƒ} t tddddgƒƒ}|  t¡t|||ƒkst‚t tddddddgƒƒ} t tddddgƒƒ}|  t¡t|||ƒksLt‚t tddƒddƒddƒƒ} |  t¡t| ƒks~t‚d S )Nr   r   r   r   r    r!   )r   r   Úrewriter   r   )r%   ZP0ZP10ZP3210ZP3120r   r   r   Ú.test_PermutationMatrix_rewrite_BlockDiagMatrixB   s4    ÿÿ
ÿ
ÿ

ÿ
r4   c                     s¸   t ddƒ‰tˆƒ} tdddƒ‰ tt‡fdd„ƒ tt‡ fdd„ƒ tˆ | ƒtˆ ˆƒksZt‚tt‡ ‡fdd„ƒ t ddd	d
‰tˆ ˆƒtˆ ˆƒks”t‚t dddƒ‰tt‡ ‡fdd„ƒ d S )Nr   r   r   r   c                      s   t tdƒˆ ƒS ©NÚx©r   r   r   r   r   r   r   d   r   z+test_MartrixPermute_basic.<locals>.<lambda>c                      s   t ˆ tdƒƒS r5   r7   r   )r   r   r   r   e   r   c                      s   t ˆ ˆdƒS )Nr   ©r   r   )r   r   r   r   r   h   r   r   ©Úsizec                      s
   t ˆ ˆƒS )Nr8   r   )r   Úppr   r   r   m   r   )r   r   r	   r   r   r   r   r0   r   )r   r   r;   r   Útest_MartrixPermute_basic_   s    
r<   c                  C   s.   t ddƒ} tdddƒ}t|| ƒjdks*t‚d S )Nr   r   r   r   r   )r   r   )r   r	   r   Úshaper   ©r   r   r   r   r   Útest_MatrixPermute_shapep   s    
r?   c                  C   sh   t dddƒ} tdddƒ}| ¡ }t|| dƒ ¡ |j| ddksBt‚t|| dƒ ¡ |j| ddksdt‚d S )	Nr   r   r   r   r   Úrows)ZorientationÚcols)r   r	   r   r   Zpermuter   )r   r   ZAAr   r   r   Útest_MatrixPermute_explicitv   s    ÿÿrB   c                  C   sp   t dddƒ} tdddƒ}t|| dƒ t¡ ¡ t|| dƒ ¡ ksBt‚t|| dƒ t¡ ¡ t|| dƒ ¡ kslt‚d S )Nr   r   r   r   r   )r   r	   r   r3   r   r   r   r>   r   r   r   Ú!test_MatrixPermute_rewrite_MatMul€   s    ÿÿrC   c                  C   sž  t dddƒ} tdddƒ}t|| ƒ ¡ t|| ƒks4t‚t ddd} tdddƒ}t|| ƒ ¡  ¡ t|| ƒ ¡ kspt‚t dddƒ} tdƒ}t|| dƒ ¡  ¡ t|| dƒ ¡ ks¬t‚t|| dƒ ¡  ¡ t|| dƒ ¡ ksÔt‚tddƒ}t|| ƒ ¡ |ksôt‚tddƒ}t|| ƒ ¡ |kst‚tdddƒ}t ddddƒ}t ddddƒ}tt||dƒ|dƒ}| ¡ | ¡  ¡ kslt‚tt||dƒ|dƒ}| ¡ | ¡  ¡ ksšt‚d S )Nr   r   r   r   r   r9   r    )	r   r	   r   r/   r   r   r   r
   r   )r   r   r*   r+   Úexprr   r   r   Útest_MatrixPermute_doitŠ   s6    ÿÿÿ

rE   N)$Zsympy.combinatoricsr   Zsympy.core.exprr   Zsympy.matricesr   Zsympy.matrices.expressionsr   r   r   r   Z"sympy.matrices.expressions.matexprr	   Z"sympy.matrices.expressions.specialr
   r   r   Z&sympy.matrices.expressions.permutationr   r   Zsympy.testing.pytestr   Zsympy.core.symbolr   r   r)   r,   r-   r1   r2   r4   r<   r?   rB   rC   rE   r   r   r   r   Ú<module>   s(   		

