o
    FZŽhâ/  ã                   @   s˜  d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ edd	d	ƒZed
d	dƒZedd	d	ƒZedddƒZedddƒZedd d ƒZedd	dƒZedd	dƒZdd„ Z dd„ Z!dd„ Z"edd„ ƒZ#dd„ Z$dd„ Z%dd „ Z&d!d"„ Z'd#d$„ Z(d%d&„ Z)d'd(„ Z*d)d*„ Z+d+d,„ Z,d-d.„ Z-d/d0„ Z.ed1d2„ ƒZ/d3d4„ Z0d5d6„ Z1d7d8„ Z2d9d:„ Z3d;d<„ Z4d=d>„ Z5d?S )@é    )ÚQÚask)ÚSymbol)Ú
DiagMatrixÚDiagonalMatrix)ÚMatrix)	ÚMatrixSymbolÚIdentityÚ
ZeroMatrixÚ	OneMatrixÚTraceÚMatrixSliceÚDeterminantÚBlockMatrixÚBlockDiagMatrix)ÚLofLU)ÚXFAILÚXé   ÚYé   ÚZÚA1x1é   ÚB1x1ÚC0x0ÚV1ÚV2c                   C   s@   t t t¡ƒs	J ‚t t t¡ƒrJ ‚t t ttj ¡ƒsJ ‚d S ©N)r   r   Úsquarer   r   ÚT© r!   r!   úT/var/www/auris/lib/python3.10/site-packages/sympy/assumptions/tests/test_matrices.pyÚtest_square   s   r#   c                   C   s†  t t t¡t t¡ƒsJ ‚t t t¡ƒdu sJ ‚t t tt ¡t t¡ƒdu s)J ‚t t tt ¡t t¡ƒd u s:J ‚t t tt ¡t t¡t t¡@ ƒdu sPJ ‚t t tj¡ƒd u s\J ‚t t tj¡t t¡ƒdu slJ ‚t t tj¡ƒdu sxJ ‚t t tdƒ¡ƒdu s…J ‚t t t	ddƒ¡ƒdu s“J ‚t t t
ddƒ¡ƒdu s¡J ‚t t t
ddƒ¡ƒdu s¯J ‚t t t¡t t¡t t¡@ ƒsÁJ ‚d S )NFTr   r   )r   r   Ú
invertibler   r   r   r    ÚIr	   r
   r   Úfullrankr   r!   r!   r!   r"   Útest_invertible   s   "", (r'   c                   C   sX   t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ ƒdu s*J ‚d S )NFT)r   r   Zsingularr   r$   r!   r!   r!   r"   Útest_singular'   s   $r(   c                   C   s"   t t t¡t t¡ƒdu sJ ‚d S )NT)r   r   r$   r   r&   r!   r!   r!   r"   Útest_invertible_fullrank,   s   "r)   c               
   C   sF  t t ttdƒgƒ¡ƒdksJ ‚t t ttddƒgƒ¡ƒdks!J ‚tg d¢g d¢gƒ} tg d¢g d¢gƒ}t t tt dd¡|jg| t 	d¡ggƒ¡ƒdksPJ ‚t t t|jt dd¡gt 	d¡| ggƒ¡ƒdkskJ ‚t t t| t 	d¡gt dd¡|jggƒ¡ƒdks†J ‚t t tt 	d¡| g|jt dd¡ggƒ¡ƒdks¡J ‚d S )	Nr   TF)r   r   r   )r   é   é   )r+   r   é   )r   r   r*   r   )
