Ë
    7^(hK  ã                   óÊ   — 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y)é    )ÚaskÚQ)ÚEq)ÚS)Ú_sympify)ÚKroneckerDelta©ÚNonInvertibleMatrixErroré   )Ú
MatrixExprc                   ól   ‡ — 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        |«      }}| j                  |«       | j                  |«       t        ‰| �  | ||«      S ©N©r   Ú
_check_dimÚsuperÚ__new__)ÚclsÚmÚnÚ	__class__s      €ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/special.pyr   zZeroMatrix.__new__   s?   ø€ Ü˜‹{œH Q›Kˆ1ˆØ�‰�qÔØ�‰�qÔä‰w‰˜s A qÓ)Ð)ó    c                 ó>   — | j                   d   | j                   d   fS ©Nr   r   ©Úargs©Úselfs    r   ÚshapezZeroMatrix.shape!   ó   € à—	‘	˜!‘˜dŸi™i¨™lÐ+Ð+r   c                 ó,   — |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Øˆr   c                 óB   — t        | j                  | j                  «      S r   ©r   ÚcolsÚrowsr   s    r   Ú_eval_transposezZeroMatrix._eval_transpose+   ó   € Ü˜$Ÿ)™) T§Y¡YÓ/Ð/r   c                 óB   — 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‰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Ð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   
   sV   ø„ ñð €Mô*ð ñ,ó ð,òò0ò0òòòKòòör   r   c                   óh   ‡ — 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        | �  | «      S r   )r   r   r   ©r   r   s    €r   r   zGenericZeroMatrix.__new__K   s   ø€ ô ”Z Ñ-¨cÓ2Ð2r   c                 ó   — t        d«      ‚©Nz1GenericZeroMatrix does not have a specified shape©Ú	TypeErrorr   s    r   r+   zGenericZeroMatrix.rowsP   ó   € äÐKÓ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Ð3r   c                 ó   — | |k(   S r   r;   r[   s     r   Ú__ne__zGenericZeroMatrix.__ne__`   ó   € Ø˜E‘MÐ"Ð"r   c                 ó    •— t         ‰| �  «       S r   ©r   Ú__hash__©r    r   s    €r   rc   zGenericZeroMatrix.__hash__c   ó   ø€ Ü‰wÑÓ!Ð!r   )rF   rG   rH   rI   r   rK   r+   r*   r!   r]   r_   rc   rL   rM   s   @r   rO   rO   D   sc   ø„ ñô3ð
 ñMó ðMð ñMó ðMð ñMó ðMò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        |«      }| j                  |«       t        ‰| �  | |«      S r   r   )r   r   r   s     €r   r   zIdentity.__new__w   s)   ø€ Ü�Q‹KˆØ�‰�qÔä‰w‰˜s AÓ&Ð&r   c                 ó    — | j                   d   S ©Nr   r   r   s    r   r+   zIdentity.rows}   ó   € à�y‰y˜‰|Ðr   c                 ó    — | j                   d   S rj   r   r   s    r   r*   zIdentity.cols�   rk   r   c                 ó>   — | j                   d   | j                   d   fS rj   r   r   s    r   r!   zIdentity.shape…   r"   r   c                  ó   — y©NTr;   r   s    r   Ú	is_squarezIdentity.is_square‰   ó   € àr   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‰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Ÿ   sQ   € Ü��1‹XˆØ”—‘‰<Ü—5‘5ˆLØ”1—7‘7‰]Ü—6‘6ˆMÜ˜a  Q¨¯	©	°!©Ð$4Ó5Ð5r   c                 ó"   — t         j                  S r   ©r   r|   r   s    r   r6   zIdentity._eval_determinant§   ó   € Ü�u‰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ô'ð ñó ðð ñó ðð ñ,ó ð,ð ñó ðòòòò/òòò6òör   rg   c                   óx   ‡ — 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        | �  | «      S r   )r   rg   r   rQ   s    €r   r   zGenericIdentity.__new__µ   s   ø€ ô ”X˜sÑ+¨CÓ0Ð0r   c                 ó   — t        d«      ‚©Nz/GenericIdentity does not have a specified shaperT   r   s    r   r+   zGenericIdentity.rowsº   ó   € äÐIÓ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                  ó   — y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Ð1r   c                 ó   — | |k(   S r   r;   r[   s     r   r_   zGenericIdentity.__ne__Î   r`   r   c                 ó    •— 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…   ®   sw   ø„ ñô1ð
 ñKó ðKð ñKó ðKð ñKó ðKð ñó ðò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.
    c                 óð   •— t        |«      t        |«      }}| j                  |«       | j                  |«       |r)t        |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__Ù   sn   ø€ Ü˜‹{œH Q›Kˆ1ˆØ�‰�qÔØ�‰�qÔáÜ˜1˜a›¤2 a¨£8Ñ+ˆIØ˜DÒ Ü “{Ð"ä‰g‰o˜c 1 aÓ(ˆØˆ
r   c                 ó   — | j                   S r   )Ú_argsr   s    r   r!   zOneMatrix.shapeæ   s   € à�z‰zÐr   c                 ó(   — | j                  «       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Ø(Ð#×(Ñ(¨$¯*©*Ð5Ð5r   c                 óª   — | j                   }|j                  dd«      r|D �cg c]  } |j                  di |¤Ž‘Œ }} | j                  |ddiŽS c c}w )NÚdeepTr“   r;   )r   ÚgetÚdoitÚfunc)r    Úhintsr   Úas       r   r¢   zOneMatrix.doitò   sS   € Ø�y‰yˆØ�9‰9�V˜TÔ"Ø-1Ö2¨�F�A—F‘F‘O˜U“OÐ2ˆDÐ2Øˆt�y‰y˜$Ð.¨Ñ.Ð.ùò 3s   £Ac                 ó  •— | j                  «       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ø   sx   ø€ à�<‰<‹>˜TÒ!Ü˜A“;ÐØ�!‰G˜ÒÜ*Ð+LÓMÐMÜŒq�y‰y˜‹~ÔØ—:‘:˜a‘= S¨1¡WÑ-´	¸4¿:¹:Ð0FÑFÐFÜ‰wÑ" 3Ó'Ð'r   c                 óB   — t        | j                  | j                  «      S r   ©r‘   r*   r+   r   s    r   r,   zOneMatrix._eval_transpose  ó   € Ü˜Ÿ™ D§I¡IÓ.Ð.r   c                 óB   — 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‰u�T—Y‘Y‰Ðr   c                 óX   — | 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                 ó’   — | j                  «       }|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  s=   € Ø—L‘L“Nˆ	Ø˜ÒÜ—5‘5ˆLØ˜%ÒÜ—6‘6ˆMåJÙ˜tÓ$Ð$r   c                 ó~   — | j                  «       }|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ˆ	Ø˜ÒÜ˜A“;ÐØ˜%ÒÜ*Ð+MÓNÐNå(Ù˜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‘   Õ   sq   ø„ ñõð ñó ðð ñ&ó ð&ò6ò/ô(ò/ò/òò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Ý >Ý ô7�ô 7ôt "˜
ô  "ôHCˆzô CôL$"�hô $"ôNV�
õ Vr   