ó
    ‰*£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é	   zó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                 óÈ   • [        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     Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/determinant.pyr   ÚDeterminant.__new__   sN   € Ü�c‹lˆØ�}�}ÜÐDÄsÈ3ÃxÑOÓPÐPà�=‰=˜EÒ!Ü&Ð'CÓDÐDä�}Š}˜SÓ&Ð&ó    c                 ó    • U R                   S   $ ©Nr   ©Úargs©Úselfs    r   ÚargÚDeterminant.arg$   ó   € à�y‰y˜‰|Ðr   c                 óB   • U R                   R                  R                  $ ©N)r   ÚkindÚelement_kindr   s    r   r#   ÚDeterminant.kind(   s   € à�x‰x�}‰}×)Ñ)Ð)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   € Ø�h‰hˆØ�9‰9�V˜T×"Ñ"Ø—(’(Ñ#˜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       $ )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   Ú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)	Ú	PermanentéH   zì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                 ó”   • [        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   € Ü�c‹lˆØ�}�}ÜÐBÄSÈÃ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(   € Ü�d—h‘h¤
×+Ñ+Ø—8‘8—<‘<“>Ð!àˆ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       $ )zÒ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
)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�<Š<˜Ÿ™Ó! ;×/Ñ/Ü�u‰uˆÜ	ŒQ�ZŠZ˜Ÿ™Ó! ;×	/Ñ	/Ü�v‰vˆÜ	ŒQ×Ò˜tŸx™xÓ(¨+×	6Ñ	6Ü�u‰uˆà€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   