
    Ed1W              	       (   d Z ddlmZ ddlmZmZ ddlmZ ddl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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& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d Z7 e*j8        e          d             Z9 e+j8        e          d             Z9 e+j8        e          d             Z9 e+j8        e          d             Z9 e+j8        e          d             Z9 e+j:        ee          d             Z9 e+j:        ee          d             Z9 e+j8        e          d             Z9 e+j8        e          d             Z9 e,j8        e          d             Z9 e,j8        e          d             Z9 e,j8        e          d             Z9 e,j8        e          d             Z9 e,j:        ee          d             Z9 e,j8        e          d             Z9 e,j8        e          d             Z9 e,j8        e          d              Z9 e,j8        e          d!             Z9 e,j8        e	          d"             Z9 e,j8        e          d#             Z9 e,j8        e          d$             Z9 e,j8        e          d%             Z9 e-j8        e          d&             Z9 e-j8        e          d'             Z9 e-j8        e          d(             Z9 e-j8        e          d)             Z9 e-j8        e          d*             Z9 e-j8        e          d+             Z9 e-j:        ee          d,             Z9 e-j8        e          d-             Z9 e-j8        e           d.             Z9 e.j8        e          d/             Z9 e.j8        e          d0             Z9 e.j8        e          d1             Z9 e.j:        ee          d2             Z9 e.j8        e          d3             Z9 e.j:        e"e          d4             Z9 e.j8        e          d5             Z9 e.j8        e           d6             Z9 e/j8        e          d7             Z9 e/j8        e          d8             Z9 e/j8        e          d9             Z9 e/j8        e          d:             Z9 e/j8        e          d;             Z9 e/j:        ee          d<             Z9 e/j8        e          d=             Z9 e0j8        e          d>             Z9 e0j8        e          d?             Z9 e0j8        e          d@             Z9 e0j8        e          dA             Z9 e0j8        e          dB             Z9 e0j8        e          dC             Z9 e0j8        e          dD             Z9 e0j:        ee          dE             Z9 e0j8        e          dF             Z9 e1j8        e          dG             Z9 e1j8        e          dH             Z9 e1j8        e          dI             Z9 e1j8        e          dJ             Z9 e1j:        ee          dK             Z9 e1j8        e          dL             Z9 e1j8        e          dM             Z9 e1j8        e          dN             Z9 e1j8        e          dO             Z9 e1j8        e           dP             Z9 e2j8        e          dQ             Z9 e2j8        e          dR             Z9 e2j8        e          dS             Z9 e2j8        e          dT             Z9 e2j:        ee          dU             Z9 e2j8        e          dV             Z9 e2j8        e          dW             Z9 e2j8        e          dX             Z9 e2j8        e          dY             Z9 e2j8        e           dZ             Z9d[ Z; e3j8        e          d\             Z9 e3j8        e          d]             Z9 e3j8        e          d^             Z9 e3j8        e          d_             Z9 e3j8        e          d`             Z9 e3j:        ee          da             Z9 e3j8        e          db             Z9 e3j:        eeee          dc             Z9 e3j8        e           dd             Z9de Z<df Z=dg Z> e4j:        eeeee          dh             Z9 e4j8        e          di             Z9 e4j:        eee          dj             Z9 e4j8        e          dk             Z9 e4j8        e          dl             Z9 e4j8        e          dm             Z9 e5j:        ee eeee          dn             Z9 e5j8        e          do             Z9 e5j8        e          dp             Z9 e5j8        e          dq             Z9 e5j8        e          dr             Z9 e6j:        ee eeeee          ds             Z9 e6j8        e          dt             Z9 e6j8        e          du             Z9 e6j8        e          dv             Z9 e6j8        e          dw             Z9 e6j8        e"          dx             Z9dyS )zzj
This module contains query handlers responsible for Matrices queries:
Square, Symmetric, Invertible etc.
    )	conjuncts)Qask)test_closed_group)
MatrixBase)BlockMatrixBlockDiagMatrixDeterminant
DiagMatrixDiagonalMatrixHadamardProductIdentityInverseMatAddMatMulMatPow
MatrixExprMatrixSliceMatrixSymbol	OneMatrixTrace	Transpose
ZeroMatrix)reblock_2x2)Factorization)DFT)	fuzzy_and)sift)Basic   )SquarePredicateSymmetricPredicateInvertiblePredicateOrthogonalPredicateUnitaryPredicateFullRankPredicatePositiveDefinitePredicateUpperTriangularPredicateLowerTriangularPredicateDiagonalPredicateIntegerElementsPredicateRealElementsPredicateComplexElementsPredicatec                     | |j         v rdS d S NT)
predicates	predicateexprassumptionss      Clib/python3.11/site-packages/sympy/assumptions/handlers/matrices.py_Factorizationr6      s     DO# t     c                 :    | j         d         | j         d         k    S Nr      shaper3   r4   s     r5   _r>   #   s    :a=DJqM))r7   c           	         |                                  \  }}t          fd|j        D                       rdS t          t	          j        |                     rdS t          |j                  dk    rq|j        d         |j        d         j        k    rRt          |j                  dk    rdS t          t	          j        t          |j        dd                              S d S d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S Nr   r   	symmetric.0argr4   s     r5   	<genexpr>z_.<locals>.<genexpr>-   s7      
C
C#3q{3--
C
C
C
C
C
Cr7   Tr    r   r:   )
as_coeff_mmulallargsr   r   diagonallenTrC   r   r3   r4   factormmuls    `  r5   r>   r>   *   s    %%''LFD

C
C
C
C
C
C
CCC t 1:d[)) t
49~~ Gty|ty}> Gty>>Q 	41;vty2788+FFFG G G Gr7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S NF)rK   r   r   integernegative
invertiblerC   r3   r4   baseexpint_expnon_negatives         r5   r>   r>   8   s     	ID#!)C..+..G t
3'55L 3- 3T 2 2K@@31;t$$k2224r7   c                 D    t          fd| j        D                       S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   rB   rD   s     r5   rG   z_.<locals>.<genexpr>G   s7      GGcs1;s##[11GGGGGGr7   rJ   rK   r=   s    `r5   r>   r>   E   s(    GGGGTYGGGGGGr7   c                     | j         sdS t          t          j        |           |          rdS t          j        |           t          |          v rdS d S NFT)	is_squarer   r   rL   rC   r   r=   s     r5   r>   r>   I   sb    > u 1:d[)) t{4Ik222 t r7   c                 F    t          t          j        |           |          S rA   )r   r   squarer=   s     r5   r>   r>   T   s    qx~~{+++r7   c                 P    t          t          j        | j                  |          S rA   )r   r   rC   rF   r=   s     r5   r>   r>   X   s    q{48$$k222r7   c                     t          t          j        |           |          rdS | j        sd S t          t          j        | j                  |          S r/   )r   r   rL   on_diagrC   parentr=   s     r5   r>   r>   \   sP     1:d[)) t< :t1;t{++[999r7   c                     dS r/    r=   s     r5   r>   r>   g       4r7   c                     |                                  \  }}t          fd|j        D                       rdS t          fd|j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   r   rV   rD   s     r5   rG   z_.<locals>.<genexpr>q   s7      
D
D33q|C  +..
D
D
D
D
D
Dr7   Tc              3   `   K   | ](}t          t          j        |                    d u V  )dS FNrm   rD   s     r5   rG   z_.<locals>.<genexpr>s   P       " " q|C  +..%7 " " " " " "r7   FrI   rJ   rK   anyrO   s    `  r5   r>   r>   n   s    %%''LFD

