§
    OŠtjK  ã                   óê   — d dl 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  G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )ÚaskÚQ)ÚEq)ÚS)Ú_sympify)ÚKroneckerDelta©ÚNonInvertibleMatrixErroré   )Ú
MatrixExprc                   ór   ‡ — e Zd ZdZdZˆ fd„Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )Ú
ZeroMatrixzâThe Matrix Zero 0 - additive identity

    Examples
    ========

    >>> from sympy import MatrixSymbol, ZeroMatrix
    >>> A = MatrixSymbol('A', 3, 5)
    >>> Z = ZeroMatrix(3, 5)
    >>> A + Z
    A
    >>> Z*A.T
    0
    Tc                 óÚ   •— t          |¦  «        t          |¦  «        }}|                      |¦  «         |                      |¦  «         t          ¦   «                              | ||¦  «        S ©N©r   Ú
_check_dimÚsuperÚ__new__)ÚclsÚmÚnÚ	__class__s      €ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/special.pyr   zZeroMatrix.__new__   sV   ø€ Ý˜‰{Œ{�H Q™KœKˆ1ˆØ�Š�qÑÔÐØ�Š�qÑÔÐå‰wŒw�Š˜s A qÑ)Ô)Ð)ó    c                 ó6   — | j         d         | j         d         fS ©Nr   r   ©Úargs©Úselfs    r   ÚshapezZeroMatrix.shape!   ó   € à”	˜!”˜dœi¨œlÐ+Ð+r   c                 ó8   — |dk     dk    rt          d¦  «        ‚| S )Nr   TúMatrix det == 0; not invertibler	   ©r    Úexps     r   Ú_eval_powerzZeroMatrix._eval_power%   s%   € à�!ŠG˜ÒÐÝ*Ð+LÑMÔMÐMØˆr   c                 ó6   — t          | j        | j        ¦  «        S r   ©r   ÚcolsÚrowsr   s    r   Ú_eval_transposezZeroMatrix._eval_transpose+   ó   € Ý˜$œ) T¤YÑ/Ô/Ð/r   c                 ó6   — t          | j        | j        ¦  «        S r   r)   r   s    r   Ú_eval_adjointzZeroMatrix._eval_adjoint.   r-   r   c                 ó   — t           j        S r   ©r   ÚZeror   s    r   Ú_eval_tracezZeroMatrix._eval_trace1   ó	   € ÝŒvˆr   c                 ó   — t           j        S r   r1   r   s    r   Ú_eval_determinantzZeroMatrix._eval_determinant4   r4   r   c                 ó    — t          d¦  «        ‚)Nú Matrix det == 0; not invertible.r	   r   s    r   Ú_eval_inversezZeroMatrix._eval_inverse7   s   € Ý&Ð'IÑJÔJÐJr   c                 ó
   — | | fS r   © r   s    r   Ú_eval_as_real_imagzZeroMatrix._eval_as_real_imag:   s   € Ø�dˆ|Ðr   c                 ó   — | S r   r;   r   s    r   Ú_eval_conjugatezZeroMatrix._eval_conjugate=   ó   € Øˆr   c                 ó   — t           j        S r   r1   ©r    ÚiÚjÚkwargss       r   Ú_entryzZeroMatrix._entry@   r4   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_ZeroMatrixr   Úpropertyr!   r'   r,   r/   r3   r6   r9   r<   r>   rE   Ú__classcell__©r   s   @r   r   r   
   sî   ø€ € € € € ðð ð €Mð*ð *ð *ð *ð *ð ð,ð ,ñ „Xð,ðð ð ð0ð 0ð 0ð0ð 0ð 0ðð ð ðð ð ðKð Kð Kðð ð ðð ð ðð ð ð ð ð ð r   r   c                   óz   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
ˆ fd„Zˆ xZS )	ÚGenericZeroMatrixz�
    A zero matrix without a specified shape

    This exists primarily so MatAdd() with no arguments can return something
    meaningful.
    c                 óT   •— t          t          | ¦  «                             | ¦  «        S r   )r   r   r   ©r   r   s    €r   r   zGenericZeroMatrix.__new__K   s#   ø€ õ •Z Ñ%Ô%×-Ò-¨cÑ2Ô2Ð2r   c                 ó    — t          d¦  «        ‚©Nz1GenericZeroMatrix does not have a specified shape©Ú	TypeErrorr   s    r   r+   zGenericZeroMatrix.rowsP   ó   € åÐKÑLÔLÐLr   c                 ó    — t          d¦  «        ‚rS   rT   r   s    r   r*   zGenericZeroMatrix.colsT   rV   r   c                 ó    — t          d¦  «        ‚rS   rT   r   s    r   r!   zGenericZeroMatrix.shapeX   rV   r   c                 ó,   — t          |t          ¦  «        S r   )Ú
