ó
    ‰*£h“  ã                   óz   • S SK Jr  S SKJrJr  S SKJr  S SKJr   " S S\5      r	S SK
JrJr  S SKJr  S	 r\\S'   g
)é    )Ú_sympify)ÚSÚBasic)ÚNonSquareMatrixError)ÚMatPowc                   óž   • \ rS rSrSrSr\R                  r\R                  4S jr	\
S 5       r\
S 5       rS rS rS	 rS
 rS rS rS rSrg)ÚInverseé   aÍ  
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                 óÎ   • [        U5      n[        U5      nUR                  (       d  [        S5      eUR                  SL a  [	        SU-  5      e[
        R                  " XU5      $ )Nzmat should be a matrixFzInverse of non-square matrix %s)r   Ú	is_MatrixÚ	TypeErrorÚ	is_squarer   r   Ú__new__)ÚclsÚmatÚexps      Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/inverse.pyr   ÚInverse.__new__#   sW   € ô �s‹mˆÜ�s‹mˆØ�}�}ÜÐ4Ó5Ð5Ø�=‰=˜EÒ!Ü&Ð'HÈ3Ñ'NÓOÐOÜ�}Š}˜S sÓ+Ð+ó    c                 ó    • U R                   S   $ ©Nr   )Úargs©Úselfs    r   ÚargÚInverse.arg.   s   € à�y‰y˜‰|Ðr   c                 ó.   • U R                   R                  $ ©N)r   Úshaper   s    r   r   ÚInverse.shape2   s   € à�x‰x�~‰~Ðr   c                 ó   • U R                   $ r   )r   r   s    r   Ú_eval_inverseÚInverse._eval_inverse6   s   € Ø�x‰xˆr   c                 óH   • [        U R                  R                  5       5      $ r   )r	   r   Ú	transposer   s    r   Ú_eval_transposeÚInverse._eval_transpose9   ó   € Ü�t—x‘x×)Ñ)Ó+Ó,Ð,r   c                 óH   • [        U R                  R                  5       5      $ r   )r	   r   Úadjointr   s    r   Ú_eval_adjointÚInverse._eval_adjoint<   s   € Ü�t—x‘x×'Ñ'Ó)Ó*Ð*r   c                 óH   • [        U R                  R                  5       5      $ r   )r	   r   Ú	conjugater   s    r   Ú_eval_conjugateÚInverse._eval_conjugate?   r(   r   c                 ó8   • SSK Jn  SU" U R                  5      -  $ )Nr   )Údeté   )Ú&sympy.matrices.expressions.determinantr2   r   )r   r2   s     r   Ú_eval_determinantÚInverse._eval_determinantB   s   € Ý>Ø‘�T—X‘X“‰Ðr   c                 ó®   • SU;   a  US   S:X  a  U $ U R                   nUR                  SS5      (       a  UR                  " S0 UD6nUR                  5       $ )NÚ
inv_expandFÚdeepT© )r   ÚgetÚdoitÚinverse)r   Úhintsr   s      r   r<   ÚInverse.doitF   sR   € Ø˜5Ó  U¨<Ñ%8¸EÓ%AØˆKà�h‰hˆØ�9‰9�V˜T×"Ñ"Ø—(’(Ñ#˜UÑ#ˆCà�{‰{‹}Ðr   c                 óÂ   • U R                   S   nUR                  U5      nU H8  nU=R                  U R                  * -  sl        U=R                  U -  sl        M:     U$ r   )r   Ú_eval_derivative_matrix_linesÚfirst_pointerÚTÚsecond_pointer)r   Úxr   ÚlinesÚlines        r   rA   Ú%Inverse._eval_derivative_matrix_linesP   sX   € Ø�i‰i˜‰lˆØ×1Ñ1°!Ó4ˆÛˆDØ×Ò 4§6¡6 'Ñ)ÕØ×Ò 4Ñ'×ñ ð ˆr   r:   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
is_Inverser   ÚNegativeOner   r   Úpropertyr   r   r"   r&   r+   r/   r5   r<   rA   Ú__static_attributes__r:   r   r   r	   r	      sn   † ñð. €JØ
�-‰-€CàŸm™mô 	,ð ñó ðð ñó ðòò-ò+ò-òòõr   r	   )ÚaskÚQ)Úhandlers_dictc                 ót  • [        [        R                  " U 5      U5      (       a  U R                  R                  $ [        [        R
                  " U 5      U5      (       a  U R                  R                  5       $ [        [        R                  " U 5      U5      (       a  [        SU R                  -  5      eU $ )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   rC   Úunitaryr.   ÚsingularÚ
ValueError)ÚexprÚassumptionss     r   Úrefine_Inverser\   ]   s€   € ô Œ1�<Š<˜Ó˜{×+Ñ+Ø�x‰x�z‰zÐÜ	ŒQ�YŠY�t‹_˜k×	*Ñ	*Ø�x‰x×!Ñ!Ó#Ð#Ü	ŒQ�ZŠZ˜Ó˜{×	+Ñ	+ÜÐ8¸4¿8¹8Ñ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\   r:   r   r   Ú<module>rc      s9   ðÝ 'ß å :Ý 4ôNˆfô N÷b )Ý 2òð& *€ˆiÒ r   