
    sg                         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
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#y)    )Permutation)	unchanged)Matrix)MatMulBlockDiagMatrixDeterminantInverse)MatrixSymbol)
ZeroMatrix	OneMatrixIdentity)MatrixPermutePermutationMatrix)raises)Symbolc                     t        ddg      } t        t        |       sJ t        t        d        t        |       j                         t        ddgddgg      k(  sJ t        t        |       t        ddd      z  t              sJ y )N   r   c                      t        d      S )Nr   r      )r        d/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_permutation.py<lambda>z.test_PermutationMatrix_basic.<locals>.<lambda>   s    0; r   Ar   )
r   r   r   r   
ValueErroras_explicitr   
isinstancer
   r   ps    r   test_PermutationMatrix_basicr!      s~    QFA&***
:;<Q++-!Q!Q8H1IIII'*<Q+BBFKKKr   c                     t        g d      } t        |       }t        g dg dg dg      }||z  j                         |j                         |z  k(  sJ ||z  j                         ||j                         z  k(  sJ t        t        g d            }t        t        g d            }t        t        g d            }||z  |k(  sJ y )Nr   r   r   r   )         )         )r   r   r   )r   r   r   )r   r   r   r   )r    PMP1P2P3s         r   test_PermutationMatrix_matmulr/      s    IA!A	9i01AaC!--/!"3333aC!AMMO"3333	;y1	2B	;y1	2B	;y1	2Bb5B;;r   c                      t        g d      } t        |       }t        g d      }t        |      }|dz  |k(  sJ |dz  t        d      k(  sJ y )Nr#   r   r   r   r   r$   )r   r   r   )p1r,   p2r-   s       r   test_PermutationMatrix_matpowr4   #   sP    	Y	B	2	B	Y	B	2	Bq5B;;q5HQKr   c                      t        ddg      } t        |       j                  sJ t        ddg      } t        |       j                  rJ y )Nr   r   )r   r   is_Identityr   s    r   test_PermutationMatrix_identityr7   ,   sI    QFAQ++++QFA #/////r   c                  <   t        t        g d            } t        |       j                         dk(  sJ t        t        g d            } t        |       j                         dk(  sJ t        t        g d            } t        |       j                         dk(  sJ y )Nr   r   )r   r   r   r1   )r   r   r   doitr*   s    r   "test_PermutationMatrix_determinantr<   4   s    +i01Aq> A%%%+i01Aq> B&&&+i01Aq> A%%%r   c                      t        t        ddd            } t        |       j                         t        t        ddd            k(  sJ y )Nr   r   r   )r   r   r	   r:   r;   s    r   test_PermutationMatrix_inverser>   =   s=    +aA./A1:?? 1+aA2F GGGGr   c            	         t        t        g d            } t        t        dg            }| j                  t              t        ||||||      k(  sJ t        t        g d            } t        t        dd            }| j                  t              t        |||||      k(  sJ t        t        g d            } | j                  t              t        |||      k(  sJ t        t        g d            } t        t        g d            }| j                  t              t        |||      k(  sJ t        t        g d            } t        t        g d	            }| j                  t              t        |||      k(  sJ t          t        dd
      dd      dd            } | j                  t              t        |       k(  sJ y )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*   P0P10P3210P3120s        r   .test_PermutationMatrix_rewrite_BlockDiagMatrixrE   B   s   +&89:A	;s+	,B99_%BBB/0 0 0 	+&89:A
K1-
.C99_%BR,- - - 	+&89:A99_%S#&' ' ' 	+&89:Ak,78E99_%E2&' ' ' 	+&89:Ak,78E99_%E2&' ' ' 	1++a+Aq1!Q78A99_%);;;;r   c                     t        dd      t              } t        ddd      t        t        fd       t        t        fd       t        |       t              k(  sJ t        t        fd       t        ddd	      t              t              k(  sJ t        ddd      t        t        fd
       y )Nr   r   r   r   c                  .    t        t        d             S Nxr   r   r   s   r   r   z+test_MartrixPermute_basic.<locals>.<lambda>d   s    }VC[!< r   c                  .    t         t        d            S rH   rJ   )r   s   r   r   z+test_MartrixPermute_basic.<locals>.<lambda>e   s    }Qs< r   c                      t         d      S )Nr   r   )r   r    s   r   r   z+test_MartrixPermute_basic.<locals>.<lambda>h   s    }Q15 r   r$   sizec                      t               S )NrM   )r   pps   r   r   z+test_MartrixPermute_basic.<locals>.<lambda>m   s    }Q3 r   )r   r   r
   r   r   r   )r*   r   r    rQ   s    @@@r   test_MartrixPermute_basicrR   _   s    AqA!AS!QA
:<=
:<=A-1"5555
:56	Q	"BB=A#6666	Q1	B
:34r   c                  l    t        dd      } t        ddd      }t        ||       j                  dk(  sJ y )Nr   r   r   r   r$   )r   r$   )r   r
   r   shaper    r   s     r   test_MatrixPermute_shaperV   p   s7    AqAS!QAA$$...r   c                     t        ddd      } t        ddd      }|j                         }t        || d      j                         |j	                  | d      k(  sJ t        || d      j                         |j	                  | d      k(  sJ y )	Nr   r   r   r   r$   rows)orientationcols)r   r
   r   r   permute)r    r   AAs      r   test_MatrixPermute_explicitr]   v   s    Aq!AS!QA	
BAq!--/


1&
)* * *Aq!--/


1&
)* * *r   c                  h   t        ddd      } t        ddd      }t        || d      j                  t              j                         t        || d      j                         k(  sJ t        || d      j                  t              j                         t        || d      j                         k(  sJ y )Nr   r   r   r   r$   )r   r
   r   r@   r   r   rU   s     r   !test_MatrixPermute_rewrite_MatMulr_      s    Aq!AS!QAAq!))&1==?aA**,- - -Aq!))&1==?aA**,- - -r   c                     t        ddd      } t        ddd      }t        ||       j                         t        ||       k(  sJ t        dd      } t        ddd      }t        ||       j                         j	                         t        ||       j	                         k(  sJ t        ddd      } t        d      }t        || d      j                         j	                         t        || d      j	                         k(  sJ t        || d      j                         j	                         t        || d      j	                         k(  sJ t        dd      }t        ||       j                         |k(  sJ t        dd      }t        ||       j                         |k(  sJ t        ddd      }t        dddd      }t        dddd      }t        t        ||d      |d      }|j	                         |j                         j	                         k(  sJ t        t        ||d      |d      }|j	                         |j                         j	                         k(  sJ y )Nr   r   r   r   r$   rN   r%   )r   r
   r   r:   r   r   r   r   )r    r   r2   r3   exprs        r   test_MatrixPermute_doitrb      s5   Aq!AS!QAA##%q!)<<<<AAAS!QAA##%113a'')* * * 	Aq!AAAq!&&(446aA**,- - -Aq!&&(446aA**,- - - 	1aAA##%***!QAA##%***S!QA	Q1a	 B	Q1a	 Bq"a0"a8D!8!8!::::q"a0"a8D!8!8!::::r   N)$sympy.combinatoricsr   sympy.core.exprr   sympy.matricesr   sympy.matrices.expressionsr   r   r   r	   "sympy.matrices.expressions.matexprr
   "sympy.matrices.expressions.specialr   r   r   &sympy.matrices.expressions.permutationr   r   sympy.testing.pytestr   sympy.core.symbolr   r!   r/   r4   r7   r<   r>   rE   rR   rV   r]   r_   rb   r   r   r   <module>rl      sj    + % !2 2 ; N N% ' $L
 0&H
<:5"/*-;r   