isinstancerO   ©r    Úothers     r   Ú__eq__zGenericZeroMatrix.__eq__]   s   € Ý˜%Õ!2Ñ3Ô3Ð3r   c                 ó   — | |k     S r   r;   r[   s     r   Ú__ne__zGenericZeroMatrix.__ne__`   ó   € Ø˜E’MÐ"Ð"r   c                 óD   •— t          ¦   «                              ¦   «         S r   ©r   Ú__hash__©r    r   s    €r   rc   zGenericZeroMatrix.__hash__c   ó   ø€ Ý‰wŒw×ÒÑ!Ô!Ð!r   )rF   rG   rH   rI   r   rK   r+   r*   r!   r]   r_   rc   rL   rM   s   @r   rO   rO   D   sÓ   ø€ € € € € ðð ð3ð 3ð 3ð 3ð 3ð
 ðMð Mñ „XðMð ðMð Mñ „XðMð ðMð Mñ „XðMð4ð 4ð 4ð#ð #ð #ð"ð "ð "ð "ð "ð "ð "ð "ð "r   rO   c                   ó´   ‡ — e Zd ZdZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚIdentityzÏThe Matrix Identity I - multiplicative identity

    Examples
    ========

    >>> from sympy import Identity, MatrixSymbol
    >>> A = MatrixSymbol('A', 3, 5)
    >>> I = Identity(3)
    >>> I*A
    A
    Tc                 ó�   •— t          |¦  «        }|                      |¦  «         t          ¦   «                              | |¦  «        S r   r   )r   r   r   s     €r   r   zIdentity.__new__w   s8   ø€ Ý�Q‰KŒKˆØ�Š�qÑÔÐå‰wŒw�Š˜s AÑ&Ô&Ð&r   c                 ó   — | j         d         S ©Nr   r   r   s    r   r+   zIdentity.rows}   ó   € àŒy˜Œ|Ðr   c                 ó   — | j         d         S rj   r   r   s    r   r*   zIdentity.cols�   rk   r   c                 ó6   — | j         d         | j         d         fS rj   r   r   s    r   r!   zIdentity.shape…   r"   r   c                 ó   — dS ©NTr;   r   s    r   Ú	is_squarezIdentity.is_square‰   ó   € àˆtr   c                 ó   — | S r   r;   r   s    r   r,   zIdentity._eval_transpose�   r?   r   c                 ó   — | j         S r   )r+   r   s    r   r3   zIdentity._eval_trace�   s
   € ØŒyÐr   c                 ó   — | S r   r;   r   s    r   r9   zIdentity._eval_inverse“   r?   r   c                 ó"   — | t          | j        Ž fS r   ©r   r!   r   s    r   r<   zIdentity._eval_as_real_imag–   ó   € Ø•j $¤*Ð-Ð.Ð.r   c                 ó   — | S r   r;   r   s    r   r>   zIdentity._eval_conjugate™   r?   r   c                 ó   — | S r   r;   r   s    r   r/   zIdentity._eval_adjointœ   r?   r   c                 óÀ   — t          ||¦  «        }|t          j        u rt          j        S |t          j        u rt          j        S t          ||d| j        dz
  f¦  «        S r   )r   r   ÚtrueÚOneÚfalser2   r   r*   )r    rB   rC   rD   Úeqs        r   rE   zIdentity._entryŸ   sP   € Ý��1‰XŒXˆØ•”ˆ<ˆ<Ý”5ˆLØ•1”7ˆ]ˆ]Ý”6ˆMÝ˜a  Q¨¬	°!©Ð$4Ñ5Ô5Ð5r   c                 ó   — t           j        S r   ©r   r|   r   s    r   r6   zIdentity._eval_determinant§   ó	   € ÝŒuˆr   c                 ó   — | S r   r;   r%   s     r   r'   zIdentity._eval_powerª   r?   r   )rF   rG   rH   rI   Úis_Identityr   rK   r+   r*   r!   rp   r,   r3   r9   r<   r>   r/   rE   r6   r'   rL   rM   s   @r   rg   rg   h   s<  ø€ € € € € ð
ð 
ð €Kð'ð 'ð 'ð 'ð 'ð ðð ñ „Xðð ðð ñ „Xðð ð,ð ,ñ „Xð,ð ðð ñ „Xððð ð ðð ð ðð ð ð/ð /ð /ðð ð ðð ð ð6ð 6ð 6ðð ð ðð ð ð ð ð ð r   rg   c                   ó�   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zˆ fd	„Zˆ xZS )
ÚGenericIdentityz”
    An identity matrix without a specified shape

    This exists primarily so MatMul() with no arguments can return something
    meaningful.
    c                 óT   •— t          t          | ¦  «                             | ¦  «        S r   )r   rg   r   rQ   s    €r   r   zGenericIdentity.__new__µ   s#   ø€ õ •X˜sÑ#Ô#×+Ò+¨CÑ0Ô0Ð0r   c                 ó    — t          d¦  «        ‚©Nz/GenericIdentity does not have a specified shaperT   r   s    r   r+   zGenericIdentity.rowsº   ó   € åÐIÑJÔJÐJr   c                 ó    — t          d¦  «        ‚rˆ   rT   r   s    r   r*   zGenericIdentity.cols¾   r‰   r   c                 ó    — t          d¦  «        ‚rˆ   rT   r   s    r   r!   zGenericIdentity.shapeÂ   r‰   r   c                 ó   — dS ro   r;   r   s    r   rp   zGenericIdentity.is_squareÆ   rq   r   c                 ó,   — t          |t          ¦  «        S r   )rZ   r…   r[   s     r   r]   zGenericIdentity.__eq__Ë   s   € Ý˜%¥Ñ1Ô1Ð1r   c                 ó   — | |k     S r   r;   r[   s     r   r_   zGenericIdentity.__ne__Î   r`   r   c                 óD   •— t          ¦   «                              ¦   «         S r   rb   rd   s    €r   rc   zGenericIdentity.__hash__Ñ   re   r   )rF   rG   rH   rI   r   rK   r+   r*   r!   rp   r]   r_   rc   rL   rM   s   @r   r…   r…   ®   sî   ø€ € € € € ðð ð1ð 1ð 1ð 1ð 1ð
 ðKð Kñ „XðKð ðKð Kñ „XðKð ðKð Kñ „XðKð ðð ñ „Xðð2ð 2ð 2ð#ð #ð #ð"ð "ð "ð "ð "ð "ð "ð "ð "r   r…   c                   óœ   ‡ — e Zd ZdZdˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	ˆ fd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú	OneMatrixz,
    Matrix whose all entries are ones.
    Fc                 óN  •— t          |¦  «        t          |¦  «        }}|                      |¦  «         |                      |¦  «         |r6t          |d¦  «        t          |d¦  «        z  }|dk    rt          d¦  «        S t	          ¦   «                              | ||¦  «        }|S )Nr   T)r   r   r   rg   r   r   )r   r   r   ÚevaluateÚ	conditionÚobjr   s         €r   r   zOneMatrix.__new__Ù   s“   ø€ Ý˜‰{Œ{�H Q™KœKˆ1ˆØ�Š�qÑÔÐØ�Š�qÑÔÐàð 	#Ý˜1˜a™œ¥2 a¨¡8¤8Ñ+ˆIØ˜DÒ Ð Ý ‘{”{Ð"å‰gŒg�oŠo˜c 1 aÑ(Ô(ˆØˆ
r   c                 ó   — | j         S r   )Ú_argsr   s    r   r!   zOneMatrix.shapeæ   s
   € àŒzÐr   c                 ó2   — |                       ¦   «         dk    S ro   )Ú_is_1x1r   s    r   rƒ   zOneMatrix.is_Identityê   s   € à�|Š|‰~Œ~ Ò%Ð%r   c                 ó,   — ddl m}  |j        | j        Ž S )Nr   )ÚImmutableDenseMatrix)Úsympy.matrices.immutabler›   Úonesr!   )r    r›   s     r   Úas_explicitzOneMatrix.as_explicitî   s'   € ØAÐAÐAÐAÐAÐAØ(Ð#Ô(¨$¬*Ð5Ð5r   c                 ót   ‡— | j         }‰                     dd¦  «        rˆfd„|D ¦   «         } | j        |ddiŽS )NÚdeepTc                 ó*   •— g | ]} |j         d i ‰¤Ž‘ŒS )r;   )Údoit)Ú.0ÚaÚhintss     €r   ú
