
    \h@                        S SK Jr  S SKJrJr  S SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJr  S SKJrJrJrJrJrJr  S SKJr  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'J(r(J)r)J*r*  S SK+J,r,J-r-  S SK.J/r/J0r0J1r1  \-" SSS9u  r2r3r4r5r6r7r8\" S\7\75      r9\" S\7\75      r:\" S\7\75      r;\" S\7\75      r<\" S\7\75      r=\" S\7\75      r>\
" \=\>//5      r?\
" \=/\>//5      r@S rAS rBS rCS rDS rES rFS rGS rHS rIS rJS  rKS! rLS" rMS# rN\S$ 5       rOS% rPS& rQS' rRS( rSS) rTS* rUS+ rVS, rWS- rXS. rYS/ rZS0 r[S1 r\S2 r]S3 r^S4 r_g5)6    )Trace)raisesslow)block_collapse	bc_matmulbc_block_plus_identBlockDiagMatrixBlockMatrixbc_dist	bc_mataddbc_transpose
bc_inverseblockcutreblock_2x2deblock)MatrixSymbolIdentitytracedet
ZeroMatrix	OneMatrix)Inverse)MatPow)	Transpose)NonInvertibleMatrixError)MatrixImmutableMatrixImmutableSparseMatrixzeros)TupleExprSFunction)Symbolsymbols)	transposeimrezi:n, pT)integerABCDGHc                      [        [        [        -  [        -  [        -  5      [        [        [        -  [        -  [        [        -  [        -  -   [        -  //5      :X  d   eg N)r   r/   b1b2r.   r
        i/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/tests/test_blockmatrix.pytest_bc_matmulr7      sE    QrT"WQY;!A#a%!A#a%-1B0C/D#EEEEr5   c                      [        [        [        [        //5      [        [        [        //5      -   5      [        [        [        -   [        [        -   //5      :X  d   eg r1   )r   r
   r.   r/   r4   r5   r6   test_bc_mataddr9       sJ    [1a&*[1a&-BBC!A#qs%& & &r5   c            	         [        [        [        [        [        /[
        [        //5      5      5      [        [        R                  [
        R                  /[        R                  [        R                  //5      :X  d   eg r1   )r   r   r
   r*   r+   r,   r-   Tr4   r5   r6   test_bc_transposer<   $   sU    	+1v1v.>"?@A!##qssacc133Z012 2 2r5   c                     [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[	        XU5      n[        X3-   5      R                  [	        SU -  SU-  SU-  5      5      (       d   eg )Nr*   r+   r,      )r   nmlr	   r   equals)r*   r+   r,   Xs       r6   test_bc_dist_diagrD   (   sj    S!QAS!QAS!QAa A13<qsAaC1=>>>>r5   c                     [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        X/X#//5      n[        S[        [        -   [        [        -   5      n[	        U[        [        [        -   5      -   U-   5      [        [        [        5      [        [        5      5      U-   U-   :X  d   eg )Nr*   r+   r,   r-   Z)r   r?   r@   r
   r   r   r	   )r*   r+   r,   r-   rC   rF   s         r6   test_block_plus_identrG   0   s    S!QAS!QAS!QAS!QAaVaV$%AS!a%Q'Aq8AE?2Q67HQK!59A=> > >r5   c                     [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        S[        [        -   [
        5      n[        S[        [        -   [        [        -   5      n[        [        X/X#//5      5      nUR                  " UR                  6 U:X  d   e[        S[        [        5      n[        U SU-  -   5      U SU-  -   :X  d   e[        S	[        [        5      n[        UR                  U -  U-  5      UR                  U -  U-  :X  d   eUR                  [        [        -   [        [        -   4:X  d   eUR                  S
:X  d   e[        U5      [        [        U R                  UR                  /UR                  UR                  //5      5      :X  d   e[        U5      R                  UR                  S S S2   :X  d   eXd-  R                  (       d   eUR!                  U5      R                  (       d   eXd-  R                  [        [        -   [
        4:X  d   eXe-   R"                  (       d   eUR%                  U5      R"                  (       d   eXe-   R                  UR                  :X  d   e[        S[        S5      n[        S	[        S5      n[        [        U/U//5      5      n	Xi-  R                  [        [        -   S4:X  d   e[        Xi-  5      R&                  S   X-  X-  -   :X  d   e[        Xi-  5      R&                  S   X'-  X8-  -   :X  d   e[        [        Xi-  5      5      [        [        Xi-  5      5      :X  d   e[        [)        Xi-  SU-  5      5      [        Xi-  5      [        SU-  5      4:X  d   e[        U //5      n
[        S/U R                  Q76 n[        X-   5      X-   :X  d   eg )Nr*   r+   r,   r-   MNEr>   Fr>   r>      )r   r   )rO   r   rF   )r   r?   r@   krA   pr
   r   	__class__argsr   r;   shape
blockshaper&   	is_MatMul	_blockmul	is_MatAdd	_blockaddblocksr    )r*   r+   r,   r-   rI   rJ   rC   rK   rL   YAbrF   s               r6   test_BlockMatrixr]   :   sN   S!QAS!QAS!QAS!QAS!a%#AS!a%Q'AFQFQF+,-A;;1$$$ 	S!QA!ac'"a!A#g---S!QA!##a%'"acc!eAg---77q1ua!en$$$<<6!!!Q<;vQSSzACC:.F'GHHHHQ<2... C???;;q>####C;;1q5!*$$$E;;q>####E==AGG###S!QAS!QAFQC!:&'AC;;1q5!*$$$!#%%d+qsQSy888!#%%d+qsQSy888 )AC.)Y~ac7J-KKKK%QqS/*qs^AaC0/2 2 2 2 
qcU	BS#177#A"&!QU***r5   c                      [        SS/SS//5      n [        [        U //5      5      U :X  d   e[        SS/SS//5      n [        [        U //5      5      U :X  d   eg NrO   r>         )r   r   r
   r   r*   s    r6   %test_block_collapse_explicit_matricesrc   k   sh    AA A+se,-2221v1v./A+se,-222r5   c                      [        SSS5      n [        SS5      n[        X/X//5      n[        X"-  5      [        U S-  U/X//5      :X  d   e[        X"-  U-  5      [        U S-  U/X//5      :X  d   eg )Nar>   r`   )r   r   r
   r   )re   zbs      r6   test_issue_17624rh   r   s    S!QA1aAaVaV$%A!% K!Q$QF0C$DDDD!%!)$adAY4G(HHHHr5   c                  `    [        / SQ/ SQ/ SQ/5      n U [        [        U 5      5      :X  d   eg )N)rO   r>   r`   )ra         )      	   )r   r	   rb   s    r6   test_issue_18618ro   y   s+    	9i01Aq)****r5   c                     S V s/ s H  n [        U SS5      PM     sn u  pp4[        X/X4//5      n[        U5      [        U5      [        U5      -   :X  d   e[        [        [        [        [        5      /5      5      S:X  d   eg s  sn f )NABCDr`   r   )r   r
   r   r   r?   )sr*   r+   r,   r-   rC   s         r6   test_BlockMatrix_tracers   }   s|    178A,q!Q'8JA!aVaV$%A8uQx%(****jA./01Q666 9s   Bc                  6   S V s/ s H  n [        U SS5      PM     sn u  pp4[        X/X4//5      nSSKJn  SSKJn  U" UR                  U5      5         [        U5      [        U5      [        UR                  S5      5      -  :X  d   e S S S 5        [        [        U5      [        5      (       d   e[        [        U/5      5      [        U5      :X  d   e[        [        [        [        [        5      /5      5      S:X  d   eg s  sn f ! , (       d  f       N= f)Nrq   r`   r   )Q)assumingr*   )r   r
   sympy.assumptions.askru   sympy.assumptions.assumerv   
invertibler   schur
isinstancer!   r   r?   )rr   r*   r+   r,   r-   rC   ru   rv   s           r6   test_BlockMatrix_Determinantr|      s    178A,q!Q'8JA!aVaV$%A'1	!,,q/	"1vQ#aggcl"33333 
# c!fd####{A3 CF***{Jq!,-./1444 9 
#	"s   D6D


Dc            	         [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        X/X#//5      n[        U //5      nUR                  (       d   eU[        [        [        -   5      -   n[        U5      [        U [        [        5      -   U/X#[        [        5      -   //5      :X  d   eU[        S[        [        -   [        [        -   5      -   R                  (       d   eU[        S[        [        -   [        [        -   5      -  R                  (       d   e[        UR                  5      U R                  :X  d   e[        UR                  5       [        5      (       d   eUR                  (       a   e[        [        [        5      U/X#//5      nUR                  (       a   eg )Nr*   r+   r,   r-   ru   )r   r?   r@   r
   	is_squarer   r   rX   rV   Ir{   inverser   is_Identity)r*   r+   r,   r-   rC   r[   ru   rF   s           r6   test_squareBlockMatrixr      sn   S!QAS!QAS!QAS!QAaVaV$%AaSEA;;;	HQUOA1a(1+oq)A8A;+?@AB C B S!a%Q//::::S!a%Q//::::!##!##%%%aiik7++++}}hqk1%v./A}}}r5   c            
         [        S[        [        5      n [        S[        [        [        -
  5      n[        S[        [        -
  [        5      n[        S[        [        -
  [        [        -
  5      n[	        X/X#//5      nUR
                  (       a  UR                  [        [        4:X  d   e[        [        UR                  5      [        5      (       d   e[        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        [        [        5      n[	        X/X#//5      n[        UR                  5       5      [	        U R                  U R                  U-  UR                  S5      R                  -  U-  U R                  -  -   U R                  * U-  UR                  S5      R                  -  /UR                  S5      R                  * U-  U R                  -  UR                  S5      R                  //5      :X  d   e[        S[        [        5      n [        S[        [        5      n[        [        [        5      n[        S[        [        5      n[	        X/X#//5      n[        UR                  5       5      [	        UR                  S5      R                  * U-  UR                  -  UR                  S5      R                  /UR                  UR                  U -  UR                  S5      R                  -  U-  UR                  -  -   UR                  * U -  UR                  S5      R                  -  //5      :X  d   e[        S[        [        5      n [        [        [        5      n[        S[        [        5      n[        S[        [        5      n[	        X/X#//5      n[        UR                  5       5      [	        UR                  * U-  UR                  S5      R                  -  UR                  UR                  U-  UR                  S5      R                  -  U -  UR                  -  -   /UR                  S5      R                  UR                  S5      R                  * U -  UR                  -  //5      :X  d   e[        [        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[	        X/X#//5      n[        UR                  5       5      [	        UR                  S5      R                  UR                  S5      R                  * U-  UR                  -  /UR                  * U-  UR                  S5      R                  -  UR                  UR                  U-  UR                  S5      R                  -  U-  UR                  -  -   //5      :X  d   eg Nr*   r+   r,   r-   )r   r?   r@   rP   r
   r~   rT   r{   r   r   r   r   r   rz   )r*   r+   r,   r-   rC   s        r6   %test_BlockMatrix_2x2_inverse_symbolicr      sq   S!QAS!QU#AS!a%#AS!a%Q'AaVaV$%A;;177q!f,,,nQSS)73333 	S!QAS!QAS!QA1aAaVaV$%A!))+&+	
qssQw'!+acc1	1ACC4!8aggclnn3LM
''#,..1	qss	"AGGCLNN37 +    	S!QAS!QA1aAS!QAaVaV$%A!))+&+
''#,..1	qss	"AGGCLNN3	
qssQw'!+acc1	1ACC4!8aggclnn3LM7 +    	S!QA1aAS!QAS!QAaVaV$%A!))+&+
##AGGCLNN	"ACC!##'AGGCLNN*BQ*F*L$LM	
!''#,..1,qss237 +    	1aAS!QAS!QAS!QAaVaV$%A!))+&+	
!''#,..1,qss23
##AGGCLNN	"ACC!##'AGGCLNN*BQ*F*L$LM7 +   r5   c                  d   [        SS/SS//5      n [        SS/SS//5      n[        SS/SS//5      n[        SS/SS//5      nUR                  5       UR                  5       s=:X  a  UR                  5       s=:X  a  S:X  d   e   eX-   R                  5       X#-   R                  5       s=:X  a  X1-   R                  5       s=:X  a  S:X  d   e   e[        X/X#//5      n[        UR	                  5       5      R                  5       UR                  5       R	                  5       :X  d   e[        X/X#//5      n[        UR	                  5       5      R                  5       UR                  5       R	                  5       :X  d   e[        X/X//5      n[        UR	                  5       5      R                  5       UR                  5       R	                  5       :X  d   e[        X/X0//5      n[        UR	                  5       5      R                  5       UR                  5       R	                  5       :X  d   eg)z>Test 2x2 block matrix inversion numerically for all 4 formulasrO   r>   r`   ra   rn      N)r   rankr
   r   invas_explicit)rI   D1D2D3Ks        r6   $test_BlockMatrix_2x2_inverse_numericr      s   AA A	!Q!Q 	!B	!Q!Q 	!B	!Q!R!	"B779	3RWWY3!33333G>>~~/HBG>>3CHqHHHHH 	aWrh'(A!%%'"..0AMMO4G4G4IIIIbWrh'(A!%%'"..0AMMO4G4G4IIIIbXw'(A!%%'"..0AMMO4G4G4IIIIbXw'(A!%%'"..0AMMO4G4G4IIIIr5   c                  6   [         [        [        4n [        [        [         4n[        U  VVs/ s H'  nU Vs/ s H  n[	        SU< U< 3X#5      PM     snPM)     snn5      n[        UR                  5      n[        U[        5      (       d   eg s  snf s  snnf )NrI   )r?   r@   rP   r
   r   r   r   r{   )rowblocksizescolblocksizesrowscolsr   collapses         r6   test_BlockMatrix_3x3_symbolicr      s     1IM1IM!!D GTTmdt,d	9mT! 	A acc"Hh,,,,	 	Us   
B
BB
B
c                    ^^^^ [        S[        [        5      m[        S[        [        5      m[        S[        [        5      m[        S[        [        -   [        -   [        [        -   [        -   5      n [	        TTT5      m[	        TST-  ST-  5      nTR
                  S   T:X  d   eTR                  [        [        -   [        -   [        [        -   [        -   4:X  d   e[        UUUU4S j[        S5       5       5      (       d   eTR                  " TR                  6 T:X  d   eTR                  5       TTT4:X  d   e[        [        TR                  T-  5      [        5      (       d   e[!        TT-  5      [	        TT-  TT-  TT-  5      :X  d   e[        TT-  5      [	        TT-  TT-  TT-  5      :X  d   e[        TT-   5      R#                  [	        ST-  ST-  ST-  5      5      (       d   e[        TU-  5      [	        TT-  ST-  T-  ST-  T-  5      :X  d   e[        TU-   5      [	        ST-  ST-  S	T-  5      :X  d   eTSU -  -  R$                  (       d   eTSU -  -   R&                  (       d   eTR)                  U 5      R$                  (       d   eTR+                  U 5      R&                  (       d   eg )
Nr*   r+   r,   rI   r>   r`   )rO   rO   c              3      >#    U  HM  n[        S 5        H:  nX:w  a  TR                  X4   R                  OTR                  X4   TTT4;   v   M<     MO     g7f)r`   N)rangerZ   is_ZeroMatrix).0ijr*   r+   r,   rC   s      r6   	<genexpr>'test_BlockDiagMatrix.<locals>.<genexpr>  sY      1uQx! 01vqxx~++188AD>aQRTUY;VV'/ Ws   AAra   )r   r?   r@   rA   r	   rZ   rT   allr   rR   rS   get_diag_blocksr{   r   r   r   r   rB   rV   rX   rW   rY   )rI   r[   r*   r+   r,   rC   s     @@@@r6   test_BlockDiagMatrixr     sv   S!QAS!QAS!QAS!a%!)QUQY/A1a A1Q3!$A88D>Q77q1uqy!a%!),,,, 11X1 1 1 1 1;;1$$$1a)+++nQSS1W-x8888QqS>_QqS!A#qs;;;;!A#/!A#qsAaC"@@@@!a% ''!QqS!A#(FGGGG!A#/!A#qs1uac!e"DDDD!a% OAaC1ac$BBBB qsG1I    KKN%%%%KKN%%%%r5   c                    ^^ [        S[        [        5      m[        S[        [        5      n [        TU 5      nUR                  [        [        -   [        [        -   4:X  d   eUR                  [        [        -   [        [        -   4:X  d   eUR                  [        [        /:X  d   eUR                  [        [        /:X  d   e[        S[        [        5      m[        S[        [        5      n[        TU5      n[        X-   5      [        TT-   X-   5      :X  d   e[        XR                  -  5      [        TTR                  -  XR                  -  5      :X  d   e[        [        UU4S j5        g )Nr*   r+   r,   r-   c                  L   > [        T TR                  5      R                  5       $ r1   )r	   r;   r   )r*   r,   s   r6   <lambda>0test_BlockDiagMatrix_nonsquare.<locals>.<lambda>2  s    _Q-D-L-L-Nr5   )r   r?   r@   rP   rA   r	   rT   r   r   r   r;   r   r   )r+   rC   r-   r[   r*   r,   s       @@r6   test_BlockDiagMatrix_nonsquarer   %  s   S!QAS!QA1A77q1ua!en$$$77q1ua!en$$$??q!f$$$??q!f$$$S!QAS!QA1A!% OAE15$AAAA!cc'"oa!##gq33w&GGGG
#%NOr5   c                     [        S[        [        5      n [        S[        [        5      n[        [	        5       5      S:X  d   e[        [	        U 5      5      [        U 5      :X  d   e[        [	        X5      5      [        U 5      [        U5      -  :X  d   e[        S[        [        5      n[        S[        [        5      n[        [	        X#5      5      S:X  d   eg )Nr*   r+   rO   r,   r-   r   )r   r?   r@   r   r	   r*   r+   r,   r-   s       r6    test_BlockDiagMatrix_determinantr   4  s    S!QAS!QA !Q&&&q!"c!f,,,q$%Q#a&888 	S!QAS!QAq$%***r5   c                  ,   [        [        5       5      S:X  d   e[        [        [        [        [        5      5      5      S:X  d   e[	        S[        [        5      n [        [        U 5      5      [        U 5      :X  d   e[	        S[
        [
        5      n[        [        X5      5      [        U 5      [        U5      -   :X  d   e[	        S[
        [        5      n[	        S[        [
        5      n[        [        [        X#5      5      [        5      (       d   eg )Nr   r*   r+   r,   r-   )r   r	   r   r?   r   r@   r{   r   r   s       r6   test_BlockDiagMatrix_tracer   @  s    "#q(((Aq!123q888S!QA#$a000S!QA&'58eAh+>>>> 	S!QAS!QAeOA12E::::r5   c                  d   [        S[        [        5      n [        S[        [        5      n[        [        5       5      [        5       :X  d   e[        [        U 5      5      [        U R                  5      :X  d   e[        [        X5      5      [        U R                  UR                  5      :X  d   eg )Nr*   r+   )r   r?   r@   rP   rA   r&   r	   r;   )r*   r+   s     r6   test_BlockDiagMatrix_transposer   M  s    S!QAS!QA_&'?+<<<<_Q'(OACC,@@@@_Q*+qssACC/HHHHr5   c                  2   [        [        [        /5      [        [        /5      5      n [        [        [        /5      [        [
        /5      5      n[        X-   5      [        [        [        [        -   /5      [        [        [
        -   /5      5      :X  d   eg r1   )r	   r   r   r   rP   rA   r   )bdm1bdm2s     r6   test_issue_2460r   T  sf    61#;s4D61#;s4D$+&/&!a%/6STWXSXRY?*[[[[r5   c            	      D   [        S[        [        5      n [        U [        S-  [        S-  4[        S-  [        S-  45      nU[	        U S [        S-  2S [        S-  24   U S [        S-  2[        S-  S 24   /U [        S-  S 2S [        S-  24   U [        S-  S 2[        S-  S 24   //5      :X  d   e[        SS[        S5      5      n[        USS5      nU[        U5      :X  d   e[        USS5      n[        UR                  S   5      [        SS//5      :X  d   eg )	Nr*   r>   ra   r   rM   )rO   r`   )r   rO   r`   )r   r?   r@   r   r
   r   r   rZ   )r*   r+   rI   s      r6   test_blockcutr   Y  s$   S!QAQqS!A#J1ac
+Aa1dqsd
mQt!tQqSTz];!dqsd
mQqstQqSTz];= > > > > 	1eBi(AFF#A""""FF#A188D>*o1vh.GGGGr5   c                     [        [        S5       V Vs/ s H.  n [        S5       Vs/ s H  n[        SX4-  SS5      PM     snPM0     snn 5      nUR                  R                  S:X  d   e[        U5      nUR                  R                  S:X  d   eUR                  UR                  :X  d   eUR                  5       UR                  5       :X  d   eg s  snf s  snn f )Nr`   A_%d%dr>   )r`   r`   rM   )r
   r   r   rZ   rT   r   r   )r   r   r+   BBs       r6   test_reblock_2x2r   f  s    %*1X/%- &+1X/%- #8QE>1a8%-/%-/ 	0A 88>>V###	QB99??f$$$77bhh==?bnn..../ /s   C
CC
C
c                      [        [        S5       V Vs/ s H6  n [        S5       Vs/ s H  n[        SX4-  [        [        5      PM     snPM8     snn 5      n[	        [        U5      5      U:X  d   eg s  snf s  snn f )Nra   r   )r
   r   r   r?   r   r   )r   r   r+   s      r6   test_deblockr   r  sy    "1X'% #1X'% #8QE>1a8%'%' 	(A ;q>"a'''	' 's   A9
#A4
A9
4A9
c                  F   [        [        S/5      [        S/5      5      n [        [        S/5      [        S/5      5      nU R                  R                  [         :X  d   e[	        X-
  5      R                  [         :X  d   e[	        [        U 5      5      R                  [         :X  d   e[	        [        U 5      5      R                  [         :X  d   e[        [        U 5      5      R                  [         :X  d   e[        [        U 5      5      R                  [         :X  d   eg r_   )	r	   r   r;   rR   r   r   r   r   r   )bm1bm2s     r6   test_block_collapse_typer   y  s    
/1#.0D
EC
/1#.0D
EC55??o---#)$../AAA'#,'11_DDD)C.)33FFF	#'11_DDDgcl#--@@@r5   c                      [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        g )Nc                  B    [        [        S5      [        S5      //5      $ )Nr>   rj   )r
   r   r4   r5   r6   r   +test_invalid_block_matrix.<locals>.<lambda>  s    {	!hqk",  r5   c                  R    [        [        [        5      [        [        5      //5      $ r1   )r
   r   r?   r@   r4   r5   r6   r   r     s    {	!hqk",  r5   c            	          [        [        [        [        5      [        [        [        5      /[        [        [        S-
  5      [        [        [        S-   5      //5      $ NrO   r
   r   r?   r4   r5   r6   r   r     sB    {	Aq	:a+,	Aq1u	z!QU34,  r5   c                      [        [        [        S-
  [        5      [        [        [        5      /[        [        S-   [        5      [        [        [        5      //5      $ r   r   r4   r5   r6   r   r     sB    {	AE1	z!Q/0	AE1	z!Q/0,  r5   )r   
ValueErrorr4   r5   r6   test_invalid_block_matrixr     sD    
:   :   :   :  r5   c                     [        S[        [        5      n [        S[        [        5      n[        S[        [        5      n[        S[        [        5      n[        X/X#//5      nUR	                  5       u  pSn[        XS-  U-  5      U:X  d   eUR                  5       u  pcn[        Xc-  U-  5      U:X  d   eUR                  5       u  pV[        XV-  5      U:X  d   eg r   )r   r?   r@   r
   LDUdecompositionr   UDLdecompositionLUdecomposition)r*   r+   r,   r-   rC   LUs          r6   test_block_lu_decompositionr     s    S!QAS!QAS!QAS!QAaVaV$%A   "GA!!#a% A%%%   "GA!!#a% A%%% DA!#!###r5   c            	          Sn [        U 5      n[        X 5      n[        XX"/X!X"/X"X/XX!//5      n[        UR	                  5       5      n[        XX"/X!X"/X"X/U* X"U//5      nXE:X  d   eg )N
   )r   r   r
   r   r   )r?   r   Or*   AinvAinvTs         r6   test_issue_21866r     s    	A	!A	A	A	((((* 
+A !%%'"DAA+((aa)+ ,E ==r5   c            	      z   [        S5      n [        SS5      n[        SS5      n[        S5      n[        X/X#//5      n[        U [        R
                  U-  /X#//5      nUR                  5       [        U [        SS5      /[        SS5      U//5      :X  d   e[        U5      U:X  d   eUR                  5       [        U [        SS5      /[        R
                  * [        SS5      -  U//5      :X  d   e[        U5      [        [        SS5      [        SS5      /[        SS5      [        SS5      //5      :X  d   eg )Nr`   r>   )	r   r   r   r
   r"   ImaginaryUnitadjointr(   r'   )r*   r+   r,   r-   rC   X2s         r6   !test_adjoint_and_special_matricesr     s/   A!QA1aAAaVaV$%A	q!//!+,qf5	6B99;+:a+;'<yAPQ>R&STTTTa5A::::<;Jq!,<(=@PQZ[\^_Q`@`bc?d'effffb6[:a#3Yq!_"E
STVWHXZdefhiZjGk!lmmmmr5   c                  l   [        S5      n [        SS[        S5       Vs/ s H  n[        SU 35      " U 5      PM     sn5      n[	        US S2S S24   US S2S4   /USS S24   USS 2S4   //5      n[        UR                  U 5      5      UR                  U 5      -
  [        SS5      :X  d   eg s  snf )Nxr`   rn   re   r>   )r%   r   r   r#   r
   diffr   )r   r   r*   bcs       r6   test_block_matrix_derivativer     s    Aq!E!H=Hqh1#w'*H=>A	q!RaRy!BQBE(+a2A2h!"a%-AB	CB"''!*q	)U1a[888 >s   B1c                     [        S5      n [        U 5      n[        X 5      n[        X/X!//5      n[	        UR                  5       R                  5       5      U:X  d   e[	        UR                  5       R                  5       5      U:X  d   e[	        [        UR                  5       S5      5      [        US5      :X  d   e[	        [        US5      R                  5       5      [        US5      :X  d   eg )Nr?   )r$   r   r   r
   r   r&   r   r   )r?   r   rF   r*   s       r6   test_transpose_inverse_commuter     s    sAA1AaVaV$%A!++-//12a777!))+//12a777&34q"EEE&B-1134q"EEEr5   N)` sympy.matrices.expressions.tracer   sympy.testing.pytestr   r   &sympy.matrices.expressions.blockmatrixr   r   r   r	   r
   r   r   r   r   r   r   r   sympy.matrices.expressionsr   r   r   r   r   r   "sympy.matrices.expressions.inverser   !sympy.matrices.expressions.matpowr   $sympy.matrices.expressions.transposer   sympy.matrices.exceptionsr   sympy.matricesr   r   r   r   
sympy.corer    r!   r"   r#   sympy.core.symbolr$   r%   sympy.functionsr&   r'   r(   r   r   rP   rA   r@   r?   rQ   r*   r+   r,   r-   r.   r/   r2   r3   r7   r9   r<   rD   rG   r]   rc   rh   ro   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r5   r6   <module>r      s   2 -$ $ $ $? ? 6 4 : >; ; / / - - -h5 1aAq!aaaaaa1a&1#sF&2?>/+b3I+7
563lJ0 	- 	-&@P
+;I\
H
/(	A $& 
n9
Fr5   