+
    i                     |    ^ RI Ht ^ RIHtHt ^ RIHt ^ RIHt  ! R R]4      t	^ RI
HtHt ^ RIHt R	 t]]R&   R
# )    )_sympify)SBasic)NonSquareMatrixError)MatPowc                      a  ] tR t^t o RtRt]P                  t]P                  3R lt	]
R 4       t]
R 4       tR tR tR tR	 tR
 tR tR tRtV tR# )Inversea  
The multiplicative inverse of a matrix expression

This is a symbolic object that simply stores its argument without
evaluating it. To actually compute the inverse, use the ``.inverse()``
method of matrices.

Examples
========

>>> from sympy import MatrixSymbol, Inverse
>>> A = MatrixSymbol('A', 3, 3)
>>> B = MatrixSymbol('B', 3, 3)
>>> Inverse(A)
A**(-1)
>>> A.inverse() == Inverse(A)
True
>>> (A*B).inverse()
B**(-1)*A**(-1)
>>> Inverse(A*B)
(A*B)**(-1)

Tc                    \        V4      p\        V4      pVP                  '       g   \        R 4      hVP                  RJ d   \	        RV,          4      h\
        P                  ! WV4      # )zmat should be a matrixFzInverse of non-square matrix %s)r   	is_Matrix	TypeError	is_squarer   r   __new__)clsmatexps   &&&ڂ/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/matrices/expressions/inverse.pyr   Inverse.__new__#   sY     smsm}}}455==E!&'H3'NOO}}Ss++    c                (    V P                   ^ ,          # r   )argsselfs   &r   argInverse.arg.   s    yy|r   c                .    V P                   P                  # N)r   shaper   s   &r   r   Inverse.shape2   s    xx~~r   c                    V P                   # r   )r   r   s   &r   _eval_inverseInverse._eval_inverse6   s    xxr   c                H    \        V P                  P                  4       4      # r   )r	   r   	transposer   s   &r   _eval_transposeInverse._eval_transpose9       txx))+,,r   c                H    \        V P                  P                  4       4      # r   )r	   r   adjointr   s   &r   _eval_adjointInverse._eval_adjoint<   s    txx'')**r   c                H    \        V P                  P                  4       4      # r   )r	   r   	conjugater   s   &r   _eval_conjugateInverse._eval_conjugate?   r'   r   c                @    ^ RI Hp ^V! V P                  4      ,          # )r   )det)&sympy.matrices.expressions.determinantr1   r   )r   r1   s   & r   _eval_determinantInverse._eval_determinantB   s    >TXXr   c                    R V9   d   VR ,          R8X  d   V # V P                   pVP                  RR4      '       d   VP                  ! R/ VB pVP                  4       # )
inv_expandFdeepT )r   getdoitinverse)r   hintsr   s   &, r   r:   Inverse.doitF   sR    5 U<%8E%AKhh99VT""((#U#C{{}r   c                    V P                   ^ ,          pVP                  V4      pV F@  pV;P                  V P                  ) ,          un        V;P                  V ,          un        KB  	  V# r   )r   _eval_derivative_matrix_linesfirst_pointerTsecond_pointer)r   xr   lineslines   &&   r   r?   %Inverse._eval_derivative_matrix_linesP   sX    iil11!4D466')4'  r   r8   N)__name__
__module____qualname____firstlineno____doc__
is_Inverser   NegativeOner   r   propertyr   r   r!   r%   r*   r.   r3   r:   r?   __static_attributes____classdictcell__)__classdict__s   @r   r	   r	      sv     . J
--Cmm 	,    -+- r   r	   )askQ)handlers_dictc                   \        \        P                  ! V 4      V4      '       d   V P                  P                  # \        \        P
                  ! V 4      V4      '       d   V P                  P                  4       # \        \        P                  ! V 4      V4      '       d   \        RV P                  ,          4      hV # )z
>>> from sympy import MatrixSymbol, Q, assuming, refine
>>> X = MatrixSymbol('X', 2, 2)
>>> X.I
X**(-1)
>>> with assuming(Q.orthogonal(X)):
...     print(refine(X.I))
X.T
zInverse of singular matrix %s)	rR   rS   
orthogonalr   rA   unitaryr-   singular
ValueError)exprassumptionss   &&r   refine_Inverser\   ]   s     1<<{++xxzz	QYYt_k	*	*xx!!##	QZZ{	+	+8488CDDKr   N)sympy.core.sympifyr   
sympy.corer   r   sympy.matrices.exceptionsr   !sympy.matrices.expressions.matpowr   r	   sympy.assumptions.askrR   rS   sympy.assumptions.refinerT   r\   r8   r   r   <module>rc      s9    '  : 4Nf Nb ) 2& *i r   