
    g                        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z  gd	ez   dgg          Z e	d
ez  dgdez  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 Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5d%S )&    )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                     t          t          t          t                    t                    sJ t          t          t                                        t          t
                    t          t
          t                    k    sJ t          t          t
                    j        t          t          z  t          t          z  fk    sJ t          t          t
                    t          t           t
                    z   j
        sJ t          t          t                    t          t          j        t          j                  z  j        sJ d S N)
isinstancer   r   r   subsr   shapenmkis_ZeroMatrixr   r   r   is_Identity     k/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_kronecker.pytest_KroneckerProductr&      s    &q!,,.>?????Aq!!&&q!,,0@A0F0FFFFFAq!!'AaC1:5555Q""%5qb!%<%<<KKKKQ""%5ac13%?%??LLLLLLr$   c                  (   t          t          t                    t          t                              t          t          t          z            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%   test_KroneckerProduct_identityr)   !   sf    HQKK!55!A#FFFFCFFCFF++s1vv555555r$   c                     t          ddd          } t          ddd          }t          | |          }|j        dk    sJ |                                t	          | d         |d         z  | d         |d         z  | d         |d         z  | d         |d         z  g| d         |d         z  | d         |d         z  | d         |d         z  | d         |d         z  g| d         |d         z  | d         |d         z  | d         |d         z  | d         |d         z  g| d         |d         z  | d         |d         z  | d         |d         z  | d         |d         z  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,   kps      r%   test_KroneckerProduct_explicitr/   &   sr   S!QAS!QA	!Q		B8v>>vtWQtW_agagoqwqw$$PtWQtW_agagoqwqw$$PtWQtW_agagoqwqw$$PtWQtW_agagoqwqw$$P		
         r$   c                     t          t          t          z  t                                                    t           t          t                                          t                                                    z  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%   test_tensor_product_adjointr4   5   s    AaC##++--	
AIIKK5556 6 6 6D$''//11$,,..$,,..99: : : : : :r$   c                     t          t          t          z  t                                                    t           t          t                                          t                                                    z  k    sJ t          t
          t                                                    t          t
                                          t                                                    k    sJ d S r   )r   r   r   r   	conjugater2   r3   r   r#   r$   r%   test_tensor_product_conjugater7   <   s    AaC##--//	
AKKMM1;;==999: : : :D$''1133$..**DNN,<,<==> > > > > >r$   c                     t          t          t          z  t                                                    t          t          t                                          t                                                    z  k    sJ t          t
          t                                                    t          t
                                          t                                                    k    sJ d S r   )r   r   r   r   	transposer2   r3   r   r#   r$   r%   test_tensor_product_transposer:   C   s    AaC##--//	
1;;==!++--
8
889 9 9 9D$''1133$..**DNN,<,<==> > > > > >r$   c                  d   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%   $test_KroneckerProduct_is_associativer<   J   s    Q 1	1! !  #$5a$;$;Q??@ @ @ @Q 1	1! !  "1a++, , , , , ,r$   c                  &   t          t          t          z  t                    t          t          t          t                    z  k    sJ t          t          t          t          z            t          t          t          t                    z  k    sJ d S r   )r   xr   r   r#   r$   r%   !test_KroneckerProduct_is_bilinearr?   Q   sf    QqS!$$*;Aq*A*A(AAAAAQ!$$*;Aq*A*A(AAAAAAAr$   c                      t          t          t                    } t          |           t          t                    t          z  t          t                    t
          z  z  k    sJ d S r   )r   r   r   r   r   r   r.   s    r%   !test_KroneckerProduct_determinantrB   V   sG    	1a	 	 Br77c!ffai#a&&!)+++++++r$   c                      t          t          t                    } t          |           t          t                    t          t                    z  k    sJ d S r   )r   r   r   r   rA   s    r%   test_KroneckerProduct_tracerD   [   s?    	1a	 	 B99aq)))))))r$   c                      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%   &test_KroneckerProduct_isnt_commutativerG   `   sL    Aq!!%5a%;%;;;;;Aq!!0E999999r$   c                      t          t          t          z  dt          z            t          dz  t	          t          t                    z  k    sJ d S )Nr   )r   r>   r   r   r   r#   r$   r%   /test_KroneckerProduct_extracts_commutative_partrI   e   sQ    QUAE**a	/
