
    sg@                        d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ 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'm(Z(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1  e-dd      \  Z2Z3Z4Z5Z6Z7Z8 ede7e7      Z9 ede7e7      Z: ede7e7      Z; ede7e7      Z< ede7e7      Z= ede7e7      Z> e
e=e>gg      Z? e
e=ge>gg      Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd  ZKd! ZLd" ZMd# ZNed$        ZOd% ZPd& ZQd' ZRd( ZSd) ZTd* ZUd+ ZVd, ZWd- ZXd. ZYd/ ZZd0 Z[d1 Z\d2 Z]d3 Z^d4 Z_y5)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                      t        t        t        z  t        z  t        z        t        t        t        z  t        z  t        t        z  t        z  z   t        z  gg      k(  sJ y N)r   r/   b1b2r.   r
        d/var/www/html/venv/lib/python3.12/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                      t        t        t        t        gg      t        t        t        gg      z         t        t        t        z   t        t        z   gg      k(  sJ y r1   )r   r
   r.   r/   r4   r5   r6   test_bc_mataddr9       sJ    [1a&*[1a&-BBC!A#qs%& & &r5   c            	         t        t        t        t        t        gt
        t        gg                  t        t        j                  t
        j                  gt        j                  t        j                  gg      k(  sJ y 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                     t        dt        t              } t        dt        t              }t        dt        t              }t	        | ||      }t        ||z         j                  t	        d| z  d|z  d|z              sJ y )Nr*   r+   r,      )r   nmlr	   r   equals)r*   r+   r,   Xs       r6   test_bc_dist_diagrD   (   sk    S!QAS!QAS!QA1a A1Q3<qsAaC1=>>>r5   c                     t        dt        t              } t        dt        t              }t        dt        t              }t        dt        t              }t        | |g||gg      }t        dt        t        z   t        t        z         }t	        |t        t        t        z         z   |z         t        t        t              t        t                    |z   |z   k(  sJ y )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aVaV$%AS!a%Q'Aq8AE?2Q67HQK!59A=> > >r5   c                     t        dt        t              } t        dt        t              }t        dt        t              }t        dt        t              }t        dt        t        z   t
              }t        dt        t        z   t        t        z         }t        t        | |g||gg            } |j                  |j                   |k(  sJ t        dt        t              }t        | d|z  z         | d|z  z   k(  sJ t        d	t        t              }t        |j                  | z  |z        |j                  | z  |z  k(  sJ |j                  t        t        z   t        t        z   fk(  sJ |j                  d
k(  sJ t        |      t        t        | j                  |j                  g|j                  |j                  gg            k(  sJ t        |      j                  |j                  d d d   k(  sJ ||z  j                  sJ |j!                  |      j                  sJ ||z  j                  t        t        z   t
        fk(  sJ ||z   j"                  sJ |j%                  |      j"                  sJ ||z   j                  |j                  k(  sJ t        dt        d      }t        d	t        d      }t        t        |g|gg            }	||	z  j                  t        t        z   dfk(  sJ t        ||	z        j&                  d   | |z  ||z  z   k(  sJ t        ||	z        j&                  d   ||z  ||z  z   k(  sJ t        t        ||	z              t        t        ||	z              k(  sJ t        t)        ||	z  d|z              t        ||	z        t        d|z        fk(  sJ t        | gg      }
t        dg| j                   }t        |
|z         | |z   k(  sJ y )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]   :   sv   S!QAS!QAS!QAS!QAS!a%#AS!a%Q'AFQFQF+,-A1;;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... aC???;;q>####aC;;1q5!*$$$E;;q>####E==AGG###S!QAS!QAFQC!:&'AaC;;1q5!*$$$!A#%%d+qsQqSy888!A#%%d+qsQqSy888 )AaC.)Y~ac7J-KKKK%!QqS/*qs^AaC0/2 2 2 2 
qcU	BS#177#A"q&!QU***r5   c                      t        ddgddgg      } t        t        | gg            | k(  sJ t        ddgddgg      } t        t        | gg            | k(  sJ y 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                      t        ddd      } t        dd      }t        | |g||gg      }t        ||z        t        | dz  |g||gg      k(  sJ t        ||z  |z        t        | dz  |g||gg      k(  sJ y )Nar>   r`   )r   r   r
   r   )re   zbs      r6   test_issue_17624rh   r   s    S!QA1aAaVaV$%A!a% K!Q$QF0C$DDDD!a%!)$adAYA4G(HHHHr5   c                  ^    t        g dg dg dg      } | t        t        |             k(  sJ y )N)rO   r>   r`   )ra         )      	   )r   r	   rb   s    r6   test_issue_18618ro   y   s+    	9i01Aq)****r5   c                     dD  cg c]  } t        | dd       c} \  }}}}t        ||g||gg      }t        |      t        |      t        |      z   k(  sJ t        t        t        t        t              g            dk(  sJ y c c} w )NABCDr`   r   )r   r
   r   r   r?   )sr*   r+   r,   r-   rC   s         r6   test_BlockMatrix_tracers   }   s    178A,q!Q'8JAq!QaVaV$%A8uQx%(****jA./01Q666 9s   Bc                     dD  cg c]  } t        | dd       c} \  }}}}t        ||g||gg      }ddlm} ddlm}  ||j                  |            5  t        |      t        |      t        |j                  d            z  k(  sJ 	 d d d        t        t        |      t              sJ t        t        |g            t        |      k(  sJ t        t        t        t        t              g            dk(  sJ y c c} w # 1 sw Y   yxY w)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8A,q!Q'8JAq!QaVaV$%A'1	!,,q/	" 41vQ#aggcl"333334 c!fd###{A3 CF***{Jq!,-./1444 94 4s   C>5DDc            	      x   t        dt        t              } t        dt        t              }t        dt        t              }t        dt        t              }t        | |g||gg      }t        | gg      }|j                  sJ |t        t        t        z         z   }t        |      t        | t        t              z   |g||t        t              z   gg      k(  sJ |t        dt        t        z   t        t        z         z   j                  sJ |t        dt        t        z   t        t        z         z  j                  sJ t        |j                        | j                  k(  sJ t        |j                         t              sJ |j                  rJ t        t        t              |g||gg      }|j                  rJ y )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      ss   S!QAS!QAS!QAS!QAaVaV$%AaSEA;;;	HQUOA1a(1+oq)Aq8A;+?@AB C B S!a%Q//::::S!a%Q//::::!##!##%%%aiik7+++}}hqk1%1v./A}}}r5   c            
         t        dt        t              } t        dt        t        t        z
        }t        dt        t        z
  t              }t        dt        t        z
  t        t        z
        }t	        | |g||gg      }|j
                  r|j                  t        t        fk(  sJ t        t        |j                        t              sJ t        dt        t              } t        dt        t              }t        dt        t              }t        t        t              }t	        | |g||gg      }t        |j                               t	        | j                  | j                  |z  |j                  d      j                  z  |z  | j                  z  z   | j                   |z  |j                  d      j                  z  g|j                  d      j                   |z  | j                  z  |j                  d      j                  gg      k(  sJ t        dt        t              } t        dt        t              }t        t        t              }t        dt        t              }t	        | |g||gg      }t        |j                               t	        |j                  d      j                   |z  |j                  z  |j                  d      j                  g|j                  |j                  | z  |j                  d      j                  z  |z  |j                  z  z   |j                   | z  |j                  d      j                  z  gg      k(  sJ t        dt        t              } t        t        t              }t        dt        t              }t        dt        t              }t	        | |g||gg      }t        |j                               t	        |j                   |z  |j                  d      j                  z  |j                  |j                  |z  |j                  d      j                  z  | z  |j                  z  z   g|j                  d      j                  |j                  d      j                   | z  |j                  z  gg      k(  sJ t        t        t              } t        dt        t              }t        dt        t              }t        dt        t              }t	        | |g||gg      }t        |j                               t	        |j                  d      j                  |j                  d      j                   |z  |j                  z  g|j                   |z  |j                  d      j                  z  |j                  |j                  |z  |j                  d      j                  z  |z  |j                  z  z   gg      k(  sJ y 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      s   S!QAS!QU#AS!a%#AS!a%Q'AaVaV$%A;;177q!f,,,nQSS)7333 	S!QAS!QAS!QA1aAaVaV$%A!))+&+	
qssQw'!+acc1	1ACC4!8aggclnn3LM
''#,..1	qss	"AGGCLNN37 +    	S!QAS!QA1aAS!QAaVaV$%A!))+&+
''#,..1	qss	"AGGCLNN3	
qssQw'!+acc1	1ACC4!8aggclnn3LM7 +    	S!QA1aAS!QAS!QAaVaV$%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aVaV$%A!))+&+	
!''#,..1,qss23
##AGGCLNN	"ACC!##'AGGCLNN*BQ*F*L$LM7 +   r5   c                  f   t        ddgddgg      } t        ddgddgg      }t        ddgddgg      }t        ddgddgg      }|j                         |j                         cxk(  r|j                         cxk(  rdk(  sJ  J ||z   j                         ||z   j                         cxk(  r||z   j                         cxk(  rdk(  sJ  J t        | |g||gg      }t        |j	                               j                         |j                         j	                         k(  sJ t        || g||gg      }t        |j	                               j                         |j                         j	                         k(  sJ t        ||g| |gg      }t        |j	                               j                         |j                         j	                         k(  sJ t        ||g|| gg      }t        |j	                               j                         |j                         j	                         k(  sJ y)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>>R~~/HBG>>3CHqHHHHH 	aWr2h'(A!%%'"..0AMMO4G4G4IIIIb!Wr2h'(A!%%'"..0AMMO4G4G4IIIIb"X2w'(A!%%'"..0AMMO4G4G4IIIIb"XAw'(A!%%'"..0AMMO4G4G4IIIIr5   c                     t         t        t        f} t        t        t         f}t        | D cg c]"  }|D cg c]  }t	        d||||       c}$ c}}      }t        |j                        }t        |t              sJ y c c}w c c}}w )NrI   )r?   r@   rP   r
   r   r   r   r{   )rowblocksizescolblocksizesrowscolsr   collapses         r6   test_BlockMatrix_3x3_symbolicr      s     1IM1IM! GTTdt,dD	9T 	A acc"Hh,,,	 	Us   	B	
BB	
B	
c                  0   t        dt        t              t        dt        t              t        dt        t              t        dt        t        z   t        z   t        t        z   t        z         } t	              t	        dz  dz        }j
                  d   k(  sJ j                  t        t        z   t        z   t        t        z   t        z   fk(  sJ t        fdt        d      D              sJ  j                  j                   k(  sJ j                         fk(  sJ t        t        j                  z        t              sJ t!        z        t	        z  z  z        k(  sJ t        z        t	        z  z  z        k(  sJ t        z         j#                  t	        dz  dz  dz              sJ t        |z        t	        z  dz  z  dz  z        k(  sJ t        |z         t	        dz  dz  d	z        k(  sJ d| z  z  j$                  sJ d| z  z   j&                  sJ j)                  |       j$                  sJ j+                  |       j&                  sJ y )
Nr*   r+   r,   rI   r>   r`   )rO   rO   c              3      K   | ]J  }t        d       D ]:  }||k7  rj                  ||f   j                  nj                  ||f   fv  < L yw)r`   N)rangerZ   is_ZeroMatrix).0ijr*   r+   r,   rC   s      r6   	<genexpr>z'test_BlockDiagMatrix.<locals>.<genexpr>  se      1uQx1"# 01Avqxx1~++188AqD>aQRTUY;VV 1V 1s   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     sm   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QqS>_QqS!A#qs;;;;!A#/!A#qsAaC"@@@@!a% ''!QqS!A#(F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                     t        dt        t              t        dt        t              } t        |       }|j                  t        t        z   t        t        z   fk(  sJ |j                  t        t        z   t        t        z   fk(  sJ |j                  t        t        gk(  sJ |j                  t        t        gk(  sJ t        dt        t              t        dt        t              }t        |      }t        ||z         t        z   | |z         k(  sJ t        ||j                  z        t        j                  z  | |j                  z        k(  sJ t        t        fd       y )Nr*   r+   r,   r-   c                  L    t         j                        j                         S r1   )r	   r;   r   )r*   r,   s   r6   <lambda>z0test_BlockDiagMatrix_nonsquare.<locals>.<lambda>2  s    _Q-D-L-L-N r5   )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!a% OAE1q5$AAAA!acc'"oa!##gq133w&GGGG
#%NOr5   c                     t        dt        t              } t        dt        t              }t        t	                     dk(  sJ t        t	        |             t        |       k(  sJ t        t	        | |            t        |       t        |      z  k(  sJ t        dt        t              }t        dt        t              }t        t	        ||            dk(  sJ y )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                     t        t                     dk(  sJ t        t        t        t        t                          dk(  sJ t	        dt        t              } t        t        |             t        |       k(  sJ t	        dt
        t
              }t        t        | |            t        |       t        |      z   k(  sJ t	        dt
        t              }t	        dt        t
              }t        t        t        ||            t              sJ y )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A&'58eAh+>>>> 	S!QAS!QAeOAq12E:::r5   c                  `   t        dt        t              } t        dt        t              }t        t                     t               k(  sJ t        t        |             t        | j                        k(  sJ t        t        | |            t        | j                  |j                        k(  sJ y )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   t        t        t        g      t        t        g            } t        t        t        g      t        t
        g            }t        | |z         t        t        t        t        z   g      t        t        t
        z   g            k(  sJ y r1   )r	   r   r   r   rP   rA   r   )bdm1bdm2s     r6   test_issue_2460r   T  sh    61#;s4D61#;s4D$+&/&!a%/6STWXSXRY?*[[[[r5   c            	      >   t        dt        t              } t        | t        dz  t        dz  ft        dz  t        dz  f      }|t	        | d t        dz  d t        dz  f   | d t        dz  t        dz  d f   g| t        dz  d d t        dz  f   | t        dz  d t        dz  d f   gg      k(  sJ t        ddt        d            }t        |dd      }|t        |      k(  sJ t        |dd      }t        |j                  d         t        ddgg      k(  sJ y )	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                     t        t        d      D  cg c]+  } t        d      D cg c]  }t        d| |fz  dd       c}- c}}       }|j                  j                  dk(  sJ t        |      }|j                  j                  dk(  sJ |j                  |j                  k(  sJ |j                         |j                         k(  sJ y c c}w c c}} w )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/ ! #8QqE>1a8 / / 	0A 88>>V###	QB99??f$$$77bhh==?bnn..../ /s   C
