§
    OŠtj�@  ã                   óÈ  — 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_d5S )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 ‚d S ©N)r   r/   Úb1Úb2r.   r
   © ó    úo/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_blockmatrix.pyÚtest_bc_matmulr7      sT   € Ý•Q•r‘T�"‘W�Q‘YÑÔ¥;µ!µA±#µa±%½!½A¹#½a¹%±-ÅÑ1BÐ0CÐ/DÑ#EÔ#EÒEÐEÐ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 ‚d S r1   )r   r
   r.   r/   r4   r5   r6   Útest_bc_mataddr9       se   € Ý•[¥1¥a & Ñ*Ô*­[½1½a¸&¸Ñ-BÔ-BÑBÑCÔ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 ‚d S r1   )r   r   r
   r*   r+   r,   r-   ÚTr4   r5   r6   Útest_bc_transposer<   $   sh   € Ý�	¥+µµ1¨v½½1°vÐ.>Ñ"?Ô"?Ñ@Ô@ÑAÔAÝ�!œ#�qœs˜¥a¤c­1¬3 ZÐ0Ñ1Ô1ò2ð 2ð 2ð 2ð 2ð 2r5   c                  óH  — t          dt          t          ¦  «        } t          dt          t          ¦  «        }t          dt          t          ¦  «        }t	          | ||¦  «        }t          ||z   ¦  «                             t	          d| z  d|z  d|z  ¦  «        ¦  «        sJ ‚d S )Nr*   r+   r,   é   )r   ÚnÚmÚlr	   r   Úequals)r*   r+   r,   ÚXs       r6   Útest_bc_dist_diagrD   (   sˆ   € Ý�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ˜˜1˜aÑ Ô €Aå�1�Q‘3‰<Œ<×Ò�¨q°©s°A°a±C¸¸1¹Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>Ð>Ð>r5   c                  ó8  — 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 ‚d S )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Ô7Ý�H¥Q™KœK­µ!©¬Ñ5Ô5¸Ñ9¸AÑ=ò>ð >ð >ð >ð >ð >r5   c                  óh  — 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        sJ ‚||z  j        t          t          z   t
          fk    sJ ‚||z   j        s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        ¢R Ž }t          |
|z   ¦  «        | |z   k    sJ ‚d S )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]   :   së  € Ý�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¨!¡e¨A¡gÒ-Ð-Ð-Ð-àŒ7•q�1‘u�a¥!™e�nÒ$Ð$Ð$Ð$ØŒ<˜6Ò!Ð!Ð!Ð!Ý�Q‰<Œ<�;¥v°´°Q´S¨z¸A¼CÀÄ¸:Ð.FÑ'GÔ'GÑHÔHÒHÐHÐHÐHÝ�Q‰<Œ<Ô ¤¨¨¨2¨¤Ò.Ð.Ð.Ð.ð ˆa‰CŒ?ÐÐˆ?Ø�;Š;�q‰>Œ>Ô#Ð#Ð#Ð#Øˆa‰CŒ;�1�q™5¥!˜*Ò$Ð$Ð$Ð$Ø�‰EÔÐÐÐØ�;Š;�q‰>Œ>Ô#Ð#Ð#Ð#Ø�‰EŒ=˜Aœ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Ð8Ý˜!˜A™#ÑÔÔ% dÔ+¨q°©s°Q°q±S©yÒ8Ð8Ð8Ð8õ �) A a¡C™.œ.Ñ)Ô)­Yµ~ÀaÈÁcÑ7JÔ7JÑ-KÔ-KÒKÐKÐKÐKÝ�%  !¡ Q q¡S™/œ/Ñ*Ô*Ý�q˜‘sÑÔ�^¨A¨a©CÑ0Ô0ð/2ò 2ð 2ð 2ð 2õ 
�q�c�UÑ	Ô	€BÝ�SÐ#˜1œ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 ‚d S ©NrO   r>   é   é   )r   r   r
   r   ©r*   s    r6   Ú%test_block_collapse_explicit_matricesrc   k   s†   € Ý��A�˜˜A˜ÐÑ Ô €AÝ�+¨ s eÑ,Ô,Ñ-Ô-°Ò2Ð2Ð2Ð2å  1˜v¨¨1 vÐ.Ñ/Ô/€AÝ�+¨ s eÑ,Ô,Ñ-Ô-°Ò2Ð2Ð2Ð2Ð2Ð2r5   c                  ó0  — 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 ‚d S )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ÐDÐDÝ˜!˜a™% !™)Ñ$Ô$­°a¸±d¸A°YÀÀAÀÐ4GÑ(HÔ(HÒHÐHÐHÐHÐHÐHr5   c                  óz   — t          g d¢g d¢g d¢g¦  «        } | t          t          | ¦  «        ¦  «        k    sJ ‚d S )N)rO   r>   r`   )ra   é   é   )é   é   é	   )r   r	   rb   s    r6   Útest_issue_18618ro   y   sI   € Ý�	�	�	˜9˜9˜9 i i iÐ0Ñ1Ô1€AØ•• qÑ)Ô)Ñ*Ô*Ò*Ð*Ð*Ð*Ð*Ð*r5   c                  ó,  — d„ dD ¦   «         \  } }}}t          | |g||gg¦  «        }t          |¦  «        t          | ¦  «        t          |¦  «        z   k    sJ ‚t          t          t          t          t          ¦  «        g¦  «        ¦  «        dk    sJ ‚d S )Nc                 ó0   — g | ]}t          |d d ¦  «        ‘ŒS ©r`   ©r   ©Ú.0Úss     r6   ú
