
    g                     >   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZ  ed	          \  ZZ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S )    )Matrixeye)
ShapeError)MatAdd)Identity	OneMatrix
ZeroMatrix)symbols)raiseswarns_deprecated_sympy)MatrixSymbol)HadamardProducthadamard_productHadamardPowerhadamard_powerzn,m,kZABCc                     t          t          t          t                    j        t          j        k    sJ t	          t
          d            t	          t
          d            t          t          dt          z  t                     d         dt          d         z  t          d         z  t          d         z  k    sJ t          t          t          z  t                    t          z  } | j        t          t          fk    sJ t          t          t          t          t                    j        j                  t          j        t          j        t          j        hk    sJ d S )Nc                  6    t          t          t                    S N)r   r   n     j/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_hadamard.py<lambda>z&test_HadamardProduct.<locals>.<lambda>   s    q!44 r   c                  ,    t          t          d          S )N   )r   r   r   r   r   r   z&test_HadamardProduct.<locals>.<lambda>   s    q!44 r      r   r   )r   r   r   shaper   	TypeErrorr   r   r   ksetTargs)mixs    r   test_HadamardProductr*      s   1a##)QW4444
944555
9445551acA2&&t,4L1T7"QtW,- - - - !A#q
!
!!
#C9Aq!Q'').//ACac?BBBBBBr   c                  v    t          t          t                    t          t          t                    k    sJ d S r   )r   r   r   r   r   r   %test_HadamardProduct_isnt_commutativer,   !   s-    1a  OAq$9$9999999r   c                     t          ddd          } t          ddd          }t          ddd          }| t          ||          z  d         | d         |d         z  |d         z  | d         |d         z  |d         z  z   k    sJ d S )NXr    Yr   r   r   r   r   r   r   )r   r   )r.   r/   r   s      r   test_mixed_indexingr3   %   s    S!QAS!QAS!QAoa###T*dGAdGOAdG#agagoag&==> > > > > >r   c                     t          ddd          } t          ddd          }t                      5  t          | d          }d d d            n# 1 swxY w Y   t          |t                    sJ |                                }t          |t                     sJ t          dd          }t          dd          }t          ||                                           |k    sJ t          || | |                                          t          | d          k    sJ t          | ||                                          t          | |          k    sJ t          | |||                                          |k    sJ d S )Nr.   r    r/   F)check)r   r   r   
isinstancedoitr	   r   r   )r.   r/   exprexpr2r   Us         r   test_canonicalizer;   .   s   S!QAS!QA		!	! / /q.../ / / / / / / / / / / / / / /dO,,,,,IIKKEe\*****1aA!QA1a  %%''1,,,,1aA&&++--q!1D1DDDDD1a##((**oa.C.CCCCC1aA&&++--222222s   AAAc                  j   t          dd          \  } }}t          d| |          }t          d| |          }t          d| |           }t          |           }t          t          d            t          |          |k    sJ t          t          ||          t                    sJ t          ||                                          t          ||          k    sJ t          ||          t          ||          k    sJ t          t          ||          t                    sJ t          dt          d	          }t          t          t          d	          t          t          d	                    }t          ||          }|                                |k    sJ t          t          d
            d S )Nm, n, pTintegerr   r   r.   c                      t                      S r   )r   r   r   r   r   ztest_hadamard.<locals>.<lambda>E   s    .00 r   ar   c                      t                      S r   r   r   r   r   r   ztest_hadamard.<locals>.<lambda>Q   s    00 r   )r
   r   r   r   r$   r   r6   r   r7   r%   r   r	   r   
