Ë
    7^(h“  ã                   óz   — d dl mZ d dlmZmZ d dlmZ d dlmZ  G d„ de«      Z	d dl
mZmZ d dlmZ d	„ Zeed<   y
)é    )Ú_sympify)ÚSÚBasic)ÚNonSquareMatrixError)ÚMatPowc                   ó”   — e Zd ZdZdZej                  Zej                  fd„Ze	d„ «       Z
e	d„ «       Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zy)Ú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                 óÂ   — t        |«      }t        |«      }|j                  st        d«      ‚|j                  du rt	        d|z  «      ‚t        j                  | ||«      S )Nzmat should be a matrixFzInverse of non-square matrix %s)r   Ú	is_MatrixÚ	TypeErrorÚ	is_squarer   r   Ú__new__)ÚclsÚmatÚexps      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/inverse.pyr   zInverse.__new__#   sY   € ô �s‹mˆÜ�s‹mˆØ�}Š}ÜÐ4Ó5Ð5Ø�=‰=˜EÑ!Ü&Ð'HÈ3Ñ'NÓOÐOÜ�}‰}˜S # sÓ+Ð+ó    c                 ó    — | j                   d   S ©Nr   )Úargs©Úselfs    r   ÚargzInverse.arg.   s   € à�y‰y˜‰|Ðr   c                 ó.   — | j                   j                  S ©N)r   Úshaper   s    r   r   zInverse.shape2   s   € à�x‰x�~‰~Ðr   c                 ó   — | j                   S r   )r   r   s    r   Ú_eval_inversezInverse._eval_inverse6   s   € Ø�x‰xˆr   c                 óH   — t        | j                  j                  «       «      S r   )r	   r   Ú	transposer   s    r   Ú_eval_transposezInverse._eval_transpose9   ó   € Ü�t—x‘x×)Ñ)Ó+Ó,Ð,r   c                 óH   — t        | j                  j                  «       «      S r   )r	   r   Úadjointr   s    r   Ú_eval_adjointzInverse._eval_adjoint<   s   € Ü�t—x‘x×'Ñ'Ó)Ó*Ð*r   c                 óH   — t        | j                  j                  «       «      S r   )r	   r   Ú	conjugater   s    r   Ú_eval_conjugatezInverse._eval_conjugate?   r"   r   c                 ó8   — ddl m} d || j                  «      z  S )Nr   )Údeté   )Ú&sympy.matrices.expressions.determinantr*   r   )r   r*   s     r   Ú_eval_determinantzInverse._eval_determinantB   s   € Ý>Ø‘�T—X‘X“‰Ðr   c                 óž   — d|v r
|d   dk(  r| S | j                   }|j                  dd«      r |j                  di |¤Ž}|j                  «       S )NÚ
inv_expandFÚdeepT© )r   ÚgetÚdoitÚinverse)r   Úhintsr   s      r   r3   zInverse.doitF   sQ   € Ø˜5Ñ  U¨<Ñ%8¸EÒ%AØˆKà�h‰hˆØ�9‰9�V˜TÔ"Ø�#—(‘(Ñ#˜UÑ#ˆCà�{‰{‹}Ðr   c                 ó¾   — | j                   d   }|j                  |«      }|D ]7  }|xj                  | j                   z  c_        |xj                  | z  c_        Œ9 |S r   )r   Ú_eval_derivative_matrix_linesÚfirst_pointerÚTÚsecond_pointer)r   Úxr   ÚlinesÚlines        r   r7   z%Inverse._eval_derivative_matrix_linesP   s]   € Ø�i‰i˜‰lˆØ×1Ñ1°!Ó4ˆØò 	(ˆDØ×Ò 4§6¡6 'Ñ)ÕØ×Ò 4Ñ'Öð	(ð ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
is_Inverser   ÚNegativeOner   r   Úpropertyr   r   r   r!   r%   r(   r-   r3   r7   r1   r   r   r	   r	      sn   „ ñð. €JØ
�-‰-€CàŸm™mó 	,ð ñó ðð ñó ðòò-ò+ò-òòór   r	   )ÚaskÚQ)Úhandlers_dictc                 óP  — t        t        j                  | «      |«      r| j                  j                  S t        t        j
                  | «      |«      r| j                  j                  «       S t        t        j                  | «      |«      rt        d| j                  z  «      ‚| S )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)	rE   rF   Ú
orthogonalr   r9   Úunitaryr'   ÚsingularÚ
ValueError)ÚexprÚassumptionss     r   Úrefine_InverserO   ]   sw   € ô Œ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.askrE   rF   Úsympy.assumptions.refinerG   rO   r1   r   r   ú<module>rV      s9   ðÝ 'ß å :Ý 4ôNˆfô N÷b )Ý 2òð& *€ˆiÒ r   