<listcomp>z*test_BlockMatrix_trace.<locals>.<listcomp>~   ó$   € Ð8Ð8Ð8¨A•,˜q ! QÑ'Ô'Ð8Ð8Ð8r5   ÚABCDr   )r
   r   r   r?   ©r*   r+   r,   r-   rC   s        r6   Útest_BlockMatrix_tracer{   }   s“   € Ø8Ð8°Ð8Ñ8Ô8�J€A€qˆ!ˆQÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AÝ�‰8Œ8•u˜Q‘x”x¥%¨¡(¤(Ñ*Ò*Ð*Ð*Ð*Ý•�j­­AÑ.Ô.Ð/Ñ0Ô0Ñ1Ô1°QÒ6Ð6Ð6Ð6Ð6Ð6r5   c                  ó€  — d„ dD ¦   «         \  } }}}t          | |g||gg¦  «        }ddlm} ddlm}  ||                     | ¦  «        ¦  «        5  t          |¦  «        t          | ¦  «        t          |                     d¦  «        ¦  «        z  k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          t          |¦  «        t          ¦  «        sJ ‚t          t          | g¦  «        ¦  «        t          | ¦  «        k    sJ ‚t          t          t          t          t          ¦  «        g¦  «        ¦  «        dk    sJ ‚d S )Nc                 ó0   — g | ]}t          |d d ¦  «        ‘ŒS rr   rs   rt   s     r6   rw   z0test_BlockMatrix_Determinant.<locals>.<listcomp>„   rx   r5   ry   r   )ÚQ)Úassumingr*   )r
   Úsympy.assumptions.askr~   Úsympy.assumptions.assumer   Ú