Q""/# # # # # # #r$   c                      t          t          t                    } |                                 t          t                                          t                                                    k    sJ d S r   )r   r   r   inverserA   s    r%   test_KroneckerProduct_inverserL   j   sK    	1a	 	 B::<<,QYY[[!))++FFFFFFFFr$   c                      t          t          t                    } t          t          t                    }t          | |z            t          t          t          z  t          t          z            k    sJ d S r   )r   r   r   r   r   r   )kp1kp2s     r%   !test_KroneckerProduct_combine_addrP   o   sV    
Aq
!
!C
Aq
!
!CSW%%):1Q3!)D)DDDDDDDr$   c                  2   t          dt          t                    } t          dt          t                    }t          t          |           }t          t
          |          }t          ||z             t          t          t
          z   | |z             k    sJ d S )Nr+   r,   )r	   r   r   r   r   r   r   )r+   r,   rN   rO   s       r%   !test_KroneckerProduct_combine_mulrR   u   sx    S!QAS!QA
Aq
!
!C
Aq
!
!CSW%%):1Q3!)D)DDDDDDDr$   c                  @   t          dt          t                    } t          dt          t                    }t          t          | |          t          z            t          | t          z  |t          z            k    sJ t          t          t          | |          dz  z            t          t          | dz  |dz            z  k    sJ t          t          t          | |          dz  z  t          t
          t                    z            t          t          | dz  t
          z  |dz  t          z            z  k    sJ t          t          t
          t          j                  t          z            t          t
          t          j                  t          z  k    sJ d S )Nr+   r,   r   )	r	   r   r   r   r>   r   r   Tr   r+   r,   s     r%   !test_KroneckerProduct_combine_powrV   }   s   S!QAS!QA-	1   %adAqD112 2 2 2Q!1!Q!7!7 !"" " # #&'*:1a4A*F*F&FG G G G	a##Q&'*:1a*@*@@B BEFIYZ[]^Z^abZbdeghdhkldlImImEmn n n n -a55:;;?OPQSTSV?W?W[\?\\\\\\\r$   c                  r   t          dt          t                    } t          dt          t                    }t          | |z   |t          z                                 d          t          | |          t          | t                    z   t          ||          z   t          |t                    z   k    sJ d S )Nr+   r,   T)kroneckerproduct)r	   r   r   r   expandrU   s     r%   test_KroneckerProduct_expandrZ      s    S!QAS!QAAE1q5))00$0GGA!1!Q!7!77A	!1!Q!7!7	88 8 8 8 8 8r$   c            	         t          dt          t                    } t          dt          t                    }t          | |                              t          t                    | t          t          t          t          z            t                    t          t          t          t          z            t                    f         |t          t          t                    t          t          t                    f         z  k    sJ d S )Nr   r   )r	   r   r   opr   _entryijr   r   )r   r   s     r%   test_KroneckerProduct_entryra      s    S!QAS!QAAq!!((A..!Cac

A4F4FERSTURUJJXYHZHZ4Z2[\]^abcef^g^gilmnpqirir^r\s2sssssssr$   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   r2   r3   r_   r`   r    r   r   r\   r]   r>   r   r   r   r   r   r&   r)   r/   r4   r7   r:   r<   r?   rB   rD   rG   rI   rL   rP   rR   rV   rZ   ra   r#   r$   r%   <module>rj      s                     % % % % % % 5 5 5 5 5 5 . . . . . . . . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1E E E E E E E E E E
 v1q5zAE1:&''vAqzAE1:&'' !233 1aAq!QLaLaLaLaLaM M M6 6 6
  : : :> > >> > >, , ,B B B
, , ,
* * *
: : :
# # #
G G G
E E EE E E
] 
] 
]8 8 8t t t t tr$   