
    \h                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr   " S S\5      rS	 r " S
 S\5      rS rS SKJrJr  S SKJr  S r\\S'   g)    )Basic)Expr)S)sympify)NonSquareMatrixError)
MatrixBasec                   H    \ rS rSrSrSrS r\S 5       r\S 5       r	S r
Srg	)
Determinant	   zMatrix 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                     [        U5      nUR                  (       d  [        S[        U5      -  5      eUR                  SL a  [        S5      e[        R                  " X5      $ )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     ^/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/determinant.pyr   Determinant.__new__   sN    cl}}Ds3xOPP==E!&'CDD}}S&&    c                      U R                   S   $ Nr   argsselfs    r   argDeterminant.arg$       yy|r   c                 B    U R                   R                  R                  $ N)r   kindelement_kindr   s    r   r#   Determinant.kind(   s    xx}})))r   c                     U R                   nUR                  SS5      (       a  UR                  " S0 UD6nUR                  5       nUb  U$ U $ )NdeepT )r   getdoit_eval_determinant)r   hintsr   results       r   r*   Determinant.doit,   sK    hh99VT""((#U#C&&(Mr   r(   N)__name__
__module____qualname____firstlineno____doc__is_commutativer   propertyr   r#   r*   __static_attributes__r(   r   r   r
   r
   	   s@     N'   * *	r   r
   c                 4    [        U 5      R                  5       $ )zMatrix 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   detr:   8   s     w$$&&r   c                   8    \ rS rSrSrS r\S 5       rSS jrSr	g)		PermanentH   zMatrix 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                     [        U5      nUR                  (       d  [        S[        U5      -  5      e[        R
                  " X5      $ )Nz$Input to Permanent, %s, not a matrix)r   r   r   r   r   r   r   s     r   r   Permanent.__new__X   s6    cl}}BSXMNN}}S&&r   c                      U R                   S   $ r   r   r   s    r   r   Permanent.arg_   r    r   c                 x    [        U R                  [        5      (       a  U R                  R                  5       $ U $ r"   )
isinstancer   r   per)r   expandr,   s      r   r*   Permanent.doitc   s(    dhh
++88<<>!Kr   r(   N)F)
r/   r0   r1   r2   r3   r   r5   r   r*   r6   r(   r   r   r<   r<   H   s%    '  r   r<   c                 4    [        U 5      R                  5       $ )zMatrix 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
)r<   r*   r8   s    r   rD   rD   i   s    " W""$$r   )askQ)handlers_dictc                    [        [        R                  " U R                  5      U5      (       a  [        R
                  $ [        [        R                  " U R                  5      U5      (       a  [        R                  $ [        [        R                  " U R                  5      U5      (       a  [        R
                  $ U $ )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
)	rH   rI   
orthogonalr   r   OnesingularZerounit_triangular)exprassumptionss     r   refine_DeterminantrS      st     1<<!;//uu	QZZ!;	/	/vv	Qtxx(+	6	6uuKr   N)sympy.core.basicr   sympy.core.exprr   sympy.core.singletonr   sympy.core.sympifyr   sympy.matrices.exceptionsr   sympy.matrices.matrixbaser   r
   r:   r<   rD   sympy.assumptions.askrH   rI   sympy.assumptions.refinerJ   rS   r(   r   r   <module>r\      sT    "   " & : 0,$ ,^'  B%& ) 2(  2m r   