invertibler   ÚschurÚ
isinstancer!   r   r?   )r*   r+   r,   r-   rC   r~   r   s          r6   Útest_BlockMatrix_Determinantr…   ƒ   s|  € Ø8Ð8°Ð8Ñ8Ô8�J€A€qˆ!ˆQÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AØ'Ð'Ð'Ð'Ð'Ð'Ø1Ð1Ð1Ð1Ð1Ð1Ø	ˆ�!—,’,˜q‘/”/Ñ	"Ô	"ð 4ð 4Ý�1‰vŒv�˜Q™œ¥# a§g¢g¨c¡l¤lÑ"3Ô"3Ñ3Ò3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ •c˜!‘f”f�dÑ#Ô#Ð#Ð#Ð#Ý�{˜A˜3ÑÔÑ Ô ¥C¨¡F¤FÒ*Ð*Ð*Ð*Ý�{�J¥q­!Ñ,Ô,Ð-Ñ.Ô.Ñ/Ô/°1Ò4Ð4Ð4Ð4Ð4Ð4s   ÁAB$Â$B(Â+B(c            	      óô  — 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          |                     ¦   «         t          ¦  «        sJ ‚|j        rJ ‚t          t          t          ¦  «        |g||gg¦  «        }|j        rJ ‚d S )Nr*   r+   r,   r-   r~   )r   r?   r@   r
   Ú	is_squarer   r   rX   rV   ÚIr„   Úinverser   Úis_Identity)r*   r+   r,   r-   rC   r[   r~   rF   s           r6   Útest_squareBlockMatrixr‹   �   s³  € Ý�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ŒOÑ€AÝ˜1ÑÔÝ�a�(¥1™+œ+‘o qÐ)¨A¨qµ8½A±;´;©Ð+?Ð@ÑAÔAòBð Bð Bð Bð •˜S¥!¥a¡%­­Q©Ñ/Ô/Ñ/Ô:Ð:Ð:Ð:Ø•˜S¥!¥a¡%­­Q©Ñ/Ô/Ñ/Ô:Ð:Ð:Ð:å˜!œ#ÑÔ !¤#Ò%Ð%Ð%Ð%å�a—i’i‘k”k¥7Ñ+Ô+Ð+Ð+Ð+àŒ}ÐÐÐå•h�q‘k”k 1Ð%¨¨1 vÐ.Ñ/Ô/€AØŒ}ÐÐÐÐÐr5   c            
      óZ  — 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          |                     ¦   «         ¦  «        t	          | j	        | j	        |z  |                     d¦  «        j	        z  |z  | j	        z  z   | j	         |z  |                     d¦  «        j	        z  g|                     d¦  «        j	         |z  | j	        z  |                     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          |                     ¦   «         ¦  «        t	          |                     d¦  «        j	         |z  |j	        z  |                     d¦  «        j	        g|j	        |j	        | z  |                     d¦  «        j	        z  |z  |j	        z  z   |j	         | z  |                     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          |                     ¦   «         ¦  «        t	          |j	         |z  |                     d¦  «        j	        z  |j	        |j	        |z  |                     d¦  «        j	        z  | z  |j	        z  z   g|                     d¦  «        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          |                     ¦   «         ¦  «        t	          |                     d¦  «        j	        |                     d¦  «        j	         |z  |j	        z  g|j	         |z  |                     d¦  «        j	        z  |j	        |j	        |z  |                     d¦  «        j	        z  |z  |j	        z  z   gg¦  «        k    sJ ‚d S ©Nr*   r+   r,   r-   )r   r?   r@   rP   r
   r‡   rT   r„   r   rˆ   r   r   r‰   rƒ   rz   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¥q­! fÒ,Ð,Ð,Ð,Ý•n Q¤SÑ)Ô)­7Ñ3Ô3Ð3Ð3Ð3õ 	�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ•1•aÑÔ€AÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AÝ˜!Ÿ)š)™+œ+Ñ&Ô&­+Ø	
