o
    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kis_ZeroMatrixr   r   r   is_Identity r!   r!   e/var/www/html/ai/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sJ 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    