o
    GZŽhö  ã                   @   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ÚkZis_ZeroMatrixr   r   r   Zis_Identity© r   r   ú^/var/www/auris/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   Z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   Z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<   r,   r.   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   Z	transposer)   r*   r   r   r   r   r    Útest_tensor_product_transposeC   s   ÿÿr/   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   ÿÿÿ
ÿr0   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    $r2   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   
(r4   c                  C   s*   t ttƒ} t| ƒttƒttƒ ksJ ‚d S r   )r   r   r   r   r3   r   r   r    Útest_KroneckerProduct_trace[   s   
 r5   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   Zis_commutativer   r   r   r    Ú&test_KroneckerProduct_isnt_commutative`   s   r6   c                   C   s,   t tt dt ƒtd tttƒ ksJ ‚d S )Nr   )r   r1   r   r   r   r   r   r   r    Ú/test_KroneckerProduct_extracts_commutative_parte   s
   ÿÿr7   c                  C   s,   t ttƒ} |  ¡ t t ¡ t ¡ ƒksJ ‚d S r   )r   r   r   Zinverser3   r   r   r    Útest_KroneckerProduct_inversej   s   
"r8   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   

&r;   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%   r9   r:   r   r   r    Ú!test_KroneckerProduct_combine_mulu   s
   

&r<   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   r1   r   r   ÚTr   ©r$   r%   r   r   r    Ú!test_KroneckerProduct_combine_pow}   s(   ÿÿÿÿÿÿÿ,r?   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)Zkroneckerproduct)r   r   r   r   Úexpandr>   r   r   r    Útest_KroneckerProduct_expandŠ   s   ÿÿÿrA   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   Z_entryÚiÚjr   r   )r   r   r   r   r    Útest_KroneckerProduct_entry’   s   ZrF   N)6Zsympy.core.modr   Zsympy.core.numbersr   Zsympy.core.symbolr   Z#sympy.functions.elementary.integersr   Zsympy.matrices.denser   r   Zsympy.matricesr   r	   Zsympy.matrices.expressionsr
   r   Z$sympy.matrices.expressions.kroneckerr   r   r   r)   r*   rD   rE   r   r   r   rB   rC   r1   r   r   r   r   r   r!   r#   r'   r+   r.   r/   r0   r2   r4   r5   r6   r7   r8   r;   r<   r?   rA   rF   r   r   r   r    Ú<module>   sD    