U
    Ç-eâ/  ã                   @   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t‚t t t¡ƒr$t‚t t ttj ¡ƒs<t‚d S ©N)r   r   Úsquarer   ÚAssertionErrorr   ÚT© r"   r"   úf/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/assumptions/tests/test_matrices.pyÚtest_square   s    r$   c                   C   s  t t t¡t t¡ƒst‚t t t¡ƒdks0t‚t t tt ¡t t¡ƒdksRt‚t t tt ¡t t¡ƒd kstt‚t t tt ¡t t¡t t¡@ ƒdks t‚t t tj¡ƒd ks¸t‚t t tj¡t t¡ƒdksØt‚t t tj¡ƒdksðt‚t t t	dƒ¡ƒdkst‚t t t
ddƒ¡ƒdks*t‚t t tddƒ¡ƒdksHt‚t t tddƒ¡ƒdksft‚t t t¡t t¡t t¡@ ƒsŒt‚d S )NFTr   r   )r   r   Ú
invertibler   r    r   r   r!   ÚIr	   r
   r   Úfullrankr   r"   r"   r"   r#   Útest_invertible   s    "", r(   c                   C   sX   t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ ƒdksTt‚d S )NFT)r   r   Zsingularr   r    r%   r"   r"   r"   r#   Útest_singular'   s    r)   c                   C   s"   t t t¡t t¡ƒdkst‚d S )NT)r   r   r%   r   r'   r    r"   r"   r"   r#   Útest_invertible_fullrank,   s    r*   c               
   C   sR  t t ttdƒgƒ¡ƒdks t‚t t ttddƒgƒ¡ƒdksBt‚tdddgdddggƒ} tdddgdddggƒ}t t tt dd¡|j	g| t 
d¡ggƒ¡ƒdks¨t‚t t t|j	t dd¡gt 
d¡| ggƒ¡ƒdksÞt‚t t t| t 
d¡gt dd¡|j	ggƒ¡ƒdkst‚t t tt 
d¡| g|j	t dd¡ggƒ¡ƒdksNt‚d S )	Nr   TFr   r   é   é   é   )r   r   r%   r   r	   r    r
   r   Zonesr!   Úeye©r   r   r"   r"   r#   Útest_invertible_BlockMatrix1   s8     "þýþýþý
þýr0   c                   C   st   t t ttdƒtdƒƒ¡ƒdks$t‚t t ttddƒtdƒƒ¡ƒdksJt‚t t ttdƒtddƒƒ¡ƒdkspt‚d S )Nr   r+   TF)r   r   r%   r   r	   r    r
   r   r"   r"   r"   r#   Útest_invertible_BlockDiagMatrixM   s    $&r1   c                   C   sf  t t t¡t t¡ƒst‚t t tt ¡t t¡ƒd ks<t‚t t tt ¡t t¡t t¡@ ƒdksht‚t t tt ¡t t¡t t¡@ ƒdks”t‚t t t¡ƒdksªt‚t t ttj ¡ƒdksÆt‚t t tjt t ¡ƒd ksæt‚t t tjt t ¡t t¡ƒdkst‚t t td ¡t t¡ƒdks4t‚t t t¡ƒdksLt‚t t tt	 ¡ƒdksht‚t t tt	 ¡ƒdks„t‚t t t
jt
 ¡ƒdks¢t‚t t t
jt
t  ¡ƒdksÄt‚t t t
jt
t  t ¡ƒdksêt‚t t ttddƒ¡ƒdks
t‚t t tdƒ¡ƒdks&t‚t t tddƒ¡ƒdksDt‚t t tddƒ¡ƒdksbt‚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"   r#   Útest_symmetricS   s&    ",, *$"& r6   c                 C   sN  t | tƒ| tƒƒst‚t | tjƒ| tƒƒdks2t‚t | tjƒ| tƒƒdksNt‚t | td ƒ| tƒƒsht‚t | tƒƒdks|t‚t | tƒƒd kst‚t | tƒt t¡ ƒdks®t‚t | tt t ƒ| tƒ| tƒ@ ƒdksØt‚t | t	dƒƒƒdksðt‚t | t
ddƒƒƒdkst‚t t t¡| tƒƒs&t‚t | tt ƒ| tƒ| tƒ@ ƒrJt‚d S )NTr   Fr   )r   r   r    r!   r&   r   r   r%   r   r	   r
   )Ú	predicater"   r"   r#   Ú_test_orthogonal_unitaryh   s    *r8   c                   C   s   t tjƒ d S r   )r8   r   Ú