<listcomp>z"OneMatrix.doit.<locals>.<listcomp>õ   s'   ø€ Ð2Ð2Ð2¨�F�A”F�O�O˜U�O�OÐ2Ð2Ð2r   r“   )r   ÚgetÚfunc)r    r¥   r   s    ` r   r¢   zOneMatrix.doitò   sP   ø€ ØŒyˆØ�9Š9�V˜TÑ"Ô"ð 	3Ø2Ð2Ð2Ð2¨TÐ2Ñ2Ô2ˆDØˆtŒy˜$Ð.¨Ð.Ð.Ð.r   c                 óL  •— |                       ¦   «         dk    rt          d¦  «        S |dk     dk    rt          d¦  «        ‚t          t	          j        |¦  «        ¦  «        r"| j        d         |dz
  z  t          | j        Ž z  S t          ¦   «          	                    |¦  «        S )NTr   r   r$   )
r™   rg   r
   r   r   Úintegerr!   r‘   r   r'   )r    r&   r   s     €r   r'   zOneMatrix._eval_powerø   s’   ø€ à�<Š<‰>Œ>˜TÒ!Ð!Ý˜A‘;”;ÐØ�!ŠG˜ÒÐÝ*Ð+LÑMÔMÐMÝ�qŒy˜‰~Œ~ÑÔð 	GØ”:˜a”= S¨1¡WÑ-µ	¸4¼:Ð0FÑFÐFÝ‰wŒw×"Ò" 3Ñ'Ô'Ð'r   c                 ó6   — t          | j        | j        ¦  «        S r   ©r‘   r*   r+   r   s    r   r,   zOneMatrix._eval_transpose  ó   € Ý˜œ D¤IÑ.Ô.Ð.r   c                 ó6   — t          | j        | j        ¦  «        S r   r¬   r   s    r   r/   zOneMatrix._eval_adjoint  r­   r   c                 ó*   — t           j        | j        z  S r   )r   r|   r+   r   s    r   r3   zOneMatrix._eval_trace  s   € ÝŒu�T”Y‰Ðr   c                 ój   — | j         }t          |d         d¦  «        t          |d         d¦  «        z  S )z-Returns true if the matrix is known to be 1x1r   r   )r!   r   )r    r!   s     r   r™   zOneMatrix._is_1x1  s,   € à”
