§
    OŠtjÑ  ã                   ó¾   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  G d„ de¦  «        Zd	„ Z G d
„ de¦  «        Zd„ Zd dlmZmZ d dlmZ d„ Zeed<   dS )é    )ÚBasic)ÚExpr)ÚS)Úsympify)ÚNonSquareMatrixError)Ú
MatrixBasec                   óN   — e Zd ZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	dS )ÚDeterminanta  Matrix Determinant

    Represents the determinant of a matrix expression.

    Examples
    ========

    >>> from sympy import MatrixSymbol, Determinant, eye
    >>> A = MatrixSymbol('A', 3, 3)
    >>> Determinant(A)
    Determinant(A)
    >>> Determinant(eye(3)).doit()
    1
    Tc                 óÆ   — t          |¦  «        }|j        st          dt          |¦  «        z  ¦  «        ‚|j        du rt          d¦  «        ‚t          j        | |¦  «        S )Nz&Input to Determinant, %s, not a matrixFzDet of a non-square matrix)r   Ú	is_MatrixÚ	TypeErrorÚstrÚ	is_squarer   r   Ú__new__©ÚclsÚmats     úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/determinant.pyr   zDeterminant.__new__   s`   € Ý�c‰lŒlˆØŒ}ð 	QÝÐDÅsÈ3ÁxÄxÑOÑPÔPÐPàŒ=˜EÐ!Ð!Ý&Ð'CÑDÔDÐDåŒ}˜S #Ñ&Ô&Ð&ó    c                 ó   — | j         d         S ©Nr   ©Úargs©Úselfs    r   ÚargzDeterminant.arg$   ó   € àŒy˜Œ|Ðr   c                 ó$   — | j         j        j        S ©N)r   ÚkindÚelement_kindr   s    r   r    zDeterminant.kind(   s   € àŒxŒ}Ô)Ð)r   c                 óŠ   — | j         }|                     dd¦  «        r |j        di |¤Ž}|                     ¦   «         }|�|S | S )NÚdeepT© )r   ÚgetÚdoitÚ_eval_determinant)r   Úhintsr   Úresults       r   r&   zDeterminant.doit,   sW   € ØŒhˆØ�9Š9�V˜TÑ"Ô"ð 	$Ø�#”(Ð#Ð#˜UÐ#Ð#ˆCà×&Ò&Ñ(Ô(ˆØÐØˆMàˆr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_commutativer   Úpropertyr   r    r&   r$   r   r   r
   r
   	   sy   € € € € € ðð ð €Nð'ð 'ð 'ð ðð ñ „Xðð ð*ð *ñ „Xð*ð	ð 	ð 	ð 	ð 	r   r
   c                 óD   — t          | ¦  «                             ¦   «         S )zÅ Matrix Determinant

    Examples
    ========

    >>> from sympy import MatrixSymbol, det, eye
    >>> A = MatrixSymbol('A', 3, 3)
    >>> det(A)
    Determinant(A)
    >>> det(eye(3))
    1
    )r
   r&   ©Úmatexprs    r   Údetr3   8   s   € õ �wÑÔ×$Ò$Ñ&Ô&Ð&r   c                   ó6   — e Zd ZdZd„ Zed„ ¦   «         Zdd„ZdS )Ú	Permanenta  Matrix Permanent

    Represents the permanent of a matrix expression.

    Examples
    ========

    >>> from sympy import MatrixSymbol, Permanent, ones
    >>> A = MatrixSymbol('A', 3, 3)
    >>> Permanent(A)
    Permanent(A)
    >>> Permanent(ones(3, 3)).doit()
    6
    c                 ó–   — t          |¦  «        }|j        st          dt          |¦  «        z  ¦  «        ‚t	          j        | |¦  «        S )Nz$Input to Permanent, %s, not a matrix)r   r   r   r   r   r   r   s     r   r   zPermanent.__new__X   sD   € Ý�c‰lŒlˆØŒ}ð 	OÝÐBÅSÈÁXÄXÑMÑNÔNÐNåŒ}˜S #Ñ&Ô&Ð&r   c                 ó   — | j         d         S r   r   r   s    r   r   zPermanent.arg_   r   r   Fc                 ól   — t          | j        t          ¦  «        r| j                             ¦   «         S | S r   )Ú
isinstancer   r   Úper)r   Úexpandr(   s      r   r&   zPermanent.doitc   s+   € Ý�d”h¥
Ñ+Ô+ð 	Ø”8—<’<‘>”>Ð!àˆKr   N)F)r*   r+   r,   r-   r   r/   r   r&   r$   r   r   r5   r5   H   s\   € € € € € ðð ð'ð 'ð 'ð ðð ñ „Xððð ð ð ð ð r   r5   c                 óD   — t          | ¦  «                             ¦   «         S )a   Matrix Permanent

    Examples
    ========

    >>> from sympy import MatrixSymbol, Matrix, per, ones
    >>> A = MatrixSymbol('A', 3, 3)
    >>> per(A)
    Permanent(A)
    >>> per(ones(5, 5))
    120
    >>> M = Matrix([1, 2, 5])
    >>> per(M)
    8
    )r5   r&   r1   s    r   r:   r:   i   s   € õ" �WÑÔ×"Ò"Ñ$Ô$Ð$r   )ÚaskÚQ)Úhandlers_dictc                 ó8  — t          t          j        | j        ¦  «        |¦  «        rt          j        S t          t          j        | j        ¦  «        |¦  «        rt          j        S t          t          j        | j        ¦  «        |¦  «        rt          j        S | S )zÜ
    >>> from sympy import MatrixSymbol, Q, assuming, refine, det
    >>> X = MatrixSymbol('X', 2, 2)
    >>> det(X)
    Determinant(X)
    >>> with assuming(Q.orthogonal(X)):
    ...     print(refine(det(X)))
    1
    )	r=   r>   Ú
orthogonalr   r   ÚOneÚsingularÚZeroÚunit_triangular)ÚexprÚassumptionss     r   Úrefine_DeterminantrH   €   sy   € õ �1Œ<˜œÑ!Ô! ;Ñ/Ô/ð ÝŒuˆÝ	�QŒZ˜œÑ!Ô! ;Ñ	/Ô	/ð ÝŒvˆÝ	�QÔ˜tœxÑ(Ô(¨+Ñ	6Ô	6ð ÝŒuˆà€Kr   N)Úsympy.core.basicr   Úsympy.core.exprr   Úsympy.core.singletonr   Úsympy.core.sympifyr   Úsympy.matrices.exceptionsr   Úsympy.matrices.matrixbaser   r
   r3   r5   r:   Úsympy.assumptions.askr=   r>   Úsympy.assumptions.refiner?   rH   r$   r   r   ú<module>rQ      s2  ðØ "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø :Ð :Ð :Ð :Ð :Ð :Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð,ð ,ð ,ð ,ð ,�$ñ ,ô ,ð ,ð^'ð 'ð 'ð ð ð ð ð �ñ ô ð ðB%ð %ð %ð& )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð(  2€ˆmÑ Ð Ð r   