o
    …º¥gö  ã                   @   s”  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	m
Z
 d dlmZmZ d dlmZmZ d dlmZmZmZ e	d	d
e gd	e dggƒZe	d
e dgde d
ggƒZedƒ\ZZZZZZZZedeeƒZedeeƒZ edeeƒZ!edeeƒZ"edeeƒ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'd(„ Z.d)d*„ Z/d+d,„ Z0d-d.„ Z1d/d0„ Z2d1d2„ Z3d3d4„ Z4d5d6„ Z5d7S )8é    )ÚMod)ÚI)Úsymbols)Úfloor)ÚMatrixÚeye)ÚMatrixSymbolÚIdentity)ÚdetÚtrace)ÚKroneckerProductÚkronecker_productÚcombine_kroneckeré   é   é   é   zi,j,k,n,m,o,p,xÚZÚWÚAÚBÚCc                   C   s’   t tttƒtƒs
J ‚tttƒ tt¡tttƒksJ ‚tttƒjtt tt	 fks*J ‚tttƒtt tƒ j
s8J ‚tttƒttjtjƒ jsGJ ‚d S ©N)Ú
isinstancer   r   r   Úsubsr   ÚshapeÚnÚmÚkÚis_ZeroMatrixr   r   r   Úis_Identity© r!   r!   úf/var/www/visachat/venv/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyÚtest_KroneckerProduct   s
     "r#   c                   C   sD   t ttƒttƒƒttt ƒksJ ‚t tdƒtdƒƒtdƒks J ‚d S )Nr   r   é   )r   r	   r   r   r   r!   r!   r!   r"   Útest_KroneckerProduct_identity!   s   ""r%   c                  C   s0  t dddƒ} t dddƒ}t| |ƒ}|jdksJ ‚| ¡ t| d |d  | d |d  | d |d  | d |d  g| d |d  | d |d  | d |d  | d |d  g| d |d  | d |d  | d |d  | d |d  g| d |d  | d |d  | d |d  | d |d  ggƒks–J ‚d S )	NÚXr   ÚY)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r   Úas_explicitr   )r&   r'   Úkpr!   r!   r"   Útest_KroneckerProduct_explicit&   s   
::::üÿr*   c                   C   óV   t tt tƒ ¡ t t t ¡ t ¡ ƒ ksJ ‚t ttƒ ¡ tt ¡ t ¡ ƒks)J ‚d S r   )r   r   r   r   ÚadjointÚmat1Úmat2r   r!   r!   r!   r"   Útest_tensor_product_adjoint5   ó   ÿÿr/   c                   C   r+   r   )r   r   r   r   Ú	conjugater-   r.   r   r!   r!   r!   r"   Útest_tensor_product_conjugate<   r0   r2   c                   C   sT   t tt tƒ ¡ tt t ¡ t ¡ ƒ ksJ ‚t ttƒ ¡ tt ¡ t ¡ ƒks(J ‚d S r   )r   r   r   r   Ú	transposer-   r.   r   r!   r!   r!   r"   Útest_tensor_product_transposeC   s   ÿÿr4   c                   C   sH   t tt ttƒƒt t ttƒtƒksJ ‚t tt ttƒƒttttƒks"J ‚d S r   )r   r   r   r   r   r!   r!   r!   r"   Ú$test_KroneckerProduct_is_associativeJ   s   ÿÿÿ
ÿr5   c                   C   sD   t tt tƒtt ttƒ ksJ ‚t ttt ƒtt ttƒ ks J ‚d S r   )r   Úxr   r   r!   r!   r!   r"   Ú!test_KroneckerProduct_is_bilinearQ   s    $r7   c                  C   s2   t ttƒ} t| ƒttƒt ttƒt  ksJ ‚d S r   )r   r   r   r
   r   r   ©r)   r!   r!   r"   Ú!test_KroneckerProduct_determinantV   s   
(r9   c                  C   s*   t ttƒ} t| ƒttƒttƒ ksJ ‚d S r   )r   r   r   r   r8   r!   r!   r"   Útest_KroneckerProduct_trace[   s   
 r:   c                   C   s0   t ttƒt ttƒksJ ‚t ttƒjdu sJ ‚d S )NF)r   r   r   Úis_commutativer!   r!   r!   r"   Ú&test_KroneckerProduct_isnt_commutative`   s   r<   c                   C   s,   t tt dt ƒtd tttƒ ksJ ‚d S )Nr   )r   r6   r   r   r   r!   r!   r!   r"   Ú/test_KroneckerProduct_extracts_commutative_parte   s
   ÿÿr=   c                  C   s,   t ttƒ} |  ¡ t t ¡ t ¡ ƒksJ ‚d S r   )r   r   r   Úinverser8   r!   r!   r"   Útest_KroneckerProduct_inversej   s   
"r?   c                  C   s:   t ttƒ} t ttƒ}t| | ƒt tt tt ƒksJ ‚d S r   )r   r   r   r   r   r   )Úkp1Úkp2r!   r!   r"   Ú!test_KroneckerProduct_combine_addo   s   

&rB   c                  C   sR   t dttƒ} t dttƒ}tt| ƒ}tt|ƒ}t|| ƒttt | | ƒks'J ‚d S )Nr&   r'   )r   r   r   r   r   r   r   )r&   r'   r@   rA   r!   r!   r"   Ú!test_KroneckerProduct_combine_mulu   s
   

&rC   c                  C   sÞ   t dttƒ} t dttƒ}tt| |ƒt ƒt| t |t ƒks J ‚ttt| |ƒd  ƒtt| d |d ƒ ks8J ‚ttt| |ƒd  tttƒ ƒtt| d t |d t ƒ ksYJ ‚ttttjƒt ƒtttjƒt ksmJ ‚d S )Nr&   r'   r   )	r   r   r   r   r6   r   r   ÚTr   ©r&   r'   r!   r!   r"   Ú!test_KroneckerProduct_combine_pow}   s(   ÿÿÿÿÿÿÿ,rF   c                  C   sb   t dttƒ} t dttƒ}t| | |t ƒjddt| |ƒt| tƒ t||ƒ t|tƒ ks/J ‚d S )Nr&   r'   T)Úkroneckerproduct)r   r   r   r   ÚexpandrE   r!   r!   r"   Útest_KroneckerProduct_expandŠ   s   ÿÿÿrI   c                  C   sr   t dttƒ} t dttƒ}t| |ƒ tt¡| t	t
tt ƒtƒt	t
tt ƒtƒf |t	ttƒt	ttƒf  ks7J ‚d S )Nr   r   )r   r   r   ÚoÚpr   Ú_entryÚiÚjr   r   )r   r   r!   r!   r"   Útest_KroneckerProduct_entry’   s   ZrO   N)6Úsympy.core.modr   Úsympy.core.numbersr   Úsympy.core.symbolr   Ú#sympy.functions.elementary.integersr   Úsympy.matrices.denser   r   Úsympy.matricesr   r	   Úsympy.matrices.expressionsr
   r   Ú$sympy.matrices.expressions.kroneckerr   r   r   r-   r.   rM   rN   r   r   r   rJ   rK   r6   r   r   r   r   r   r#   r%   r*   r/   r2   r4   r5   r7   r9   r:   r<   r=   r?   rB   rC   rF   rI   rO   r!   r!   r!   r"   Ú<module>   sD    