orthogonalr"   r"   r"   r#   Útest_orthogonalv   s    r:   c                   C   s(   t tjƒ tt t¡t t¡ƒs$t‚d S r   )r8   r   Zunitaryr   r   r9   r    r"   r"   r"   r#   Útest_unitaryy   s    
r;   c                   C   sH  t t t¡t t¡ƒst‚t t td ¡t t¡ƒs8t‚t t tj¡t t¡ƒdksXt‚t t t¡ƒd ksnt‚t t t¡ƒd ks„t‚t t tt ¡t t¡t t¡@ ƒdks°t‚t t tdƒ¡ƒdksÊt‚t t t	ddƒ¡ƒdksæt‚t t t
ddƒ¡ƒdkst‚t t t
ddƒ¡ƒdks"t‚t t t¡t t¡ ƒdksDt‚d S )Nr   Tr   Fr   )r   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t‚t t tj¡t t¡ƒdks:t‚t t tj¡t t¡ƒdksZt‚t t t¡ƒdkspt‚t t t¡ƒd ks†t‚t t td ¡t t¡ƒs¤t‚t t tt t ¡t t¡t t¡@ ƒdksÔt‚t t t¡t 	t¡ƒsît‚t t tjt t ¡t t¡t 
t¡@ ƒdks"t‚t t tjt t ¡t t¡ƒrHt‚t t tdƒ¡ƒdksdt‚t t tddƒ¡ƒdks‚t‚t t tddƒ¡ƒdks t‚t t tddƒ¡ƒdks¾t‚t t tt ¡t t¡t t¡@ ƒdksìt‚t t t ¡t t¡ƒr
t‚t t td ¡t t¡ƒs*t‚d S )NTFr   r   )r   r   )r   r   Úpositive_definiter   r    r!   r&   r   r   r9   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ks6t‚t t ttj ¡t t¡t t¡@ ƒdksdt‚t t tdƒ¡ƒdks~t‚t t t	ddƒ¡ƒdksšt‚t t t	ddƒ¡ƒdks¶t‚t t t
ddƒ¡ƒdksÒt‚t t t
ddƒ¡ƒdksît‚t t t
ddƒ¡ƒdkst‚t t t
ddƒ¡ƒdks*t‚t t t¡t t¡ƒsFt‚t t td ¡t t¡ƒsft‚t t td ¡t t¡ƒs†t‚d S )Nr   Tr   r   F)r   r   Úupper_triangularr   r   r!   r	   Úlower_triangularr    r
   r   Ú
triangularZunit_triangularr"   r"   r"   r#   Útest_triangular¡   s(     ÿÿÿÿ rC   c                   C   sF  t t ttj tdƒ ¡t t¡t t¡@ ƒdks6t‚t t tddƒ¡ƒsNt‚t t t	ddƒ¡ƒdksjt‚t t t	ddƒ¡ƒdks†t‚t t 
t¡t t¡@ t t¡ƒsªt‚t t t¡t 
t¡t t¡@ ƒsÎt‚t t t¡t t¡ƒsèt‚t t t¡t t¡ƒst‚t t t¡ƒst‚t t t¡ƒs,t‚t t tt ¡ƒsDt‚t t tt ¡ƒs\t‚t t tjt ¡ƒsvt‚t t tjtt  t ¡ƒs˜t‚t t ttddƒ¡ƒdks¸t‚t t tjtt  ¡ƒdksÚt‚t t td ¡t t¡ƒsút‚t t tdƒ¡ƒst‚t t ttƒ¡ƒs*t‚t t ttƒ¡ƒsBt‚d S )Nr   Tr   r   Fr3   r4   )r   r   Údiagonalr   r   r!   r	   r    r
   r   rA   r@   r5   rB   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   Útest_diagonal²   s0     ÿÿ$$" " rE   c                   C   s&   t t ttƒ¡t ttƒ¡ƒs"t‚d S r   )r   r   Úrealr   r   r>   r    r"   r"   r"   r#   Útest_non_atomsÊ   s    rG   c                  C   s’   t dddƒ} t dddƒ}tt | | ¡t | ¡t |¡@ ƒdksDt‚tt | ¡t | ¡ƒdksbt‚tt | | ¡t | ¡t |¡@ ƒdksŽt‚d S )Nr   r   r   T)r   r   r   rA   r    rB   r/   r"   r"   r#   Útest_non_trivial_impliesÍ   s    ÿÿÿÿrH   c                  C   s0  t dddƒ} t| ddƒ}t| ddƒ}tt |¡t | ¡ƒs>t‚tt |¡t | ¡ƒsXt‚tt |¡t | ¡ƒsrt‚tt |¡t | ¡ƒsŒt‚tt 	|¡t 	| ¡ƒs¦t‚tt |¡t | ¡ƒrÀt‚tt |¡t | ¡ƒrÚt‚tt |¡t | ¡ƒrôt‚tt |¡t | ¡ƒrt‚tt 	|¡t 	| ¡ƒr,t‚d S )Nr   r,   )r   r   )r   r   )