ŒˆqŒs�Q‰w˜Ÿš ™œœÑ'¨!Ñ+¨a¬cÑ1Ñ	1°A´C°4¸!±8¸a¿gºgÀc¹l¼l¼nÑ3LÐMØ
�'Š'�#‰,Œ,Œ.ˆ˜1Ñ	˜qœsÑ	" A§G¢G¨C¡L¤L¤NÐ3ð7ñ +ô +ò ð ð ð õ 	�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ•1•aÑÔ€AÝ�S�!�QÑÔ€AÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AÝ˜!Ÿ)š)™+œ+Ñ&Ô&­+Ø
�'Š'�#‰,Œ,Œ.ˆ˜1Ñ	˜qœsÑ	" A§G¢G¨C¡L¤L¤NÐ3Ø	
ŒˆqŒs�Q‰w˜Ÿš ™œœÑ'¨!Ñ+¨a¬cÑ1Ñ	1°A´C°4¸!±8¸a¿gºgÀc¹l¼l¼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”L”NÑ	" A¤C¨!¬#°©'°A·G²G¸C±L´L´NÑ*BÀQÑ*FÈÌÑ*LÑ$LÐMØ	
�Š�‰ŒŒ˜!Ÿ'š' #™,œ,œ.˜¨1Ñ,¨q¬sÑ2Ð3ð7ñ +ô +ò ð ð ð õ 	•1•aÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AÝ˜!Ÿ)š)™+œ+Ñ&Ô&­+Ø	
�Š�‰ŒŒ˜!Ÿ'š' #™,œ,œ.˜¨1Ñ,¨q¬sÑ2Ð3Ø
Œ#ˆ�‰�A—G’G˜C‘L”L”NÑ	" A¤C¨!¬#°©'°A·G²G¸C±L´L´NÑ*BÀQÑ*FÈÌÑ*LÑ$LÐMð7ñ +ô +ò ð ð ð ð ð r5   c                  óˆ  — 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¦  «        }|                     ¦   «         |                     ¦   «         cxk    r|                     ¦   «         cxk    rdk    sn J ‚||z                        ¦   «         ||z                        ¦   «         cxk    r"||z                        ¦   «         cxk    rdk    sn J ‚t          | |g||gg¦  «        }t          |                     ¦   «         ¦  «                             ¦   «         |                     ¦   «                              ¦   «         k    sJ ‚t          || g||gg¦  «        }t          |                     ¦   «         ¦  «                             ¦   «         |                     ¦   «                              ¦   «         k    sJ ‚t          ||g| |gg¦  «        }t          |                     ¦   «         ¦  «                             ¦   «         |                     ¦   «                              ¦   «         k    sJ ‚t          ||g|| gg¦  «        }t          |                     ¦   «         ¦  «                             ¦   «         |                     ¦   «                              ¦   «         k    sJ ‚dS )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Œ9˜Ÿš™	œ	Ð3Ð3Ò3Ð3 R§W¢W¡Y¤YÐ3Ð3Ò3Ð3°!Ò3Ð3Ð3Ð3Ð3Ð3Ø�‰G�>Š>ÑÔ  R¡Ÿ~š~Ñ/Ô/ÐHÐHÒHÐH°B¸±G·>²>Ñ3CÔ3CÐHÐHÒHÐHÀqÒHÐHÐHÐHÐHÐHõ 	�a˜�W˜r 2˜hÐ'Ñ(Ô(€AÝ˜!Ÿ%š%™'œ'Ñ"Ô"×.Ò.Ñ0Ô0°A·M²M±O´O×4GÒ4GÑ4IÔ4IÒIÐIÐIÐIå�b˜!�W˜r 2˜hÐ'Ñ(Ô(€AÝ˜!Ÿ%š%™'œ'Ñ"Ô"×.Ò.Ñ0Ô0°A·M²M±O´O×4GÒ4GÑ4IÔ4IÒIÐIÐIÐIå�b˜"�X  2˜wÐ'Ñ(Ô(€AÝ˜!Ÿ%š%™'œ'Ñ"Ô"×.Ò.Ñ0Ô0°A·M²M±O´O×4GÒ4GÑ4IÔ4IÒIÐIÐIÐIå�b˜"�X  A˜wÐ'Ñ(Ô(€AÝ˜!Ÿ%š%™'œ'Ñ"Ô"×.Ò.Ñ0Ô0°A·M²M±O´O×4GÒ4GÑ4IÔ4IÒIÐIÐIÐIÐIÐIr5   c                  óä   ‡— t           t          t          f} t          t          t           fŠt          ˆfd„| D ¦   «         ¦  «        }t	          |j        ¦  «        }t          |t          ¦  «        sJ ‚d S )Nc                 ó.   •‡— g | ]Šˆfd „‰D ¦   «         ‘ŒS )c                 ó<   •— g | ]}t          d ‰›|›�‰|¦  «        ‘ŒS )rI   rs   )ru   ÚcolsÚrowss     €r6   rw   z<test_BlockMatrix_3x3_symbolic.<locals>.<listcomp>.<listcomp>þ   s0   ø€ ÐTÐTÐT¸d�ˆ   t tÐ,¨d°DÑ	9Ô	9ÐTÐTÐTr5   r4   )ru   r�   Úcolblocksizess    @€r6   rw   z1test_BlockMatrix_3x3_symbolic.<locals>.<listcomp>ý   s?   øø€ ð ð ð àð 	UÐTÐTÐTÀmÐTÑTÔTðð ð r5   )r?   r@   rP   r
   r   rˆ   r„   )Úrowblocksizesr—   Úcollapserž   s      @r6   Útest_BlockMatrix_3x3_symbolicr¡   ø   s}   ø€ õ ��1�I€MÝ��1�I€MÝð ð ð ð à!ðñ ô ñ 	ô 	€Aõ ˜aœcÑ"Ô"€HÝ�h¥Ñ,Ô,Ð,Ð,Ð,Ð,Ð,r5   c                  óÚ  ‡‡‡‡— 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 ‚‰                     ¦   «         ‰‰‰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   ¦  «                             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        sJ ‚‰                     | ¦  «        j        sJ ‚d S )