r   r   r$   r   r	   r
   r   Zonesr    Úeye©r   r   r!   r!   r"   Útest_invertible_BlockMatrix1   s8    "þýþýþýþýr/   c                   C   st   t t ttdƒtdƒƒ¡ƒdksJ ‚t t ttddƒtdƒƒ¡ƒdks%J ‚t t ttdƒtddƒƒ¡ƒdks8J ‚d S )Nr   r*   TF)r   r   r$   r   r	   r
   r   r!   r!   r!   r"   Útest_invertible_BlockDiagMatrixM   s   $&*r0   c                   C   sT  t t t¡t t¡ƒsJ ‚t t tt ¡t t¡ƒd u sJ ‚t t tt ¡t t¡t t¡@ ƒdu s4J ‚t t tt ¡t t¡t t¡@ ƒdu sJJ ‚t t t¡ƒdu sUJ ‚t t ttj ¡ƒdu scJ ‚t t tjt t ¡ƒd u ssJ ‚t t tjt t ¡t t¡ƒdu s‡J ‚t t td ¡t t¡ƒdu s˜J ‚t t t¡ƒdu s£J ‚t t tt ¡ƒdu s°J ‚t t tt ¡ƒdu s½J ‚t t t	jt	 ¡ƒdu sËJ ‚t t t	jt	t
  ¡ƒdu sÛJ ‚t t t	jt	t
  t ¡ƒdu síJ ‚t t ttddƒ¡ƒdu süJ ‚t t tdƒ¡ƒdu s
J ‚t t tddƒ¡ƒdu sJ ‚t t tddƒ¡ƒdu s(J ‚d S )NTFé
   ©r   r   ©r   r   r   )r   r   Ú	symmetricr   r   r   r    r   r   r   r   r   r	   r
   r   r!   r!   r!   r"   Útest_symmetricS   s&   ",, (" $"r5   c                 C   sH  t | tƒ| tƒƒsJ ‚t | tjƒ| tƒƒdu sJ ‚t | tjƒ| tƒƒdu s'J ‚t | td ƒ| tƒƒs4J ‚t | tƒƒdu s>J ‚t | tƒƒd u sHJ ‚t | tƒt t¡ ƒdu sWJ ‚t | tt t ƒ| tƒ| tƒ@ ƒdu slJ ‚t | tdƒƒƒdu sxJ ‚t | t	ddƒƒƒdu s…J ‚t t t¡| tƒƒs‘J ‚t | tt ƒ| tƒ| tƒ@ ƒr¢J ‚d S )NTr   Fr   )
r   r   r    r%   r   r   r$   r   r	   r
   )Ú	predicater!   r!   r"   Ú_test_orthogonal_unitaryh   s   *&r7   c                   C   s   t tjƒ d S r   )r7   r   Ú
orthogonalr!   r!   r!   r"   Útest_orthogonalv   s   r9   c                   C   s(   t tjƒ tt t¡t t¡ƒsJ ‚d S r   )r7   r   Zunitaryr   r   r8   r!   r!   r!   r"   Útest_unitaryy   s   
r:   c                   C   sB  t t t¡t t¡ƒsJ ‚t t td ¡t t¡ƒsJ ‚t t tj¡t t¡ƒdu s,J ‚t t t¡ƒd u s7J ‚t t t¡ƒd u sBJ ‚t t tt ¡t t¡t t¡@ ƒdu sXJ ‚t t tdƒ¡ƒdu seJ ‚t t tddƒ¡ƒdu ssJ ‚t t t	ddƒ¡ƒdu sJ ‚t t t	ddƒ¡ƒdu sJ ‚t t 
t¡t t¡ ƒdksŸJ ‚d S )Nr   Tr   Fr   )r   r   r&   r   r    r   r   r	   r
   r   r$   r!   r!   r!   r"   Útest_fullrank}   s    ,$r;   c                   C   s  t t t¡t t¡ƒsJ ‚t t tj¡t t¡ƒdu sJ ‚t t tj¡t t¡ƒdu s-J ‚t t t¡ƒdu s8J ‚t t t¡ƒd u sCJ ‚t t td ¡t t¡ƒsRJ ‚t t tt t ¡t t¡t t¡@ ƒdu sjJ ‚t t t¡t t¡ƒswJ ‚t t tjt t ¡t t¡t 	t¡@ ƒdu sJ ‚t t tjt t ¡t t¡ƒr¢J ‚t t t
