o
    GZhē  ć                   @   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J ttdd  t|  ” tddgddggks&J tt| tddd t	s5J d S )Né   r   c                   S   s   t dS )N©r   r   é   )r   © r   r   ś`/var/www/auris/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_permutation.pyŚ<lambda>   s    z.test_PermutationMatrix_basic.<locals>.<lambda>ŚAr   )
r   r   r   r   Ś
ValueErrorŚas_explicitr   Ś
isinstancer	   r   ©Śpr   r   r   Śtest_PermutationMatrix_basic   s
   $"r   c                  C   sŖ   t g d¢} t| }tg d¢g d¢g d¢g}||  ” | ” | ks%J ||  ” || ”  ks3J tt g d¢}tt g d¢}tt g d¢}|| |ksSJ d S )N©r   r   r   r   )é   é   é   )é   é   é   )r   r   r   )r   r   r   )r   r   r   r   )r   ŚPŚMŚP1ŚP2ZP3r   r   r   Śtest_PermutationMatrix_matmul   s   r)   c                  C   sP   t g d¢} t| }t g d¢}t|}|d |ksJ |d tdks&J d S )Nr   ©r   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J t ddg} t| jrJ d S )Nr   r   )r   r   Zis_Identityr   r   r   r   Śtest_PermutationMatrix_identity,   s   r.   c                  C   sp   t tg d¢} t|  ” dksJ t tg d¢} t|  ” dks$J t tg d¢} t|  ” dks6J d S )Nr   r   )r   r   r   é’’’’r*   )r   r   r   Śdoit©r%   r   r   r   Ś"test_PermutationMatrix_determinant4   s   r2   c                  C   s4   t tddd} t|  ” t tdddksJ d S )Nr   r   r   )r   r   r   r0   r1   r   r   r   Śtest_PermutationMatrix_inverse=   s   $r3   c                  C   sL  t tg d¢} t tdg}|  t”t||||||ksJ t tg d¢} t tdd}|  t”t|||||ks=J t tg d¢} |  t”t|||ksRJ t tg d¢} t tg d¢}|  t”t|||ksoJ t tg d¢} t tg d	¢}|  t”t|||ksJ t tdd
dddd} |  t”t| ks¤J d S )N)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   r   r   r    r   r!   )r   r   Śrewriter   )r%   ZP0ZP10ZP3210ZP3120r   r   r   Ś.test_PermutationMatrix_rewrite_BlockDiagMatrixB   s4   ’’
’
’
’r5   c                     sø   t ddt} tddd ttfdd tt fdd t | t ks-J tt fdd t ddd	d
t t ksJJ 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   ó    z+test_MartrixPermute_basic.<locals>.<lambda>c                      s   t  tdS r6   r8   r   )r   r   r   r   e   r9   c                      s   t  dS )Nr   ©r   r   )r   r   r   r   r   h   s    r   ©Śsizec                      s
   t  S )Nr:   r   )r   Śppr   r   r   m   s   
 )r   r   r	   r   r   r   r1   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J d S )Nr   r   r   r   r   )r   r   )r   r	   r   Śshape©r   r   r   r   r   Śtest_MatrixPermute_shapep   s   
rA   c                  C   sh   t ddd} tddd}| ” }t|| d ” |j| ddks!J t|| d ” |j| ddks2J d S )	Nr   r   r   r   r   Śrows)ZorientationŚcols)r   r	   r   r   Zpermute)r   r   ZAAr   r   r   Śtest_MatrixPermute_explicitv   s   ’’rD   c                  C   sp   t ddd} tddd}t|| d t” ” t|| d ” ks!J t|| d t” ” t|| d ” ks6J d S )Nr   r   r   r   r   )r   r	   r   r4   r   r   r@   r   r   r   Ś!test_MatrixPermute_rewrite_MatMul   s   ’’rE   c                  C   s  t ddd} tddd}t||  ” t|| ksJ t ddd} tddd}t||  ”  ” t||  ” ks8J t ddd} td}t|| d ”  ” t|| d ” ksVJ t|| d ”  ” t|| d ” ksjJ tdd}t||  ” |kszJ tdd}t||  ” |ksJ tddd}t dddd}t dddd}tt||d|d}| ” | ”  ” ks“J tt||d|d}| ” | ”  ” ksŹJ d S )Nr   r   r   r   r   r;   r    )r   r	   r   r0   r   r   r
   r   )r   r   r+   r,   Śexprr   r   r   Śtest_MatrixPermute_doit   s6   ’’’

rG   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.   r2   r3   r5   r>   rA   rD   rE   rG   r   r   r   r   Ś<module>   s*    		

