+
    iK                         ^ RI HtHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^RIHt  ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )    )askQ)Eq)S)_sympify)KroneckerDeltaNonInvertibleMatrixError)
MatrixExprc                      a a ] tR t^
t oRtRtV 3R lt]R 4       tR t	R t
R tR tR	 tR
 tR tR tR tRtVtV ;t# )
ZeroMatrixzThe 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                   < \        V4      \        V4      r!V P                  V4       V P                  V4       \        SV `  WV4      # Nr   
_check_dimsuper__new__)clsmn	__class__s   &&&ڂ/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/matrices/expressions/special.pyr   ZeroMatrix.__new__   s;    {HQK1qqwsq))    c                N    V P                   ^ ,          V P                   ^,          3# r   argsselfs   &r   shapeZeroMatrix.shape!       		!diil++r   c                0    V^ 8  R8X  d   \        R4      hV # )r   TMatrix det == 0; not invertibler	   r    exps   &&r   _eval_powerZeroMatrix._eval_power%   s    !G*+LMMr   c                B    \        V P                  V P                  4      # r   r   colsrowsr   s   &r   _eval_transposeZeroMatrix._eval_transpose+       $))TYY//r   c                B    \        V P                  V P                  4      # r   r+   r   s   &r   _eval_adjointZeroMatrix._eval_adjoint.   r0   r   c                "    \         P                  # r   r   Zeror   s   &r   _eval_traceZeroMatrix._eval_trace1       vvr   c                "    \         P                  # r   r5   r   s   &r   _eval_determinantZeroMatrix._eval_determinant4   r9   r   c                    \        R 4      h) Matrix det == 0; not invertible.r	   r   s   &r   _eval_inverseZeroMatrix._eval_inverse7   s    &'IJJr   c                    W 3# r    r   s   &r   _eval_as_real_imagZeroMatrix._eval_as_real_imag:   s
    |r   c                    V # r   rB   r   s   &r   _eval_conjugateZeroMatrix._eval_conjugate=       r   c                "    \         P                  # r   r5   r    ijkwargss   &&&,r   _entryZeroMatrix._entry@   r9   r   rB   )__name__
__module____qualname____firstlineno____doc__is_ZeroMatrixr   propertyr!   r(   r.   r2   r7   r;   r?   rC   rF   rN   __static_attributes____classdictcell____classcell__r   __classdict__s   @@r   r   r   
   s]      M* , ,00K r   r   c                   ~   a a ] tR t^Dt oRtV 3R lt]R 4       t]R 4       t]R 4       t	R t
R tV 3R ltR	tVtV ;t# )
GenericZeroMatrixz
A zero matrix without a specified shape

This exists primarily so MatAdd() with no arguments can return something
meaningful.
c                *   < \         \        V `  V 4      # r   )r   r   r   r   r   s   &r   r   GenericZeroMatrix.__new__K   s     Z-c22r   c                    \        R 4      hz1GenericZeroMatrix does not have a specified shape	TypeErrorr   s   &r   r-   GenericZeroMatrix.rowsP       KLLr   c                    \        R 4      hrb   rc   r   s   &r   r,   GenericZeroMatrix.colsT   rf   r   c                    \        R 4      hrb   rc   r   s   &r   r!   GenericZeroMatrix.shapeX   rf   r   c                "    \        V\        4      # r   )
isinstancer]   r    others   &&r   __eq__GenericZeroMatrix.__eq__]   s    %!233r   c                    W8X  * # r   rB   rm   s   &&r   __ne__GenericZeroMatrix.__ne__`       ""r   c                    < \         SV `  4       # r   r   __hash__r    r   s   &r   rw   GenericZeroMatrix.__hash__c       w!!r   rB   )rP   rQ   rR   rS   rT   r   rV   r-   r,   r!   ro   rr   rw   rW   rX   rY   rZ   s   @@r   r]   r]   D   se     3
 M M M M M M4#" "r   r]   c                      a a ] tR t^ht oRtRtV 3R lt]R 4       t]R 4       t	]R 4       t
]R 4       tR tR	 tR
 tR tR tR tR tR tR tRtVtV ;t# )IdentityzThe Matrix Identity I - multiplicative identity