D
D
D
D$)
D
D
DDD t
 " " " "y" " " " " u r7   c                     | j         \  }}t          t          j        |          |          }|sd S |j        dk    r"t          t          j        |          |          S d S rS   )rK   r   r   rT   is_negativerV   r3   r4   rX   rY   rZ   s        r5   r>   r>   w   sa     	ID#!)C..+..G t
% 41<%%{3334r7   c                     d S rA   ri   r=   s     r5   r>   r>      rj   r7   c                 b    | j         sdS t          j        |           t          |          v rdS d S r`   )ra   r   rV   r   r=   s     r5   r>   r>      s?    > u|DY{333 t r7   c                     dS r/   ri   r=   s     r5   r>   r>      rj   r7   c                     dS rS   ri   r=   s     r5   r>   r>          5r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>      #    :a=A4$*Q-1"44r7   c                 P    t          t          j        | j                  |          S rA   )r   r   rV   rF   r=   s     r5   r>   r>          q|DH%%{333r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   rV   rg   r=   s     r5   r>   r>      -    < ;t1<,,k:::r7   c                 N    | j         sdS |                                 | j        k    S rS   )ra   rankrowsr=   s     r5   r>   r>      s&    > u99;;$)##r7   c                     | j         sdS d S rS   )ra   r=   s     r5   r>   r>      s    > u4r7   c                    | j         sdS | j        dk    r-t          t          j        | j        d                   |          S t          |           } | j        dk    r| j                                        \  \  }}\  }}t          t          j        |          |          dk    r4t          t          j        |||j        z  |z  z
            |          }||S t          t          j        |          |          dk    r4t          t          j        |||j        z  |z  z
            |          }||S t          t          j        |          |          dk    r4t          t          j        |||j        z  |z  z
            |          }||S t          t          j        |          |          dk    r4t          t          j        |||j        z  |z  z
            |          }||S d S )NFr:   r:   r   r   )r    r    T)	ra   
blockshaper   r   rV   blocksr   tolistI)r3   r4   ABCDrV   s          r5   r>   r>      s   > u&  A1<D 122K@@@tD&  ";--//!Q!Qq|A,,4 	"Q\!a!#gk/::KHHJ "!!q|A,,4 	"Q\!a!#gk/::KHHJ "!!q|A,,4 	"Q\!a!#gk/::KHHJ "!!q|A,,4 	"Q\!a!#gk/::KHHJ "!!4r7   c                 h    | j         | j        k    rd S t          fd| j        D                       S )Nc                 T    g | ]$}t          t          j        |                    %S ri   rm   )rE   ar4   s     r5   
<listcomp>z_.<locals>.<listcomp>   s+    KKKAc!,q//;77KKKr7   )rowblocksizescolblocksizesr   diagr=   s    `r5   r>   r>      s@    T// tKKKKKKKLLLr7   c                     |                                  \  }}t          fd|j        D                       r|dk    rdS t          fd|j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   )r   r   
orthogonalrD   s     r5   rG   z_.<locals>.<genexpr>   s7      EECCS!!;//EEEEEEr7   r:   Tc              3   `   K   | ](}t          t          j        |                    d u V  )dS ro   rm   rD   s     r5   rG   z_.<locals>.<genexpr>   rp   r7   Frq   rO   s    `  r5   r>   r>      s    %%''LFDEEEE49EEEEE aKt
 " " " "y" " " " " u r7   c                     | j         \  }}t          t          j        |          |          }|r"t          t          j        |          |          S d S rA   )rK   r   r   rT   r   ru   s        r5   r>   r>      sM     	ID#!)C..+..G 41<%%{3334r7   c                     t          | j                  dk    r/t          t          j        | j        d                   |          rdS d S d S )Nr:   r   T)rM   rK   r   r   r   r=   s     r5   r>   r>      sR    DI! TYq\**K88t   r7   c                     | j         r$t          t          j        |           |          du rdS t          j        |           t          |          v rdS d S r`   )ra   r   r   rV   r   r   r=   s     r5   r>   r>      s`    N T**K88EAu|DY{333 t r7   c                     dS r/   ri   r=   s     r5   r>   r>      rj   r7   c                     dS rS   ri   r=   s     r5   r>   r>      rz   r7   c                 P    t          t          j        | j                  |          S rA   )r   r   r   rF   r=   s     r5   r>   r>      r~   r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   r   rg   r=   s     r5   r>   r>     r   r7   c                 8    t          t          j        | |          S rA   )r6   r   r   r=   s     r5   r>   r>     s    !,k:::r7   c                     |                                  \  }}t          fd|j        D                       rt          |          dk    rdS t	          fd|j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   )r   r   unitaryrD   s     r5   rG   z_.<locals>.<genexpr>  s5      BBC	#,,BBBBBBr7   r:   Tc              3   `   K   | ](}t          t          j        |                    d u V  )dS ro   rm   rD   s     r5   rG   z_.<locals>.<genexpr>  rp   r7   F)rI   rJ   rK   absrr   rO   s    `  r5   r>   r>     s    %%''LFDBBBB	BBBBB KK1t
 " " " "y" " " " " u r7   c                     | j         \  }}t          t          j        |          |          }|r"t          t          j        |          |          S d S rA   )rK   r   r   rT   r   ru   s        r5   r>   r>     sK     	ID#!)C..+..G 119T??K0004r7   c                     | j         r$t          t          j        |           |          du rdS t          j        |           t          |          v rdS d S r`   )ra   r   r   rV   r   r   r=   s     r5   r>   r>   "  s^    N T**K88EAuy)K000 t r7   c                 P    t          t          j        | j                  |          S rA   )r   r   r   rF   r=   s     r5   r>   r>   *  s    qy""K000r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   r   rg   r=   s     r5   r>   r>   .  s-    < 8t19T[));777r7   c                     dS r/   ri   r=   s     r5   r>   r>   5  rj   r7   c                     dS rS   ri   r=   s     r5   r>   r>   9  rz   r7   c                 8    t          t          j        | |          S rA   )r6   r   r   r=   s     r5   r>   r>   =  s    !)T;777r7   c                 L    t          fd| j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   )r   r   fullrankrD   s     r5   rG   z_.<locals>.<genexpr>F  5      