Nr*   r+   r,   rI   r>   r`   )rO   rO   c              3   ó˜   •K  — | ]D}t          d ¦  «        D ]2}||k    r‰j        ||f         j        n‰j        ||f         ‰‰‰fv V — Œ3ŒEdS )r`   N)ÚrangerZ   Úis_ZeroMatrix)ru   ÚiÚjr*   r+   r,   rC   s      €€€€r6   ú	<genexpr>z'test_BlockDiagMatrix.<locals>.<genexpr>  s‚   øè è € ð 1ð 1Ø¥u¨Q¡x¤xð1ð 1Ø"#ð 01°Aªv¨vˆqŒx˜˜1˜Œ~Ô+Ð+¸1¼8ÀAÀqÀD¼>ÈaÐQRÐTUÈYÐ;Vð 1ð 1ð 1ð 1ð 1ð 1ð 1r5   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«     sý  øøøø€ Ý�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ�S�!�a™%¥!™)¥Q­¡U­Q¡YÑ/Ô/€Aå˜˜1˜aÑ Ô €AÝ˜˜1˜Q™3  !¡Ñ$Ô$€AàŒ8�DŒ>˜QÒÐÐÐØŒ7•q�1‘u�q‘y¥!¥a¡%­!¡)Ð,Ò,Ð,Ð,Ð,Ýð 1ð 1ð 1ð 1ð 1ð 1ð 1Ý˜1‘X”Xð1ñ 1ô 1ñ 1ô 1ð 1ð 1ð 1àˆ1Œ;˜œÐ 1Ò$Ð$Ð$Ð$Ø×ÒÑÔ 1 a¨ )Ò+Ð+Ð+Ð+å•n Q¤S¨1¡WÑ-Ô-­xÑ8Ô8Ð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Ô(FÑGÔGÐGÐGÐGÝ˜!˜A™#ÑÔ¥/°!°A±#°q¸±s¸1±u¸aÀ¹cÀ!¹eÑ"DÔ"DÒDÐDÐDÐDÝ˜!˜a™%Ñ Ô ¥O°A°a±C¸¸1¹¸aÀ¹cÑ$BÔ$BÒBÐBÐBÐBð ˆq�‰s‰GÔÐÐÐØ��1‘‰IÔ Ð Ð Ð à�KŠK˜‰NŒNÔ%Ð%Ð%Ð%Ø�KŠK˜‰NŒ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„¦  «         d S )Nr*   r+   r,   r-   c                  óR   •— t          ‰ ‰j        ¦  «                             ¦   «         S r1   )r	   r;   r‰   )r*   r,   s   €€r6   ú<lambda>z0test_BlockDiagMatrix_nonsquare.<locals>.<lambda>2  s   ø€ ­_¸QÀÄÑ-DÔ-D×-LÒ-LÑ-NÔ-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¯   %  sZ  øø€ Ý�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ˜˜1ÑÔ€AØŒ7•q�1‘u�a¥!™e�nÒ$Ð$Ð$Ð$ØŒ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ÐAÝ˜!˜aœc™'Ñ"Ô"¥o°a¸!¼#±g¸qÀ1Ä3¹wÑ&GÔ&GÒGÐGÐGÐGÝ
Õ#Ð%NÐ%NÐ%NÐ%NÐ%NÑOÔOÐOÐOÐOr5   c                  óD  — 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 ‚d S )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¤fÒ,Ð,Ð,Ð,Ý�˜q !Ñ$Ô$Ñ%Ô%­¨Q©¬µ#°a±&´&©Ò8Ð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 ‚d S )Nr   r*   r+   r,   r-   )r   r	   r   r?   r   r@   r„   r   r±   s       r6   Útest_BlockDiagMatrix_tracer´   @  s  € Ý•Ñ"Ô"Ñ#Ô# qÒ(Ð(Ð(Ð(Ý•¥­A­qÑ!1Ô!1Ñ2Ô2Ñ3Ô3°qÒ8Ð8Ð8Ð8Ý�S�!�QÑÔ€AÝ• Ñ#Ô#Ñ$Ô$­¨a©¬Ò0Ð0Ð0Ð0Ý�S�!�QÑÔ€AÝ•  AÑ&Ô&Ñ'Ô'­5°©8¬8µe¸A±h´hÑ+>Ò>Ð>Ð>Ð>õ 	�S�!�QÑÔ€AÝ�S�!�QÑÔ€AÝ•e�O¨A¨qÑ1Ô1Ñ2Ô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 ‚d S )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Ñ,@Ô,@Ò@Ð@Ð@Ð@Ý•_ Q¨Ñ*Ô*Ñ+Ô+­¸q¼sÀAÄCÑ/HÔ/HÒHÐHÐHÐHÐHÐHr5   c                  ó–  — 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 ‚d S r1   )r	   r   r¦   r§   rP   rA   r   )Úbdm1Úbdm2s     r6   Útest_issue_2460rº   T  s‰   € Ý�6¥1 #™;œ;­µ¨s©¬Ñ4Ô4€DÝ�6¥1 #™;œ;­µ¨s©¬Ñ4Ô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 ‚d S )	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  sZ  € Ý�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°T¨z¬]Ð;Ø¥ !¡   d¥q¨¡s d 
œm¨Q­q°©s¨t¨tµQ°q±S°T°T¨z¬]Ð;ð=ñ >ô >ò >ð >ð >ð >õ 	˜˜1�e B™iœiÑ(Ô(€AÝ��F˜FÑ#Ô#€AØ• Ñ"Ô"Ò"Ð"Ð"Ð"å��F˜FÑ#Ô#€AÝ˜1œ8 Dœ>Ñ*Ô*­oÀÀ1¸v¸hÑ.GÔ.GÒGÐGÐGÐGÐGÐGr5   c                  ó4  — t          d„ t          d¦  «        D ¦   «         ¦  «        } | j        j        dk    sJ ‚t	          | ¦  «        }|j        j        dk    sJ ‚| j        |j        k    sJ ‚|                      ¦   «         |                     ¦   «         k    sJ ‚d S )Nc                 óF   ‡— g | ]Šˆfd „t          d¦  «        D ¦   «         ‘ŒS )c                 ó<   •— g | ]}t          d ‰|fz  dd¦  «        ‘ŒS )úA_%d%dr>   rs   ©ru   r§   r¦   s     €r6   rw   z/test_reblock_2x2.<locals>.<listcomp>.<listcomp>g  s=   ø€ ð /ð /ð /Ø !õ # 8¨Q¨q¨E¡>°1°aÑ8Ô8ð /ð /ð /r5   r`   ©r¤   ©ru   r¦   s    @r6   rw   z$test_reblock_2x2.<locals>.<listcomp>g  sP   ø€ ð /ð /ð /à !ð/ð /ð /ð /Ý%*¨1¡X¤Xð/ñ /ô /ð /ð /ð /r5   r`   )r`   r`   rM   )r
   r¤   rZ   rT   r   r“   )r+   ÚBBs     r6   Útest_reblock_2x2rÅ   f  s¨   € Ýð /ð /å%*¨1¡X¤Xð/ñ /ô /ñ 	0ô 	0€Að Œ8Œ>˜VÒ#Ð#Ð#Ð#å	�Q‰Œ€BØŒ9Œ?˜fÒ$Ð$Ð$Ð$àŒ7�b”hÒÐÐÐØ�=Š=‰?Œ?˜bŸnšnÑ.Ô.Ò.Ð.Ð.Ð.Ð.Ð.r5   c                  ó–   — t          d„ t          d¦  «        D ¦   «         ¦  «        } t          t          | ¦  «        ¦  «        | k    sJ ‚d S )Nc                 óF   ‡— g | ]Šˆfd „t          d¦  «        D ¦   «         ‘ŒS )c                 óP   •— g | ]"}t          d ‰|fz  t          t          ¦  «        ‘Œ#S )rÀ   )r   r?   rÁ   s     €r6   rw   z+test_deblock.<locals>.<listcomp>.<listcomp>s  s=   ø€ ð 'ð 'ð 'Øõ # 8¨Q¨q¨E¡>µ1µaÑ8Ô8ð 'ð 'ð 'r5   ra   rÂ   rÃ   s    @r6   rw   z test_deblock.<locals>.<listcomp>s  sP   ø€ ð 'ð 'ð 'àð'ð 'ð 'ð 'Ý" 1™XœXð'ñ 'ô 'ð 'ð 'ð 'r5   ra   )r
   r¤   r   r   )r+   s    r6   Útest_deblockrÉ   r  sZ   € Ýð 'ð 'å" 1™XœXð'ñ 'ô 'ñ 	(ô 	(€Aõ •;˜q‘>”>Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r5   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 ‚d S r_   )	r	   r   r;   rR   r   r   r   r   r   )Úbm1Úbm2s     r6   Útest_block_collapse_typerÍ   y  s  € Ý
