
    \h/                        S SK JrJr  S SKJr  S SKJrJr  S SKJ	r	  S SK
JrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  \" SS	S	5      r\" S
S	S5      r\" SS	S	5      r\" SSS5      r\" SSS5      r\" SS S 5      r\" SS	S5      r\" SS	S5      rS r S r!S r"\S 5       r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S  r-S! r.\S" 5       r/S# r0S$ r1S% r2S& r3S' r4S( r5g))*    )Qask)Symbol)
DiagMatrixDiagonalMatrix)Matrix)	MatrixSymbolIdentity
ZeroMatrix	OneMatrixTraceMatrixSliceDeterminantBlockMatrixBlockDiagMatrix)LofLU)XFAILX   Y   ZA1x1   B1x1C0x0V1V2c                  "   [        [        R                  " [        5      5      (       d   e[        [        R                  " [        5      5      (       a   e[        [        R                  " [        [        R
                  -  5      5      (       d   eg N)r   r   squarer   r   T     ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/assumptions/tests/test_matrices.pytest_squarer&      sU    qxx{188A;qxx!##r$   c                  @   [        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        5      5      SL d   e[        [        R                  " [        [        -  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        [
        -  5      [        R                  " [        5      5      b   e[        [        R                  " [        [
        -  5      [        R                  " [        5      [        R                  " [
        5      -  5      SL d   e[        [        R                  " [        R                  5      5      b   e[        [        R                  " [        R                  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        R                  5      5      SL d   e[        [        R                  " [        S5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        5      [        R                  " [        5      [        R                  " [        5      -  5      (       d   eg )NFTr   r   )r   r   
invertibler   r   r   r"   Ir
   r   r   fullrankr!   r#   r$   r%   test_invertibler+      s   q||AQ0000q||A5(((q||AaC !,,q/2e;;;q||AaC !,,q/2:::q||AaC !,,q/ALLO"CDLLLq||ACC !)))q||ACC !,,q/2d:::q||ACC !T)))q||HQK()T111q||Jq!,-.%777q||IaO,-555q||IaO,-666q||A

1 ;<<<<r$   c                  V   [        [        R                  " [        5      5      b   e[        [        R                  " [        5      [        R                  " [        5      5      SL d   e[        [        R                  " [        5      [        R                  " [        5      ) 5      SL d   eg )NFT)r   r   singularr   r(   r#   r$   r%   test_singularr.   '   sh    qzz!}%%%qzz!}all1o.%777qzz!}q||A./4777r$   c                      [        [        R                  " [        5      [        R                  " [        5      5      SL d   eg )NT)r   r   r(   r   r*   r#   r$   r%   test_invertible_fullrankr0   ,   s'    q||A

1.$666r$   c                  b   [        [        R                  " [        [	        S5      /5      5      5      S:X  d   e[        [        R                  " [        [        SS5      /5      5      5      S:X  d   e[        / SQ/ SQ/5      n [        / SQ/ SQ/5      n[        [        R                  " [        [        R                  " SS5      UR                  /U [        R                  " S5      //5      5      5      S:X  d   e[        [        R                  " [        UR                  [        R                  " SS5      /[        R                  " S5      U //5      5      5      S:X  d   e[        [        R                  " [        U [        R                  " S5      /[        R                  " SS5      UR                  //5      5      5      S:X  d   e[        [        R                  " [        [        R                  " S5      U /UR                  [        R                  " SS5      //5      5      5      S:X  d   eg )	Nr   TF)r   r   r   )r         )r3   r      )r   r   r2   r   )
r   r   r(   r   r
   r   r   onesr"   eyer   r   s     r%   test_invertible_BlockMatrixr8   1   s   q||K!678D@@@q||KAq)9(:;<=FFF	9%&A	9%&Aq||K	Q	ACC 	
FJJqM)   	   
 q||K	
fkk!Q 	A)   	   
 q||K	
FJJqM	Q	ACC )   	   
 q||K	A	
fkk!Q )   	   r$   c                     [        [        R                  " [        [	        S5      [	        S5      5      5      5      S:X  d   e[        [        R                  " [        [        SS5      [	        S5      5      5      5      S:X  d   e[        [        R                  " [        [	        S5      [        SS5      5      5      5      S:X  d   eg )Nr   r2   TF)r   r   r(   r   r
   r   r   r#   r$   r%   test_invertible_BlockDiagMatrixr:   M   s    q||OHQK!EFG4OOOq||OJq!,<hqkJKLPUUUUq||OHQK1aIJKuTTTr$   c            	      	   [        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        [        -  5      [        R                  " [        5      5      b   e[        [        R                  " [        [        -  5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        [        -   5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [
        5      5      SL d   e[        [        R                  " [
        [
        R                  -  5      5      SL d   e[        [        R                  " [
        R                  [        -  [
        -  5      5      b   e[        [        R                  " [
        R                  [        -  [
        -  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        S-  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        5      5      SL d   e[        [        R                  " [        [        -   5      5      SL d   e[        [        R                  " [        [        -  5      5      SL d   e[        [        R                  " [        R                  [        -  5      5      SL d   e[        [        R                  " [        R                  [        [        -   -  5      5      SL d   e[        [        R                  " [        R                  [        [        -   -  [        -   5      5      SL d   e[        [        R                  " [        [
        SS5      5      5      SL d   e[        [        R                  " [        S5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   eg )NTF
   r   r   r   r   r   )r   r   	symmetricr   r   r   r"   r   r   r   r   r   r
   r   r   r#   r$   r%   test_symmetricr@   S   s   q{{1~q{{1~....q{{1Q3Q0888q{{1Q3Q!++a.!@ATIIIq{{1q5!1;;q>AKKN#BCtKKKq{{1~%'''q{{1QSS5!"d***q{{133q57#$,,,q{{133q57#Q[[^4<<<q{{1b5!1;;q>2d:::q{{4 !T)))q{{4$;'(D000q{{4$;'(D000q{{2447#$,,,q{{244b>*+t333q{{244b>D012d:::q{{;q&&9:;tCCCq{{8A;'(D000q{{:a+,-555q{{9Q?+,444r$   c                    [        U " [        5      U " [        5      5      (       d   e[        U " [        R                  5      U " [        5      5      SL d   e[        U " [        R                  5      U " [        5      5      SL d   e[        U " [        S-  5      U " [        5      5      (       d   e[        U " [        5      5      SL d   e[        U " [        5      5      b   e[        U " [        5      [
        R                  " [        5      ) 5      SL d   e[        U " [        [        -  [        -  5      U " [        5      U " [        5      -  5      SL d   e[        U " [        S5      5      5      SL d   e[        U " [        SS5      5      5      SL d   e[        [
        R                  " [        5      U " [        5      5      (       d   e[        U " [        [        -   5      U " [        5      U " [        5      -  5      (       a   eg )NTr   Fr   )
r   r   r"   r)   r   r   r(   r   r
   r   )	predicates    r%   _test_orthogonal_unitaryrC   h   s   y|Yq\****y~y|,444y~y|,444yA	!----y|%%%y|$$$y|all1o-.%777y1Q1	!!<=EEEy!%&$...yAq)*+u444q||A	!----9QU#Yq\IaL%@AAAAAr$   c                  6    [        [        R                  5        g r    )rC   r   
orthogonalr#   r$   r%   test_orthogonalrF   v   s    Q\\*r$   c                      [        [        R                  5        [        [        R                  " [        5      [        R
                  " [        5      5      (       d   eg r    )rC   r   unitaryr   r   rE   r#   r$   r%   test_unitaryrI   y   s1    QYY'qyy|Q\\!_----r$   c                     [        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        S-  5      [        R                  " [        5      5      (       d   e[        [        R                  " [        R                  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        5      5      b   e[        [        R                  " [
        5      5      b   e[        [        R                  " [        [        -  5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        S5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        5      [        R                  " [        5      ) 5      S:X  d   eg )Nr   Tr   Fr   )r   r   r*   r   r"   r   r   r
   r   r   r(   r#   r$   r%   test_fullrankrK   }   s   qzz!}ajjm,,,,qzz!Q$A////qzz!##

1.$666qzz!}%%%qzz!}%%%qzz!A#

1

1 =>$FFFqzz(1+&'4///qzz*Q*+,555qzz)Aq/*+t333qzz)Aq/*+u444q||AA/5888r$   c                  	   [        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        R                  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        R
                  5      [        R                  " [        5      5      SL d   e[        [        R                  " [        5      5      SL d   e[        [        R                  " [        5      5      b   e[        [        R                  " [        S-  5      [        R                  " [        5      5      (       d   e[        [        R                  " [        [        -  [        -  5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        R                  [        -  [        -  5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        R                  [        -  [        -  5      [        R                  " [        5      5      (       a   e[        [        R                  " [        S5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        [        -   5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        * 5      [        R                  " [        5      5      (       a   e[        [        R                  " [        S   5      [        R                  " [        5      5      (       d   eg )NTFr   r   )r   r   )r   r   positive_definiter   r"   r)   r   r   rE   r*   r
   r   r   positiver#   r$   r%   test_positive_definiterO      s   q""1%q':':1'=>>>>q""133')<)<Q)?@DHHHq""133')<)<Q)?@DHHHq""1%&%///q""1%&...q""1a4(!*=*=a*@AAAAq""1Q3q5)"Q%8%8%;;=@DE E Eq""1%q||A7777q""133q57+"QZZ]247;< < <1&&qss1uQw/1D1DQ1GHHHHq""8A;/0D888q"":a#345>>>q""9Q?34<<<q""9Q?34===q""1q5)1+>+>q+A",# $'+, , ,1&&r*A,?,?,BCCCCqzz!D'"A$7$7$:;;;;r$   c                     [        [        R                  " [        [        R
                  -   [        S5      -   5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        [        R
                  -  5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        S5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        S-  5      [        R                  " [        5      5      (       d   e[        [        R                  " [        S-  5      [        R                  " [        5      5      (       d   eg )Nr   Tr   r   F)r   r   upper_triangularr   r   r"   r
   lower_triangularr   r   
triangularunit_triangularr#   r$   r%   test_triangularrU      s%   q!!!acc'HQK"78!:L:LQ:Oq!;" #&*+ + +q!!!ACC%(!*<*<Q*?q!+" #&*+ + +q!!(1+./4777q!!*Q"234<<<q!!*Q"234<<<q!!)Aq/23t;;;q!!)Aq/23t;;;q!!)Aq/23u<<<q!!)Aq/23u<<<q||A 1 1! 45555q!!!Q$'););A)>????q!!!Q$'););A)>????r$   c            	      	   [        [        R                  " [        [        R
                  -   [        S5      -   5      [        R                  " [        5      [        R                  " [        5      -  5      SL d   e[        [        R                  " [        SS5      5      5      (       d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        SS5      5      5      SL d   e[        [        R                  " [        5      [        R                  " [        5      -  [        R                  " [        5      5      (       d   e[        [        R                  " [        5      [        R                  " [        5      [        R                  " [        5      -  5      (       d   e[        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        5      [        R                  " [        5      5      (       d   e[        [        R                  " [        5      5      (       d   e[        [        R                  " [        5      5      (       d   e[        [        R                  " [        [        -   5      5      (       d   e[        [        R                  " [        [        -  5      5      (       d   e[        [        R                  " [         R
                  ["        -  5      5      (       d   e[        [        R                  " [         R
                  [        [        -   -  [         -  5      5      (       d   e[        [        R                  " [%        [&        SS5      5      5      SL d   e[        [        R                  " [         R
                  [         ["        -   -  5      5      SL d   e[        [        R                  " [        S-  5      [        R                  " [        5      5      (       d   e[        [        R                  " [        S5      5      5      (       d   e[        [        R                  " [)        [         5      5      5      (       d   e[        [        R                  " [+        [        5      5      5      (       d   eg )Nr   Tr   r   Fr=   r>   )r   r   diagonalr   r   r"   r
   r   r   rR   rQ   r?   rS   r   r   r   r   r   r   r   r   r   r#   r$   r%   test_diagonalrX      s   qzz!acc'HQK/0!**Q-zz!}3 !%& & &qzz*Q*+,,,,qzz)Aq/*+t333qzz)Aq/*+u444q!!!$q'9'9!'<<ajjmLLLLqzz!}a003a6H6H6KKLLLLq{{1~qzz!}----q||A

1....qzz$    qzz$    qzz$+&''''qzz$t)$%%%%qzz"$$r'"####qzz"$$A,r/*++++qzz+a89:dBBBqzz"$$R.)*d222qzz!Q$A////qzz(1+&''''qzz*R.)****qzz.+,----r$   c                      [        [        R                  " [        [        5      5      [        R
                  " [        [        5      5      5      (       d   eg r    )r   r   realr   r   rN   r#   r$   r%   test_non_atomsr[      s/    qvveAhE!H!56666r$   c                     [        SSS5      n [        SSS5      n[        [        R                  " X-   5      [        R                  " U 5      [        R                  " U5      -  5      SL d   e[        [        R                  " U 5      [        R                  " U 5      5      SL d   e[        [        R                  " X-   5      [        R                  " U 5      [        R                  " U5      -  5      SL d   eg )Nr   r   r   T)r	   r   r   rR   rS   r7   s     r%   test_non_trivial_impliesr]      s    S!QAS!QAq!!!#&(:(:1(=!!!$)% &)-. . .q||A 2 21 56$>>>q||AC !"4"4Q"7!!!$#% &)-. . .r$   c                     [        SSS5      n [        U SS5      n[        U SS5      n[        [        R                  " U5      [        R                  " U 5      5      (       d   e[        [        R
                  " U5      [        R
                  " U 5      5      (       d   e[        [        R                  " U5      [        R                  " U 5      5      (       d   e[        [        R                  " U5      [        R                  " U 5      5      (       d   e[        [        R                  " U5      [        R                  " U 5      5      (       d   e[        [        R                  " U5      [        R                  " U 5      5      (       a   e[        [        R
                  " U5      [        R
                  " U 5      5      (       a   e[        [        R                  " U5      [        R                  " U 5      5      (       a   e[        [        R                  " U5      [        R                  " U 5      5      (       a   e[        [        R                  " U5      [        R                  " U 5      5      (       a   eg )Nr   r3   )r   r   )r   r   )	r	   r   r   r   r?   r(   rW   rE   rQ   )r   BCs      r%   test_MatrixSlicera      s   S!QAAvv&AAvv&Aq{{1~q{{1~....q||AQ0000qzz!}ajjm,,,,q||AQ0000q!!!$a&8&8&;<<<<1;;q>1;;q>22221<<?ALLO44441::a=!**Q-00001<<?ALLO44441%%a(!*<*<Q*?@@@@@r$   c                  .   [        SSS5      n [        [        R                  " [	        U 5      5      [        R
                  " U 5      5      (       d   e[        [        R                  " [        U 5      5      [        R
                  " U 5      5      (       d   eg )Nr   r3   )r	   r   r   rN   r   rM   r   r   s    r%   test_det_trace_positiverd      sf    S!QAqzz%(#Q%8%8%;<<<<qzz+a.)1+>+>q+ABBBBr$   c                  b
   [        SSS5      n [        SSS5      n[        [        R                  " U 5      [        R                  " U 5      5      (       d   e[        [        R                  " U 5      [        R                  " U 5      5      (       a   e[        [        R
                  " U 5      [        R                  " U 5      5      (       d   e[        [        R
                  " U S-  5      [        R                  " U 5      5      (       d   e[        [        R                  " U S-  5      [        R                  " U 5      5      (       d   e[        [        R                  " X-   5      [        R                  " U 5      5      b   e[        [        R                  " X-   5      [        R                  " U 5      [        R                  " U5      -  5      (       d   eSSKJn  [        [        R                  " U" X5      5      [        R                  " U 5      [        R                  " U5      -  5      (       d   e[        [        R
                  " X-   5      [        R                  " U 5      [        R
                  " U5      -  5      (       d   e[        [        R                  " U R                  5      [        R                  " U 5      5      (       d   e[        [        R                  " U R                  5      [        R                  " U 5      [        R                  " U 5      -  5      (       d   e[        [        R                  " [        U 5      5      [        R                  " U 5      5      (       d   e[        [        R                  " [        U 5      5      [        R                  " U 5      5      (       d   e[        [        R                  " U R                  5      [        R                  " U 5      5      (       a   e[        S5      n[        [        R                  " X0-  5      [        R                  " U 5      [        R                  " U5      -  5      (       d   e[        [        R                  " [        U 5      5      [        R                  " U 5      5      (       d   e[        SS	S	S
9n[        [        R                  " X-  5      [        R                  " U 5      [        R                  " U 5      -  5      (       d   e[        [        R                  " X-  5      [        R                  " U 5      5      b   eg )Nr   r3   r   r   r   )HadamardProductalphaeT)integernegative)r	   r   r   real_elementsinteger_elementscomplex_elements#sympy.matrices.expressions.hadamardrf   r"   r)   r(   r   r   r   rZ   r   )r   r   rf   rg   rh   s        r%   test_field_assumptionsro      sr   S!QAS!QAqq!1??1#566661%%a(!//!*<====q!!!$aooa&89999q!!!Q$');<<<<qq!t$a&8&8&;<<<<qqs#Q__Q%78@@@qqs#Q__Q%7!//!:L%LMMMMCqq45OOA&);;= = = =q!!!#&(:Q=O=OPQ=R(RSSSSqqss#Q__Q%78888qqss#Q__Q%7!,,q/%IJJJJquQx(!//!*<====q!!+a.113E3Ea3HIIII1%%acc*A,>,>q,ABBBB7OEquw');affUm)KLLLLquQx(!//!*<====sD40Aqqt$aooa&81<<?&JKKKKqqt$aooa&89AAAr$   c                     [        SSS5      n [        [        R                  " U S   5      [        R                  " U 5      5      (       d   e[        [        R
                  " U S   5      [        R                  " U 5      5      (       d   e[        [        R                  " U S   5      [        R                  " U 5      5      (       d   e[        [        R                  " [        S5      5      5      (       d   e[        [        R                  " [        SS5      5      5      (       d   e[        [        R                  " [        SS5      5      5      (       d   eSSKJn  [        [        R                  " U" S5      5      5      (       d   eg )Nr   r3   r>   r   r   )DFT)r	   r   r   rZ   rk   ri   rl   complexrm   r
   r   r   "sympy.matrices.expressions.fourierrq   )r   rq   s     r%   test_matrix_element_setsrt     s   S!QAqvvag 23333qyy4!1#5#5a#89999qyy4!1#5#5a#89999q!!(1+.////q!!*Q"234444q!!)Aq/233336q!!#a&)****r$   c                  2   [        SSS5      n [        [        R                  " U S S 2S4   5      [        R                  " U 5      5      (       d   e[        [        R                  " [	        U /U //5      5      [        R                  " U 5      5      (       d   eg )Nr   r3   r   )r	   r   r   rl   r   rc   s    r%   &test_matrix_element_sets_slices_blocksrv     s    S!QAq!!!AqD'*A,>,>q,ABBBBq!!+sQCj"9:**1-/ / / /r$   c                  4   [        [        R                  " [        [        5      5      [        R
                  " [        5      5      (       d   e[        [        R                  " [        [        5      5      [        R
                  " [        5      5      (       d   eg r    )r   r   ri   r   r   rl   r   r#   r$   r%   *test_matrix_element_sets_determinant_tracerx     sX    qyyQ(!*<*<Q*?@@@@qyyq"A$6$6q$9::::r$   N)6sympy.assumptions.askr   r   sympy.core.symbolr   #sympy.matrices.expressions.diagonalr   r   sympy.matrices.denser   sympy.matrices.expressionsr	   r
   r   r   r   r   r   r   r   )sympy.matrices.expressions.factorizationsr   sympy.testing.pytestr   r   r   r   r   r   r   r   r   r&   r+   r.   r0   r8   r:   r@   rC   rF   rI   rK   rO   rU   rX   r[   r]   ra   rd   ro   rt   rv   rx   r#   r$   r%   <module>r      s+   * $ L 'R R R ; &aaaFAq!FAq!FAq!$1$1 
=8
 7 78U5*B+.9<,@".07 . .A C
B6	+/;r$   