Examples
========

>>> from sympy import Identity, MatrixSymbol
>>> A = MatrixSymbol('A', 3, 5)
>>> I = Identity(3)
>>> I*A
A
Tc                Z   < \        V4      pV P                  V4       \        SV `  W4      # r   r   )r   r   r   s   &&r   r   Identity.__new__w   s'    QKqws&&r   c                (    V P                   ^ ,          # r   r   r   s   &r   r-   Identity.rows}       yy|r   c                (    V P                   ^ ,          # r   r   r   s   &r   r,   Identity.cols   r   r   c                N    V P                   ^ ,          V P                   ^ ,          3# r   r   r   s   &r   r!   Identity.shape   r#   r   c                    R # TrB   r   s   &r   	is_squareIdentity.is_square       r   c                    V # r   rB   r   s   &r   r.   Identity._eval_transpose   rH   r   c                    V P                   # r   )r-   r   s   &r   r7   Identity._eval_trace   s    yyr   c                    V # r   rB   r   s   &r   r?   Identity._eval_inverse   rH   r   c                ,    V \        V P                  !  3# r   r   r!   r   s   &r   rC   Identity._eval_as_real_imag       j$**-..r   c                    V # r   rB   r   s   &r   rF   Identity._eval_conjugate   rH   r   c                    V # r   rB   r   s   &r   r2   Identity._eval_adjoint   rH   r   c                    \        W4      pV\        P                  J d   \        P                  # V\        P                  J d   \        P
                  # \        W^ V P                  ^,
          34      # r   )r   r   trueOnefalser6   r   r,   )r    rK   rL   rM   eqs   &&&, r   rN   Identity._entry   sM    X<55L177]66MaQ		!$455r   c                "    \         P                  # r   r   r   r   s   &r   r;   Identity._eval_determinant       uur   c                    V # r   rB   r&   s   &&r   r(   Identity._eval_power   rH   r   rB   )rP   rQ   rR   rS   rT   is_Identityr   rV   r-   r,   r!   r   r.   r7   r?   rC   rF   r2   rN   r;   r(   rW   rX   rY   rZ   s   @@r   r|   r|   h   s     
 K'     , ,  /6 r   r|   c                      a a ] tR t^t oRtV 3R lt]R 4       t]R 4       t]R 4       t	]R 4       t
R tR tV 3R	 ltR
tVtV ;t# )GenericIdentityz
An identity matrix without a specified shape

This exists primarily so MatMul() with no arguments can return something
meaningful.
c                *   < \         \        V `  V 4      # r   )r   r|   r   r_   s   &r   r   GenericIdentity.__new__   s     Xs+C00r   c                    \        R 4      hz/GenericIdentity does not have a specified shaperc   r   s   &r   r-   GenericIdentity.rows       IJJr   c                    \        R 4      hr   rc   r   s   &r   r,   GenericIdentity.cols   r   r   c                    \        R 4      hr   rc   r   s   &r   r!   GenericIdentity.shape   r   r   c                    R # r   rB   r   s   &r   r   GenericIdentity.is_square   r   r   c                "    \        V\        4      # r   )rl   r   rm   s   &&r   ro   GenericIdentity.__eq__   s    %11r   c                    W8X  * # r   rB   rm   s   &&r   rr   GenericIdentity.__ne__   rt   r   c                    < \         SV `  4       # r   rv   rx   s   &r   rw   GenericIdentity.__hash__   rz   r   rB   )rP   rQ   rR   rS   rT   r   rV   r-   r,   r!   r   ro   rr   rw   rW   rX   rY   rZ   s   @@r   r   r      sy     1
 K K K K K K  2#" "r   r   c                      a a ] tR t^t oRtRV 3R llt]R 4       t]R 4       tR t	R t
