U
    ZÊ¹jö  ã                   @   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t‚tttƒ tt¡tttƒks4t‚tttƒjtt	 t	t
 fksTt‚tttƒtt tƒ jspt‚tttƒttjtjƒ jsŽt‚d S ©N)Ú
isinstancer   r   r   ÚAssertionErrorÚsubsr   ÚshapeÚnÚmÚkZis_ZeroMatrixr   r   r   Zis_Identity© r    r    ún/var/www/html/bwave/python/venv/lib/python3.8/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"t‚t tdƒtdƒƒtdƒks@t‚d S )Nr   r   é   )r   r	   r   r   r   r   r    r    r    r!   Útest_KroneckerProduct_identity!   s    "r$   c                  C   s2  t dddƒ} t dddƒ}t| |ƒ}|jdks0t‚| ¡ 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.t‚d S )	NÚXr   ÚY)r   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   sV   t tt tƒ ¡ t t t ¡ t ¡ ƒ ks.t‚t ttƒ ¡ tt ¡ t ¡ ƒksRt‚d S r   )	r   r   r   r   Zadjointr   Úmat1Úmat2r   r    r    r    r!   Útest_tensor_product_adjoint5   s    ÿÿr+   c                   C   sV   t tt tƒ ¡ t t t ¡ t ¡ ƒ ks.t‚t ttƒ ¡ tt ¡ t ¡ ƒksRt‚d S r   )	r   r   r   r   Ú	conjugater   r)   r*   r   r    r    r    r!   Útest_tensor_product_conjugate<   s    ÿÿr-   c                   C   sT   t tt tƒ ¡ tt t ¡ t ¡ ƒ ks,t‚t ttƒ ¡ tt ¡ t ¡ ƒksPt‚d S r   )	r   r   r   r   Z	transposer   r)   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$t‚t tt ttƒƒttttƒksDt‚d S r   )r   r   r   r   r   r   r    r    r    r!   Ú$test_KroneckerProduct_is_associativeJ   s     ÿÿ ÿ
ÿr/   c                   C   sD   t tt tƒtt ttƒ ks t‚t ttt ƒtt ttƒ ks@t‚d S r   )r   Úxr   r   r   r    r    r    r!   Ú!test_KroneckerProduct_is_bilinearQ   s     r1   c                  C   s2   t ttƒ} t| ƒttƒt ttƒt  ks.t‚d S r   )r   r   r   r
   r   r   r   ©r'   r    r    r!   Ú!test_KroneckerProduct_determinantV   s    
r3   c                  C   s*   t ttƒ} t| ƒttƒttƒ ks&t‚d S r   )r   r   r   r   r   r2   r    r    r!   Útest_KroneckerProduct_trace[   s    
r4   c                   C   s0   t ttƒt ttƒkst‚t ttƒjdks,t‚d S )NF)r   r   r   r   Zis_commutativer    r    r    r!   Ú&test_KroneckerProduct_isnt_commutative`   s    r5   c                   C   s,   t tt dt ƒtd tttƒ ks(t‚d S )Nr   )r   r0   r   r   r   r   r    r    r    r!   Ú/test_KroneckerProduct_extracts_commutative_parte   s
    ÿÿr6   c                  C   s,   t ttƒ} |  ¡ t t ¡ t ¡ ƒks(t‚d S r   )r   r   r   Zinverser   r2   r    r    r!   Útest_KroneckerProduct_inversej   s    
r7   c                  C   s:   t ttƒ} t ttƒ}t| | ƒt tt tt ƒks6t‚d S r   )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sNt‚d S )Nr%   r&   )r   r   r   r   r   r   r   r   )r%   r&   r8   r9   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@t‚ttt| |ƒd  ƒtt| d |d ƒ kspt‚ttt| |ƒd  tttƒ ƒtt| d t |d t ƒ ks²t‚ttttjƒt	 ƒtttjƒt	 ksÚt‚d S )Nr%   r&   r   )
r   r   r   r   r0   r   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^t‚d S )Nr%   r&   T)Zkroneckerproduct)r   r   r   r   Úexpandr   r=   r    r    r!   Útest_KroneckerProduct_expandŠ   s    ÿÿÿr@   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snt‚d S )Nr   r   )r   r   r   ÚoÚpr   Z_entryÚiÚjr   r   r   )r   r   r    r    r!   Útest_KroneckerProduct_entry’   s    rE   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*   rC   rD   r   r   r   rA   rB   r0   r   r   r   r   r   r"   r$   r(   r+   r-   r.   r/   r1   r3   r4   r5   r6   r7   r:   r;   r>   r@   rE   r    r    r    r!   Ú<module>   sB   