dƒ¡ƒdu s¯J ‚t t tddƒ¡ƒdu s½J ‚t t tddƒ¡ƒdu sËJ ‚t t tddƒ¡ƒdu sÙJ ‚t t tt ¡t t¡t t¡@ ƒdu sïJ ‚t t t ¡t t¡ƒrýJ ‚t t td ¡t t¡ƒsJ ‚d S )NTFr   r   )r   r   )r   r   Úpositive_definiter   r    r%   r   r   r8   r&   r	   r
   r   Úpositiver!   r!   r!   r"   Útest_positive_definite‹   s:     ÿÿÿÿ$ÿÿ$r>   c                   C   s€  t t ttj tdƒ ¡t t¡t t¡@ ƒdu sJ ‚t t ttj ¡t t¡t t¡@ ƒdu s2J ‚t t tdƒ¡ƒdu s?J ‚t t tddƒ¡ƒdu sMJ ‚t t tddƒ¡ƒdu s[J ‚t t t	ddƒ¡ƒdu siJ ‚t t t	ddƒ¡ƒdu swJ ‚t t t	ddƒ¡ƒdu s…J ‚t t t	ddƒ¡ƒdu s“J ‚t t 
t¡t t¡ƒs J ‚t t td ¡t t¡ƒs¯J ‚t t td ¡t t¡ƒs¾J ‚d S )Nr   Tr   r   F)r   r   Úupper_triangularr   r   r    r	   Úlower_triangularr
   r   Ú
triangularZunit_triangularr!   r!   r!   r"   Útest_triangular¡   s(    ÿÿÿÿ"rB   c                   C   s0  t t ttj tdƒ ¡t t¡t t¡@ ƒdu sJ ‚t t tddƒ¡ƒs'J ‚t t tddƒ¡ƒdu s5J ‚t t tddƒ¡ƒdu sCJ ‚t t 	t¡t 
t¡@ t t¡ƒsUJ ‚t t t¡t 	t¡t 
t¡@ ƒsgJ ‚t t t¡t t¡ƒstJ ‚t t t¡t t¡ƒsJ ‚t t t¡ƒsŠJ ‚t t t¡ƒs“J ‚t t tt ¡ƒsžJ ‚t t tt ¡ƒs©J ‚t t tjt ¡ƒsµJ ‚t t tjtt  t ¡ƒsÅJ ‚t t ttddƒ¡ƒdu sÔJ ‚t t tjtt  ¡ƒdu säJ ‚t t td ¡t t¡ƒsóJ ‚t t tdƒ¡ƒsþJ ‚t t ttƒ¡ƒs
J ‚t t ttƒ¡ƒsJ ‚d S )Nr   Tr   r   Fr2   r3   )r   r   Údiagonalr   r   r    r	   r
   r   r@   r?   r4   rA   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   Útest_diagonal²   s0    ÿÿ$$  rD   c                   C   s&   t t ttƒ¡t ttƒ¡ƒsJ ‚d S r   )r   r   Úrealr   r   r=   r!   r!   r!   r"   Útest_non_atomsÊ   s   &rF   c                  C   s’   t dddƒ} t dddƒ}tt | | ¡t | ¡t |¡@ ƒdu s"J ‚tt | ¡t | ¡ƒdu s1J ‚tt | | ¡t | ¡t |¡@ ƒdu sGJ ‚d S )Nr   r   r   T)r   r   r   r@   rA   r.   r!   r!   r"   Útest_non_trivial_impliesÍ   s   ÿÿÿÿrG   c                  C   s,  t dddƒ} t| ddƒ}t| ddƒ}tt |¡t | ¡ƒsJ ‚tt |¡t | ¡ƒs,J ‚tt |¡t | ¡ƒs9J ‚tt |¡t | ¡ƒsFJ ‚tt |¡t | ¡ƒsSJ ‚tt |¡t | ¡ƒr`J ‚tt |¡t | ¡ƒrmJ ‚tt |¡t | ¡ƒrzJ ‚tt |¡t | ¡ƒr‡J ‚tt |¡t | ¡ƒr”J ‚d S )Nr   r+   )r   r   )r   r   )	r   r   r   r   r4   r$   rC   r8   r?   )r   ÚBÚCr!   r!   r"   Útest_MatrixSlice×   s   rJ   c                  C   sL   t dddƒ} tt t| ƒ¡t | ¡ƒsJ ‚tt t| ƒ¡t | ¡ƒs$J ‚d S )Nr   r+   )r   r   r   r=   r   r<   r   ©r   r!   r!   r"   Útest_det_trace_positiveç   s   "rL   c                  C   s–  t dddƒ} t dddƒ}tt | ¡t | ¡ƒsJ ‚tt | ¡t | ¡ƒr&J ‚tt | ¡t | ¡ƒs3J ‚tt | d ¡t | ¡ƒsBJ ‚tt | d ¡t | ¡ƒsQJ ‚tt | | ¡t | ¡ƒd u sbJ ‚tt | | ¡t | ¡t |¡@ ƒsvJ ‚ddlm} tt || |ƒ¡t | ¡t |¡@ ƒs‘J ‚tt | | ¡t | ¡t |¡@ ƒs¥J ‚tt | j¡t | ¡ƒs³J ‚tt | j	¡t | ¡t 