�/¨1¨#Ñ.Ô.µÀÀÑ0DÔ0DÑ
EÔ
E€CÝ
�/¨1¨#Ñ.Ô.µÀÀÑ0DÔ0DÑ
EÔ
E€CàŒ5Œ?�oÒ-Ð-Ð-Ð-Ý˜# ™)Ñ$Ô$Ô.µ/ÒAÐAÐAÐAÝ�' #™,œ,Ñ'Ô'Ô1µ_ÒDÐDÐDÐDÝ�) C™.œ.Ñ)Ô)Ô3µÒFÐFÐFÐFÝ�	 #™œÑ'Ô'Ô1µ_ÒDÐDÐDÐDÝ•g˜c‘l”lÑ#Ô#Ô-µÒ@Ð@Ð@Ð@Ð@Ð@r5   c                  ó¶   — t          t          d„ ¦  «         t          t          d„ ¦  «         t          t          d„ ¦  «         t          t          d„ ¦  «         d S )Nc                  óZ   — 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”kÐ"ð,ñ  ô  € r5   c                  ón   — 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”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>‹  sU   € �{Ý	•A•qÑ	Ô	�:¥a­Ñ+Ô+Ð,Ý	•A•q˜1‘uÑ	Ô	�z­!­Q°©UÑ3Ô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>�  sU   € �{Ý	•A˜‘E�1Ñ	Ô	�z­!­QÑ/Ô/Ð0Ý	•A˜‘E�1Ñ	Ô	�z­!­QÑ/Ô/Ð0ð,ñ  ô  € r5   )r   Ú
ValueErrorr4   r5   r6   Útest_invalid_block_matrixrÖ   „  sŠ   € Ý
�:ð ð ñ ô ð õ �:ð ð ñ ô ð õ �:ð ð ñ ô ð õ �:ð ð ñ ô ð ð ð r5   c                  ó2  — t          dt          t          ¦  «        } t          dt          t          ¦  «        }t          dt          t          ¦  «        }t          dt          t          ¦  «        }t          | |g||gg¦  «        }|                     ¦   «         \  }}}t          ||z  |z  ¦  «        |k    sJ ‚|                     ¦   «         \  }}}t          ||z  |z  ¦  «        |k    sJ ‚|                     ¦   «         \  }}t          ||z  ¦  «        |k    sJ ‚d S 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          |                     ¦   «         ¦  «        }t          ||||g||||g||||g| |||gg¦  «        }||k    sJ ‚d S )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            	      ó  — t          d¦  «        } t          dd¦  «        }t          dd¦  «        }t          d¦  «        }t          | |g||gg¦  «        }t          | t          j        |z  g||gg¦  «        }|                     ¦   «         t          | t          dd¦  «        gt          dd¦  «        |gg¦  «        k    sJ ‚t          |¦  «        |k    s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 ‚d S )Nr`   r>   )	r   r   r   r
   r"   ÚImaginaryUnitÚadjointr(   r'   )r*   r+   r,   r-   rC   ÚX2s         r6   Ú!test_adjoint_and_special_matricesrè   ·  sw  € Ý�‰Œ€AÝ�!�Q‰Œ€AÝ�1�aÑÔ€AÝ�‰Œ€AÝ�a˜�V˜a ˜VÐ$Ñ%Ô%€AÝ	�q�!œ/¨!Ñ+Ð,¨q°!¨fÐ5Ñ	6Ô	6€BØ�9Š9‰;Œ;�+¨­:°a¸Ñ+;Ô+;Ð'<½yÈÈA¹¼ÐPQÐ>RÐ&SÑTÔTÒTÐTÐTÐTÝˆa‰5Œ5�AŠ:ˆ:ˆ:ˆ:Ø�:Š:‰<Œ<�;¨­J°q¸!Ñ,<Ô,<Ð(=ÅÄÐ@PÕQZÐ[\Ð^_ÑQ`ÔQ`Ñ@`ÐbcÐ?dÐ'eÑfÔfÒfÐfÐfÐfÝˆb‰6Œ6•[¥:¨a°Ñ#3Ô#3µY¸qÀ!±_´_Ð"EÍ