B
B3qz#,,
B
B
B
B
B
Br7   Tr^   r=   s    `r5   r>   r>   D  9    

B
B
B
B	
B
B
BBB t r7   c                     | j         \  }}t          t          j        |          |          }|rEt          t          j        |           |          r"t          t          j        |          |          S d S rA   )rK   r   r   rT   rU   r   ru   s        r5   r>   r>   I  si     	ID#!)C..+..G 23
3'55 21:d##[1114r7   c                     dS r/   ri   r=   s     r5   r>   r>   R  rj   r7   c                     dS rS   ri   r=   s     r5   r>   r>   V  rz   r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>   Z  r|   r7   c                 P    t          t          j        | j                  |          S rA   )r   r   r   rF   r=   s     r5   r>   r>   ^      qz$(##[111r7   c                 X    t          t          j        | j                  |          rdS d S r/   )r   r   r   rg   r=   s     r5   r>   r>   b  s/    
1<$$k22 t r7   c           	         |                                  \  }}t          fd|j        D                       r|dk    rdS t          |j                  dk    r|j        d         |j        d         j        k    ret          t          j        |j        d                             r:t          t          j        t          |j        dd                              S d S d S d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   r   positive_definiterD   s     r5   rG   z_.<locals>.<genexpr>m  sL       " " #C((+66 " " " " " "r7   r   Tr    rH   r:   )
rI   rJ   rK   rM   rN   r   r   r   r   r   rO   s    `  r5   r>   r>   j  s   %%''LFD " " " "y" " " 	" 	" &,qjtDI! 4	!	"/4AJty|,,k::4 1&DIadO$& &'24 4 	44 4 4 4 4 4r7   c                 d    t          t          j        | j        d                   |          rdS d S )Nr   T)r   r   r   rK   r=   s     r5   r>   r>   v  s6     1ty|,,k:: t r7   c                 L    t          fd| j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   rD   s     r5   rG   z_.<locals>.<genexpr>~  sL       " " q"3''55 " " " " " "r7   Tr^   r=   s    `r5   r>   r>   |  sL    
 " " " "y" " " " " t r7   c                 b    | j         sdS t          j        |           t          |          v rdS d S r`   )ra   r   r   r   r=   s     r5   r>   r>     s@    > u4  Ik$:$:: t r7   c                     dS r/   ri   r=   s     r5   r>   r>     rj   r7   c                     dS rS   ri   r=   s     r5   r>   r>     rz   r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>     r|   r7   c                 P    t          t          j        | j                  |          S rA   )r   r   r   rF   r=   s     r5   r>   r>     s    q"48,,k:::r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   r   rg   r=   s     r5   r>   r>     s/    < Bt1&t{33[AAAr7   c                 p    |                                  \  }}t          fd|D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   r   upper_triangularrE   mr4   s     r5   rG   z_.<locals>.<genexpr>  8      
