
    \h                         S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
  S SKJr  S SKJrJrJr  S SKJrJr  S SKJr  S S	KJr  S
 rS rS rS rS rS rS rS rS r S r!S r"S r#g)    )Permutation)	unchanged)Matrix)MatMulBlockDiagMatrixDeterminantInverse)MatrixSymbol)
ZeroMatrix	OneMatrixIdentity)MatrixPermutePermutationMatrix)raises)Symbolc                  &   [        SS/5      n [        [        U 5      (       d   e[        [        S 5        [        U 5      R                  5       [        SS/SS//5      :X  d   e[        [        U 5      [        SSS5      -  [        5      (       d   eg )N   r   c                      [        S5      $ )Nr   r      )r        i/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/tests/test_permutation.py<lambda>.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KKr   c                     [        / SQ5      n [        U 5      n[        / SQ/ SQ/ SQ/5      nX-  R                  5       UR                  5       U-  :X  d   eX!-  R                  5       X!R                  5       -  :X  d   e[        [        / SQ5      5      n[        [        / SQ5      5      n[        [        / SQ5      5      nX4-  U:X  d   eg )Nr   r   r   r   )         )         )r   r   r   )r   r   r   )r   r   r   r   )r!   PMP1P2P3s         r   test_PermutationMatrix_matmulr0      s    IA!A	9i01AC!--/!"3333C!MMO"3333	;y1	2B	;y1	2B	;y1	2B5B;;r   c                      [        / SQ5      n [        U 5      n[        / SQ5      n[        U5      nUS-  U:X  d   eUS-  [        S5      :X  d   eg )Nr$   r   r   r   r   r%   )r   r   r   )p1r-   p2r.   s       r   test_PermutationMatrix_matpowr5   #   sP    	Y	B	2	B	Y	B	2	Bq5B;;q5HQKr   c                      [        SS/5      n [        U 5      R                  (       d   e[        SS/5      n [        U 5      R                  (       a   eg )Nr   r   )r   r   is_Identityr    s    r   test_PermutationMatrix_identityr8   ,   sI    QFAQ++++QFA #/////r   c                  B   [        [        / SQ5      5      n [        U 5      R                  5       S:X  d   e[        [        / SQ5      5      n [        U 5      R                  5       S:X  d   e[        [        / SQ5      5      n [        U 5      R                  5       S:X  d   eg )Nr   r   )r   r   r   r2   )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                      [        [        SSS5      5      n [        U 5      R                  5       [        [        SSS5      5      :X  d   eg )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            	         [        [        / SQ5      5      n [        [        S/5      5      nU R                  [        5      [        XXX5      :X  d   e[        [        / SQ5      5      n [        [        SS5      5      nU R                  [        5      [        XX!U5      :X  d   e[        [        / SQ5      5      n U R                  [        5      [        X"U5      :X  d   e[        [        / SQ5      5      n [        [        / SQ5      5      nU R                  [        5      [        XU5      :X  d   e[        [        / SQ5      5      n [        [        / S	Q5      5      nU R                  [        5      [        XU5      :X  d   e[        [        SS
5      " SS5      " SS5      5      n U R                  [        5      [        U 5      :X  d   eg )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_BlockDiagMatrixrF   B   s   +&89:A	;s+	,B99_%/0 0 0 	+&89:A
K1-
.C99_%,- - - 	+&89:A99_%#&' ' ' 	+&89:Ak,78E99_%2&' ' ' 	+&89:Ak,78E99_%2&' ' ' 	+a+Aq1!Q78A99_%);;;;r   c                    ^^^ [        SS5      m[        T5      n [        SSS5      m[        [        U4S j5        [        [        U4S j5        [        TU 5      [        TT5      :X  d   e[        [        UU4S j5        [        SSSS	9m[        TT5      [        TT5      :X  d   e[        SSS5      m[        [        UU4S
 j5        g )Nr   r   r   r   c                  .   > [        [        S5      T 5      $ Nxr   r   r    s   r   r   +test_MartrixPermute_basic.<locals>.<lambda>d   s    }VC[!<r   c                  .   > [        T [        S5      5      $ rI   rK   )r   s   r   r   rL   e   s    }Qs<r   c                     > [        T TS5      $ )Nr   r   )r   r!   s   r   r   rL   h   s    }Q15r   r%   sizec                     > [        T T5      $ )NrO   )r   pps   r   r   rL   m   s    }Q3r   )r   r   r
   r   r   r   )r+   r   r!   rS   s    @@@r   test_MartrixPermute_basicrT   _   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    [        SS5      n [        SSS5      n[        X5      R                  S:X  d   eg )Nr   r   r   r   r%   )r   r%   )r   r
   r   shaper!   r   s     r   test_MatrixPermute_shaperX   p   s5    AqAS!QA$$...r   c                     [        SSS5      n [        SSS5      nUR                  5       n[        XS5      R                  5       UR	                  U SS9:X  d   e[        XS5      R                  5       UR	                  U SS9:X  d   eg )	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q!--/


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


1&
)* * *r   c                  d   [        SSS5      n [        SSS5      n[        XS5      R                  [        5      R                  5       [        XS5      R                  5       :X  d   e[        XS5      R                  [        5      R                  5       [        XS5      R                  5       :X  d   eg )Nr   r   r   r   r%   )r   r
   r   rA   r   r   rW   s     r   !test_MatrixPermute_rewrite_MatMulra      s    Aq!AS!QAq!))&1==?aA**,- - -q!))&1==?aA**,- - -r   c                     [        SSS5      n [        SSS5      n[        X5      R                  5       [        X5      :X  d   e[        SSS9n [        SSS5      n[        X5      R                  5       R	                  5       [        X5      R	                  5       :X  d   e[        SSS5      n [        S5      n[        XS5      R                  5       R	                  5       [        XS5      R	                  5       :X  d   e[        XS5      R                  5       R	                  5       [        XS5      R	                  5       :X  d   e[        SS5      n[        X5      R                  5       U:X  d   e[        SS5      n[        X5      R                  5       U:X  d   e[        SSS5      n[        SSSS5      n[        SSSS5      n[        [        XS5      US5      nUR	                  5       UR                  5       R	                  5       :X  d   e[        [        XS5      US5      nUR	                  5       UR                  5       R	                  5       :X  d   eg )Nr   r   r   r   r%   rP   r&   )r   r
   r   r;   r   r   r   r   )r!   r   r3   r4   exprs        r   test_MatrixPermute_doitrd      s   Aq!AS!QA##%q)<<<<AAAS!QA##%113a'')* * * 	Aq!AAq!&&(446aA**,- - -q!&&(446aA**,- - - 	1aA##%***!QA##%***S!QA	Q1a	 B	Q1a	 Bqa0"a8D!8!8!::::qa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"   r0   r5   r8   r=   r?   rF   rT   rX   r_   ra   rd   r   r   r   <module>rn      sj    + % !2 2 ; N N% ' $L
 0&H
<:5"/*-;r   