ValueError)	mr   pr   r   r.   IrA   r8   s	            r   test_hadamardrH   >   s   i...GAq!S!QAS!QAS!QAA
900111A!####&q!,,o>>>>>Aq!!&&((,<Q,B,BBBBBAq!!_Q%:%:::::&q!,,o>>>>>S!QA*Q""IaOO44D4##D99;;!
:0011111r   c            	         t          ddd                                          } t          ddd                                          }t          ddd          }t          | |          }t          d t	          | |          D                                           dd          }||k    sJ t          | ||          }|t          ||          k    sJ t          t          d          |           }|t          | d         ddgd| d         dgdd| d	         gg          k    sJ t          t          d          t          d                    }|t          d          k    sJ d S )
Nr      r   r.   c                     g | ]
\  }}||z  S r   r   ).0ijs      r   
<listcomp>z;test_hadamard_product_with_explicit_mat.<locals>.<listcomp>Y   s     ,,,$!Q!A#,,,r   r0   r   r!   )r    r    )r   as_explicitr   r   zipreshaper   r   )r   r   r.   r8   rets        r   'test_hadamard_product_with_explicit_matrT   T   sN   S!Q++--AS!Q++--AS!QAAq!!D
,,#a)),,,
-
-
5
5a
;
;C3;;;;Aq!$$D?3******CFFA&&D6AdGQ?Q$OaAdG_MNNNNNNCFFCFF++D3q66>>>>>>r   c                     t          dd          \  } }}t          d| |          t          d          k    sJ t          t          d          t                    sJ t          |          j        t          j        |          k    sJ t          |          d         d         |z  k    sJ t          | |          | |z  k    sJ t          t          fd           d S )	Nr=   Tr>   r   r   r    r0   c                  $    t                      S r   )r   )r   s   r   r   z%test_hadamard_power.<locals>.<lambda>l   s    ~a33 r   )r
   r   r   r6   r   r'   r   rD   )rE   r   rF   r   s      @r   test_hadamard_powerrW   c   s    i...GAq!S!QA!Q1$$$$nQ**M:::::!Q!^AC%;%;;;;;!Q%4!3333!Q1a4''''
:333344444r   c                  
   t          ddd          } t          ddd          }t          d          \  }}t          ||          ||z  k    sJ t          ||                                          t	          ||d         z  ||d         z  g||d         z  ||d         z  gg          k    sJ t          | |                                          t	          | d         |z  | d         |z  g| d         |z  | d         |z  gg          k    sJ t          | |                                          t	          | d         |d         z  | d         |d         z  g| d         |d         z  | d         |d         z  gg          k    sJ d S )	Nr   r    r   za br0   r1   r2   r!   )r   r
   r   rP   r   )r   r   rA   bs       r   test_hadamard_power_explicitrZ   o   s   S!QAS!QA5>>DAqA!Q$&&&&A**,,$ZAdG$$ZAdG$& 	' 	'' ' ' '
 A**,,tWaZ4!$tWaZ4!$& 	' 	'' ' ' '
 A**,,tWagqw$/0tWagqw$/02 	3 	33 3 3 3 3 3r   c                  8    t          ddd           t          ddd          t          t           fd           t          t           fd           t          ddd           t          t           fd           t          t           fd           d S )	Nr   r    rJ   r   c                  $    t                     S r   rC   r   r   s   r   r   z"test_shape_error.<locals>.<lambda>       q!44 r   c                  $    t                     S r   r   r]   s   r   r   z"test_shape_error.<locals>.<lambda>       }Q22 r   c                  $    t                     S r   rC   r]   s   r   r   z"test_shape_error.<locals>.<lambda>   r^   r   c                  $    t                     S r   r`   r]   s   r   r   z"test_shape_error.<locals>.<lambda>   ra   r   )r   r   r   r]   s   @@r   test_shape_errorrd      s    S!QAS!QA
:44444555
:22222333S!QA
:44444555
:2222233333r   N)'sympy.matrices.denser   r   sympy.matrices.exceptionsr   !sympy.matrices.expressions.mataddr   "sympy.matrices.expressions.specialr   r   r	   
sympy.corer
   sympy.testing.pytestr   r   sympy.matricesr   sympy.matrices.expressionsr   r   r   r   r   rE   r%   r   r   r   r   r*   r,   r3   r;   rH   rT   rW   rZ   rd   r   r   r   <module>rm      s   , , , , , , , , 0 0 0 0 0 0 4 4 4 4 4 4 N N N N N N N N N N       ? ? ? ? ? ? ? ? ' ' ' ' ' ' i i i i i i i i i i i i
''

1aLaLaLaLaC C C: : :> > >3 3 3 2 2 2,  	5 	5 	53 3 3.4 4 4 4 4r   