ÐSTÐVWÑHXÔHXÕZdÐefÐhiÑZjÔZjÐGkÐ!lÑmÔmÒmÐmÐmÐmÐmÐmr5   c                  ó�  ‡— t          d¦  «        Št          ddˆfd„t          d¦  «        D ¦   «         ¦  «        } t          | d d…d d…f         | d d…df         g| dd d…f         | dd …df         gg¦  «        }t          |                     ‰¦  «        ¦  «        |                      ‰¦  «        z
  t          dd¦  «        k    sJ ‚d S )NÚxr`   c                 óF   •— g | ]} t          d |› �¦  «        ‰¦  «        ‘ŒS )re   )r#   )ru   r¦   rê   s     €r6   rw   z0test_block_matrix_derivative.<locals>.<listcomp>Æ  s2   ø€ Ð=Ð=Ð=¨qÐ'•h˜w 1˜w˜wÑ'Ô'¨Ñ*Ô*Ð=Ð=Ð=r5   rn   r>   )r%   r   r¤   r
   Údiffr   )r*   Úbcrê   s     @r6   Útest_block_matrix_derivativerî   Ä  sÊ   ø€ Ý�‰Œ€AÝˆq�!Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ>Ô>€AÝ	�q˜˜!˜˜R˜a˜R˜”y ! B Q B¨ E¤(Ð+¨a°°2°A°2°¬h¸¸!¸"¸"¸a¸%¼Ð-AÐBÑ	CÔ	C€BÝ�"—'’'˜!‘*”*ÑÔ §¢ q¡	¤	Ñ)­U°1°a©[¬[Ò8Ð8Ð8Ð8Ð8Ð8r5   c                  ó|  — t          d¦  «        } t          | ¦  «        }t          | | ¦  «        }t          ||g||gg¦  «        }t	          |                     ¦   «                              ¦   «         ¦  «        |k    sJ ‚t	          |                     ¦   «                              ¦   «         ¦  «        |k    sJ ‚t	          t          |                     ¦   «         d¦  «        ¦  «        t          |d¦  «        k    sJ ‚t	          t          |d¦  «                             ¦   «         ¦  «        t          |d¦  «        k    sJ ‚d S )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Ô1Ñ2Ô2°aÒ7Ð7Ð7Ð7Ý˜!Ÿ)š)™+œ+×/Ò/Ñ1Ô1Ñ2Ô2°aÒ7Ð7Ð7Ð7å�& §¢¡¤°Ñ3Ô3Ñ4Ô4½¸qÀ"¹¼ÒEÐEÐEÐEÝ�&  B™-œ-×1Ò1Ñ3Ô3Ñ4Ô4½¸qÀ"¹¼ÒEÐEÐEÐ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   r{   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Ð 2Ð 2Ð 2Ð 2Ð 2Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð$ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø :Ð :Ð :Ð :Ð :Ð :Ø >Ð >Ð >Ð >Ð >Ð >ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à�g˜h°Ð5Ñ5Ô5Ñ €€1€aˆˆAˆq�!Ø€L��a˜ÑÔ€Ø€L��a˜ÑÔ€Ø€L��a˜ÑÔ€Ø€L��a˜ÑÔ€Ø€L��a˜ÑÔ€Ø€L��a˜ÑÔ€Ø€[�1�a�&�ÑÔ€Ø€[�1�#˜�s�ÑÔ€ðFð Fð Fð&ð &ð &ð2ð 2ð 2ð?ð ?ð ?ð>ð >ð >ð/+ð /+ð /+ðb3ð 3ð 3ðIð Ið Ið+ð +ð +ð7ð 7ð 7ð
5ð 
5ð 
5ðð ð ð63ð 3ð 3ðlJð Jð Jð0 ð	-ð 	-ñ „ð	-ð&ð &ð &ð@Pð Pð Pð
+ð 
+ð 
+ð;ð ;ð ;ðIð Ið Ið\ð \ð \ð
Hð Hð Hð
/ð 
/ð 
/ð(ð (ð (ð	Að 	Að 	Aðð ð ð $ð $ð $ð&ð ð ð 
nð 
nð 
nð9ð 9ð 9ð
Fð 
Fð 
Fð 
Fð 
Fr5   