U
    ZÊ¹j1W  ã                	   @   s�  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d„ Z7e* 8e¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e+ :ee¡dd„ ƒZ9e+ :ee¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e+ 8e¡dd„ ƒZ9e, 8e¡dd„ ƒZ9e, 8e¡dd„ ƒZ9e, 8e¡dd„ ƒZ9e, 8e¡dd„ ƒZ9e, :ee¡dd„ ƒZ9e, 8e¡d d„ ƒZ9e, 8e¡d!d„ ƒZ9e, 8e¡d"d„ ƒZ9e, 8e¡d#d„ ƒZ9e, 8e	¡d$d„ ƒZ9e, 8e¡d%d„ ƒZ9e, 8e¡d&d„ ƒZ9e, 8e¡d'd„ ƒZ9e- 8e¡d(d„ ƒZ9e- 8e¡d)d„ ƒZ9e- 8e¡d*d„ ƒZ9e- 8e¡d+d„ ƒZ9e- 8e¡d,d„ ƒZ9e- 8e¡d-d„ ƒZ9e- :ee¡d.d„ ƒZ9e- 8e¡d/d„ ƒZ9e- 8e ¡d0d„ ƒZ9e. 8e¡d1d„ ƒZ9e. 8e¡d2d„ ƒZ9e. 8e¡d3d„ ƒZ9e. :ee¡d4d„ ƒZ9e. 8e¡d5d„ ƒZ9e. :e"e¡d6d„ ƒZ9e. 8e¡d7d„ ƒZ9e. 8e ¡d8d„ ƒZ9e/ 8e¡d9d„ ƒZ9e/ 8e¡d:d„ ƒZ9e/ 8e¡d;d„ ƒZ9e/ 8e¡d<d„ ƒZ9e/ 8e¡d=d„ ƒZ9e/ :ee¡d>d„ ƒZ9e/ 8e¡d?d„ ƒZ9e0 8e¡d@d„ ƒZ9e0 8e¡dAd„ ƒZ9e0 8e¡dBd„ ƒZ9e0 8e¡dCd„ ƒZ9e0 8e¡dDd„ ƒZ9e0 8e¡dEd„ ƒZ9e0 8e¡dFd„ ƒZ9e0 :ee¡dGd„ ƒZ9e0 8e¡dHd„ ƒZ9e1 8e¡dId„ ƒZ9e1 8e¡dJd„ ƒZ9e1 8e¡dKd„ ƒZ9e1 8e¡dLd„ ƒZ9e1 :ee¡dMd„ ƒZ9e1 8e¡dNd„ ƒZ9e1 8e¡dOd„ ƒZ9e1 8e¡dPd„ ƒZ9e1 8e¡dQd„ ƒZ9e1 8e ¡dRd„ ƒZ9e2 8e¡dSd„ ƒZ9e2 8e¡dTd„ ƒZ9e2 8e¡dUd„ ƒZ9e2 8e¡dVd„ ƒZ9e2 :ee¡dWd„ ƒZ9e2 8e¡dXd„ ƒZ9e2 8e¡dYd„ ƒZ9e2 8e¡dZd„ ƒZ9e2 8e¡d[d„ ƒZ9e2 8e ¡d\d„ ƒZ9d]d^„ Z;e3 8e¡d_d„ ƒZ9e3 8e¡d`d„ ƒZ9e3 8e¡dad„ ƒZ9e3 8e¡dbd„ ƒZ9e3 8e¡dcd„ ƒZ9e3 :ee¡ddd„ ƒZ9e3 8e¡ded„ ƒZ9e3 :eeee¡dfd„ ƒZ9e3 8e ¡dgd„ ƒZ9dhdi„ Z<djdk„ Z=dldm„ Z>e4 :eeeee¡dnd„ ƒZ9e4 8e¡dod„ ƒZ9e4 :eee¡dpd„ ƒZ9e4 8e¡dqd„ ƒZ9e4 8e¡drd„ ƒZ9e4 8e¡dsd„ ƒZ9e5 :ee eeee¡dtd„ ƒZ9e5 8e¡dud„ ƒZ9e5 8e¡dvd„ ƒZ9e5 8e¡dwd„ ƒZ9e5 8e¡dxd„ ƒZ9e6 :ee eeeee¡dyd„ ƒZ9e6 8e¡dzd„ ƒZ9e6 8e¡d{d„ ƒZ9e6 8e¡d|d„ ƒZ9e6 8e¡d}d„ ƒZ9e6 8e"¡d~d„ ƒZ9dS )€zj
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                 C   s   | |j krdS d S ©NT)Z
predicates©Ú	predicateÚexprÚassumptions© r2   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/assumptions/handlers/matrices.pyÚ_Factorization   s    
r4   c                 C   s   | j d | j d kS ©Nr   é   ©Úshape©r0   r1   r2   r2   r3   Ú_#   s    r:   c                    s”   |   ¡ \}}t‡ fdd„|jD ƒƒr(dS tt | ¡ˆ ƒr<dS t|jƒdkr�|jd |jd jkr�t|jƒdkrrdS tt t	|jdd… Ž ¡ˆ ƒS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S ©N©r   r   Ú	symmetric©Ú.0Úarg©r1   r2   r3   Ú	<genexpr>-   s     ú_.<locals>.<genexpr>Tr   r   éÿÿÿÿr6   )
Úas_coeff_mmulÚallÚargsr   r   ÚdiagonalÚlenÚTr=   r   ©r0   r1   ÚfactorZmmulr2   rA   r3   r:   *   s    $c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S ©NF)rG   r   r   ÚintegerÚnegativeÚ
invertibler=   ©r0   r1   ÚbaseÚexpÚint_expZnon_negativer2   r2   r3   r:   8   s    
ÿc                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   r<   r>   rA   r2   r3   rB   G   s     rC   ©rF   rG   r9   r2   rA   r3   r:   E   s    c                 C   s8   | j s
dS tt | ¡|ƒrdS t | ¡t|ƒkr4dS d S ©NFT)Ú	is_squarer   r   rH   r=   r   r9   r2   r2   r3   r:   I   s    c                 C   s   t t | ¡|ƒS r;   )r   r   Zsquarer9   r2   r2   r3   r:   T   s    c                 C   s   t t | j¡|ƒS r;   )r   r   r=   r@   r9   r2   r2   r3   r:   X   s    c                 C   s4   t t | ¡|ƒrdS | jsd S t t | j¡|ƒS d S r-   )r   r   rH   Úon_diagr=   Úparentr9   r2   r2   r3   r:   \   s
    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   g   s    c                    sH   |   ¡ \}}t‡ fdd„|jD ƒƒr(dS t‡ fdd„|jD ƒƒrDdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   ©r   r   rP   r>   rA   r2   r3   rB   q   s     rC   Tc                 3   s"   | ]}t t |¡ˆ ƒd kV  qdS ©FNrZ   r>   rA   r2   r3   rB   s   s   ÿF©rE   rF   rG   ÚanyrK   r2   rA   r3   r:   n   s    ÿc                 C   s@   | j \}}tt |¡|ƒ}|s"d S |jdkr<tt |¡|ƒS d S rM   )rG   r   r   rN   Úis_negativerP   ©r0   r1   rR   rS   rT   r2   r2   r3   r:   w   s    

c                 C   s   d S r;   r2   r9   r2   r2   r3   r:   ‚   s    c                 C   s$   | j s
dS t | ¡t|ƒkr dS d S rV   )rW   r   rP   r   r9   r2   r2   r3   r:   †   s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   �   s    c                 C   s   dS rM   r2   r9   r2   r2   r3   r:   ‘   s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   •   s    c                 C   s   t t | j¡|ƒS r;   )r   r   rP   r@   r9   r2   r2   r3   r:   ™   s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   rP   rY   r9   r2   r2   r3   r:   �   s    c                 C   s   | j s
dS |  ¡ | jkS rM   )rW   ZrankÚrowsr9   r2   r2   r3   r:   ¤   s    c                 C   s   | j s
dS d S rM   )rW   r9   r2   r2   r3   r:   ª   s    c                 C   sX  | j s
dS | jdkr*tt | jd ¡|ƒS t| ƒ} | jdk�rT| j ¡ \\}}\}}tt |¡|ƒdkr’tt |||j |  ¡|ƒ}|d k	r’|S tt |¡|ƒdkrÐtt |||j |  ¡|ƒ}|d k	rÐ|S tt |¡|ƒdk�rtt |||j |  ¡|ƒ}|d k	�r|S tt |¡|ƒdk�rTtt |||j |  ¡|ƒ}|d k	�rT|S d S )NF©r6   r6   ©r   r   )r   r   T)	rW   Z
blockshaper   r   rP   Úblocksr   ÚtolistÚI)r0   r1   ÚAÚBÚCÚDrP   r2   r2   r3   r:   °   s0    


c                    s(   | j | jkrd S t‡ fdd„| jD ƒƒS )Nc                    s   g | ]}t t |¡ˆ ƒ‘qS r2   rZ   )r?   ÚarA   r2   r3   Ú
<listcomp>Ï   s     z_.<locals>.<listcomp>)ZrowblocksizesZcolblocksizesr   Zdiagr9   r2   rA   r3   r:   Ë   s    c                    sP   |   ¡ \}}t‡ fdd„|jD ƒƒr0|dkr0dS t‡ fdd„|jD ƒƒrLdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   )r   r   Ú
orthogonalr>   rA   r2   r3   rB   ×   s     rC   r6   Tc                 3   s"   | ]}t t |¡ˆ ƒd kV  qdS r[   rZ   r>   rA   r2   r3   rB   Ú   s   ÿFr\   rK   r2   rA   r3   r:   Ô   s    ÿÿc                 C   s2   | j \}}tt |¡|ƒ}|r.tt |¡|ƒS d S r;   )rG   r   r   rN   rl   r_   r2   r2   r3   r:   Þ   s
    
c                 C   s,   t | jƒdkr(tt | jd ¡|ƒr(dS d S )Nr6   r   T)rI   rG   r   r   rl   r9   r2   r2   r3   r:   ç   s    ÿc                 C   s8   | j rtt | ¡|ƒdkrdS t | ¡t|ƒkr4dS d S rV   )rW   r   r   rP   rl   r   r9   r2   r2   r3   r:   í   s    ÿc                 C   s   dS r-   r2   r9   r2   r2   r3   r:   õ   s    c                 C   s   dS rM   r2   r9   r2   r2   r3   r:   ù   s    c                 C   s   t t | j¡|ƒS r;   )r   r   rl   r@   r9   r2   r2   r3   r:   ý   s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   rl   rY   r9   r2   r2   r3   r:     s    c                 C   s   t tj| |ƒS r;   )r4   r   rl   r9   r2   r2   r3   r:     s    c                    sT   |   ¡ \}}t‡ fdd„|jD ƒƒr4t|ƒdkr4dS t‡ fdd„|jD ƒƒrPdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   )r   r   Úunitaryr>   rA   r2   r3   rB     s     rC   r6   Tc                 3   s"   | ]}t t |¡ˆ ƒd kV  qdS r[   rZ   r>   rA   r2   r3   rB     s   ÿF)rE   rF   rG   Úabsr]   rK   r2   rA   r3   r:     s    
ÿÿc                 C   s2   | j \}}tt |¡|ƒ}|r.tt |¡|ƒS d S r;   )rG   r   r   rN   rm   r_   r2   r2   r3   r:     s
    
c                 C   s8   | j rtt | ¡|ƒdkrdS t | ¡t|ƒkr4dS d S rV   )rW   r   r   rP   rm   r   r9   r2   r2   r3   r:   "  s    ÿc                 C   s   t t | j¡|ƒS r;   )r   r   rm   r@   r9   r2   r2   r3   r:   *  s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   rm   rY   r9   r2   r2   r3   r:   .  s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   5  s    c                 C   s   dS rM   r2   r9   r2   r2   r3   r:   9  s    c                 C   s   t tj| |ƒS r;   )r4   r   rm   r9   r2   r2   r3   r:   =  s    c                    s    t ‡ fdd„| jD ƒƒrdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   )r   r   Úfullrankr>   rA   r2   r3   rB   F  s     rC   TrU   r9   r2   rA   r3   r:   D  s    c                 C   sD   | j \}}tt |¡|ƒ}|r@tt |¡ |ƒr@tt |¡|ƒS d S r;   )rG   r   r   rN   rO   ro   r_   r2   r2   r3   r:   I  s
    
c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   R  s    c                 C   s   dS rM   r2   r9   r2   r2   r3   r:   V  s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   Z  s    c                 C   s   t t | j¡|ƒS r;   )r   r   ro   r@   r9   r2   r2   r3   r:   ^  s    c                 C   s   t t | j¡|ƒrdS d S r-   )r   r   rl   rY   r9   r2   r2   r3   r:   b  s    c                    sŒ   |   ¡ \}}t‡ fdd„|jD ƒƒr0|dkr0dS t|jƒdkrˆ|jd |jd jkrˆtt |jd ¡ˆ ƒrˆtt t	|jdd… Ž ¡ˆ ƒS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   ©r   r   Úpositive_definiter>   rA   r2   r3   rB   m  s   ÿrC   r   Tr   rD   r6   )
rE   rF   rG   rI   rJ   r   r   ro   rq   r   rK   r2   rA   r3   r:   j  s"    ÿÿÿþÿÿc                 C   s   t t | jd ¡|ƒrdS d S )Nr   T)r   r   rq   rG   r9   r2   r2   r3   r:   v  s    c                    s    t ‡ fdd„| jD ƒƒrdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   rp   r>   rA   r2   r3   rB   ~  s   ÿrC   TrU   r9   r2   rA   r3   r:   |  s    ÿc                 C   s$   | j s
dS t | ¡t|ƒkr dS d S rV   )rW   r   rq   r   r9   r2   r2   r3   r:   ‚  s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   ‰  s    c                 C   s   dS rM   r2   r9   r2   r2   r3   r:   �  s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   ‘  s    c                 C   s   t t | j¡|ƒS r;   )r   r   rq   r@   r9   r2   r2   r3   r:   •  s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   rq   rY   r9   r2   r2   r3   r:   ™  s    c                    s*   |   ¡ \}}t‡ fdd„|D ƒƒr&dS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   ©r   r   Úupper_triangular©r?   ÚmrA   r2   r3   rB   ¦  s     rC   T©Úas_coeff_matricesrF   ©r0   r1   rL   Úmatricesr2   rA   r3   r:   £  s    c                    s    t ‡ fdd„| jD ƒƒrdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   rr   r>   rA   r2   r3   rB   «  s     rC   TrU   r9   r2   rA   r3   r:   ©  s    c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S rM   )rG   r   r   rN   rO   rP   rs   rQ   r2   r2   r3   r:   ®  s    
ÿc                 C   s   t  | ¡t|ƒkrdS d S r-   )r   rs   r   r9   r2   r2   r3   r:   »  s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   À  s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   Ä  s    c                 C   s   t t | j¡|ƒS r;   ©r   r   Úlower_triangularr@   r9   r2   r2   r3   r:   È  s    c                 C   s   t t | j¡|ƒS r;   ©r   r   rs   r@   r9   r2   r2   r3   r:   Ì  s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   rs   rY   r9   r2   r2   r3   r:   Ð  s    c                 C   s   t tj| |ƒS r;   )r4   r   rs   r9   r2   r2   r3   r:   ×  s    c                    s*   |   ¡ \}}t‡ fdd„|D ƒƒr&dS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   ©r   r   r{   rt   rA   r2   r3   rB   à  s     rC   Trv   rx   r2   rA   r3   r:   Ý  s    c                    s    t ‡ fdd„| jD ƒƒrdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   r}   r>   rA   r2   r3   rB   å  s     rC   TrU   r9   r2   rA   r3   r:   ã  s    c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S rM   )rG   r   r   rN   rO   rP   r{   rQ   r2   r2   r3   r:   è  s    
ÿc                 C   s   t  | ¡t|ƒkrdS d S r-   )r   r{   r   r9   r2   r2   r3   r:   õ  s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   ú  s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   þ  s    c                 C   s   t t | j¡|ƒS r;   r|   r9   r2   r2   r3   r:     s    c                 C   s   t t | j¡|ƒS r;   rz   r9   r2   r2   r3   r:     s    c                 C   s    | j s
d S tt | j¡|ƒS d S r;   )rX   r   r   r{   rY   r9   r2   r2   r3   r:   
  s    c                 C   s   t tj| |ƒS r;   )r4   r   r{   r9   r2   r2   r3   r:     s    c                 C   s
   | j dkS )N)rb   ra   r7   )r0   r2   r2   r3   Ú_is_empty_or_1x1  s    r~   c                    s6   t | ƒrdS |  ¡ \}}t‡ fdd„|D ƒƒr2dS d S )NTc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   ©r   r   rH   rt   rA   r2   r3   rB      s     rC   )r~   rw   rF   rx   r2   rA   r3   r:     s
    c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S rM   )rG   r   r   rN   rO   rP   rH   rQ   r2   r2   r3   r:   #  s    
ÿc                    s    t ‡ fdd„| jD ƒƒrdS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r;   r   r>   rA   r2   r3   rB   2  s     rC   TrU   r9   r2   rA   r3   r:   0  s    c                 C   s&   t | ƒrdS t | ¡t|ƒkr"dS d S r-   )r~   r   rH   r   r9   r2   r2   r3   r:   5  s    c                 C   s   | j d dko| j d dkS r5   r7   r9   r2   r2   r3   r:   <  s    c                 C   s   t t | j¡|ƒS r;   )r   r   rH   r@   r9   r2   r2   r3   r:   @  s    c                 C   s,   t | ƒrdS | jsd S tt | j¡|ƒS d S r-   )r~   rX   r   r   rH   rY   r9   r2   r2   r3   r:   D  s
    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   M  s    c                 C   s   t tj| |ƒS r;   )r4   r   rH   r9   r2   r2   r3   r:   Q  s    c                    s   t ‡ ‡fdd„|jD ƒƒS )z Block Matrix elements. c                 3   s   | ]}t ˆ|ƒˆ ƒV  qd S r;   )r   )r?   Úb©r1   r/   r2   r3   rB   Z  s     zBM_elements.<locals>.<genexpr>)rF   rc   r.   r2   r�   r3   ÚBM_elementsX  s    r‚   c                 C   s   t | |jƒ|ƒS )z Matrix Slice elements. )r   rY   r.   r2   r2   r3   ÚMS_elements\  s    rƒ   c                 C   sF   t |jdd„ ƒ}|d |d  }}ttt|Ž ||ƒtt|Ž || ƒgƒS )Nc                 S   s
   t | tƒS r;   )Ú
isinstancer   )Úxr2   r2   r3   Ú<lambda>a  ó    z!MatMul_elements.<locals>.<lambda>FT)r   rG   r   r   r   )Zmatrix_predicateZscalar_predicater0   r1   ÚdZfactorsry   r2   r2   r3   ÚMatMul_elements`  s    þr‰   c                 C   s   t | |tjƒS r;   )r   r   Úinteger_elementsr9   r2   r2   r3   r:   h  s    c                 C   s@   | j \}}tt |¡|ƒ}|s"d S |jdkr<tt |¡|ƒS d S rM   )rG   r   r   rN   r^   rŠ   r_   r2   r2   r3   r:   m  s    

