ó
    ‰*£hK  ã                   óÊ   • S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  SSKJr   " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)é    )ÚaskÚQ)ÚEq)ÚS)Ú_sympify)ÚKroneckerDelta©ÚNonInvertibleMatrixErroré   )Ú
MatrixExprc                   óv   ^ • \ rS rSrSrSrU 4S jr\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rSrU =r$ )Ú
ZeroMatrixé
   zº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                 ó’   >• [        U5      [        U5      p!U R                  U5        U R                  U5        [        TU ]  XU5      $ ©N©r   Ú
_check_dimÚsuperÚ__new__)ÚclsÚmÚnÚ	__class__s      €Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/special.pyr   ÚZeroMatrix.__new__   s;   ø€ Ü˜‹{œH Q›Kˆ1Ø�‰�qÔØ�‰�qÔä‰w‰˜s qÓ)Ð)ó    c                 ó>   • U R                   S   U R                   S   4$ ©Nr   r   ©Úargs©Úselfs    r   ÚshapeÚZeroMatrix.shape!   ó   € à—	‘	˜!‘˜dŸi™i¨™lÐ+Ð+r   c                 ó.   • US:  S:X  a  [        S5      eU $ )Nr   TúMatrix det == 0; not invertibler	   ©r"   Úexps     r   Ú_eval_powerÚZeroMatrix._eval_power%   s   € à�!‰G˜ÓÜ*Ð+LÓMÐMØˆr   c                 óB   • [        U R                  U R                  5      $ r   ©r   ÚcolsÚrowsr!   s    r   Ú_eval_transposeÚZeroMatrix._eval_transpose+   ó   € Ü˜$Ÿ)™) T§Y¡YÓ/Ð/r   c                 óB   • [        U R                  U R                  5      $ r   r-   r!   s    r   Ú_eval_adjointÚZeroMatrix._eval_adjoint.   r2   r   c                 ó"   • [         R                  $ r   ©r   ÚZeror!   s    r   Ú_eval_traceÚZeroMatrix._eval_trace1   ó   € Ü�v‰vˆr   c                 ó"   • [         R                  $ r   r7   r!   s    r   Ú_eval_determinantÚZeroMatrix._eval_determinant4   r;   r   c                 ó   • [        S5      e)Nú Matrix det == 0; not invertible.r	   r!   s    r   Ú_eval_inverseÚZeroMatrix._eval_inverse7   s   € Ü&Ð'IÓJÐJr   c                 ó   • X 4$ r   © r!   s    r   Ú_eval_as_real_imagÚZeroMatrix._eval_as_real_imag:   s
   € Øˆ|Ðr   c                 ó   • U $ r   rD   r!   s    r   Ú_eval_conjugateÚZeroMatrix._eval_conjugate=   ó   € Øˆr   c                 ó"   • [         R                  $ r   r7   ©r"   ÚiÚjÚkwargss       r   Ú_entryÚZeroMatrix._entry@   r;   r   rD   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úis_ZeroMatrixr   Úpropertyr#   r*   r0   r4   r9   r=   rA   rE   rH   rP   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r   
   s[   ø† ñð €Mõ*ð ñ,ó ð,òò0ò0òòòKòò÷ð r   r   c                   ót   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       r\S 5       r	S r
S rU 4S	 jrS
rU =r$ )ÚGenericZeroMatrixéD   z
A zero matrix without a specified shape

This exists primarily so MatAdd() with no arguments can return something
meaningful.
c                 ó*   >• [         [        U ]  U 5      $ r   )r   r   r   ©r   r   s    €r   r   ÚGenericZeroMatrix.__new__K   s   ø€ ô ”Z Ñ-¨cÓ2Ð2r   c                 ó   • [        S5      e©Nz1GenericZeroMatrix does not have a specified shape©Ú	TypeErrorr!   s    r   r/   ÚGenericZeroMatrix.rowsP   ó   € äÐKÓLÐLr   c                 ó   • [        S5      erc   rd   r!   s    r   r.   ÚGenericZeroMatrix.colsT   rg   r   c                 ó   • [        S5      erc   rd   r!   s    r   r#   ÚGenericZeroMatrix.shapeX   rg   r   c                 ó"   • [        U[        5      $ r   )Ú
isinstancer]   ©r"   Úothers     r   Ú__eq__ÚGenericZeroMatrix.__eq__]   s   € Ü˜%Ô!2Ó3Ð3r   c                 ó   • X:X  + $ r   rD   rn   s     r   Ú__ne__ÚGenericZeroMatrix.__ne__`   ó   € ØÒ"Ð"r   c                 ó    >• [         TU ]  5       $ r   ©r   Ú__hash__©r"   r   s    €r   rx   ÚGenericZeroMatrix.__hash__c   ó   ø€ Ü‰wÑÓ!Ð!r   rD   )rR   rS   rT   rU   rV   r   rX   r/   r.   r#   rp   rs   rx   rY   rZ   r[   s   @r   r]   r]   D   sc   ø† ñõ3ð
 ñMó ðMð ñMó ðMð ñMó ðMò4ò#÷"ó "r   r]   c                   ó¦   ^ • \ rS rSrSrSrU 4S jr\S 5       r\S 5       r	\S 5       r
\S 5       rS	 rS
 rS rS rS rS rS rS rS rSrU =r$ )ÚIdentityéh   z¯The Matrix Identity I - multiplicative identity

Examples
========

>>> from sympy import Identity, MatrixSymbol
>>> A = MatrixSymbol('A', 3, 5)
>>> I = Identity(3)
>>> I*A
A
Tc                 óZ   >• [        U5      nU R                  U5        [        TU ]  X5      $ r   r   )r   r   r   s     €r   r   ÚIdentity.__new__w   s'   ø€ Ü�Q‹KˆØ�‰�qÔä‰w‰˜sÓ&Ð&r   c                 ó    • U R                   S   $ ©Nr   r   r!   s    r   r/   ÚIdentity.rows}   ó   € à�y‰y˜‰|Ðr   c                 ó    • U R                   S   $ r‚   r   r!   s    r   r.   ÚIdentity.cols�   r„   r   c                 ó>   • U R                   S   U R                   S   4$ r‚   r   r!   s    r   r#   ÚIdentity.shape…   r%   r   c                 ó   • g©NTrD   r!   s    r   Ú	is_squareÚIdentity.is_square‰   ó   € àr   c                 ó   • U $ r   rD   r!   s    r   r0   ÚIdentity._eval_transpose�   rJ   r   c                 ó   • U R                   $ r   )r/   r!   s    r   r9   ÚIdentity._eval_trace�   s   € Ø�y‰yÐr   c                 ó   • U $ r   rD   r!   s    r   rA   ÚIdentity._eval_inverse“   rJ   r   c                 ó*   • U [        U R                  6 4$ r   ©r   r#   r!   s    r   rE   ÚIdentity._eval_as_real_imag–   ó   € Ø”j $§*¡*Ð-Ð.Ð.r   c                 ó   • U $ r   rD   r!   s    r   rH   ÚIdentity._eval_conjugate™   rJ   r   c                 ó   • U $ r   rD   r!   s    r   r4   ÚIdentity._eval_adjointœ   rJ   r   c                 óÚ   • [        X5      nU[        R                  L a  [        R                  $ U[        R                  L a  [        R
                  $ [        XSU R                  S-
  45      $ r   )r   r   ÚtrueÚOneÚfalser8   r   r.   )r"   rM   rN   rO   Úeqs        r   rP   ÚIdentity._entryŸ   sM   € Ü�‹XˆØ”—‘Š<Ü—5‘5ˆLØ”1—7‘7Š]Ü—6‘6ˆMÜ˜a Q¨¯	©	°!©Ð$4Ó5Ð5r   c                 ó"   • [         R                  $ r   ©r   rž   r!   s    r   r=   ÚIdentity._eval_determinant§   ó   € Ü�u‰uˆr   c                 ó   • U $ r   rD   r(   s     r   r*   ÚIdentity._eval_powerª   rJ   r   rD   )rR   rS   rT   rU   rV   Úis_Identityr   rX   r/   r.   r#   r‹   r0   r9   rA   rE   rH   r4   rP   r=   r*   rY   rZ   r[   s   @r   r}   r}   h   s–   ø† ñ
ð €Kõ'ð ñó ðð ñó ðð ñ,ó ð,ð ñó ðòòòò/òòò6ò÷ð r   r}   c                   ó„   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       r\S 5       r	\S 5       r
S rS	 rU 4S
 jrSrU =r$ )ÚGenericIdentityé®   z„