r   r   r   r   r5   r    r%   rD   r9   r@   )r   ÚBÚCr"   r"   r#   Útest_MatrixSlice×   s    rK   c                  C   sL   t dddƒ} tt t| ƒ¡t | ¡ƒs*t‚tt t| ƒ¡t | ¡ƒsHt‚d S )Nr   r,   )r   r   r   r>   r   r=   r    r   ©r   r"   r"   r#   Útest_det_trace_positiveç   s    rM   c                  C   s¤  t dddƒ} t dddƒ}tt | ¡t | ¡ƒs2t‚tt | ¡t | ¡ƒrLt‚tt | ¡t | ¡ƒsft‚tt | d ¡t | ¡ƒs„t‚tt | d ¡t | ¡ƒs¢t‚tt | | ¡t | ¡ƒd ksÄt‚tt | | ¡t | ¡t |¡@ ƒsìt‚ddlm} tt || |ƒ¡t | ¡t |¡@ ƒs$t‚tt | | ¡t | ¡t |¡@ ƒsNt‚tt | j	¡t | ¡ƒslt‚tt | j
¡t | ¡t | ¡@ ƒs”t‚tt t| ƒ¡t | ¡ƒs´t‚tt t| ƒ¡t | ¡ƒsÔt‚tt | j
¡t | ¡ƒròt‚tdƒ}tt ||  ¡t | ¡t |¡@ ƒs$t‚tt t| ƒ¡t | ¡ƒsDt‚tdd	d	d
}tt | | ¡t | ¡t | ¡@ ƒs|t‚tt | | ¡t | ¡ƒd ks t‚d S )Nr   r,   r   r   r   )ÚHadamardProductÚalphaÚeT)ÚintegerÚnegative)r   r   r   Úreal_elementsr    Úinteger_elementsÚcomplex_elementsZ#sympy.matrices.expressions.hadamardrN   r!   r&   r%   r   r   r   rF   r   )r   r   rN   rO   rP   r"   r"   r#   Útest_field_assumptionsì   s2    "(ÿ
*(  * *rV   c                  C   sÒ   t dddƒ} tt | d ¡t | ¡ƒs*t‚tt | d ¡t | ¡ƒsHt‚tt | d ¡t 	| ¡ƒsft‚tt t
dƒ¡ƒs|t‚tt tddƒ¡ƒs”t‚tt tddƒ¡ƒs¬t‚ddlm} tt 	|dƒ¡ƒsÎt‚d S )Nr   r,   r4   r   r   )ÚDFT)r   r   r   rF   rS   r    rQ   rT   ÚcomplexrU   r	   r
   r   Z"sympy.matrices.expressions.fourierrW   )r   rW   r"   r"   r#   Útest_matrix_element_sets  s    rY   c                  C   s\   t dddƒ} tt | d d …df ¡t | ¡ƒs2t‚tt t| g| ggƒ¡t | ¡ƒsXt‚d S )Nr   r,   r   )r   r   r   rT   r    r   rL   r"   r"   r#   Ú&test_matrix_element_sets_slices_blocks  s
    &ÿrZ   c                   C   s@   t t ttƒ¡t t¡ƒst‚t t ttƒ¡t t¡ƒs<t‚d S r   )r   r   rQ   r   r   rT   r    r   r"   r"   r"   r#   Ú*test_matrix_element_sets_determinant_trace  s    r[   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*   r0   r1   r6   r8   r:   r;   r<   r?   rC   rE   rG   rH   rK   rM   rV   rY   rZ   r[   r"   r"   r"   r#   Ú<module>   sL   ,

	