a
    kŗ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sLJ tt| tddd t	sjJ d S )Né   r   c                   S   s   t dS )N©r   r   é   )r   © r   r   ś_/var/www/auris/lib/python3.9/site-packages/sympy/matrices/expressions/tests/test_permutation.pyŚ<lambda>   ó    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sJJ ||  ” || ”  ksfJ tt g d¢}tt g d¢}tt g d¢}|| |ks¦J 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s8J |d tdksLJ 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r4J 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sHJ t tg d¢} t|  ” dkslJ d S )Nr   r   )r   r   r   é’’’’r+   )r   r   r   Śdoit©r&   r   r   r   Ś"test_PermutationMatrix_determinant4   s    r3   c                  C   s4   t tddd} t|  ” t tdddks0J d S )Nr   r   r   )r   r   r   r1   r2   r   r   r   Śtest_PermutationMatrix_inverse=   s    r4   c                  C   sP  t tg d¢} t tdg}|  t”t||||||ks>J t tg d¢} t tdd}|  t”t|||||kszJ t tg d¢} |  t”t|||ks¤J t tg d¢} t tg d¢}|  t”t|||ksŽJ t tg d¢} t tg d	¢}|  t”t|||ksJ t tdd
dddd} |  t”t| ksLJ 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    ’’
’
’
’
r6   c                     sø   t ddt} tddd ttfdd tt fdd t | t ksZJ tt fdd t ddd	d
t t ksJ 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 r7   r9   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 )Nr:   r   )r   Śppr   r   r   m   r   )r   r   r	   r   r   r   r2   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sBJ t|| d ” |j| ddksdJ 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sBJ t|| d t” ” t|| d ” kslJ d S )Nr   r   r   r   r    )r   r	   r   r5   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s4J t ddd} tddd}t||  ”  ” t||  ” kspJ t ddd} td}t|| d ”  ” t|| d ” ks¬J t|| d ”  ” t|| d ” ksŌJ tdd}t||  ” |ksōJ 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slJ tt||d|d}| ” | ”  ” ksJ d S )Nr   r   r   r   r    r;   r!   )r   r	   r   r1   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/   r3   r4   r6   r>   rA   rD   rE   rG   r   r   r   r   Ś<module>   s(   		

