§
    OŠtj“  ã                   ó‚   — 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<   d
S )é    )Ú_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dS )Ú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/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/inverse.pyr   zInverse.__new__#   sh   € õ �s‰mŒmˆÝ�s‰mŒmˆØŒ}ð 	6ÝÐ4Ñ5Ô5Ð5ØŒ=˜EÐ!Ð!Ý&Ð'HÈ3Ñ'NÑOÔOÐOÝŒ}˜S # sÑ+Ô+Ð+ó    c                 ó   — | j         d         S ©Nr   )Úargs©Úselfs    r   ÚargzInverse.arg.   s   € àŒy˜Œ|Ðr   c                 ó   — | j         j        S ©N)r   Úshaper   s    r   r   zInverse.shape2   s   € àŒxŒ~Ðr   c                 ó   — | j         S r   )r   r   s    r   Ú_eval_inversezInverse._eval_inverse6   s	   € ØŒxˆr   c                 óN   — t          | j                             ¦   «         ¦  «        S r   )r	   r   Ú	transposer   s    r   Ú_eval_transposezInverse._eval_transpose9   ó   € Ý�t”x×)Ò)Ñ+Ô+Ñ,Ô,Ð,r   c                 óN   — t          | j                             ¦   «         ¦  «        S r   )r	   r   Úadjointr   s    r   Ú_eval_adjointzInverse._eval_adjoint<   s   € Ý�t”x×'Ò'Ñ)Ô)Ñ*Ô*Ð*r   c                 óN   — t          | j                             ¦   «         ¦  «        S r   )r	   r   Ú	conjugater   s    r   Ú_eval_conjugatezInverse._eval_conjugate?   r"   r   c                 ó4   — 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‘”‰Ðr   c                 ó¢   — d|v r|d         dk    r| S | j         }|                     dd¦  «        r |j        di |¤Ž}|                     ¦   «         S )NÚ
inv_expandFÚdeepT© )r   ÚgetÚdoitÚinverse)r   Úhintsr   s      r   r3   zInverse.doitF   sc   € Ø˜5Ð Ð  U¨<Ô%8¸EÒ%AÐ%AØˆKàŒhˆØ�9Š9�V˜TÑ"Ô"ð 	$Ø�#”(Ð#Ð#˜UÐ#Ð#ˆCà�{Š{‰}Œ}Ðr   c                 ó    — | j         d         }|                     |¦  «        }|D ](}|xj        | j         z  c_        |xj        | z  c_        Œ)|S r   )r   Ú_eval_derivative_matrix_linesÚfirst_pointerÚTÚsecond_pointer)r   Úxr   ÚlinesÚlines        r   r7   z%Inverse._eval_derivative_matrix_linesP   sc   € ØŒi˜ŒlˆØ×1Ò1°!Ñ4Ô4ˆØð 	(ð 	(ˆDØÐÔ 4¤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	      sä   € € € € € ðð ð. €JØ
Œ-€Càœmð 	,ð 	,ð 	,ð 	,ð ðð ñ „Xðð ðð ñ „Xððð ð ð-ð -ð -ð+ð +ð +ð-ð -ð -ðð ð ðð ð ðð ð ð ð r   r	   )ÚaskÚQ)Úhandlers_dictc                 óJ  — t          t          j        | ¦  «        |¦  «        r| j        j        S t          t          j        | ¦  «        |¦  «        r| 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   ]   s’   € õ �1Œ<˜ÑÔ˜{Ñ+Ô+ð EØŒxŒzÐÝ	�QŒY�t‰_Œ_˜kÑ	*Ô	*ð EØŒx×!Ò!Ñ#Ô#Ð#Ý	�QŒZ˜ÑÔ˜{Ñ	+Ô	+ð EÝÐ8¸4¼8ÑCÑDÔ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      sÓ   ðØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðNð Nð Nð Nð Nˆfñ Nô Nð Nðb )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð& *€ˆiÑ Ð Ð r   