ˆÝ�%˜”(˜A‰Œ¥ E¨!¤H¨a¡¤Ñ0Ð0r   c                 ó”   — |                       ¦   «         }|dk    rt          j        S |dk    rt          j        S ddlm}  || ¦  «        S )NTFr   )ÚDeterminant)r™   r   r|   r2   Ú&sympy.matrices.expressions.determinantr²   )r    r”   r²   s      r   r6   zOneMatrix._eval_determinant  sU   € Ø—L’L‘N”Nˆ	Ø˜ÒÐÝ”5ˆLØ˜%ÒÐÝ”6ˆMàJÐJÐJÐJÐJÐJØ�;˜tÑ$Ô$Ð$r   c                 ó    — |                       ¦   «         }|dk    rt          d¦  «        S |dk    rt          d¦  «        ‚ddlm}  || ¦  «        S )NTr   Fr8   )ÚInverse)r™   rg   r
   Úinverserµ   )r    r”   rµ   s      r   r9   zOneMatrix._eval_inverse  s`   € Ø—L’L‘N”Nˆ	Ø˜ÒÐÝ˜A‘;”;ÐØ˜%ÒÐÝ*Ð+MÑNÔNÐNà(Ð(Ð(Ð(Ð(Ð(Ø�7˜4‘=”=Ð r   c                 ó"   — | t          | j        Ž fS r   rv   r   s    r   r<   zOneMatrix._eval_as_real_imag$  rw   r   c                 ó   — | S r   r;   r   s    r   r>   zOneMatrix._eval_conjugate'  r?   r   c                 ó   — t           j        S r   r€   rA   s       r   rE   zOneMatrix._entry*  r�   r   )F)rF   rG   rH   rI   r   rK   r!   rƒ   rž   r¢   r'   r,   r/   r3   r™   r6   r9   r<   r>   rE   rL   rM   s   @r   r‘   r‘   Õ   s;  ø€ € € € € ðð ðð ð ð ð ð ð ðð ñ „Xðð ð&ð &ñ „Xð&ð6ð 6ð 6ð/ð /ð /ð(ð (ð (ð (ð (ð/ð /ð /ð/ð /ð /ðð ð ð1ð 1ð 1ð
%ð %ð %ð!ð !ð !ð/ð /ð /ðð ð ðð ð ð ð ð ð r   r‘   N)Úsympy.assumptions.askr   r   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.sympifyr   Ú(sympy.functions.special.tensor_functionsr   Úsympy.matrices.exceptionsr
   Úmatexprr   r   rO   rg   r…   r‘   r;   r   r   ú<module>rÁ      s{  ðØ (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø CÐ CÐ CÐ CÐ CÐ CØ >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð ð7ð 7ð 7ð 7ð 7�ñ 7ô 7ð 7ðt "ð  "ð  "ð  "ð  "˜
ñ  "ô  "ð  "ðHCð Cð Cð Cð Cˆzñ Cô Cð CðL$"ð $"ð $"ð $"ð $"�hñ $"ô $"ð $"ðNVð Vð Vð Vð V�
ñ Vô Vð Vð Vð Vr   