CC
C
c                      t        t        d      D  cg c]3  } t        d      D cg c]  }t        d| |fz  t        t               c}5 c}}       }t	        t        |            |k(  sJ y c c}w c c}} w )Nra   r   )r
   r   r   r?   r   r   )r   r   r+   s      r6   test_deblockr   r  sq    "1X' #1X' #8QqE>1a8 ' ' 	(A ;q>"a'''	' 's   A3
!A.A3
.A3
c                  <   t        t        dg      t        dg            } t        t        dg      t        dg            }| j                  j                  t         k(  sJ t	        | |z
        j                  t         k(  sJ t	        t        |             j                  t         k(  sJ t	        t        |             j                  t         k(  sJ t        t        |             j                  t         k(  sJ t        t        |             j                  t         k(  sJ y 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                      t        t        d        t        t        d        t        t        d        t        t        d        y )Nc                  B    t        t        d      t        d      gg      S )Nr>   rj   )r
   r   r4   r5   r6   r   z+test_invalid_block_matrix.<locals>.<lambda>  s     {	!hqk",   r5   c                  R    t        t        t              t        t              gg      S r1   )r
   r   r?   r@   r4   r5   r6   r   z+test_invalid_block_matrix.<locals>.<lambda>  s     {	!hqk",   r5   c            	          t        t        t        t              t        t        t              gt        t        t        dz
        t        t        t        dz         gg      S NrO   r
   r   r?   r4   r5   r6   r   z+test_invalid_block_matrix.<locals>.<lambda>  sD    {	Aq	:a+,	Aq1u	z!QU34,   r5   c                      t        t        t        dz
  t              t        t        t              gt        t        dz   t              t        t        t              gg      S r   r   r4   r5   r6   r   z+test_invalid_block_matrix.<locals>.<lambda>  sD    {	AE1	z!Q/0	AE1	z!Q/0,   r5   )r   
ValueErrorr4   r5   r6   test_invalid_block_matrixr     sD    
:   :   :   :  r5   c                     t        dt        t              } t        dt        t              }t        dt        t              }t        dt        t              }t        | |g||gg      }|j	                         \  }}}t        ||z  |z        |k(  sJ |j                         \  }}}t        ||z  |z        |k(  sJ |j                         \  }}t        ||z        |k(  sJ y 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aVaV$%A   "GAq!!A#a% A%%%   "GAq!!A#a% A%%% DAq!A#!###r5   c            	          d} t        |       }t        | |       }t        ||||g||||g||||g||||gg      }t        |j	                               }t        ||||g||||g||||g| |||gg      }||k(  sJ y )N
   )r   r   r
   r   r   )r?   r   Or*   AinvAinvTs         r6   test_issue_21866r     s    	A	!A	Aq	A	QQ(QQ(QQ(QQ(* 
+A !%%'"DAA+QQ(QQ(a!a)+ ,E 5==r5   c            	      x   t        d      } t        dd      }t        dd      }t        d      }t        | |g||gg      }t        | t        j
                  |z  g||gg      }|j                         t        | t        dd      gt        dd      |gg      k(  sJ t        |      |k(  sJ |j                         t        | t        dd      gt        j
                   t        dd      z  |gg      k(  sJ t        |      t        t        dd      t        dd      gt        dd      t        dd      gg      k(  sJ y )Nr`   r>   )	r   r   r   r
   r"   ImaginaryUnitadjointr(   r'   )r*   r+   r,   r-   rC   X2s         r6   !test_adjoint_and_special_matricesr     s5   A!QA1aAAaVaV$%A	q!//!+,q!f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                  d   t        d      } t        ddt        d      D cg c]  } t        d|       |        c}      }t	        |d dd df   |d ddf   g|dd df   |dd df   gg      }t        |j                  |             |j                  |       z
  t        dd      k(  sJ y c c}w )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=q'h1#w'*=>A	q!RaRy!BQBE(+a2A2h!"a%-AB	CB"''!*q	)U1a[888 >s   B-c                     t        d      } t        |       }t        | |       }t        ||g||gg      }t	        |j                         j                               |k(  sJ t	        |j                         j                               |k(  sJ t	        t        |j                         d            t        |d      k(  sJ t	        t        |d      j                               t        |d      k(  sJ y )Nr?   )r$   r   r   r
   r   r&   r   r   )r?   r   rF   r*   s       r6   test_transpose_inverse_commuter     s    sAA1aAaVaV$%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   