V 3R ltR tR	 tR
 tR tR tR tR tR tR tRtVtV ;t# )	OneMatrixz$
Matrix whose all entries are ones.
c                  < \        V4      \        V4      r!V P                  V4       V P                  V4       V'       d0   \        V^4      \        V^4      ,          pVR8X  d   \        ^4      # \        SV `  WV4      pV# )   T)r   r   r   r|   r   r   )r   r   r   evaluate	conditionobjr   s   &&&&  r   r   OneMatrix.__new__   sj    {HQK1qq1a2a8+ID {"goca(
r   c                    V P                   # r   )_argsr   s   &r   r!   OneMatrix.shape   s    zzr   c                (    V P                  4       R 8H  # r   )_is_1x1r   s   &r   r   OneMatrix.is_Identity   s    ||~%%r   c                B    ^ RI Hp VP                  ! V P                  !  # )r   )ImmutableDenseMatrix)sympy.matrices.immutabler   onesr!   )r    r   s   & r   as_explicitOneMatrix.as_explicit   s    A#(($**55r   c                    V P                   pVP                  R R4      '       d!   V Uu. uF  q3P                  ! R/ VB NK  	  ppV P                  ! VRR/ # u upi )deepTr   rB   )r   getdoitfunc)r    hintsr   as   &,  r   r   OneMatrix.doit   sQ    yy99VT""-12TFFOUOTD2yy$... 3s   Ac                H  < V P                  4       R 8X  d   \        ^4      # V^ 8  R 8X  d   \        R4      h\        \        P
                  ! V4      4      '       d:   V P                  ^ ,          V^,
          ,          \        V P                  !  ,          # \        SV `%  V4      # )Tr%   )
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qyy~::a=S1W-	4::0FFFw"3''r   c                B    \        V P                  V P                  4      # r   r   r,   r-   r   s   &r   r.   OneMatrix._eval_transpose      DII..r   c                B    \        V P                  V P                  4      # r   r   r   s   &r   r2   OneMatrix._eval_adjoint  r   r   c                D    \         P                  V P                  ,          # r   )r   r   r-   r   s   &r   r7   OneMatrix._eval_trace  s    uuTYYr   c                p    V P                   p\        V^ ,          ^4      \        V^,          ^4      ,          # )z-Returns true if the matrix is known to be 1x1)r!   r   )r    r!   s   & r   r   OneMatrix._is_1x1  s*    

%(AE!Ha00r   c                    V P                  4       pVR 8X  d   \        P                  # VR8X  d   \        P                  # ^ RIHp V! V 4      # )TF)Determinant)r   r   r   r6   &sympy.matrices.expressions.determinantr   )r    r   r   s   &  r   r;   OneMatrix._eval_determinant  s=    LLN	55L%66MJt$$r   c                    V P                  4       pVR 8X  d   \        ^4      # VR8X  d   \        R4      h^RIHp V! V 4      # )TFr>   )Inverse)r   r|   r
   inverser   )r    r   r   s   &  r   r?   OneMatrix._eval_inverse  s@    LLN	A;%*+MNN(4= r   c                ,    V \        V P                  !  3# r   r   r   s   &r   rC   OneMatrix._eval_as_real_imag$  r   r   c                    V # r   rB   r   s   &r   rF   OneMatrix._eval_conjugate'  rH   r   c                "    \         P                  # r   r   rJ   s   &&&,r   rN   OneMatrix._entry*  r   r   rB   )F)rP   rQ   rR   rS   rT   r   rV   r!   r   r   r   r(   r.   r2   r7   r   r;   r?   rC   rF   rN   rW   rX   rY   rZ   s   @@r   r   r      sx        & &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   rB   r   r   <module>r      s^    ( $ " ' C > 7 7t "
  "HCz CL$"h $"NV
 Vr   