An identity matrix without a specified shape

This exists primarily so MatMul() with no arguments can return something
meaningful.
c                 ó*   >• [         [        U ]  U 5      $ r   )r   r}   r   r`   s    €r   r   ÚGenericIdentity.__new__µ   s   ø€ ô ”X˜sÑ+¨CÓ0Ð0r   c                 ó   • [        S5      e©Nz/GenericIdentity does not have a specified shaperd   r!   s    r   r/   ÚGenericIdentity.rowsº   ó   € äÐIÓJÐJr   c                 ó   • [        S5      er¯   rd   r!   s    r   r.   ÚGenericIdentity.cols¾   r±   r   c                 ó   • [        S5      er¯   rd   r!   s    r   r#   ÚGenericIdentity.shapeÂ   r±   r   c                 ó   • grŠ   rD   r!   s    r   r‹   ÚGenericIdentity.is_squareÆ   r�   r   c                 ó"   • [        U[        5      $ r   )rm   rª   rn   s     r   rp   ÚGenericIdentity.__eq__Ë   s   € Ü˜%¤Ó1Ð1r   c                 ó   • X:X  + $ r   rD   rn   s     r   rs   ÚGenericIdentity.__ne__Î   ru   r   c                 ó    >• [         TU ]  5       $ r   rw   ry   s    €r   rx   ÚGenericIdentity.__hash__Ñ   r{   r   rD   )rR   rS   rT   rU   rV   r   rX   r/   r.   r#   r‹   rp   rs   rx   rY   rZ   r[   s   @r   rª   rª   ®   sw   ø† ñõ1ð
 ñKó ðKð ñKó ðKð ñKó ðKð ñó ðò2ò#÷"ó "r   rª   c                   óž   ^ • \ rS rSrSrSU 4S jjr\S 5       r\S 5       rS r	S r
U 4S jrS	 rS
 rS rS rS rS rS rS rS rSrU =r$ )Ú	OneMatrixéÕ   z$
Matrix whose all entries are ones.
c                 óø   >• [        U5      [        U5      p!U R                  U5        U R                  U5        U(       a*  [        US5      [        US5      -  nUS:X  a  [        S5      $ [        TU ]  XU5      nU$ )Nr   T)r   r   r   r}   r   r   )r   r   r   ÚevaluateÚ	conditionÚobjr   s         €r   r   ÚOneMatrix.__new__Ù   sj   ø€ Ü˜‹{œH Q›Kˆ1Ø�‰�qÔØ�‰�qÔæÜ˜1˜a›¤2 a¨£8Ñ+ˆIØ˜DÓ Ü “{Ð"ä‰g‰o˜c aÓ(ˆØˆ
r   c                 ó   • U R                   $ r   )Ú_argsr!   s    r   r#   ÚOneMatrix.shapeæ   s   € à�z‰zÐr   c                 ó(   • U R                  5       S:H  $ rŠ   )Ú_is_1x1r!   s    r   r¨   ÚOneMatrix.is_Identityê   s   € à�|‰|‹~ Ñ%Ð%r   c                 ó@   • SSK Jn  UR                  " U R                  6 $ )Nr   )ÚImmutableDenseMatrix)Úsympy.matrices.immutablerÍ   Úonesr#   )r"   rÍ   s     r   Úas_explicitÚOneMatrix.as_explicitî   s   € ÝAØ#×(Ò(¨$¯*©*Ð5Ð5r   c                 ó¸   • U R                   nUR                  SS5      (       a!  U Vs/ s H  o3R                  " S0 UD6PM     nnU R                  " USS06$ s  snf )NÚdeepTrÂ   rD   )r    ÚgetÚdoitÚfunc)r"   Úhintsr    Úas       r   rÕ   ÚOneMatrix.doitò   sQ   € Ø�y‰yˆØ�9‰9�V˜T×"Ñ"Ù-1Ó2ªT¨—F’F‘O˜U”O©TˆDÐ2Ø�yŠy˜$Ð.¨Ñ.Ð.ùò 3s   ¨Ac                 ó   >• U R                  5       S:X  a  [        S5      $ US:  S:X  a  [        S5      e[        [        R
                  " U5      5      (       a(  U R                  S   US-
  -  [        U R                  6 -  $ [        TU ]%  U5      $ )NTr   r   r'   )
rÊ   r}   r
   r   r   Úintegerr#   r¿   r   r*   )r"   r)   r   s     €r   r*   ÚOneMatrix._eval_powerø   s{   ø€ à�<‰<‹>˜TÓ!Ü˜A“;ÐØ�!‰G˜ÓÜ*Ð+LÓMÐMÜŒq�yŠy˜‹~×ÑØ—:‘:˜a‘= S¨1¡WÑ-´	¸4¿:¹:Ð0FÑFÐFÜ‰wÑ" 3Ó'Ð'r   c                 óB   • [        U R                  U R                  5      $ r   ©r¿   r.   r/   r!   s    r   r0   ÚOneMatrix._eval_transpose  ó   € Ü˜Ÿ™ D§I¡IÓ.Ð.r   c                 óB   • [        U R                  U R                  5      $ r   rÞ   r!   s    r   r4   ÚOneMatrix._eval_adjoint  rà   r   c                 ó<   • [         R                  U R                  -  $ r   )r   rž   r/   r!   s    r   r9   ÚOneMatrix._eval_trace  s   € Ü�u‰u�T—Y‘Y‰Ðr   c                 óX   • U R                   n[        US   S5      [        US   S5      -  $ )z-Returns true if the matrix is known to be 1x1r   r   )r#   r   )r"   r#   s     r   rÊ   ÚOneMatrix._is_1x1  s*   € à—
‘
ˆÜ�%˜‘(˜A‹¤ E¨!¡H¨a£Ñ0Ð0r   c                 ó–   • U R                  5       nUS:X  a  [        R                  $ US:X  a  [        R                  $ SSKJn  U" U 5      $ )NTFr   )ÚDeterminant)rÊ   r   rž   r8   Ú&sympy.matrices.expressions.determinantrè   )r"   rÃ   rè   s      r   r=   ÚOneMatrix._eval_determinant  s=   € Ø—L‘L“Nˆ	Ø˜ÓÜ—5‘5ˆLØ˜%ÓÜ—6‘6ˆMåJÙ˜tÓ$Ð$r   c                 ó‚   • U R                  5       nUS:X  a  [        S5      $ US:X  a  [        S5      eSSKJn  U" U 5      $ )NTr   Fr@   )ÚInverse)rÊ   r}   r
   Úinverserì   )r"   rÃ   rì   s      r   rA   ÚOneMatrix._eval_inverse  s@   € Ø—L‘L“Nˆ	Ø˜ÓÜ˜A“;ÐØ˜%ÓÜ*Ð+MÓNÐNå(Ù˜4“=Ð r   c                 ó*   • U [        U R                  6 4$ r   r•   r!   s    r   rE   ÚOneMatrix._eval_as_real_imag$  r—   r   c                 ó   • U $ r   rD   r!   s    r   rH   ÚOneMatrix._eval_conjugate'  rJ   r   c                 ó"   • [         R                  $ r   r£   rL   s       r   rP   ÚOneMatrix._entry*  r¥   r   rD   )F)rR   rS   rT   rU   rV   r   rX   r#   r¨   rÐ   rÕ   r*   r0   r4   r9   rÊ   r=   rA   rE   rH   rP   rY   rZ   r[   s   @r   r¿   r¿   Õ   sv   ø† ñ÷ð ñó ðð ñ&ó ð&ò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   r]   r}   rª   r¿   rD   r   r   Ú<module>rü      s^   ðß (Ý $Ý "Ý 'Ý CÝ >Ý ô7�ô 7ôt "˜
ô  "ôHCˆzô CôL$"�hô $"ôNV�
õ Vr   