Ë
    7^(h�@  ã                   óŠ  — 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
   © ó    úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/tests/test_blockmatrix.pyÚtest_bc_matmulr7      sE   € Ü”Q”r‘Tœ"‘WœQ‘YÓ¤;´!´A±#´a±%¼!¼A¹#¼a¹%±-ÄÑ1BÐ0CÐ/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   € Ü”[¤1¤a & Ó*¬[¼1¼a¸&¸Ó-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   € Üœ	¤+´´1¨v¼¼1°vÐ.>Ó"?Ó@ÓAÜœ!Ÿ#™#œqŸs™s˜¤a§c¡c¬1¯3©3 ZÐ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Ü˜˜1˜aÓ €Aä�1�Q‘3‹<×Ñœ¨q°©s°A°a±C¸¸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˜�V˜a ˜VÐ$Ó%€AÜ�Sœ!œa™%¤¤Q¡Ó'€AÜ˜q¤8¬A´©E£?Ñ2°QÑ6Ó7ÜœH¤Q›K¬´!«Ó5¸Ñ9¸AÑ=ò>ð >ñ >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Ü”F˜Q ˜F Q¨ FÐ+Ó,Ó-€Aàˆ1�;‰;˜Ÿ™Ð 1Ò$Ð$Ð$ô 	�Sœ!œQÓ€AÜ˜!˜a ™c™'Ó" a¨!¨A©#¡gÒ-Ð-Ð-Ü�Sœ!œQÓ€AÜ˜!Ÿ#™#˜a™% ™'Ó" a§c¡c¨!¡e¨A¡gÒ-Ð-Ð-à�7‰7”qœ1‘uœa¤!™e�nÒ$Ð$Ð$Ø�<‰<˜6Ò!Ð!Ð!Ü�Q‹<œ;¤v°·±°Q·S±S¨z¸A¿C¹CÀÇÁ¸:Ð.FÓ'GÓHÒHÐHÐHÜ�Q‹<×Ñ §¡©¨2¨¡Ò.Ð.Ð.ð ˆa‰C�?Š?Ðˆ?Ø�;‰;�q‹>×#Ò#Ð#Ð#Øˆa‰C�;‰;œ1œq™5¤!˜*Ò$Ð$Ð$Ø�‰E×ÒÐÐØ�;‰;�q‹>×#Ò#Ð#Ð#Ø�‰E�=‰=˜AŸG™GÒ#Ð#Ð#ä�Sœ!˜QÓ€AÜ�Sœ!˜QÓ€Aä”F˜Q˜C ! ˜:Ó&Ó'€Aàˆa‰C�;‰;œ1œq™5 !˜*Ò$Ð$Ð$Ü˜!˜A™#Ó×%Ñ% dÑ+¨q°©s°Q°q±S©yÒ8Ð8Ð8Ü˜!˜A™#Ó×%Ñ% dÑ+¨q°©s°Q°q±S©yÒ8Ð8Ð8ô œ) A a¡C›.Ó)¬Y´~ÀaÈÁcÓ7JÓ-KÒKÐKÐKÜœ%  !¡ Q q¡S›/Ó*Ü�q˜‘sÓœ^¨A¨a©CÓ0ð/2ò 2ð 2ð 2ô 
�q�c�UÓ	€BÜ�SÐ#˜1Ÿ7™7Ò#€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Üœ+¨ s eÓ,Ó-°Ò2Ð2Ð2ä  1˜v¨¨1 vÐ.Ó/€AÜœ+¨ s eÓ,Ó-°Ò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Ü�1�aÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ˜!˜a™%Ó ¤K°!°Q±$¸°¸QÀ¸FÐ0CÓ$DÒDÐDÐDÜ˜!˜a™% !™)Ó$¬°a¸±d¸A°YÀÀ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+   € Ü’	š9¢iÐ0Ó1€AØ”” 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Ö8¨A”,˜q ! QÕ'Ò8�J€A€qˆ!ˆQÜ�a˜�V˜a ˜VÐ$Ó%€AÜ�‹8”u˜Q“x¤%¨£(Ñ*Ò*Ð*Ð*Ü”œj¬¬AÓ.Ð/Ó0Ó1°QÒ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Ö8¨A”,˜q ! QÕ'Ò8�J€A€qˆ!ˆQÜ�a˜�V˜a ˜VÐ$Ó%€AÝ'Ý1Ù	�!—,‘,˜q“/Ó	"ñ 4Ü�1‹vœ˜Q›¤# a§g¡g¨c£lÓ"3Ñ3Ò3Ð3Ñ3÷4ô ”c˜!“fœdÔ#Ð#Ð#ÜŒ{˜A˜3ÓÓ ¤C¨£FÒ*Ð*Ð*ÜŒ{œJ¤q¬!Ó,Ð-Ó.Ó/°1Ò4Ð4Ñ4ùò 9÷4ð 4ús   …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˜�V˜a ˜VÐ$Ó%€AÜ�a�S�EÓ€Aà�;Š;Ðˆ;à	ŒH”Qœ‘U‹OÑ€AÜ˜1ÓÜ�aœ(¤1›+‘o qÐ)¨A¨q´8¼A³;©Ð+?Ð@ÓAòBð Cð Bð ”˜S¤!¤a¡%¬¬Q©Ó/Ñ/×:Ò:Ð:Ð:Ø”˜S¤!¤a¡%¬¬Q©Ó/Ñ/×:Ò:Ð:Ð:ä˜!Ÿ#™#Ó !§#¡#Ò%Ð%Ð%ä�a—i‘i“k¤7Ô+Ð+Ð+à�}Š}ÐÐä”hœq“k 1Ð%¨¨1 vÐ.Ó/€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˜�V˜a ˜VÐ$Ó%€AØ�;Š;˜1Ÿ7™7¤q¬! fÒ,Ð,Ð,Ü”n Q§S¡SÓ)¬7Ô3Ð3Ð3ô 	�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ”1”aÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ˜!Ÿ)™)›+Ó&¬+Ø	
�‰ˆq�s‰s�Q‰w˜Ÿ™ ›Ÿ™Ñ'¨!Ñ+¨a¯c©cÑ1Ñ	1°A·C±C°4¸!±8¸a¿g¹gÀc»l¿n¹nÑ3LÐMØ
�'‰'�#‹,�.‰.ˆ˜1Ñ	˜qŸs™sÑ	" A§G¡G¨C£L§N¡NÐ3ð7ó +ò ð ð ô 	�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ”1”aÓ€AÜ�Sœ!œQÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ˜!Ÿ)™)›+Ó&¬+Ø
�'‰'�#‹,�.‰.ˆ˜1Ñ	˜qŸs™sÑ	" A§G¡G¨C£L§N¡NÐ3Ø	
�‰ˆq�s‰s�Q‰w˜Ÿ™ ›Ÿ™Ñ'¨!Ñ+¨a¯c©cÑ1Ñ	1°A·C±C°4¸!±8¸a¿g¹gÀc»l¿n¹nÑ3LÐMð7ó +ò ð ð ô 	�Sœ!œQÓ€AÜ”1”aÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ˜!Ÿ)™)›+Ó&¬+Ø
�#‰#ˆ�‰�A—G‘G˜C“L—N‘NÑ	" A§C¡C¨!¯#©#°©'°A·G±G¸C³L·N±NÑ*BÀQÑ*FÈÏÉÑ*LÑ$LÐMØ	
�‰�‹�‰˜!Ÿ'™' #›,Ÿ.™.˜¨1Ñ,¨q¯s©sÑ2Ð3ð7ó +ò ð ð ô 	”1”aÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ˜!Ÿ)™)›+Ó&¬+Ø	
�‰�‹�‰˜!Ÿ'™' #›,Ÿ.™.˜¨1Ñ,¨q¯s©sÑ2Ð3Ø
�#‰#ˆ�‰�A—G‘G˜C“L—N‘NÑ	" A§C¡C¨!¯#©#°©'°A·G±G¸C³L·N±NÑ*BÀQÑ*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Ø�7‰7‹9˜Ÿ™›	Ô3 R§W¡W£YÔ3°!Ò3Ð3Ñ3Ð3Ð3Ø�‰G�>‰>Ó  R¡Ÿ~™~Ó/ÔH°B¸±G·>±>Ó3CÔHÀqÒHÐHÑHÐHÐHô 	�a˜�W˜r 2˜hÐ'Ó(€AÜ˜!Ÿ%™%›'Ó"×.Ñ.Ó0°A·M±M³O×4GÑ4GÓ4IÒIÐIÐIä�b˜!�W˜r 2˜hÐ'Ó(€AÜ˜!Ÿ%™%›'Ó"×.Ñ.Ó0°A·M±M³O×4GÑ4GÓ4IÒIÐIÐIä�b˜"�X  2˜wÐ'Ó(€AÜ˜!Ÿ%™%›'Ó"×.Ñ.Ó0°A·M±M³O×4GÑ4GÓ4IÒIÐIÐIä�b˜"�X  A˜wÐ'Ó(€AÜ˜!Ÿ%™%›'Ó"×.Ñ.Ó0°A·M±M³O×4GÑ4GÓ4IÒ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€   € ô œœ1�I€MÜœœ1�I€MÜà!÷àð GTÖT¸d�¡¡tÐ,¨d°DÕ	9ÔTóó 	€Aô ˜aŸc™cÓ"€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Ø¤u¨Q£xò1Ø"#ð 01°Aªvˆq�x‰x˜˜1˜‰~×+Ò+¸1¿8¹8ÀAÀqÀD¹>ÈaÐQRÐTUÈYÐ;VÓVð 1ÐVñ 1ù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¡     sm  û€ Ü�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ�Sœ!œa™%¤!™)¤Q¬¡U¬Q¡YÓ/€Aä˜˜1˜aÓ €AÜ˜˜1˜Q™3  !¡Ó$€Aà�8‰8�D‰>˜QÒÐÐØ�7‰7”qœ1‘uœq‘y¤!¤a¡%¬!¡)Ð,Ò,Ð,Ð,Üö 1Ü˜1“Xô1ô 1ð 1ð 1àˆ1�;‰;˜Ÿ™Ð 1Ò$Ð$Ð$Ø×ÑÓ 1 a¨ )Ò+Ð+Ð+ä”n Q§S¡S¨1¡WÓ-¬xÔ8Ð8Ð8ä�Q�q‘S‹>œ_¨Q¨q©S°!°A±#°q¸±sÓ;Ò;Ð;Ð;Ü˜!˜A™#Ó¤/°!°A±#°q¸±s¸A¸a¹CÓ"@Ò@Ð@Ð@ä˜!˜a™%Ó ×'Ñ'¬¸¸!¹¸Q¸q¹SÀ!ÀAÁ#Ó(FÔGÐGÐGÜ˜!˜A™#Ó¤/°!°A±#°q¸±s¸1±u¸aÀ¹cÀ!¹eÓ"DÒDÐDÐDÜ˜!˜a™%Ó ¤O°A°a±C¸¸1¹¸aÀ¹cÓ$BÒBÐBÐBð ˆq�‰s‰G×ÒÐÐØ��1‘‰I× Ò Ð Ð à�K‰K˜‹N×%Ò%Ð%Ð%Ø�K‰K˜‹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Ø�7‰7”qœ1‘uœa¤!™e�nÒ$Ð$Ð$Ø�7‰7”qœ1‘uœa¤!™e�nÒ$Ð$Ð$Ø�?‰?œq¤!˜fÒ$Ð$Ð$Ø�?‰?œq¤!˜fÒ$Ð$Ð$Ü�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ˜˜1Ó€AÜ˜!˜a™%Ó ¤O°A¸±E¸1¸q¹5Ó$AÒAÐAÐAÜ˜!˜aŸc™c™'Ó"¤o°a¸!¿#¹#±g¸qÀ1Ç3Á3¹wÓ&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Ò(Ð(Ð(Ü”¤¬A¬qÓ!1Ó2Ó3°qÒ8Ð8Ð8Ü�Sœ!œQÓ€AÜ” Ó#Ó$¬¨a«Ò0Ð0Ð0Ü�Sœ!œQÓ€AÜ”  AÓ&Ó'¬5°«8´e¸A³hÑ+>Ò>Ð>Ð>ô 	�Sœ!œQÓ€AÜ�Sœ!œQÓ€AÜ”eœO¨A¨qÓ1Ó2´EÔ:Ð:Ñ: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Ó'Ó(¬O¸A¿C¹CÓ,@Ò@Ð@Ð@Ü”_ Q¨Ó*Ó+¬¸q¿s¹sÀAÇCÁCÓ/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   € Üœ6¤1 #›;¬´¨s«Ó4€DÜœ6¤1 #›;¬´¨s«Ó4€DÜ˜$ ™+Ó&¬/¼&Ä!ÄaÁ%À»/Ì6ÔSTÔWXÑSXÐRYË?Ó*[Ò[Ð[Ñ[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Ü�”Q�q‘Sœ!˜A™#�J¤ 1¡¤a¨¡c 
Ó+€AØ”˜a ¤ 1¡  d¤q¨¡s d 
™m¨Q¨t´°!±¨t´Q°q±S±T¨z©]Ð;Ø¤ !¡¡ d¤q¨¡s d 
™m¨Q¬q°©s©t´Q°q±S±T¨z©]Ð;ð=ó >ò >ð >ð >ô 	˜˜1œe B›iÓ(€AÜ��F˜FÓ#€AØ” Ó"Ò"Ð"Ð"ä��F˜FÓ#€AÜ˜1Ÿ8™8 D™>Ó*¬oÀÀ1¸v¸hÓ.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À   € Üä%*¨1£X÷/à !ô &+¨1£Xö/Ø !ô # 8¨Q¨q¨E¡>°1°aÕ8ô /ó /ó 	0€Að �8‰8�>‰>˜VÒ#Ð#Ð#ä	�Q‹€BØ�9‰9�?‰?˜fÒ$Ð$Ð$à�7‰7�b—h‘hÒÐÐØ�=‰=‹?˜bŸn™nÓ.Ò.Ð.Ñ.ùò/ùó /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   € Üä" 1›X÷'àô # 1›Xö'Øô # 8¨Q¨q¨E¡>´1´aÕ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Ó
E€CÜ
œ/¨1¨#Ó.´ÀÀÓ0DÓ
E€Cà�5‰5�?‰?œoÒ-Ð-Ð-Ü˜# ™)Ó$×.Ñ.´/ÒAÐAÐAÜœ' #›,Ó'×1Ñ1´_ÒDÐDÐDÜœ) C›.Ó)×3Ñ3´ÒFÐFÐFÜœ	 #›Ó'×1Ñ1´_ÒDÐDÐDÜ”g˜c“lÓ#×-Ñ-´Ò@Ð@Ñ@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    € œ{Ü	�!‹”h˜q“kÐ"ð,ó  € 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    € œ{Ü	”!‹”hœq“kÐ"ð,ó  € 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   € œ{Ü	”A”qÓ	œ:¤a¬Ó+Ð,Ü	”A”q˜1‘uÓ	œ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˜‘Eœ1Ó	œz¬!¬QÓ/Ð0Ü	”A˜‘Eœ1Ó	œ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˜�V˜a ˜VÐ$Ó%€Að × Ñ Ó"�G€A€qˆ!Ü˜!˜A™#˜a™%Ó  AÒ%Ð%Ð%ð × Ñ Ó"�G€A€qˆ!Ü˜!˜A™#˜a™%Ó  AÒ%Ð%Ð%ð ×ÑÓ�D€A€qÜ˜!˜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Ü	�A�qÓ	€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Ü�1�aÓ€AÜ�‹€AÜ�a˜�V˜a ˜VÐ$Ó%€AÜ	�qœ!Ÿ/™/¨!Ñ+Ð,¨q°!¨fÐ5Ó	6€BØ�9‰9‹;œ+¨¬:°a¸Ó+;Ð'<¼yÈÈA»ÐPQÐ>RÐ&SÓTÒTÐTÐTÜˆa‹5�AŠ:Ðˆ:Ø�:‰:‹<œ;¨¬J°q¸!Ó,<Ð(=ÄÇÁÐ@PÔQZÐ[\Ð^_ÓQ`Ñ@`ÐbcÐ?dÐ'eÓfÒfÐfÐfÜˆb‹6”[¤:¨a°Ó#3´Y¸qÀ!³_Ð"EÌ
ÐSTÐVWÓHXÔZdÐefÐhiÓZjÐGkÐ!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˜˜!˜˜R˜a˜R˜‘y ! B Q B¨ E¡(Ð+¨a°°2°A°2°©h¸¸!¹"¸a¸%¹Ð-AÐBÓ	C€BÜ�"—'‘'˜!“*Ó §¡ q£	Ñ)¬U°1°a«[Ò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Ü�1�aÓ€AÜ�a˜�V˜a ˜VÐ$Ó%€Aä˜!Ÿ+™+›-×/Ñ/Ó1Ó2°aÒ7Ð7Ð7Ü˜!Ÿ)™)›+×/Ñ/Ó1Ó2°aÒ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Ñ €€1€aˆˆAˆq�!Ù��a˜Ó€Ù��a˜Ó€Ù��a˜Ó€Ù��a˜Ó€Ù��a˜Ó€Ù��a˜Ó€Ù�1�a�&�Ó€Ù�1�#˜�s�Ó€òFò&ò2ò?ò>ò/+òb3òIò+ò7ò
5òò63òlJð0 ñ	-ó ð	-ò&ò@Pò
+ò;òIò\ò
Hò
/ò(ò	Aòò $ò&ò 
nò9ó
Fr5   