c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   x  s    c                 C   s   t tjtj| |ƒS r;   )r‰   r   rŠ   rN   r9   r2   r2   r3   r:   |  s    c                 C   s   t tj| |ƒS r;   )rƒ   r   rŠ   r9   r2   r2   r3   r:   €  s    c                 C   s   t tj| |ƒS r;   )r‚   r   rŠ   r9   r2   r2   r3   r:   „  s    c                 C   s   t | |tjƒS r;   )r   r   Úreal_elementsr9   r2   r2   r3   r:   ‹  s    c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S rM   )rG   r   r   rN   rO   rP   r‹   rQ   r2   r2   r3   r:   �  s    
ÿc                 C   s   t tjtj| |ƒS r;   )r‰   r   r‹   Úrealr9   r2   r2   r3   r:   �  s    c                 C   s   t tj| |ƒS r;   )rƒ   r   r‹   r9   r2   r2   r3   r:   ¡  s    c                 C   s   t tj| |ƒS r;   )r‚   r   r‹   r9   r2   r2   r3   r:   ¥  s    c                 C   s   t | |tjƒS r;   )r   r   Úcomplex_elementsr9   r2   r2   r3   r:   ¬  s    c                 C   sd   | j \}}tt |¡|ƒ}|s"d S tt |¡ |ƒ}|sP|dkr`tt |¡|ƒr`tt |¡|ƒS d S rM   )rG   r   r   rN   rO   rP   r�   rQ   r2   r2   r3   r:   ±  s    
ÿc                 C   s   t tjtj| |ƒS r;   )r‰   r   r�   Úcomplexr9   r2   r2   r3   r:   ¾  s    c                 C   s   t tj| |ƒS r;   )rƒ   r   r�   r9   r2   r2   r3   r:   Â  s    c                 C   s   t tj| |ƒS r;   )r‚   r   r�   r9   r2   r2   r3   r:   Æ  s    c                 C   s   dS r-   r2   r9   r2   r2   r3   r:   Ê  s    N)?Ú__doc__Zsympy.logic.boolalgr   Zsympy.assumptionsr   r   Zsympy.assumptions.handlersr   Zsympy.matricesr   Zsympy.matrices.expressionsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z&sympy.matrices.expressions.blockmatrixr   Z)sympy.matrices.expressions.factorizationsr   Z"sympy.matrices.expressions.fourierr   Zsympy.core.logicr   Zsympy.utilities.iterablesr   Z
sympy.corer   Zpredicates.matricesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r4   Úregisterr:   Zregister_manyr~   r‚   rƒ   r‰   r2   r2   r2   r3   Ú<module>   sÎ  P<




























	









	


























	
































 ÿ







  ÿ





   ÿ