E
Eq3q!!$$k22
E
E
E
E
E
Er7   Tas_coeff_matricesrJ   r3   r4   rP   matricess    `  r5   r>   r>     M    --//FH

E
E
E
EH
E
E
EEE t r7   c                 L    t          fd| j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   rD   s     r5   rG   z_.<locals>.<genexpr>  8      
J
J3q!#&&44
J
J
J
J
J
Jr7   Tr^   r=   s    `r5   r>   r>     9    

J
J
J
J	
J
J
JJJ t r7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rU   rV   r   rW   s         r5   r>   r>          	ID#!)C..+..G t
3'55L :- :T 2 2K@@:1%d++[9994r7   c                 P    t          j        |           t          |          v rdS d S r/   )r   r   r   r=   s     r5   r>   r>     1    $9[#9#99 t r7   c                     dS r/   ri   r=   s     r5   r>   r>     rj   r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>     r|   r7   c                 P    t          t          j        | j                  |          S rA   r   r   lower_triangularrF   r=   s     r5   r>   r>         q!$(++[999r7   c                 P    t          t          j        | j                  |          S rA   r   r   r   rF   r=   s     r5   r>   r>     r   r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   r   rg   r=   s     r5   r>   r>     /    < At1%dk22K@@@r7   c                 8    t          t          j        | |          S rA   )r6   r   r   r=   s     r5   r>   r>         !,dK@@@r7   c                 p    |                                  \  }}t          fd|D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   r   r   r   s     r5   rG   z_.<locals>.<genexpr>  r   r7   Tr   r   s    `  r5   r>   r>     r   r7   c                 L    t          fd| j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   rD   s     r5   rG   z_.<locals>.<genexpr>  r   r7   Tr^   r=   s    `r5   r>   r>     r   r7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rU   rV   r   rW   s         r5   r>   r>     r   r7   c                 P    t          j        |           t          |          v rdS d S r/   )r   r   r   r=   s     r5   r>   r>     r   r7   c                     dS r/   ri   r=   s     r5   r>   r>     rj   r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>     r|   r7   c                 P    t          t          j        | j                  |          S rA   r   r=   s     r5   r>   r>     r   r7   c                 P    t          t          j        | j                  |          S rA   r   r=   s     r5   r>   r>     r   r7   c                 b    | j         sd S t          t          j        | j                  |          S rA   )rf   r   r   r   rg   r=   s     r5   r>   r>   
  r   r7   c                 8    t          t          j        | |          S rA   )r6   r   r   r=   s     r5   r>   r>     r   r7   c                     | j         dv S )N)r   r   r;   )r3   s    r5   _is_empty_or_1x1r     s    :)))r7   c                     t          |           rdS |                                 \  }}t          fd|D                       rdS d S )NTc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   r   rL   r   s     r5   rG   z_.<locals>.<genexpr>   s5      