| ¡@ ƒsÆJ ‚tt t| ƒ¡t | ¡ƒsÕJ ‚tt t| ƒ¡t | ¡ƒsäJ ‚tt | j	¡t | ¡ƒròJ ‚tdƒ}tt ||  ¡t | ¡t |¡@ ƒsJ ‚tt t| ƒ¡t | ¡ƒsJ ‚tdd	d	d
}tt | | ¡t | ¡t 
| ¡@ ƒs7J ‚tt | | ¡t | ¡ƒd u sIJ ‚d S )Nr   r+   r   r   r   )ÚHadamardProductÚalphaÚeT)ÚintegerÚnegative)r   r   r   Úreal_elementsÚinteger_elementsÚcomplex_elementsZ#sympy.matrices.expressions.hadamardrM   r    r%   r$   r   r   r   rE   r   )r   r   rM   rN   rO   r!   r!   r"   Útest_field_assumptionsì   s2   "(ÿ(&* *(rU   c                  C   sÒ   t dddƒ} tt | d ¡t | ¡ƒsJ ‚tt | d ¡t | ¡ƒs$J ‚tt | d ¡t | ¡ƒs3J ‚tt t	dƒ¡ƒs>J ‚tt t
ddƒ¡ƒsJJ ‚tt tddƒ¡ƒsVJ ‚ddlm} tt |dƒ¡ƒsgJ ‚d S )Nr   r+   r3   r   r   )ÚDFT)r   r   r   rE   rR   rP   rS   ÚcomplexrT   r	   r
   r   Z"sympy.matrices.expressions.fourierrV   )r   rV   r!   r!   r"   Útest_matrix_element_sets  s   rX   c                  C   s\   t dddƒ} tt | d d …df ¡t | ¡ƒsJ ‚tt t| g| ggƒ¡t | ¡ƒs,J ‚d S )Nr   r+   r   )r   r   r   rS   r   rK   r!   r!   r"   Ú&test_matrix_element_sets_slices_blocks  s
   &ÿrY   c                   C   s@   t t ttƒ¡t t¡ƒsJ ‚t t ttƒ¡t t¡ƒsJ ‚d S r   )r   r   rP   r   r   rS   r   r!   r!   r!   r"   Ú*test_matrix_element_sets_determinant_trace  s   "rZ   N)6Zsympy.assumptions.askr   r   Zsympy.core.symbolr   Z#sympy.matrices.expressions.diagonalr   r   Zsympy.matrices.denser   Zsympy.matrices.expressionsr   r	   r
   r   r   r   r   r   r   Z)sympy.matrices.expressions.factorizationsr   Zsympy.testing.pytestr   r   r   r   r   r   r   r   r   r#   r'   r(   r)   r/   r0   r5   r7   r9   r:   r;   r>   rB   rD   rF   rG   rJ   rL   rU   rX   rY   rZ   r!   r!   r!   r"   Ú<module>   sN    ,

	