=
=q3qz!}}k**
=
=
=
=
=
=r7   )r   r   rJ   r   s    `  r5   r>   r>     sb     t--//FH

=
=
=
=H
=
=
=== t r7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rU   rV   rL   rW   s         r5   r>   r>   #  s     	ID#!)C..+..G t
3'55L 2- 2T 2 2K@@21:d##[1114r7   c                 L    t          fd| j        D                       rdS d S )Nc              3   \   K   | ]&}t          t          j        |                    V  'd S rA   r   rD   s     r5   rG   z_.<locals>.<genexpr>2  r   r7   Tr^   r=   s    `r5   r>   r>   0  r   r7   c                 r    t          |           rdS t          j        |           t          |          v rdS d S r/   )r   r   rL   r   r=   s     r5   r>   r>   5  sE     tz$9[111 t r7   c                 F    | j         d         dk    o| j         d         dk    S r9   r;   r=   s     r5   r>   r>   <  r|   r7   c                 P    t          t          j        | j                  |          S rA   )r   r   rL   rF   r=   s     r5   r>   r>   @  r   r7   c                     t          |           rdS | j        sd S t          t          j        | j                  |          S r/   )r   rf   r   r   rL   rg   r=   s     r5   r>   r>   D  sB     t< 9t1:dk**K888r7   c                     dS r/   ri   r=   s     r5   r>   r>   M  rj   r7   c                 8    t          t          j        | |          S rA   )r6   r   rL   r=   s     r5   r>   r>   Q  s    !*dK888r7   c                 H     t           fd|j        D                       S )z Block Matrix elements. c              3   J   K   | ]}t           |                    V  d S rA   )r   )rE   br4   r2   s     r5   rG   zBM_elements.<locals>.<genexpr>Z  s5      CC!s99Q<<--CCCCCCr7   )rJ   r   r1   s   ` `r5   BM_elementsr  X  s,    CCCCCt{CCCCCCr7   c                 >    t           | |j                  |          S )z Matrix Slice elements. )r   rg   r1   s      r5   MS_elementsr  \  s    yy%%{333r7   c                     t          |j        d           }|d         |d         }}t          t          t	          | ||          t          t	          | ||           g          S )Nc                 ,    t          | t                    S rA   )
isinstancer   )xs    r5   <lambda>z!MatMul_elements.<locals>.<lambda>a  s    *Q
";"; r7   FT)r   rK   r   r   r   )matrix_predicatescalar_predicater3   r4   dfactorsr   s          r5   MatMul_elementsr  `  sl    TY;;<<A%!D'XG%/;8HII%*K9IJJL M M Mr7   c                 8    t          | |t          j                  S rA   )r   r   integer_elementsr=   s     r5   r>   r>   h       T;0BCCCr7   c                     | j         \  }}t          t          j        |          |          }|sd S |j        dk    r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rt   r  ru   s        r5   r>   r>   m  sb     	ID#!)C..+..G t
% :1%d++[9994r7   c                     dS r/   ri   r=   s     r5   r>   r>   x  rj   r7   c                 N    t          t          j        t          j        | |          S rA   )r  r   r  rT   r=   s     r5   r>   r>   |      1-qy$LLLr7   c                 8    t          t          j        | |          S rA   )r  r   r  r=   s     r5   r>   r>         q)4===r7   c                 8    t          t          j        | |          S rA   )r  r   r  r=   s     r5   r>   r>     r  r7   c                 8    t          | |t          j                  S rA   )r   r   real_elementsr=   s     r5   r>   r>     s     T;@@@r7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rU   rV   r  rW   s         r5   r>   r>     s     	ID#!)C..+..G t
3'55L 7- 7T 2 2K@@71?4((+6664r7   c                 N    t          t          j        t          j        | |          S rA   )r  r   r  realr=   s     r5   r>   r>     s    1?AFD+FFFr7   c                 8    t          t          j        | |          S rA   )r  r   r  r=   s     r5   r>   r>         qk:::r7   c                 8    t          t          j        | |          S rA   )r  r   r  r=   s     r5   r>   r>     r#  r7   c                 8    t          | |t          j                  S rA   )r   r   complex_elementsr=   s     r5   r>   r>     r  r7   c                 D   | j         \  }}t          t          j        |          |          }|sd S t          t          j        |           |          }|s(|dk    rDt          t          j        |          |          r"t          t          j        |          |          S d S rS   )rK   r   r   rT   rU   rV   r&  rW   s         r5   r>   r>     r   r7   c                 N    t          t          j        t          j        | |          S rA   )r  r   r&  complexr=   s     r5   r>   r>     r  r7   c                 8    t          t          j        | |          S rA   )r  r   r&  r=   s     r5   r>   r>     r  r7   c                 8    t          t          j        | |          S rA   )r  r   r&  r=   s     r5   r>   r>     r  r7   c                     dS r/   ri   r=   s     r5   r>   r>     rj   r7   N)?__doc__sympy.logic.boolalgr   sympy.assumptionsr   r   sympy.assumptions.handlersr   sympy.matricesr   sympy.matrices.expressionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   &sympy.matrices.expressions.blockmatrixr   )sympy.matrices.expressions.factorizationsr   "sympy.matrices.expressions.fourierr   sympy.core.logicr   sympy.utilities.iterablesr   
sympy.corer   predicates.matricesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r6   registerr>   register_manyr   r  r  r  ri   r7   r5   <module>r<     s   
 * ) ) ) ) ) $ $ $ $ $ $ $ $ 8 8 8 8 8 8 % % % % % %                                        ? > > > > > C C C C C C 2 2 2 2 2 2 & & & & & & * * * * * *      5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5   *%%* * &%* V$$G G %$G V$$
 
 %$
 V$$H H %$H \**  +* "!)Z88, , 98, "!'9553 3 653 [)): : *): X&&  '& f%%  &% f%%  &% f%%  &% l++  ,+ #"8W55  65 j))  *) i((5 5 )(5 i((4 4 )(4 k**; ; +*; j))$ $ *)$
 j))  *)
 k**  +*4 o..M M /.M f%%  &% f%%  &% f%%  &%
 l++  ,+ h''  (' j))  *) #"7I664 4 764 k**; ; +*; m,,; ; -,; 6""  #" 6""  #" <((  )(  331 1 431 ;''8 8 ('8  X..  /. :&&  '& =))8 8 *)8 F##  $# F##  $# H%%  &% J''  (' I&&5 5 '&5 ! )442 2 542 K((  )( $#F++	4 	4 ,+	4 $#F++  ,+
 $#F++  ,+
 $#L11  21 $#H--  .- $#J//  0/ $#I..5 5 /.5 )()<<; ; =<; $#K00B B 10B #"6**  +*
 #"6**  +* #"6**
 
 +*
 #"<00  10 ('*==  >= #"9--5 5 .-5 #"9--: : .-: #"7++: : ,+: #";//A A 0/A #"=11A A 21A
 #"6**  +*
 #"6**  +* #"6**
 
 +*
 #"<00  10 ('*==  >= #"9--5 5 .-5 #"9--: : .-: #"7++: : ,+: #";//A A 0/A #"=11A A 21A* * * F##  $# F##
 
 $#
 F##  $# L))  *) I&&5 5 '&5 ! )442 2 542 K((9 9 )(9 ! XzRR  SR M**9 9 +*9D D D4 4 4M M M ('_f	9 D D D #"6**  +* (')ZHH  IH #"6**M M +*M #";//> > 0/> #";//> > 0/> %$[-
E9 A A A  ''
 
 ('
  ''G G ('G  ,,; ; -,;  ,,; ; -,; (']OVUI' 'D D' 'D #"6**
 
 +*
 #"6**M M +*M #";//> > 0/> #";//> > 0/> #"3''  ('  r7   